Browse Source

1049
make all service handlers dynamically loadable or compilable statically
use the BUILD_DYNAMIC flag in the makefile to set dynamic loading or static
compile.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@914 fd59a12c-fef9-0310-b244-a6a79926bd2f

Steven Dake 20 years ago
parent
commit
43a36162b3
24 changed files with 1187 additions and 996 deletions
  1. 6 7
      Makefile
  2. 9 8
      exec/Makefile
  3. 123 85
      exec/amf.c
  4. 0 17
      exec/amf.h
  5. 1 1
      exec/amfconfig.h
  6. 22 15
      exec/cfg.c
  7. 1 1
      exec/cfg.h
  8. 333 193
      exec/ckpt.c
  9. 0 43
      exec/ckpt.h
  10. 52 47
      exec/clm.c
  11. 0 5
      exec/clm.h
  12. 102 93
      exec/evs.c
  13. 165 138
      exec/evt.c
  14. 1 30
      exec/evt.h
  15. 4 3
      exec/handlers.h
  16. 119 93
      exec/lck.c
  17. 0 5
      exec/lck.h
  18. 86 12
      exec/main.c
  19. 7 59
      exec/main.h
  20. 144 129
      exec/msg.c
  21. 0 5
      exec/msg.h
  22. 1 1
      exec/print.c
  23. 1 1
      include/ipc_gen.h
  24. 10 5
      lcr/Makefile

+ 6 - 7
Makefile

@@ -31,20 +31,19 @@
 # BUILD_DYNAMIC can be defined to 1 to build for dynamic loading of service
 # BUILD_DYNAMIC can be defined to 1 to build for dynamic loading of service
 #       handler modules.  If the developer intends to debug, building without
 #       handler modules.  If the developer intends to debug, building without
 #       dynamic modules should provide an easier route.
 #       dynamic modules should provide an easier route.
+BUILD_DYNAMIC=0
 
 
 # Production mode flags
 # Production mode flags
 CFLAGS = -O3 -Wall
 CFLAGS = -O3 -Wall
-LDFLAGS = -lpthread -ldl
+LDFLAGS = -lpthread
 DESTDIR=/usr/local/openais
 DESTDIR=/usr/local/openais
-BUILD_DYNAMIC=1
 
 
 # Debug mode flags
 # Debug mode flags
-#CFLAGS = -g -DDEBUG
-#LDFLAGS = -g
-#BUILD_DYNAMIC=0
+#CFLAGS = -g
+#LDFLAGS = -g -lpthread
 
 
 # Profile mode flags
 # Profile mode flags
-#CFLAGS = -O3 -pg -DDEBUG
+#CFLAGS = -O3 -pg
 #LDFLAGS = -pg
 #LDFLAGS = -pg
 
 
 ifeq (${BUILD_DYNAMIC}, 1)
 ifeq (${BUILD_DYNAMIC}, 1)
@@ -55,7 +54,7 @@ endif
 all:
 all:
 	(cd lcr; echo ==== `pwd` ===; $(MAKE) all CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)");
 	(cd lcr; echo ==== `pwd` ===; $(MAKE) all CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)");
 	(cd lib; echo ==== `pwd` ===; $(MAKE) all CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)");
 	(cd lib; echo ==== `pwd` ===; $(MAKE) all CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)");
-	(cd exec; echo ==== `pwd` ===; $(MAKE) all CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" BUILD_DYNAMIC="1");
+	(cd exec; echo ==== `pwd` ===; $(MAKE) all CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" BUILD_DYNAMIC="$(BUILD_DYNAMIC)");
 	(cd test; echo ==== `pwd` ===; $(MAKE) all CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)");
 	(cd test; echo ==== `pwd` ===; $(MAKE) all CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)");
 
 
 clean:
 clean:

+ 9 - 8
exec/Makefile

@@ -31,17 +31,15 @@
 # BUILD_DYNAMIC can be defined to 1 to build for dynamic loading of service
 # BUILD_DYNAMIC can be defined to 1 to build for dynamic loading of service
 #	handler modules.  If the developer intends to debug, building without
 #	handler modules.  If the developer intends to debug, building without
 #	dynamic modules should provide an easier route.
 #	dynamic modules should provide an easier route.
+BUILD_DYNAMIC=1
 
 
 # Production mode flags
 # Production mode flags
-#CFLAGS = -O3 -Wall -fomit-frame-pointer
-#LDFLAGS = -lpthread
-#BUILD_DYNAMIC=1
+CFLAGS = -O3 -Wall -fomit-frame-pointer
+LDFLAGS = -lpthread
 
 
 # Debug mode flags
 # Debug mode flags
-CFLAGS = -g -Wall 
-#-DDEBUG
-LDFLAGS = -g -lpthread
-BUILD_DYNAMIC=1
+#CFLAGS = -g -Wall 
+#LDFLAGS = -g -lpthread
 
 
 # Profile mode flags
 # Profile mode flags
 #CFLAGS = -O3 -pg
 #CFLAGS = -O3 -pg
@@ -72,7 +70,7 @@ CFLAGS += -DBUILD_DYNAMIC=1 -fPIC
 LDFLAGS += -ldl -rdynamic
 LDFLAGS += -ldl -rdynamic
 EXEC_LIBS +=  ../lcr/lcr_ifact.o
 EXEC_LIBS +=  ../lcr/lcr_ifact.o
 
 
-all:libtotem_pg.a libtotem_pg.so.1.0 \
+all:libtotem_pg.a libtotem_pg.so.1.0 ../lcr/lcr_ifact.o \
 	service_evs.lcrso service_clm.lcrso service_amf.lcrso \
 	service_evs.lcrso service_clm.lcrso service_amf.lcrso \
 	service_ckpt.lcrso service_evt.lcrso service_lck.lcrso \
 	service_ckpt.lcrso service_evt.lcrso service_lck.lcrso \
 	service_msg.lcrso service_cfg.lcrso \
 	service_msg.lcrso service_cfg.lcrso \
@@ -132,6 +130,9 @@ depend:
 	makedepend -Y -- $(CFLAGS) $(EXEC_SRC) $(TOTEM_SRC) > /dev/null 2>&1
 	makedepend -Y -- $(CFLAGS) $(EXEC_SRC) $(TOTEM_SRC) > /dev/null 2>&1
 
 
 # - fPIC rules required for service handler shared objects
 # - fPIC rules required for service handler shared objects
+../lcr/lcr_ifact.o: ../lcr/lcr_ifact.c
+	$(CC) $(CFLAGS) -I../lcr -c -o $@ ../lcr/lcr_ifact.c
+
 evs.o: evs.c
 evs.o: evs.c
 	$(CC) $(CFLAGS) -c -o $@ $(*F).c
 	$(CC) $(CFLAGS) -c -o $@ $(*F).c
 
 

+ 123 - 85
exec/amf.c

@@ -134,39 +134,39 @@ static void amf_confchg_fn (
 	struct totem_ip_address *joined_list, int joined_list_entries,
 	struct totem_ip_address *joined_list, int joined_list_entries,
 	struct memb_ring_id *ring_id);
 	struct memb_ring_id *ring_id);
 
 
-static int amf_lib_exit_fn (struct conn_info *conn_info);
+static int amf_lib_exit_fn (void *conn);
 
 
 static int amf_exec_init_fn (struct openais_config *);
 static int amf_exec_init_fn (struct openais_config *);
 
 
-static int amf_lib_init_fn (struct conn_info *conn_info);
+static int amf_lib_init_fn (void *conn);
 
 
-static void message_handler_req_lib_amf_componentregister (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_componentregister (void *conn, void *msg);
 
 
-static void message_handler_req_lib_amf_componentunregister (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_componentunregister (void *conn, void *msg);
 
 
-static void message_handler_req_lib_amf_pmstart (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_pmstart (void *conn, void *msg);
 
 
-static void message_handler_req_lib_amf_pmstop (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_pmstop (void *conn, void *msg);
 
 
-static void message_handler_req_lib_amf_healthcheckstart (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_healthcheckstart (void *conn, void *msg);
 
 
-static void message_handler_req_lib_amf_healthcheckconfirm (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_healthcheckconfirm (void *conn, void *msg);
 
 
-static void message_handler_req_lib_amf_healthcheckstop (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_healthcheckstop (void *conn, void *msg);
 
 
-static void message_handler_req_lib_amf_hastateget (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_hastateget (void *conn, void *message);
 
 
-static void message_handler_req_lib_amf_csiquiescingcomplete (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_csiquiescingcomplete (void *conn, void *msg);
 
 
-static void message_handler_req_lib_amf_protectiongrouptrackstart (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_protectiongrouptrackstart (void *conn, void *msg);
 
 
-static void message_handler_req_lib_amf_protectiongrouptrackstop (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_protectiongrouptrackstop (void *conn, void *msg);
 
 
-static void message_handler_req_lib_amf_componenterrorreport (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_componenterrorreport (void *conn, void *msg);
 
 
-static void message_handler_req_lib_amf_componenterrorclear (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_componenterrorclear (void *conn, void *msg);
 
 
-static void message_handler_req_lib_amf_response (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_amf_response (void *conn, void *msg);
 
 
 static void message_handler_req_exec_amf_operational_state_comp_set (
 static void message_handler_req_exec_amf_operational_state_comp_set (
 	void *message,
 	void *message,
@@ -218,6 +218,25 @@ void comp_healthcheck_activate (struct amf_comp *comp);
 void comp_healthcheck_deactivate (struct amf_comp *comp);
 void comp_healthcheck_deactivate (struct amf_comp *comp);
 static void escalation_policy_restart (struct amf_comp *comp);
 static void escalation_policy_restart (struct amf_comp *comp);
 
 
+struct libamf_ci_trackentry {
+	int active;
+	SaUint8T trackFlags;
+	SaAmfProtectionGroupNotificationT *notificationBufferAddress;
+	SaNameT csiName;
+};
+
+struct amf_comp;
+struct amf_pd {
+	struct amf_comp *comp;
+	struct list_head list;
+/*
+	struct libamf_ci_trackentry *tracks;
+	int trackEntries;
+	int trackActive;
+*/
+};
+
+
 struct clc_interface {
 struct clc_interface {
 	int (*instantiate) (struct amf_comp *comp);
 	int (*instantiate) (struct amf_comp *comp);
 	int (*terminate) (struct amf_comp *comp);
 	int (*terminate) (struct amf_comp *comp);
@@ -374,6 +393,7 @@ static struct openais_exec_handler amf_exec_handlers[] = {
 struct openais_service_handler amf_service_handler = {
 struct openais_service_handler amf_service_handler = {
 	.name				= (unsigned char *)"openais availability management framework B.01.01",
 	.name				= (unsigned char *)"openais availability management framework B.01.01",
 	.id				= AMF_SERVICE,
 	.id				= AMF_SERVICE,
+	.private_data_size		= sizeof (struct amf_pd),
 	.lib_init_fn			= amf_lib_init_fn,
 	.lib_init_fn			= amf_lib_init_fn,
 	.lib_exit_fn			= amf_lib_exit_fn,
 	.lib_exit_fn			= amf_lib_exit_fn,
 	.lib_handlers			= amf_lib_handlers,
 	.lib_handlers			= amf_lib_handlers,
@@ -700,7 +720,7 @@ int clc_terminate_callback (struct amf_comp *comp)
 	struct res_lib_amf_componentterminatecallback res_lib_amf_componentterminatecallback;
 	struct res_lib_amf_componentterminatecallback res_lib_amf_componentterminatecallback;
 	struct component_terminate_callback_data *component_terminate_callback_data;
 	struct component_terminate_callback_data *component_terminate_callback_data;
 
 
-	printf ("clc_terminate_callback %p\n", comp->conn_info);
+	printf ("clc_terminate_callback %p\n", comp->conn);
 	if (comp->presence_state != OPENAIS_CFG_PRESENCESTATE_INSTANTIATED) {
 	if (comp->presence_state != OPENAIS_CFG_PRESENCESTATE_INSTANTIATED) {
 		printf ("component terminated but not instantiated %s - %d\n",
 		printf ("component terminated but not instantiated %s - %d\n",
 			getSaNameT (&comp->name), comp->presence_state);
 			getSaNameT (&comp->name), comp->presence_state);
@@ -731,8 +751,8 @@ printf ("component presence state %d\n", comp->presence_state);
 printf ("Creating invocation %llu", 
 printf ("Creating invocation %llu", 
 	(unsigned long long)res_lib_amf_componentterminatecallback.invocation);
 	(unsigned long long)res_lib_amf_componentterminatecallback.invocation);
 				        
 				        
-	libais_send_response (
-		comp->conn_info->conn_info_partner,
+	openais_conn_send_response (
+		openais_conn_partner_get (comp->conn),
 		&res_lib_amf_componentterminatecallback,
 		&res_lib_amf_componentterminatecallback,
 		sizeof (struct res_lib_amf_componentterminatecallback));
 		sizeof (struct res_lib_amf_componentterminatecallback));
 
 
@@ -823,16 +843,6 @@ int clc_cleanup (struct amf_comp *comp)
 
 
 static int amf_exec_init_fn (struct openais_config *openais_config)
 static int amf_exec_init_fn (struct openais_config *openais_config)
 {
 {
-#ifdef TODO
-	int res;
-	res = totempg_recovery_plug_create (&amf_recovery_plug_handle);
-	if (res != 0) {
-		log_printf(LOG_LEVEL_ERROR,
-		"Could not create recovery plug for amf service.\n");
-
-		return (-1);
-	}
-#endif
 	if (openais_config->amf_enabled) {
 	if (openais_config->amf_enabled) {
 		clc_instantiate_all ();
 		clc_instantiate_all ();
 	}
 	}
@@ -877,14 +887,15 @@ static void amf_confchg_fn (
 #endif
 #endif
 }
 }
 
 
-int amf_lib_exit_fn (struct conn_info *conn_info)
+int amf_lib_exit_fn (void *conn)
 {
 {
 	struct amf_comp *comp;
 	struct amf_comp *comp;
+	struct amf_pd *amf_pd = (struct amf_pd *)openais_conn_private_data_get (conn);
 
 
-	comp = conn_info->ais_ci.u.libamf_ci.comp;
+	comp = amf_pd->comp;
 
 
 	if (comp) {
 	if (comp) {
-		comp->conn_info = 0;
+		comp->conn = 0;
 
 
 printf ("setting in exit fn to uninst for comp %p\n", comp);
 printf ("setting in exit fn to uninst for comp %p\n", comp);
 		presence_state_comp_set (
 		presence_state_comp_set (
@@ -900,11 +911,12 @@ printf ("setting in exit fn to uninst for comp %p\n", comp);
 	return (0);
 	return (0);
 }
 }
 
 
-static int amf_lib_init_fn (struct conn_info *conn_info)
+static int amf_lib_init_fn (void *conn)
 {
 {
 	log_printf (LOG_LEVEL_DEBUG, "Got request to initalize availability management framework service.\n"); 
 	log_printf (LOG_LEVEL_DEBUG, "Got request to initalize availability management framework service.\n"); 
+	struct amf_pd *amf_pd = (struct amf_pd *)openais_conn_private_data_get (conn);
 
 
-	list_init (&conn_info->conn_list);
+	list_init (&amf_pd->list);
 
 
 	return (0);
 	return (0);
 }
 }
@@ -1173,10 +1185,10 @@ static void protectiongroup_notification_send (struct conn_info *conn_info,
 			&amfProtectionGroup->name, sizeof (SaNameT));
 			&amfProtectionGroup->name, sizeof (SaNameT));
 
 
 		res_lib_amf_protectiongrouptrackcallback.notificationBufferAddress = notificationBufferAddress;
 		res_lib_amf_protectiongrouptrackcallback.notificationBufferAddress = notificationBufferAddress;
-		libais_send_response (conn_info, &res_lib_amf_protectiongrouptrackcallback,
+		openais_conn_send_response (conno, &res_lib_amf_protectiongrouptrackcallback,
 			sizeof (struct res_lib_amf_protectiongrouptrackcallback));
 			sizeof (struct res_lib_amf_protectiongrouptrackcallback));
 
 
-		libais_send_response (conn_info, protectionGroupNotification,
+		openais_conn_send_response (conno, protectionGroupNotification,
 			sizeof (SaAmfProtectionGroupNotificationT) * notifyEntries);
 			sizeof (SaAmfProtectionGroupNotificationT) * notifyEntries);
 
 
 		mempool_free (protectionGroupNotification);
 		mempool_free (protectionGroupNotification);
@@ -1395,7 +1407,8 @@ void csi_comp_set_callback (
 		AMF_RESPONSE_CSISETCALLBACK,
 		AMF_RESPONSE_CSISETCALLBACK,
 		csi_set_callback_data);
 		csi_set_callback_data);
 				        
 				        
-	libais_send_response (comp->conn_info->conn_info_partner,
+	openais_conn_send_response (
+		openais_conn_partner_get (comp->conn),
 		&res_lib_amf_csisetcallback,
 		&res_lib_amf_csisetcallback,
 		sizeof (struct res_lib_amf_csisetcallback));
 		sizeof (struct res_lib_amf_csisetcallback));
 }
 }
@@ -1467,7 +1480,8 @@ void csi_comp_remove_callback (struct amf_comp *comp, struct amf_csi *csi)
 
 
 	res_lib_amf_csiremovecallback.csiFlags = 0;
 	res_lib_amf_csiremovecallback.csiFlags = 0;
 				        
 				        
-	libais_send_response (comp->conn_info->conn_info_partner,
+	openais_conn_send_response (
+		openais_conn_partner_get (comp->conn),
 		&res_lib_amf_csiremovecallback,
 		&res_lib_amf_csiremovecallback,
 		sizeof (struct res_lib_amf_csiremovecallback));
 		sizeof (struct res_lib_amf_csiremovecallback));
 
 
@@ -2127,7 +2141,8 @@ void healthcheck_activate (struct healthcheck_active *healthcheck_active)
 		&healthcheck_active->key,
 		&healthcheck_active->key,
 		sizeof (SaAmfHealthcheckKeyT));
 		sizeof (SaAmfHealthcheckKeyT));
 
 
-	libais_send_response (healthcheck_active->comp->conn_info->conn_info_partner,
+	openais_conn_send_response (
+		openais_conn_partner_get (healthcheck_active->comp->conn),
 		&res_lib_amf_healthcheckcallback,
 		&res_lib_amf_healthcheckcallback,
 		sizeof (struct res_lib_amf_healthcheckcallback));
 		sizeof (struct res_lib_amf_healthcheckcallback));
 
 
@@ -2305,7 +2320,7 @@ static void message_handler_req_exec_amf_presence_state_comp_set (
 	}
 	}
 
 
 	if (req_exec_amf_presence_state_comp_set->presence_state == OPENAIS_CFG_PRESENCESTATE_UNINSTANTIATED) {
 	if (req_exec_amf_presence_state_comp_set->presence_state == OPENAIS_CFG_PRESENCESTATE_UNINSTANTIATED) {
-		comp->conn_info = 0;
+		comp->conn = 0;
 	}
 	}
 
 
 	/*
 	/*
@@ -2382,12 +2397,15 @@ static void message_handler_req_exec_amf_administrative_state_group_set (
 /*
 /*
  * Library Interface Implementation
  * Library Interface Implementation
  */
  */
-static void message_handler_req_lib_amf_componentregister (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_amf_componentregister (
+	void *conn,
+	 void *msg)
 {
 {
 	struct req_lib_amf_componentregister *req_lib_amf_componentregister =
 	struct req_lib_amf_componentregister *req_lib_amf_componentregister =
-		(struct req_lib_amf_componentregister *)message;
+		(struct req_lib_amf_componentregister *)msg;
 	struct res_lib_amf_componentregister res_lib_amf_componentregister;
 	struct res_lib_amf_componentregister res_lib_amf_componentregister;
 	struct amf_comp *comp;
 	struct amf_comp *comp;
+	struct amf_pd *amf_pd = (struct amf_pd *)openais_conn_private_data_get (conn);
 	SaAisErrorT error = SA_AIS_ERR_NOT_EXIST;
 	SaAisErrorT error = SA_AIS_ERR_NOT_EXIST;
 
 
 	comp = find_comp (&req_lib_amf_componentregister->compName);
 	comp = find_comp (&req_lib_amf_componentregister->compName);
@@ -2396,8 +2414,8 @@ static void message_handler_req_lib_amf_componentregister (struct conn_info *con
 			OPENAIS_CFG_PRESENCESTATE_INSTANTIATED);
 			OPENAIS_CFG_PRESENCESTATE_INSTANTIATED);
 		operational_state_comp_set (comp,
 		operational_state_comp_set (comp,
 			OPENAIS_CFG_OPERATIONALSTATE_ENABLED);
 			OPENAIS_CFG_OPERATIONALSTATE_ENABLED);
-		comp->conn_info = conn_info;
-		comp->conn_info->ais_ci.u.libamf_ci.comp = comp;
+		comp->conn = conn;
+		amf_pd->comp = comp;
 		comp_healthcheck_activate (comp);
 		comp_healthcheck_activate (comp);
 		error = SA_AIS_OK;
 		error = SA_AIS_OK;
 	}
 	}
@@ -2405,11 +2423,13 @@ static void message_handler_req_lib_amf_componentregister (struct conn_info *con
 	res_lib_amf_componentregister.header.id = MESSAGE_RES_AMF_COMPONENTREGISTER;
 	res_lib_amf_componentregister.header.id = MESSAGE_RES_AMF_COMPONENTREGISTER;
 	res_lib_amf_componentregister.header.size = sizeof (struct res_lib_amf_componentregister);
 	res_lib_amf_componentregister.header.size = sizeof (struct res_lib_amf_componentregister);
 	res_lib_amf_componentregister.header.error = error;
 	res_lib_amf_componentregister.header.error = error;
-	libais_send_response (conn_info, &res_lib_amf_componentregister,
+	openais_conn_send_response (conn, &res_lib_amf_componentregister,
 		sizeof (struct res_lib_amf_componentregister));
 		sizeof (struct res_lib_amf_componentregister));
 }
 }
 
 
-static void message_handler_req_lib_amf_componentunregister (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_amf_componentunregister (
+	void *conn,
+	void *msg)
 {
 {
 #ifdef COMPILE_OUT
 #ifdef COMPILE_OUT
 	struct req_lib_amf_componentunregister *req_lib_amf_componentunregister = (struct req_lib_amf_componentunregister *)message;
 	struct req_lib_amf_componentunregister *req_lib_amf_componentunregister = (struct req_lib_amf_componentunregister *)message;
@@ -2441,17 +2461,22 @@ static void message_handler_req_lib_amf_componentunregister (struct conn_info *c
 #endif
 #endif
 }
 }
 
 
-static void message_handler_req_lib_amf_pmstart (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_amf_pmstart (
+	void *conn,
+	void *msg)
 {
 {
 }
 }
-static void message_handler_req_lib_amf_pmstop (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_amf_pmstop (
+	void *conn,
+	void *msg)
 {
 {
 }
 }
 
 
-static void message_handler_req_lib_amf_healthcheckstart (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_amf_healthcheckstart (
+	void *conn, void *msg)
 {
 {
 	struct req_lib_amf_healthcheckstart *req_lib_amf_healthcheckstart =
 	struct req_lib_amf_healthcheckstart *req_lib_amf_healthcheckstart =
-		(struct req_lib_amf_healthcheckstart *)message;
+		(struct req_lib_amf_healthcheckstart *)msg;
 	struct res_lib_amf_healthcheckstart res_lib_amf_healthcheckstart;
 	struct res_lib_amf_healthcheckstart res_lib_amf_healthcheckstart;
 	struct amf_healthcheck *healthcheck;
 	struct amf_healthcheck *healthcheck;
 	struct healthcheck_active *healthcheck_active;
 	struct healthcheck_active *healthcheck_active;
@@ -2505,7 +2530,7 @@ fflush (stdout);
 
 
 	list_add_tail (&healthcheck_active->list, &comp->healthcheck_list);
 	list_add_tail (&healthcheck_active->list, &comp->healthcheck_list);
 
 
-	if (comp->conn_info != 0) {
+	if (comp->conn != 0) {
 printf ("Activating healthcheck for the first time %p\n", healthcheck_active);
 printf ("Activating healthcheck for the first time %p\n", healthcheck_active);
 		healthcheck_activate (healthcheck_active);
 		healthcheck_activate (healthcheck_active);
 	}
 	}
@@ -2525,18 +2550,22 @@ error_exit:
 	res_lib_amf_healthcheckstart.header.size = sizeof (struct res_lib_amf_healthcheckstart);
 	res_lib_amf_healthcheckstart.header.size = sizeof (struct res_lib_amf_healthcheckstart);
 	res_lib_amf_healthcheckstart.header.error = error;
 	res_lib_amf_healthcheckstart.header.error = error;
 
 
-	libais_send_response (conn_info, &res_lib_amf_healthcheckstart,
+	openais_conn_send_response (conn, &res_lib_amf_healthcheckstart,
 		sizeof (struct res_lib_amf_healthcheckstart));
 		sizeof (struct res_lib_amf_healthcheckstart));
 }
 }
 
 
-static void message_handler_req_lib_amf_healthcheckconfirm (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_amf_healthcheckconfirm (
+	void *conn,
+	void *msg)
 {
 {
 }
 }
 
 
-static void message_handler_req_lib_amf_healthcheckstop (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_amf_healthcheckstop (
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_amf_healthcheckstop *req_lib_amf_healthcheckstop =
 	struct req_lib_amf_healthcheckstop *req_lib_amf_healthcheckstop =
-		(struct req_lib_amf_healthcheckstop *)message;
+		(struct req_lib_amf_healthcheckstop *)msg;
 	struct res_lib_amf_healthcheckstop res_lib_amf_healthcheckstop;
 	struct res_lib_amf_healthcheckstop res_lib_amf_healthcheckstop;
 	struct healthcheck_active *healthcheck_active;
 	struct healthcheck_active *healthcheck_active;
 	struct amf_comp *comp;
 	struct amf_comp *comp;
@@ -2568,14 +2597,16 @@ error_exit:
 	res_lib_amf_healthcheckstop.header.size = sizeof (struct res_lib_amf_healthcheckstop);
 	res_lib_amf_healthcheckstop.header.size = sizeof (struct res_lib_amf_healthcheckstop);
 	res_lib_amf_healthcheckstop.header.error = error;
 	res_lib_amf_healthcheckstop.header.error = error;
 
 
-	libais_send_response (conn_info, &res_lib_amf_healthcheckstop,
+	openais_conn_send_response (conn, &res_lib_amf_healthcheckstop,
 		sizeof (struct res_lib_amf_healthcheckstop));
 		sizeof (struct res_lib_amf_healthcheckstop));
 }
 }
 
 
-static void message_handler_req_lib_amf_hastateget (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_amf_hastateget (
+	void *conn,
+	void *msg)
 {
 {
 #ifdef COMPILE_OUT
 #ifdef COMPILE_OUT
-	struct req_lib_amf_hastateget *req_lib_amf_hastateget = (struct req_lib_amf_hastateget *)message;
+	struct req_lib_amf_hastateget *req_lib_amf_hastateget = (struct req_lib_amf_hastateget *)msg;
 	struct res_lib_amf_hastateget res_lib_amf_hastateget;
 	struct res_lib_amf_hastateget res_lib_amf_hastateget;
 	struct amf_comp *component;
 	struct amf_comp *component;
 
 
@@ -2594,11 +2625,13 @@ static void message_handler_req_lib_amf_hastateget (struct conn_info *conn_info,
 			&component->currentHAState, sizeof (SaAmfHAStateT));
 			&component->currentHAState, sizeof (SaAmfHAStateT));
 		res_lib_amf_hastateget.header.error = SA_AIS_OK;
 		res_lib_amf_hastateget.header.error = SA_AIS_OK;
 	}
 	}
-	libais_send_response (conn_info, &res_lib_amf_hastateget, sizeof (struct res_lib_amf_hastateget));
+	openais_conn_send_response (conn, &res_lib_amf_hastateget, sizeof (struct res_lib_amf_hastateget));
 #endif
 #endif
 }
 }
 
 
-static void message_handler_req_lib_amf_protectiongrouptrackstart (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_amf_protectiongrouptrackstart (
+	void *conn,
+	void *msg)
 {
 {
 #ifdef COMPILE_OUT
 #ifdef COMPILE_OUT
 	struct req_lib_amf_protectiongrouptrackstart *req_lib_amf_protectiongrouptrackstart = (struct req_lib_amf_protectiongrouptrackstart *)message;
 	struct req_lib_amf_protectiongrouptrackstart *req_lib_amf_protectiongrouptrackstart = (struct req_lib_amf_protectiongrouptrackstart *)message;
@@ -2648,7 +2681,7 @@ static void message_handler_req_lib_amf_protectiongrouptrackstart (struct conn_i
 	if (amfProtectionGroup) {
 	if (amfProtectionGroup) {
 		res_lib_amf_protectiongrouptrackstart.header.error = SA_AIS_OK;
 		res_lib_amf_protectiongrouptrackstart.header.error = SA_AIS_OK;
 	}
 	}
-	libais_send_response (conn_info, &res_lib_amf_protectiongrouptrackstart,
+	openais_conn_send_response (conn, &res_lib_amf_protectiongrouptrackstart,
 		sizeof (struct res_lib_amf_protectiongrouptrackstart));
 		sizeof (struct res_lib_amf_protectiongrouptrackstart));
 
 
 	if (amfProtectionGroup &&
 	if (amfProtectionGroup &&
@@ -2666,11 +2699,15 @@ static void message_handler_req_lib_amf_protectiongrouptrackstart (struct conn_i
 #endif
 #endif
 }
 }
 
 
-static void message_handler_req_lib_amf_csiquiescingcomplete (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_amf_csiquiescingcomplete (
+	void *conn,
+	void *msg)
 {
 {
 }
 }
 
 
-static void message_handler_req_lib_amf_protectiongrouptrackstop (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_amf_protectiongrouptrackstop (
+	void *conn,
+	void *msg)
 {
 {
 #ifdef COMPILE_OUT
 #ifdef COMPILE_OUT
 	struct req_lib_amf_protectiongrouptrackstop *req_lib_amf_protectiongrouptrackstop = (struct req_lib_amf_protectiongrouptrackstop *)message;
 	struct req_lib_amf_protectiongrouptrackstop *req_lib_amf_protectiongrouptrackstop = (struct req_lib_amf_protectiongrouptrackstop *)message;
@@ -2704,15 +2741,17 @@ static void message_handler_req_lib_amf_protectiongrouptrackstop (struct conn_in
 	if (track) {
 	if (track) {
 		res_lib_amf_protectiongrouptrackstop.header.error = SA_AIS_OK;
 		res_lib_amf_protectiongrouptrackstop.header.error = SA_AIS_OK;
 	}
 	}
-	libais_send_response (conn_info, &res_lib_amf_protectiongrouptrackstop,
+	openais_conn_send_response (conn, &res_lib_amf_protectiongrouptrackstop,
 		sizeof (struct res_lib_amf_protectiongrouptrackstop));
 		sizeof (struct res_lib_amf_protectiongrouptrackstop));
 
 
 #endif
 #endif
 }
 }
 
 
-static void message_handler_req_lib_amf_componenterrorreport (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_amf_componenterrorreport (
+	void *conn,
+	void *msg)
 {
 {
-	struct req_lib_amf_componenterrorreport *req_lib_amf_componenterrorreport = (struct req_lib_amf_componenterrorreport *)message;
+	struct req_lib_amf_componenterrorreport *req_lib_amf_componenterrorreport = (struct req_lib_amf_componenterrorreport *)msg;
 	struct res_lib_amf_componenterrorreport res_lib_amf_componenterrorreport;
 	struct res_lib_amf_componenterrorreport res_lib_amf_componenterrorreport;
 	struct amf_comp *comp;
 	struct amf_comp *comp;
 	SaAisErrorT error = SA_AIS_ERR_NOT_EXIST;
 	SaAisErrorT error = SA_AIS_ERR_NOT_EXIST;
@@ -2731,14 +2770,14 @@ printf ("escalation policy terminate\n");
 	res_lib_amf_componenterrorreport.header.id = MESSAGE_RES_AMF_COMPONENTERRORREPORT;
 	res_lib_amf_componenterrorreport.header.id = MESSAGE_RES_AMF_COMPONENTERRORREPORT;
 	res_lib_amf_componenterrorreport.header.error = error;
 	res_lib_amf_componenterrorreport.header.error = error;
 
 
-	libais_send_response (
-		conn_info, 
-		&res_lib_amf_componenterrorreport,
+	openais_conn_send_response (
+		conn, &res_lib_amf_componenterrorreport,
 		sizeof (struct res_lib_amf_componenterrorreport));
 		sizeof (struct res_lib_amf_componenterrorreport));
-
 }
 }
 
 
-static void message_handler_req_lib_amf_componenterrorclear (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_amf_componenterrorclear (
+	void *conn,
+	void *msg)
 {
 {
 #ifdef COMPILLE_OUT
 #ifdef COMPILLE_OUT
 	struct req_lib_amf_componenterrorclear *req_lib_amf_componenterrorclear = (struct req_lib_amf_componenterrorclear *)message;
 	struct req_lib_amf_componenterrorclear *req_lib_amf_componenterrorclear = (struct req_lib_amf_componenterrorclear *)message;
@@ -2783,9 +2822,9 @@ void pg_comp_create (
 	list_add_tail (&pg_comp->list, &pg->pg_comp_head);
 	list_add_tail (&pg_comp->list, &pg->pg_comp_head);
 }
 }
 
 
-static void message_handler_req_lib_amf_response (struct conn_info *conn_info_nouse, void *message)
+static void message_handler_req_lib_amf_response (void *conn, void *msg)
 {
 {
-	struct req_lib_amf_response *req_lib_amf_response = (struct req_lib_amf_response *)message;
+	struct req_lib_amf_response *req_lib_amf_response = (struct req_lib_amf_response *)msg;
 	struct res_lib_amf_response res_lib_amf_response;
 	struct res_lib_amf_response res_lib_amf_response;
 	struct conn_info *conn_info;
 	struct conn_info *conn_info;
 	struct csi_set_callback_data *csi_set_callback_data;
 	struct csi_set_callback_data *csi_set_callback_data;
@@ -2871,8 +2910,7 @@ error_exit:
 	res_lib_amf_response.header.id = MESSAGE_RES_AMF_RESPONSE;
 	res_lib_amf_response.header.id = MESSAGE_RES_AMF_RESPONSE;
 	res_lib_amf_response.header.size = sizeof (struct res_lib_amf_response);
 	res_lib_amf_response.header.size = sizeof (struct res_lib_amf_response);
 	res_lib_amf_response.header.error = SA_AIS_OK;
 	res_lib_amf_response.header.error = SA_AIS_OK;
-	libais_send_response (conn_info_nouse,
-		&res_lib_amf_response,
+	openais_conn_send_response (conn, &res_lib_amf_response,
 		sizeof (struct res_lib_amf_response));
 		sizeof (struct res_lib_amf_response));
 
 
 }
 }
@@ -2975,7 +3013,7 @@ static void message_handler_req_exec_amf_componentregister (void *message, struc
 		res_lib_amf_componentregister.header.id = MESSAGE_RES_AMF_COMPONENTREGISTER;
 		res_lib_amf_componentregister.header.id = MESSAGE_RES_AMF_COMPONENTREGISTER;
 		res_lib_amf_componentregister.header.error = error;
 		res_lib_amf_componentregister.header.error = error;
 
 
-		libais_send_response (req_exec_amf_componentregister->source.conn_info,
+		openais_conn_send_response (req_exec_amf_componentregister->source.conn_info,
 			&res_lib_amf_componentregister,
 			&res_lib_amf_componentregister,
 			sizeof (struct res_lib_amf_componentregister));
 			sizeof (struct res_lib_amf_componentregister));
 	}
 	}
@@ -3051,7 +3089,7 @@ static void message_handler_req_exec_amf_componentunregister (void *message, str
 		res_lib_amf_componentunregister.header.id = MESSAGE_RES_AMF_COMPONENTUNREGISTER;
 		res_lib_amf_componentunregister.header.id = MESSAGE_RES_AMF_COMPONENTUNREGISTER;
 		res_lib_amf_componentunregister.header.error = error;
 		res_lib_amf_componentunregister.header.error = error;
 
 
-		libais_send_response (req_exec_amf_componentunregister->source.conn_info,
+		openais_conn_send_response (req_exec_amf_componentunregister->source.conn_info,
 			&res_lib_amf_componentunregister, sizeof (struct res_lib_amf_componentunregister));
 			&res_lib_amf_componentunregister, sizeof (struct res_lib_amf_componentunregister));
 	}
 	}
 
 
@@ -3087,7 +3125,7 @@ static void message_handler_req_exec_amf_componenterrorreport (void *message, st
 		res_lib_amf_componenterrorreport.header.id = MESSAGE_RES_AMF_COMPONENTERRORREPORT;
 		res_lib_amf_componenterrorreport.header.id = MESSAGE_RES_AMF_COMPONENTERRORREPORT;
 		res_lib_amf_componenterrorreport.header.error = error;
 		res_lib_amf_componenterrorreport.header.error = error;
 
 
-		libais_send_response (req_exec_amf_componenterrorreport->source.conn_info,
+		openais_conn_send_response (req_exec_amf_componenterrorreport->source.conn_info,
 			&res_lib_amf_componenterrorreport, sizeof (struct res_lib_amf_componenterrorreport));
 			&res_lib_amf_componenterrorreport, sizeof (struct res_lib_amf_componenterrorreport));
 	}
 	}
 
 
@@ -3131,7 +3169,7 @@ static void message_handler_req_exec_amf_componenterrorclear (void *message, str
 		res_lib_amf_componenterrorclear.header.id = MESSAGE_RES_AMF_COMPONENTERRORCLEAR;
 		res_lib_amf_componenterrorclear.header.id = MESSAGE_RES_AMF_COMPONENTERRORCLEAR;
 		res_lib_amf_componenterrorclear.header.error = error;
 		res_lib_amf_componenterrorclear.header.error = error;
 
 
-		libais_send_response (req_exec_amf_componenterrorclear->source.conn_info,
+		openais_conn_send_response (req_exec_amf_componenterrorclear->source.conn_info,
 			&res_lib_amf_componenterrorclear, sizeof (struct res_lib_amf_componenterrorclear));
 			&res_lib_amf_componenterrorclear, sizeof (struct res_lib_amf_componenterrorclear));
 	}
 	}
 
 
@@ -3333,7 +3371,7 @@ void ha_state_api_set (struct amf_comp *component, SaAmfHAStateT haState)
 
 
 	component->newHAState = haState;
 	component->newHAState = haState;
 
 
-	libais_send_response (component->conn_info->conn_info_partner,
+	openais_conn_send_response (component->conn_info->conn_info_partner,
 		&res_lib_amf_csisetcallback,
 		&res_lib_amf_csisetcallback,
 		sizeof (struct res_lib_amf_csisetcallback));
 		sizeof (struct res_lib_amf_csisetcallback));
 }
 }
@@ -3402,7 +3440,7 @@ void readiness_state_api_set (struct amf_comp *component,
 
 
 	log_printf (LOG_LEVEL_DEBUG, "Setting conn_info %p to readiness state %d\n", component->conn_info, readinessState);
 	log_printf (LOG_LEVEL_DEBUG, "Setting conn_info %p to readiness state %d\n", component->conn_info, readinessState);
 
 
-	libais_send_response (component->conn_info->conn_info_partner,
+	openais_conn_send_response (component->conn_info->conn_info_partner,
 		&res_lib_amf_readinessstatesetcallback,
 		&res_lib_amf_readinessstatesetcallback,
 		sizeof (struct res_lib_amf_readinessstatesetcallback));
 		sizeof (struct res_lib_amf_readinessstatesetcallback));
 }
 }
@@ -4373,7 +4411,7 @@ static void message_handler_req_amf_readinessstateget (struct conn_info *conn_in
 			&component->currentReadinessState, sizeof (SaAmfReadinessStateT));
 			&component->currentReadinessState, sizeof (SaAmfReadinessStateT));
 		res_lib_amf_readinessstateget.header.error = SA_AIS_OK;
 		res_lib_amf_readinessstateget.header.error = SA_AIS_OK;
 	}
 	}
-	libais_send_response (conn_info, &res_lib_amf_readinessstateget, sizeof (struct res_lib_amf_readinessstateget));
+	openais_conn_send_response (conn_info, &res_lib_amf_readinessstateget, sizeof (struct res_lib_amf_readinessstateget));
 	return (0);
 	return (0);
 }
 }
 
 
@@ -4427,7 +4465,7 @@ static void message_handler_req_lib_amf_stoppingcomplete (struct conn_info *conn
 	if (amfProtectionGroup) {
 	if (amfProtectionGroup) {
 		res_lib_amf_protectiongrouptrackstart.header.error = SA_AIS_OK;
 		res_lib_amf_protectiongrouptrackstart.header.error = SA_AIS_OK;
 	}
 	}
-	libais_send_response (conn_info, &res_lib_amf_protectiongrouptrackstart,
+	openais_conn_send_response (conn_info, &res_lib_amf_protectiongrouptrackstart,
 		sizeof (struct res_lib_amf_protectiongrouptrackstart));
 		sizeof (struct res_lib_amf_protectiongrouptrackstart));
 
 
 	if (amfProtectionGroup &&
 	if (amfProtectionGroup &&
@@ -4478,7 +4516,7 @@ static void message_handler_req_amf_protectiongrouptrackstop (struct conn_info *
 	if (track) {
 	if (track) {
 		res_lib_amf_protectiongrouptrackstop.header.error = SA_AIS_OK;
 		res_lib_amf_protectiongrouptrackstop.header.error = SA_AIS_OK;
 	}
 	}
-	libais_send_response (conn_info, &res_lib_amf_protectiongrouptrackstop,
+	openais_conn_send_response (conn_info, &res_lib_amf_protectiongrouptrackstop,
 		sizeof (struct res_lib_amf_protectiongrouptrackstop));
 		sizeof (struct res_lib_amf_protectiongrouptrackstop));
 
 
 	return (0);
 	return (0);
@@ -4589,7 +4627,7 @@ static void message_handler_req_lib_amf_componentcapabilitymodelget (struct conn
 	res_lib_amf_componentcapabilitymodelget.header.size = sizeof (struct res_lib_amf_componentcapabilitymodelget);
 	res_lib_amf_componentcapabilitymodelget.header.size = sizeof (struct res_lib_amf_componentcapabilitymodelget);
 	res_lib_amf_componentcapabilitymodelget.header.id = MESSAGE_RES_AMF_COMPONENTCAPABILITYMODELGET;
 	res_lib_amf_componentcapabilitymodelget.header.id = MESSAGE_RES_AMF_COMPONENTCAPABILITYMODELGET;
 	res_lib_amf_componentcapabilitymodelget.header.error = error;
 	res_lib_amf_componentcapabilitymodelget.header.error = error;
-	libais_send_response (conn_info, &res_lib_amf_componentcapabilitymodelget,
+	openais_conn_send_response (conn_info, &res_lib_amf_componentcapabilitymodelget,
 		sizeof (struct res_lib_amf_componentcapabilitymodelget));
 		sizeof (struct res_lib_amf_componentcapabilitymodelget));
 
 
 	return (0);
 	return (0);

+ 0 - 17
exec/amf.h

@@ -40,23 +40,6 @@
 #ifndef AMF_H_DEFINED
 #ifndef AMF_H_DEFINED
 #define AMF_H_DEFINED
 #define AMF_H_DEFINED
 
 
-struct libamf_ci_trackentry {
-	int active;
-	SaUint8T trackFlags;
-	SaAmfProtectionGroupNotificationT *notificationBufferAddress;
-	SaNameT csiName;
-};
-
-struct amf_comp;
-struct libamf_ci {
-	struct amf_comp *comp;
-/*
-	struct libamf_ci_trackentry *tracks;
-	int trackEntries;
-	int trackActive;
-*/
-};
-
 void amf_dump ();
 void amf_dump ();
 extern struct openais_service_handler amf_service_handler;
 extern struct openais_service_handler amf_service_handler;
 
 

+ 1 - 1
exec/amfconfig.h

@@ -163,7 +163,7 @@ enum clc_component_types {
 struct amf_comp {
 struct amf_comp {
 	int registered;
 	int registered;
 	int local;
 	int local;
-	struct conn_info *conn_info;
+	void *conn;
 	SaNameT name;
 	SaNameT name;
 	struct in_addr source_addr;
 	struct in_addr source_addr;
 	struct amf_comp *proxy_comp;
 	struct amf_comp *proxy_comp;

+ 22 - 15
exec/cfg.c

@@ -71,19 +71,19 @@ static void cfg_confchg_fn (
 	struct totem_ip_address *joined_list, int joined_list_entries,
 	struct totem_ip_address *joined_list, int joined_list_entries,
 	struct memb_ring_id *ring_id);
 	struct memb_ring_id *ring_id);
 
 
-static int cfg_lib_exit_fn (struct conn_info *conn_info);
-
 static int cfg_exec_init_fn (struct openais_config *);
 static int cfg_exec_init_fn (struct openais_config *);
 
 
-static int cfg_lib_init_fn (struct conn_info *conn_info);
+static int cfg_lib_init_fn (void *conn);
+
+static int cfg_lib_exit_fn (void *conn);
 
 
-static void message_handler_req_lib_cfg_statetrackstart (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_cfg_statetrackstart (void *conn, void *msg);
 
 
-static void message_handler_req_lib_cfg_statetrackstop (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_cfg_statetrackstop (void *conn, void *msg);
 
 
-static void message_handler_req_lib_cfg_administrativestateset (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_cfg_administrativestateset (void *conn, void *msg);
 
 
-static void message_handler_req_lib_cfg_administrativestateget (struct conn_info *conn_info, void *message);
+static void message_handler_req_lib_cfg_administrativestateget (void *conn, void *msg);
 
 
 /*
 /*
  * Service Handler Definition
  * Service Handler Definition
@@ -134,6 +134,7 @@ static struct openais_exec_handler cfg_exec_handlers[] =
 struct openais_service_handler cfg_service_handler = {
 struct openais_service_handler cfg_service_handler = {
 	.name					= (unsigned char*)"openais configuration service",
 	.name					= (unsigned char*)"openais configuration service",
 	.id					= CFG_SERVICE,
 	.id					= CFG_SERVICE,
+	.private_data_size			= 0,
 	.lib_init_fn				= cfg_lib_init_fn,
 	.lib_init_fn				= cfg_lib_init_fn,
 	.lib_exit_fn				= cfg_lib_exit_fn,
 	.lib_exit_fn				= cfg_lib_exit_fn,
 	.lib_handlers				= cfg_lib_handlers,
 	.lib_handlers				= cfg_lib_handlers,
@@ -201,24 +202,24 @@ static void cfg_confchg_fn (
 {
 {
 }
 }
 
 
-int cfg_lib_exit_fn (struct conn_info *conn_info)
+int cfg_lib_exit_fn (void *conn)
 {
 {
 	return (0);
 	return (0);
 }
 }
 
 
-static int cfg_lib_init_fn (struct conn_info *conn_info)
+static int cfg_lib_init_fn (void *conn)
 {
 {
         log_printf (LOG_LEVEL_DEBUG, "Got request to initalize configuration service.\n");
         log_printf (LOG_LEVEL_DEBUG, "Got request to initalize configuration service.\n");
 
 
-   //     list_init (&conn_info->conn_list);
-
         return (0);
         return (0);
 }
 }
 
 
 /*
 /*
  * Library Interface Implementation
  * Library Interface Implementation
  */
  */
-static void message_handler_req_lib_cfg_statetrackstart (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_cfg_statetrackstart (
+	void *conn,
+	void *msg)
 {
 {
 //	struct req_lib_cfg_statetrackstart *req_lib_cfg_statetrackstart = (struct req_lib_cfg_statetrackstart *)message;
 //	struct req_lib_cfg_statetrackstart *req_lib_cfg_statetrackstart = (struct req_lib_cfg_statetrackstart *)message;
 
 
@@ -226,7 +227,9 @@ static void message_handler_req_lib_cfg_statetrackstart (struct conn_info *conn_
 		"Handle : message_handler_req_lib_cfg_statetrackstart()\n");
 		"Handle : message_handler_req_lib_cfg_statetrackstart()\n");
 }
 }
 
 
-static void message_handler_req_lib_cfg_statetrackstop (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_cfg_statetrackstop (
+	void *conn,
+	void *msg)
 {
 {
 //	struct req_lib_cfg_statetrackstop *req_lib_cfg_statetrackstop = (struct req_lib_cfg_statetrackstop *)message;
 //	struct req_lib_cfg_statetrackstop *req_lib_cfg_statetrackstop = (struct req_lib_cfg_statetrackstop *)message;
 
 
@@ -234,13 +237,17 @@ static void message_handler_req_lib_cfg_statetrackstop (struct conn_info *conn_i
 		"Handle : message_handler_req_lib_cfg_administrativestateget()\n");
 		"Handle : message_handler_req_lib_cfg_administrativestateget()\n");
 }
 }
 
 
-static void message_handler_req_lib_cfg_administrativestateset (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_cfg_administrativestateset (
+	void *conn,
+	void *msg)
 {
 {
 //	struct req_lib_cfg_administrativestateset *req_lib_cfg_administrativestateset = (struct req_lib_cfg_administrativestateset *)message;
 //	struct req_lib_cfg_administrativestateset *req_lib_cfg_administrativestateset = (struct req_lib_cfg_administrativestateset *)message;
 	log_printf (LOG_LEVEL_FROM_LIB,
 	log_printf (LOG_LEVEL_FROM_LIB,
 		"Handle : message_handler_req_lib_cfg_administrativestateset()\n");
 		"Handle : message_handler_req_lib_cfg_administrativestateset()\n");
 }
 }
-static void message_handler_req_lib_cfg_administrativestateget (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_cfg_administrativestateget (
+	void *conn,
+	void *msg)
 {
 {
 //	struct req_lib_cfg_administrativestateget *req_lib_cfg_administrativestateget = (struct req_lib_cfg_administrativestateget *)message;
 //	struct req_lib_cfg_administrativestateget *req_lib_cfg_administrativestateget = (struct req_lib_cfg_administrativestateget *)message;
 	log_printf (LOG_LEVEL_FROM_LIB,
 	log_printf (LOG_LEVEL_FROM_LIB,

+ 1 - 1
exec/cfg.h

@@ -39,6 +39,6 @@
 #ifndef CFG_H_DEFINED
 #ifndef CFG_H_DEFINED
 #define CFG_H_DEFINED
 #define CFG_H_DEFINED
 
 
-extern struct service_handler cfg_service_handler;
+extern struct openais_service_handler cfg_service_handler;
 
 
 #endif /* CFG_H_DEFINED */
 #endif /* CFG_H_DEFINED */

File diff suppressed because it is too large
+ 333 - 193
exec/ckpt.c


+ 0 - 43
exec/ckpt.h

@@ -39,49 +39,6 @@
 #ifndef CKPT_H_DEFINED
 #ifndef CKPT_H_DEFINED
 #define CKPT_H_DEFINED
 #define CKPT_H_DEFINED
 
 
-struct ckpt_refcnt {
-	int count;
-	struct totem_ip_address addr;
-};
-
-struct saCkptCheckpointSection {
-	struct list_head list;
-	SaCkptSectionDescriptorT sectionDescriptor;
-	void *sectionData;
-	poll_timer_handle expiration_timer;
-};
-
-struct saCkptCheckpoint {
-	struct list_head list;
-	SaNameT name;
-	SaCkptCheckpointCreationAttributesT checkpointCreationAttributes;
-	struct list_head checkpointSectionsListHead;
-	int referenceCount;
-	int unlinked;
-	poll_timer_handle retention_timer;
-	int expired;
-	int active_replica_set;
-	int sectionCount;
-	struct ckpt_refcnt ckpt_refcount[PROCESSOR_COUNT_MAX];	
-};
-
-struct saCkptSectionIteratorEntry {
-	int active;
-	struct saCkptCheckpointSection *checkpointSection;
-};
-
-struct saCkptSectionIterator {
-	struct list_head list;
-	struct saCkptSectionIteratorEntry *sectionIteratorEntries;
-	int iteratorCount;
-	int iteratorPos;
-};
-
-struct libckpt_ci {
-	struct list_head checkpoint_list;
-	struct saCkptSectionIterator sectionIterator;
-};
-
 extern struct openais_service_handler ckpt_service_handler;
 extern struct openais_service_handler ckpt_service_handler;
 
 
 #endif /* CKPT_H_DEFINED */
 #endif /* CKPT_H_DEFINED */

+ 52 - 47
exec/clm.c

@@ -124,9 +124,9 @@ static void clm_sync_abort (void);
 
 
 static int clm_exec_init_fn (struct openais_config *);
 static int clm_exec_init_fn (struct openais_config *);
 
 
-static int clm_lib_init_fn (struct conn_info *conn_info);
+static int clm_lib_init_fn (void *conn);
 
 
-static int clm_lib_exit_fn (struct conn_info *conn_info);
+static int clm_lib_exit_fn (void *conn);
 
 
 static void message_handler_req_exec_clm_nodejoin (
 static void message_handler_req_exec_clm_nodejoin (
 	void *message,
 	void *message,
@@ -134,17 +134,20 @@ static void message_handler_req_exec_clm_nodejoin (
 
 
 static void exec_clm_nodejoin_endian_convert (void *msg);
 static void exec_clm_nodejoin_endian_convert (void *msg);
 
 
-static void message_handler_req_lib_clm_clustertrack (struct conn_info *conn_info,
-	void *message);
+static void message_handler_req_lib_clm_clustertrack (void *conn, void *message);
 
 
-static void message_handler_req_lib_clm_trackstop (struct conn_info *conn_info,
-	void *message);
+static void message_handler_req_lib_clm_trackstop (void *conn, void *message);
 
 
-static void message_handler_req_lib_clm_nodeget (struct conn_info *conn_info,
-	void *message);
+static void message_handler_req_lib_clm_nodeget (void *conn, void *message);
 
 
-static void message_handler_req_lib_clm_nodegetasync (struct conn_info *conn_info,
-	void *message);
+static void message_handler_req_lib_clm_nodegetasync (void *conn, void *message);
+
+struct clm_pd {
+	SaUint8T trackFlags;
+	int tracking_enabled;
+	struct list_head list;
+	void *conn;
+};
 
 
 /*
 /*
  * Executive Handler Definition
  * Executive Handler Definition
@@ -188,6 +191,7 @@ static struct openais_exec_handler clm_exec_handlers[] =
 struct openais_service_handler clm_service_handler = {
 struct openais_service_handler clm_service_handler = {
 	.name						= (unsigned char*)"openais cluster membership service B.01.01",
 	.name						= (unsigned char*)"openais cluster membership service B.01.01",
 	.id							= CLM_SERVICE,
 	.id							= CLM_SERVICE,
+	.private_data_size			= sizeof (struct clm_pd),
 	.lib_init_fn				= clm_lib_init_fn,
 	.lib_init_fn				= clm_lib_init_fn,
 	.lib_exit_fn				= clm_lib_exit_fn,
 	.lib_exit_fn				= clm_lib_exit_fn,
 	.lib_handlers				= clm_lib_handlers,
 	.lib_handlers				= clm_lib_handlers,
@@ -282,10 +286,6 @@ static int clm_exec_init_fn (struct openais_config *openais_config)
 		thisClusterNode.bootTimestamp = ((SaTimeT)(current_time - s_info.uptime)) * 1000000000;
 		thisClusterNode.bootTimestamp = ((SaTimeT)(current_time - s_info.uptime)) * 1000000000;
 	}
 	}
 
 
-#ifdef DEBUG
-    printSaClmClusterNodeT ("this cluster node", &thisClusterNode);
-#endif
-
 	memcpy (&clusterNodes[0], &thisClusterNode, sizeof (SaClmClusterNodeT));
 	memcpy (&clusterNodes[0], &thisClusterNode, sizeof (SaClmClusterNodeT));
 	clusterNodeEntries = 1;
 	clusterNodeEntries = 1;
 
 
@@ -293,12 +293,14 @@ static int clm_exec_init_fn (struct openais_config *openais_config)
 	return (0);
 	return (0);
 }
 }
 
 
-static int clm_lib_exit_fn (struct conn_info *conn_info)
+static int clm_lib_exit_fn (void *conn)
 {
 {
+	struct clm_pd *clm_pd = (struct clm_pd *)openais_conn_private_data_get (conn);
 	/*
 	/*
 	 * Delete track entry if there is one
 	 * Delete track entry if there is one
 	 */
 	 */
-	list_del (&conn_info->conn_list);
+	list_del (&clm_pd->list);
+	clm_pd->conn = conn;
 
 
 	return (0);
 	return (0);
 }
 }
@@ -307,7 +309,7 @@ static void library_notification_send (SaClmClusterNotificationT *cluster_notifi
 	int notify_entries)
 	int notify_entries)
 {
 {
 	struct res_lib_clm_clustertrack res_lib_clm_clustertrack;
 	struct res_lib_clm_clustertrack res_lib_clm_clustertrack;
-	struct conn_info *conn_info;
+	struct clm_pd *clm_pd;
 	struct list_head *list;
 	struct list_head *list;
 	int i;
 	int i;
 
 
@@ -324,12 +326,12 @@ static void library_notification_send (SaClmClusterNotificationT *cluster_notifi
         list != &library_notification_send_listhead;
         list != &library_notification_send_listhead;
         list = list->next) {
         list = list->next) {
 
 
-        conn_info = list_entry (list, struct conn_info, conn_list);
+        clm_pd = list_entry (list, struct clm_pd, list);
 
 
 		/*
 		/*
 		 * Track current and changes
 		 * Track current and changes
 		 */
 		 */
-		if (conn_info->ais_ci.u.libclm_ci.trackFlags & SA_TRACK_CHANGES) {
+		if (clm_pd->trackFlags & SA_TRACK_CHANGES) {
 			/*
 			/*
 			 * Copy all cluster nodes
 			 * Copy all cluster nodes
 			 */
 			 */
@@ -348,10 +350,11 @@ static void library_notification_send (SaClmClusterNotificationT *cluster_notifi
 				sizeof (SaClmClusterNotificationT) * notify_entries);
 				sizeof (SaClmClusterNotificationT) * notify_entries);
 		} else
 		} else
 
 
+
 		/*
 		/*
 		 * Track only changes
 		 * Track only changes
 		 */
 		 */
-		if (conn_info->ais_ci.u.libclm_ci.trackFlags & SA_TRACK_CHANGES_ONLY) {
+		if (clm_pd->trackFlags & SA_TRACK_CHANGES_ONLY) {
 			res_lib_clm_clustertrack.numberOfItems = notify_entries;
 			res_lib_clm_clustertrack.numberOfItems = notify_entries;
 			memcpy (&res_lib_clm_clustertrack.notification,
 			memcpy (&res_lib_clm_clustertrack.notification,
 				cluster_notification_entries,
 				cluster_notification_entries,
@@ -361,7 +364,8 @@ static void library_notification_send (SaClmClusterNotificationT *cluster_notifi
 		/*
 		/*
 		 * Send notifications to all CLM listeners
 		 * Send notifications to all CLM listeners
 		 */
 		 */
-		libais_send_response (conn_info, &res_lib_clm_clustertrack,
+		openais_conn_send_response (clm_pd->conn,
+			&res_lib_clm_clustertrack,
 			sizeof (struct res_lib_clm_clustertrack));
 			sizeof (struct res_lib_clm_clustertrack));
     }
     }
 }
 }
@@ -578,19 +582,21 @@ static void message_handler_req_exec_clm_nodejoin (
 	}
 	}
 }
 }
 
 
-static int clm_lib_init_fn (struct conn_info *conn_info)
+static int clm_lib_init_fn (void *conn)
 {
 {
 	log_printf (LOG_LEVEL_DEBUG, "Got request to initalize cluster membership service.\n");
 	log_printf (LOG_LEVEL_DEBUG, "Got request to initalize cluster membership service.\n");
+	struct clm_pd *clm_pd = (struct clm_pd *)openais_conn_private_data_get (conn);
 
 
-	list_init (&conn_info->conn_list);
+	list_init (&clm_pd->list);
 
 
 	return (0);
 	return (0);
 }
 }
 
 
-static void message_handler_req_lib_clm_clustertrack (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_clm_clustertrack (void *conn, void *msg)
 {
 {
-	struct req_lib_clm_clustertrack *req_lib_clm_clustertrack = (struct req_lib_clm_clustertrack *)message;
+	struct req_lib_clm_clustertrack *req_lib_clm_clustertrack = (struct req_lib_clm_clustertrack *)msg;
 	struct res_lib_clm_clustertrack res_lib_clm_clustertrack;
 	struct res_lib_clm_clustertrack res_lib_clm_clustertrack;
+	struct clm_pd *clm_pd = (struct clm_pd *)openais_conn_private_data_get (conn);
 	int i;
 	int i;
 
 
 	res_lib_clm_clustertrack.header.size = sizeof (struct res_lib_clm_clustertrack);
 	res_lib_clm_clustertrack.header.size = sizeof (struct res_lib_clm_clustertrack);
@@ -615,53 +621,50 @@ static void message_handler_req_lib_clm_clustertrack (struct conn_info *conn_inf
 	if (req_lib_clm_clustertrack->trackFlags & SA_TRACK_CHANGES ||
 	if (req_lib_clm_clustertrack->trackFlags & SA_TRACK_CHANGES ||
 		req_lib_clm_clustertrack->trackFlags & SA_TRACK_CHANGES_ONLY) {
 		req_lib_clm_clustertrack->trackFlags & SA_TRACK_CHANGES_ONLY) {
 
 
-		conn_info->conn_info_partner->ais_ci.u.libclm_ci.trackFlags =
-			req_lib_clm_clustertrack->trackFlags;
-
-		conn_info->conn_info_partner->ais_ci.u.libclm_ci.tracking_enabled = 1;
+		clm_pd->trackFlags = req_lib_clm_clustertrack->trackFlags;
+		clm_pd->tracking_enabled = 1;
 
 
-		list_add (&conn_info->conn_info_partner->conn_list,
-			&library_notification_send_listhead);
+		list_add (&clm_pd->list, &library_notification_send_listhead);
 	}
 	}
 
 
-	libais_send_response (conn_info, &res_lib_clm_clustertrack,
+	openais_conn_send_response (conn, &res_lib_clm_clustertrack,
 		sizeof (struct res_lib_clm_clustertrack));
 		sizeof (struct res_lib_clm_clustertrack));
 
 
 	if (req_lib_clm_clustertrack->return_in_callback) {
 	if (req_lib_clm_clustertrack->return_in_callback) {
 		res_lib_clm_clustertrack.header.id = MESSAGE_RES_CLM_TRACKCALLBACK;
 		res_lib_clm_clustertrack.header.id = MESSAGE_RES_CLM_TRACKCALLBACK;
 
 
-		libais_send_response (conn_info->conn_info_partner,
+		openais_conn_send_response (
+			openais_conn_partner_get (conn),
 			&res_lib_clm_clustertrack,
 			&res_lib_clm_clustertrack,
 			sizeof (struct res_lib_clm_clustertrack));
 			sizeof (struct res_lib_clm_clustertrack));
 	}
 	}
 }
 }
 
 
 
 
-static void message_handler_req_lib_clm_trackstop (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_clm_trackstop (void *conn, void *msg)
 {
 {
 	struct res_lib_clm_trackstop res_lib_clm_trackstop;
 	struct res_lib_clm_trackstop res_lib_clm_trackstop;
+	struct clm_pd *clm_pd = (struct clm_pd *)openais_conn_private_data_get (conn);
 
 
 	res_lib_clm_trackstop.header.size = sizeof (struct res_lib_clm_trackstop);
 	res_lib_clm_trackstop.header.size = sizeof (struct res_lib_clm_trackstop);
 	res_lib_clm_trackstop.header.id = MESSAGE_RES_CLM_TRACKSTOP;
 	res_lib_clm_trackstop.header.id = MESSAGE_RES_CLM_TRACKSTOP;
 
 
-	if (conn_info->conn_info_partner->ais_ci.u.libclm_ci.tracking_enabled) {
+	if (clm_pd->tracking_enabled) {
 		res_lib_clm_trackstop.header.error = SA_AIS_OK;
 		res_lib_clm_trackstop.header.error = SA_AIS_OK;
+		clm_pd->tracking_enabled = 0;
 	} else {
 	} else {
 		res_lib_clm_trackstop.header.error = SA_AIS_ERR_NOT_EXIST;
 		res_lib_clm_trackstop.header.error = SA_AIS_ERR_NOT_EXIST;
 	}
 	}
 
 
-	conn_info->conn_info_partner->ais_ci.u.libclm_ci.trackFlags = 0;
-	conn_info->conn_info_partner->ais_ci.u.libclm_ci.tracking_enabled = 0;
+	list_del (&clm_pd->list);
 
 
-	list_del (&conn_info->conn_info_partner->conn_list);
-
-	libais_send_response (conn_info, &res_lib_clm_trackstop,
+	openais_conn_send_response (conn, &res_lib_clm_trackstop,
 		sizeof (struct res_lib_clm_trackstop));
 		sizeof (struct res_lib_clm_trackstop));
 }
 }
 
 
-static void message_handler_req_lib_clm_nodeget (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_clm_nodeget (void *conn, void *msg)
 {
 {
-	struct req_lib_clm_nodeget *req_lib_clm_nodeget = (struct req_lib_clm_nodeget *)message;
+	struct req_lib_clm_nodeget *req_lib_clm_nodeget = (struct req_lib_clm_nodeget *)msg;
 	struct res_clm_nodeget res_clm_nodeget;
 	struct res_clm_nodeget res_clm_nodeget;
 	SaClmClusterNodeT *clusterNode = 0;
 	SaClmClusterNodeT *clusterNode = 0;
 	int valid = 0;
 	int valid = 0;
@@ -690,12 +693,12 @@ static void message_handler_req_lib_clm_nodeget (struct conn_info *conn_info, vo
 	if (valid) {
 	if (valid) {
 		memcpy (&res_clm_nodeget.clusterNode, clusterNode, sizeof (SaClmClusterNodeT));
 		memcpy (&res_clm_nodeget.clusterNode, clusterNode, sizeof (SaClmClusterNodeT));
 	}
 	}
-	libais_send_response (conn_info, &res_clm_nodeget, sizeof (struct res_clm_nodeget));
+	openais_conn_send_response (conn, &res_clm_nodeget, sizeof (struct res_clm_nodeget));
 }
 }
 
 
-static void message_handler_req_lib_clm_nodegetasync (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_clm_nodegetasync (void *conn, void *msg)
 {
 {
-	struct req_lib_clm_nodegetasync *req_lib_clm_nodegetasync = (struct req_lib_clm_nodegetasync *)message;
+	struct req_lib_clm_nodegetasync *req_lib_clm_nodegetasync = (struct req_lib_clm_nodegetasync *)msg;
 	struct res_clm_nodegetasync res_clm_nodegetasync;
 	struct res_clm_nodegetasync res_clm_nodegetasync;
 	struct res_clm_nodegetcallback res_clm_nodegetcallback;
 	struct res_clm_nodegetcallback res_clm_nodegetcallback;
 	SaClmClusterNodeT *clusterNode = 0;
 	SaClmClusterNodeT *clusterNode = 0;
@@ -723,7 +726,8 @@ static void message_handler_req_lib_clm_nodegetasync (struct conn_info *conn_inf
 	res_clm_nodegetasync.header.size = sizeof (struct res_clm_nodegetasync);
 	res_clm_nodegetasync.header.size = sizeof (struct res_clm_nodegetasync);
 	res_clm_nodegetasync.header.id = MESSAGE_RES_CLM_NODEGETASYNC;
 	res_clm_nodegetasync.header.id = MESSAGE_RES_CLM_NODEGETASYNC;
 	res_clm_nodegetasync.header.error = SA_AIS_OK;
 	res_clm_nodegetasync.header.error = SA_AIS_OK;
-	libais_send_response (conn_info, &res_clm_nodegetasync,
+
+	openais_conn_send_response (conn, &res_clm_nodegetasync,
 		sizeof (struct res_clm_nodegetasync));
 		sizeof (struct res_clm_nodegetasync));
 
 
 	/*
 	/*
@@ -737,6 +741,7 @@ static void message_handler_req_lib_clm_nodegetasync (struct conn_info *conn_inf
 		memcpy (&res_clm_nodegetcallback.clusterNode, clusterNode,
 		memcpy (&res_clm_nodegetcallback.clusterNode, clusterNode,
 			sizeof (SaClmClusterNodeT));
 			sizeof (SaClmClusterNodeT));
 	}
 	}
-	libais_send_response (conn_info->conn_info_partner, &res_clm_nodegetcallback,
+	openais_conn_send_response (openais_conn_partner_get (conn),
+		&res_clm_nodegetcallback,
 		sizeof (struct res_clm_nodegetcallback));
 		sizeof (struct res_clm_nodegetcallback));
 }
 }

+ 0 - 5
exec/clm.h

@@ -40,11 +40,6 @@
 
 
 #include <netinet/in.h>
 #include <netinet/in.h>
 
 
-struct libclm_ci {
-	SaUint8T trackFlags;
-	int tracking_enabled;
-};
-
 extern SaClmClusterNodeT *clm_get_by_nodeid (unsigned int node_id);
 extern SaClmClusterNodeT *clm_get_by_nodeid (unsigned int node_id);
 
 
 extern struct openais_service_handler clm_service_handler;
 extern struct openais_service_handler clm_service_handler;

+ 102 - 93
exec/evs.c

@@ -1,5 +1,5 @@
 /*
 /*
- * vi: set autoindent tabstop=4 shiftwidth=4 :
+ * vi: set autoindent ;
  *
  *
  * Copyright (c) 2004-2006 MontaVista Software, Inc.
  * Copyright (c) 2004-2006 MontaVista Software, Inc.
  *
  *
@@ -75,24 +75,31 @@ enum evs_exec_message_req_types {
  */
  */
 static void evs_confchg_fn (
 static void evs_confchg_fn (
 	enum totem_configuration_type configuration_type,
 	enum totem_configuration_type configuration_type,
-    struct totem_ip_address *member_list, int member_list_entries,
-    struct totem_ip_address *left_list, int left_list_entries,
-    struct totem_ip_address *joined_list, int joined_list_entries,
+	struct totem_ip_address *member_list, int member_list_entries,
+	struct totem_ip_address *left_list, int left_list_entries,
+	struct totem_ip_address *joined_list, int joined_list_entries,
 	struct memb_ring_id *ring_id);
 	struct memb_ring_id *ring_id);
 
 
 static void message_handler_req_exec_mcast (void *message, struct totem_ip_address *source_addr);
 static void message_handler_req_exec_mcast (void *message, struct totem_ip_address *source_addr);
 
 
 static void req_exec_mcast_endian_convert (void *msg);
 static void req_exec_mcast_endian_convert (void *msg);
 
 
-static void message_handler_req_evs_join (struct conn_info *conn_info, void *message);
-static void message_handler_req_evs_leave (struct conn_info *conn_info, void *message);
-static void message_handler_req_evs_mcast_joined (struct conn_info *conn_info, void *message);
-static void message_handler_req_evs_mcast_groups (struct conn_info *conn_info, void *message);
-static void message_handler_req_evs_membership_get (struct conn_info *conn_info, void *message);
+static void message_handler_req_evs_join (void *conn, void *msg);
+static void message_handler_req_evs_leave (void *conn, void *msg);
+static void message_handler_req_evs_mcast_joined (void *conn, void *msg);
+static void message_handler_req_evs_mcast_groups (void *conn, void *msg);
+static void message_handler_req_evs_membership_get (void *conn, void *msg);
 
 
-static int evs_lib_init_fn (struct conn_info *conn_info);
-static int evs_lib_exit_fn (struct conn_info *conn_info);
+static int evs_lib_init_fn (void *conn);
+static int evs_lib_exit_fn (void *conn);
 
 
+struct evs_pd {
+	struct evs_group *groups;
+	int group_entries;
+	struct list_head list;
+	void *conn;
+};
+	
 static struct openais_lib_handler evs_lib_handlers[] =
 static struct openais_lib_handler evs_lib_handlers[] =
 {
 {
 	{ /* 0 */
 	{ /* 0 */
@@ -130,23 +137,24 @@ static struct openais_lib_handler evs_lib_handlers[] =
 static struct openais_exec_handler evs_exec_handlers[] =
 static struct openais_exec_handler evs_exec_handlers[] =
 {
 {
 	{
 	{
-		.exec_handler_fn 		= message_handler_req_exec_mcast,
+		.exec_handler_fn 	= message_handler_req_exec_mcast,
 		.exec_endian_convert_fn	= req_exec_mcast_endian_convert
 		.exec_endian_convert_fn	= req_exec_mcast_endian_convert
 	}
 	}
 };
 };
-	
+
 struct openais_service_handler evs_service_handler = {
 struct openais_service_handler evs_service_handler = {
-	.name						= (unsigned char*)"openais extended virtual synchrony service",
-	.id							= EVS_SERVICE,
-	.lib_init_fn				= evs_lib_init_fn,
-	.lib_exit_fn				= evs_lib_exit_fn,
-	.lib_handlers				= evs_lib_handlers,
-	.lib_handlers_count			= sizeof (evs_lib_handlers) / sizeof (struct openais_lib_handler),
-	.exec_handlers				= evs_exec_handlers,
-	.exec_handlers_count		= sizeof (evs_exec_handlers) / sizeof (struct openais_exec_handler),
-	.confchg_fn					= evs_confchg_fn,
-	.exec_init_fn				= NULL,
-	.exec_dump_fn				= NULL
+	.name			= (unsigned char*)"openais extended virtual synchrony service",
+	.id			= EVS_SERVICE,
+	.private_data_size	= sizeof (struct evs_pd),
+	.lib_init_fn		= evs_lib_init_fn,
+	.lib_exit_fn		= evs_lib_exit_fn,
+	.lib_handlers		= evs_lib_handlers,
+	.lib_handlers_count	= sizeof (evs_lib_handlers) / sizeof (struct openais_lib_handler),
+	.exec_handlers		= evs_exec_handlers,
+	.exec_handlers_count	= sizeof (evs_exec_handlers) / sizeof (struct openais_exec_handler),
+	.confchg_fn		= evs_confchg_fn,
+	.exec_init_fn		= NULL,
+	.exec_dump_fn		= NULL
 };
 };
 
 
 static DECLARE_LIST_INIT (confchg_notify);
 static DECLARE_LIST_INIT (confchg_notify);
@@ -160,26 +168,26 @@ static DECLARE_LIST_INIT (confchg_notify);
 struct openais_service_handler *evs_get_service_handler_ver0 (void);
 struct openais_service_handler *evs_get_service_handler_ver0 (void);
 
 
 struct openais_service_handler_iface_ver0 evs_service_handler_iface = {
 struct openais_service_handler_iface_ver0 evs_service_handler_iface = {
-	.openais_get_service_handler_ver0		= evs_get_service_handler_ver0
+	.openais_get_service_handler_ver0	= evs_get_service_handler_ver0
 };
 };
 
 
 struct lcr_iface openais_evs_ver0[1] = {
 struct lcr_iface openais_evs_ver0[1] = {
 	{
 	{
-		.name					= "openais_evs",
-		.version				= 0,
-		.versions_replace		= 0,
+		.name			= "openais_evs",
+		.version		= 0,
+		.versions_replace	= 0,
 		.versions_replace_count = 0,
 		.versions_replace_count = 0,
-		.dependencies			= 0,
-		.dependency_count		= 0,
-		.constructor			= NULL,
-		.destructor				= NULL,
-		.interfaces				= (void **)&evs_service_handler_iface,
+		.dependencies		= 0,
+		.dependency_count	= 0,
+		.constructor		= NULL,
+		.destructor		= NULL,
+		.interfaces		= (void **)&evs_service_handler_iface,
 	}
 	}
 };
 };
 
 
 struct lcr_comp evs_comp_ver0 = {
 struct lcr_comp evs_comp_ver0 = {
-	.iface_count			= 1,
-	.ifaces					= openais_evs_ver0
+	.iface_count	= 1,
+	.ifaces		= openais_evs_ver0
 };
 };
 
 
 int lcr_comp_get (struct lcr_comp **component)
 int lcr_comp_get (struct lcr_comp **component)
@@ -207,7 +215,7 @@ static void evs_confchg_fn (
 
 
 	int i;
 	int i;
 	struct list_head *list;
 	struct list_head *list;
-	struct conn_info *conn_info;
+	struct evs_pd *evs_pd;
 
 
 	/*
 	/*
 	 * Build configuration change message
 	 * Build configuration change message
@@ -236,36 +244,46 @@ static void evs_confchg_fn (
 	 * Send configuration change message to every EVS library user
 	 * Send configuration change message to every EVS library user
 	 */
 	 */
 	for (list = confchg_notify.next; list != &confchg_notify; list = list->next) {
 	for (list = confchg_notify.next; list != &confchg_notify; list = list->next) {
-		conn_info = list_entry (list, struct conn_info, conn_list);
-		libais_send_response (conn_info, &res_evs_confchg_callback,
+		evs_pd = list_entry (list, struct evs_pd, list);
+		openais_conn_send_response (evs_pd->conn,
+			&res_evs_confchg_callback,
 			sizeof (res_evs_confchg_callback));
 			sizeof (res_evs_confchg_callback));
 	}
 	}
 }
 }
 
 
-static int evs_lib_init_fn (struct conn_info *conn_info)
+static int evs_lib_init_fn (void *conn)
 {
 {
+	struct evs_pd *evs_pd = (struct evs_pd *)openais_conn_private_data_get (conn);
+
 	log_printf (LOG_LEVEL_DEBUG, "Got request to initalize evs service.\n");
 	log_printf (LOG_LEVEL_DEBUG, "Got request to initalize evs service.\n");
-	list_init (&conn_info->conn_list);
-	list_add (&conn_info->conn_list, &confchg_notify);
 
 
-	libais_send_response (conn_info, &res_evs_confchg_callback,
+	evs_pd->groups = NULL;
+	evs_pd->group_entries = 0;
+	evs_pd->conn = conn;
+	list_init (&evs_pd->list);
+	list_add (&evs_pd->list, &confchg_notify);
+
+	openais_conn_send_response (conn, &res_evs_confchg_callback,
 		sizeof (res_evs_confchg_callback));
 		sizeof (res_evs_confchg_callback));
 
 
 	return (0);
 	return (0);
 }
 }
 
 
-static int evs_lib_exit_fn (struct conn_info *conn_info)
+static int evs_lib_exit_fn (void *conn)
 {
 {
-	list_del (&conn_info->conn_list);
+    struct evs_pd *evs_pd = (struct evs_pd *)openais_conn_private_data_get (conn);
+
+	list_del (&evs_pd->list);
 	return (0);
 	return (0);
 }
 }
 
 
-static void message_handler_req_evs_join (struct conn_info *conn_info, void *message)
+static void message_handler_req_evs_join (void *conn, void *msg)
 {
 {
 	evs_error_t error = EVS_OK;
 	evs_error_t error = EVS_OK;
-	struct req_lib_evs_join *req_lib_evs_join = (struct req_lib_evs_join *)message;
+	struct req_lib_evs_join *req_lib_evs_join = (struct req_lib_evs_join *)msg;
 	struct res_lib_evs_join res_lib_evs_join;
 	struct res_lib_evs_join res_lib_evs_join;
 	void *addr;
 	void *addr;
+	struct evs_pd *evs_pd = (struct evs_pd *)openais_conn_private_data_get (conn);
 
 
 	if (req_lib_evs_join->group_entries > 50) {
 	if (req_lib_evs_join->group_entries > 50) {
 		error = EVS_ERR_TOO_MANY_GROUPS;
 		error = EVS_ERR_TOO_MANY_GROUPS;
@@ -279,56 +297,53 @@ static void message_handler_req_evs_join (struct conn_info *conn_info, void *mes
 	}
 	}
 }
 }
 #endif
 #endif
-	addr = realloc (conn_info->conn_info_partner->ais_ci.u.libevs_ci.groups,
-		sizeof (struct evs_group) * 
-		(conn_info->conn_info_partner->ais_ci.u.libevs_ci.group_entries +
-		req_lib_evs_join->group_entries));
+	addr = realloc (evs_pd->groups, sizeof (struct evs_group) * 
+		(evs_pd->group_entries + req_lib_evs_join->group_entries));
 	if (addr == 0) {
 	if (addr == 0) {
 		error = SA_AIS_ERR_NO_MEMORY;
 		error = SA_AIS_ERR_NO_MEMORY;
 		goto exit_error;
 		goto exit_error;
 	}
 	}
-	conn_info->conn_info_partner->ais_ci.u.libevs_ci.groups = addr;
+	evs_pd->groups = addr;
 
 
-	memcpy (&conn_info->conn_info_partner->ais_ci.u.libevs_ci.groups[conn_info->conn_info_partner->ais_ci.u.libevs_ci.group_entries],
+	memcpy (&evs_pd->groups[evs_pd->group_entries],
 		req_lib_evs_join->groups,
 		req_lib_evs_join->groups,
 		sizeof (struct evs_group) * req_lib_evs_join->group_entries);
 		sizeof (struct evs_group) * req_lib_evs_join->group_entries);
 
 
-	conn_info->conn_info_partner->ais_ci.u.libevs_ci.group_entries += req_lib_evs_join->group_entries;
+	evs_pd->group_entries += req_lib_evs_join->group_entries;
 
 
 exit_error:
 exit_error:
 	res_lib_evs_join.header.size = sizeof (struct res_lib_evs_join);
 	res_lib_evs_join.header.size = sizeof (struct res_lib_evs_join);
 	res_lib_evs_join.header.id = MESSAGE_RES_EVS_JOIN;
 	res_lib_evs_join.header.id = MESSAGE_RES_EVS_JOIN;
 	res_lib_evs_join.header.error = error;
 	res_lib_evs_join.header.error = error;
 
 
-	libais_send_response (conn_info, &res_lib_evs_join,
+	openais_conn_send_response (conn, &res_lib_evs_join,
 		sizeof (struct res_lib_evs_join));
 		sizeof (struct res_lib_evs_join));
 }
 }
 
 
-static void message_handler_req_evs_leave (struct conn_info *conn_info, void *message)
+static void message_handler_req_evs_leave (void *conn, void *msg)
 {
 {
-	struct req_lib_evs_leave *req_lib_evs_leave = (struct req_lib_evs_leave *)message;
+	struct req_lib_evs_leave *req_lib_evs_leave = (struct req_lib_evs_leave *)msg;
 	struct res_lib_evs_leave res_lib_evs_leave;
 	struct res_lib_evs_leave res_lib_evs_leave;
 	evs_error_t error = EVS_OK;
 	evs_error_t error = EVS_OK;
 	int error_index;
 	int error_index;
 	int i, j;
 	int i, j;
 	int found;
 	int found;
+	struct evs_pd *evs_pd = (struct evs_pd *)openais_conn_private_data_get (conn);
 
 
 	for (i = 0; i < req_lib_evs_leave->group_entries; i++) {
 	for (i = 0; i < req_lib_evs_leave->group_entries; i++) {
 		found = 0;
 		found = 0;
-		for (j = 0; j < conn_info->conn_info_partner->ais_ci.u.libevs_ci.group_entries;) {
+		for (j = 0; j < evs_pd->group_entries;) {
+
 			if (memcmp (&req_lib_evs_leave->groups[i],
 			if (memcmp (&req_lib_evs_leave->groups[i],
-				&conn_info->conn_info_partner->ais_ci.u.libevs_ci.groups[j],
-				sizeof (struct evs_group)) == 0) {
+				&evs_pd->groups[j], sizeof (struct evs_group)) == 0) {
 
 
 				/*
 				/*
 				 * Delete entry
 				 * Delete entry
 				 */
 				 */
-				memmove (&conn_info->conn_info_partner->ais_ci.u.libevs_ci.groups[j],
-					&conn_info->conn_info_partner->ais_ci.u.libevs_ci.groups[j + 1],
-					(conn_info->conn_info_partner->ais_ci.u.libevs_ci.group_entries - j - 1) * 
-					sizeof (struct evs_group));
+				memmove (&evs_pd->groups[j], &evs_pd->groups[j + 1],
+					(evs_pd->group_entries - j - 1) * sizeof (struct evs_group));
 
 
-				conn_info->conn_info_partner->ais_ci.u.libevs_ci.group_entries -= 1;
+				evs_pd->group_entries -= 1;
 
 
 				found = 1;
 				found = 1;
 				break;
 				break;
@@ -343,44 +358,38 @@ static void message_handler_req_evs_leave (struct conn_info *conn_info, void *me
 		}
 		}
 	}
 	}
 
 
-#ifdef DEBUG
-	for (i = 0; i < conn_info->conn_info_partner->ais_ci.u.libevs_ci.group_entries; i++) {
-		printf ("Groups Left %s\n", 
-					&conn_info->conn_info_partner->ais_ci.u.libevs_ci.groups[i].key);
-	}
-#endif
 	res_lib_evs_leave.header.size = sizeof (struct res_lib_evs_leave);
 	res_lib_evs_leave.header.size = sizeof (struct res_lib_evs_leave);
 	res_lib_evs_leave.header.id = MESSAGE_RES_EVS_LEAVE;
 	res_lib_evs_leave.header.id = MESSAGE_RES_EVS_LEAVE;
 	res_lib_evs_leave.header.error = error;
 	res_lib_evs_leave.header.error = error;
 
 
-	libais_send_response (conn_info, &res_lib_evs_leave,
+	openais_conn_send_response (conn, &res_lib_evs_leave,
 		sizeof (struct res_lib_evs_leave));
 		sizeof (struct res_lib_evs_leave));
 }
 }
 
 
-static void message_handler_req_evs_mcast_joined (struct conn_info *conn_info, void *message)
+static void message_handler_req_evs_mcast_joined (void *conn, void *msg)
 {
 {
 	evs_error_t error = EVS_ERR_TRY_AGAIN;
 	evs_error_t error = EVS_ERR_TRY_AGAIN;
-	struct req_lib_evs_mcast_joined *req_lib_evs_mcast_joined = (struct req_lib_evs_mcast_joined *)message;
+	struct req_lib_evs_mcast_joined *req_lib_evs_mcast_joined = (struct req_lib_evs_mcast_joined *)msg;
 	struct res_lib_evs_mcast_joined res_lib_evs_mcast_joined;
 	struct res_lib_evs_mcast_joined res_lib_evs_mcast_joined;
 	struct iovec req_exec_evs_mcast_iovec[3];
 	struct iovec req_exec_evs_mcast_iovec[3];
 	struct req_exec_evs_mcast req_exec_evs_mcast;
 	struct req_exec_evs_mcast req_exec_evs_mcast;
 	int send_ok = 0;
 	int send_ok = 0;
 	int res;
 	int res;
+	struct evs_pd *evs_pd = (struct evs_pd *)openais_conn_private_data_get (conn);
 
 
 	req_exec_evs_mcast.header.size = sizeof (struct req_exec_evs_mcast) +
 	req_exec_evs_mcast.header.size = sizeof (struct req_exec_evs_mcast) +
-		conn_info->conn_info_partner->ais_ci.u.libevs_ci.group_entries *
-		sizeof (struct evs_group) +
+		evs_pd->group_entries * sizeof (struct evs_group) +
 		req_lib_evs_mcast_joined->msg_len;
 		req_lib_evs_mcast_joined->msg_len;
 
 
 	req_exec_evs_mcast.header.id =
 	req_exec_evs_mcast.header.id =
 		SERVICE_ID_MAKE (EVS_SERVICE, MESSAGE_REQ_EXEC_EVS_MCAST);
 		SERVICE_ID_MAKE (EVS_SERVICE, MESSAGE_REQ_EXEC_EVS_MCAST);
 	req_exec_evs_mcast.msg_len = req_lib_evs_mcast_joined->msg_len;
 	req_exec_evs_mcast.msg_len = req_lib_evs_mcast_joined->msg_len;
-	req_exec_evs_mcast.group_entries = conn_info->conn_info_partner->ais_ci.u.libevs_ci.group_entries;
+	req_exec_evs_mcast.group_entries = evs_pd->group_entries;
 
 
 	req_exec_evs_mcast_iovec[0].iov_base = &req_exec_evs_mcast;
 	req_exec_evs_mcast_iovec[0].iov_base = &req_exec_evs_mcast;
 	req_exec_evs_mcast_iovec[0].iov_len = sizeof (req_exec_evs_mcast);
 	req_exec_evs_mcast_iovec[0].iov_len = sizeof (req_exec_evs_mcast);
-	req_exec_evs_mcast_iovec[1].iov_base = conn_info->conn_info_partner->ais_ci.u.libevs_ci.groups;
-	req_exec_evs_mcast_iovec[1].iov_len = conn_info->conn_info_partner->ais_ci.u.libevs_ci.group_entries * sizeof (struct evs_group);
+	req_exec_evs_mcast_iovec[1].iov_base = evs_pd->groups;
+	req_exec_evs_mcast_iovec[1].iov_len = evs_pd->group_entries * sizeof (struct evs_group);
 	req_exec_evs_mcast_iovec[2].iov_base = &req_lib_evs_mcast_joined->msg;
 	req_exec_evs_mcast_iovec[2].iov_base = &req_lib_evs_mcast_joined->msg;
 	req_exec_evs_mcast_iovec[2].iov_len = req_lib_evs_mcast_joined->msg_len;
 	req_exec_evs_mcast_iovec[2].iov_len = req_lib_evs_mcast_joined->msg_len;
 // TODO this doesn't seem to work for some reason	
 // TODO this doesn't seem to work for some reason	
@@ -396,14 +405,14 @@ static void message_handler_req_evs_mcast_joined (struct conn_info *conn_info, v
 	res_lib_evs_mcast_joined.header.id = MESSAGE_RES_EVS_MCAST_JOINED;
 	res_lib_evs_mcast_joined.header.id = MESSAGE_RES_EVS_MCAST_JOINED;
 	res_lib_evs_mcast_joined.header.error = error;
 	res_lib_evs_mcast_joined.header.error = error;
 
 
-	libais_send_response (conn_info, &res_lib_evs_mcast_joined,
+	openais_conn_send_response (conn, &res_lib_evs_mcast_joined,
 		sizeof (struct res_lib_evs_mcast_joined));
 		sizeof (struct res_lib_evs_mcast_joined));
 }
 }
 
 
-static void message_handler_req_evs_mcast_groups (struct conn_info *conn_info, void *message)
+static void message_handler_req_evs_mcast_groups (void *conn, void *msg)
 {
 {
 	evs_error_t error = EVS_ERR_TRY_AGAIN;
 	evs_error_t error = EVS_ERR_TRY_AGAIN;
-	struct req_lib_evs_mcast_groups *req_lib_evs_mcast_groups = (struct req_lib_evs_mcast_groups *)message;
+	struct req_lib_evs_mcast_groups *req_lib_evs_mcast_groups = (struct req_lib_evs_mcast_groups *)msg;
 	struct res_lib_evs_mcast_groups res_lib_evs_mcast_groups;
 	struct res_lib_evs_mcast_groups res_lib_evs_mcast_groups;
 	struct iovec req_exec_evs_mcast_iovec[3];
 	struct iovec req_exec_evs_mcast_iovec[3];
 	struct req_exec_evs_mcast req_exec_evs_mcast;
 	struct req_exec_evs_mcast req_exec_evs_mcast;
@@ -442,11 +451,11 @@ static void message_handler_req_evs_mcast_groups (struct conn_info *conn_info, v
 	res_lib_evs_mcast_groups.header.id = MESSAGE_RES_EVS_MCAST_GROUPS;
 	res_lib_evs_mcast_groups.header.id = MESSAGE_RES_EVS_MCAST_GROUPS;
 	res_lib_evs_mcast_groups.header.error = error;
 	res_lib_evs_mcast_groups.header.error = error;
 
 
-	libais_send_response (conn_info, &res_lib_evs_mcast_groups,
+	openais_conn_send_response (conn, &res_lib_evs_mcast_groups,
 		sizeof (struct res_lib_evs_mcast_groups));
 		sizeof (struct res_lib_evs_mcast_groups));
 }
 }
 
 
-static void message_handler_req_evs_membership_get (struct conn_info *conn_info, void *message)
+static void message_handler_req_evs_membership_get (void *conn, void *msg)
 {
 {
 	struct res_lib_evs_membership_get res_lib_evs_membership_get;
 	struct res_lib_evs_membership_get res_lib_evs_membership_get;
 
 
@@ -462,7 +471,7 @@ static void message_handler_req_evs_membership_get (struct conn_info *conn_info,
 	res_lib_evs_membership_get.member_list_entries =
 	res_lib_evs_membership_get.member_list_entries =
 		res_evs_confchg_callback.member_list_entries;
 		res_evs_confchg_callback.member_list_entries;
 
 
-	libais_send_response (conn_info, &res_lib_evs_membership_get,
+	openais_conn_send_response (conn, &res_lib_evs_membership_get,
 		sizeof (struct res_lib_evs_membership_get));
 		sizeof (struct res_lib_evs_membership_get));
 }
 }
 
 
@@ -470,15 +479,15 @@ static void req_exec_mcast_endian_convert (void *msg)
 {
 {
 }
 }
 
 
-static void message_handler_req_exec_mcast (void *message, struct totem_ip_address *source_addr)
+static void message_handler_req_exec_mcast (void *msg, struct totem_ip_address *source_addr)
 {
 {
-	struct req_exec_evs_mcast *req_exec_evs_mcast = (struct req_exec_evs_mcast *)message;
+	struct req_exec_evs_mcast *req_exec_evs_mcast = (struct req_exec_evs_mcast *)msg;
 	struct res_evs_deliver_callback res_evs_deliver_callback;
 	struct res_evs_deliver_callback res_evs_deliver_callback;
 	char *msg_addr;
 	char *msg_addr;
-	struct conn_info *conn_info;
 	struct list_head *list;
 	struct list_head *list;
 	int found = 0;
 	int found = 0;
 	int i, j;
 	int i, j;
+	struct evs_pd *evs_pd;
 
 
 	res_evs_deliver_callback.header.size = sizeof (struct res_evs_deliver_callback) +
 	res_evs_deliver_callback.header.size = sizeof (struct res_evs_deliver_callback) +
 		req_exec_evs_mcast->msg_len;
 		req_exec_evs_mcast->msg_len;
@@ -491,12 +500,12 @@ static void message_handler_req_exec_mcast (void *message, struct totem_ip_addre
 
 
 	for (list = confchg_notify.next; list != &confchg_notify; list = list->next) {
 	for (list = confchg_notify.next; list != &confchg_notify; list = list->next) {
 		found = 0;
 		found = 0;
-		conn_info = list_entry (list, struct conn_info, conn_list);
+		evs_pd = list_entry (list, struct evs_pd, list);
 
 
-		for (i = 0; i < conn_info->ais_ci.u.libevs_ci.group_entries; i++) {
+		for (i = 0; i < evs_pd->group_entries; i++) {
 			for (j = 0; j < req_exec_evs_mcast->group_entries; j++) {
 			for (j = 0; j < req_exec_evs_mcast->group_entries; j++) {
-				if (memcmp (&conn_info->ais_ci.u.libevs_ci.groups[i],
-					&req_exec_evs_mcast->groups[j],
+
+				if (memcmp (&evs_pd->groups[i], &req_exec_evs_mcast->groups[j],
 					sizeof (struct evs_group)) == 0) {
 					sizeof (struct evs_group)) == 0) {
 
 
 					found = 1;
 					found = 1;
@@ -511,9 +520,9 @@ static void message_handler_req_exec_mcast (void *message, struct totem_ip_addre
 		if (found) {
 		if (found) {
 			totemip_copy((struct totem_ip_address *)&res_evs_deliver_callback.evs_address,
 			totemip_copy((struct totem_ip_address *)&res_evs_deliver_callback.evs_address,
 				source_addr);
 				source_addr);
-			libais_send_response (conn_info, &res_evs_deliver_callback,
+			openais_conn_send_response (evs_pd->conn, &res_evs_deliver_callback,
 				sizeof (struct res_evs_deliver_callback));
 				sizeof (struct res_evs_deliver_callback));
-			libais_send_response (conn_info, msg_addr,
+			openais_conn_send_response (evs_pd->conn, msg_addr,
 				req_exec_evs_mcast->msg_len);
 				req_exec_evs_mcast->msg_len);
 		}
 		}
 	}
 	}

+ 165 - 138
exec/evt.c

@@ -66,26 +66,50 @@
 #define LOG_SERVICE LOG_SERVICE_EVT
 #define LOG_SERVICE LOG_SERVICE_EVT
 #include "print.h"
 #include "print.h"
 
 
+/*
+ * event instance structure. Contains information about the
+ * active connection to the API library.
+ *
+ * esi_version:				Version that the library is running.
+ * esi_open_chans:			list of open channels associated with this
+ * 							instance.  Used to clean up any data left
+ * 							allocated when the finalize is done.
+ * 							(event_svr_channel_open.eco_instance_entry)
+ * esi_events:				list of pending events to be delivered on this
+ *  						instance (struct chan_event_list.cel_entry)
+ * esi_queue_blocked:		non-zero if the delivery queue got too full
+ * 							and we're blocking new messages until we
+ * 							drain some of the queued messages.
+ * esi_nevents:				Number of events in events lists to be sent.
+ * esi_hdb:					Handle data base for open channels on this
+ * 							instance.  Used for a quick lookup of
+ * 							open channel data from a lib api message.
+ */
+struct libevt_pd {
+	SaVersionT				esi_version;
+	struct list_head		esi_open_chans;
+	struct list_head		esi_events[SA_EVT_LOWEST_PRIORITY+1];
+	int						esi_nevents;
+	int						esi_queue_blocked;
+	struct hdb_handle_database	esi_hdb;
+};
+
+
 enum evt_message_req_types {
 enum evt_message_req_types {
 	MESSAGE_REQ_EXEC_EVT_EVENTDATA = 0,
 	MESSAGE_REQ_EXEC_EVT_EVENTDATA = 0,
 	MESSAGE_REQ_EXEC_EVT_CHANCMD = 1,
 	MESSAGE_REQ_EXEC_EVT_CHANCMD = 1,
 	MESSAGE_REQ_EXEC_EVT_RECOVERY_EVENTDATA = 2
 	MESSAGE_REQ_EXEC_EVT_RECOVERY_EVENTDATA = 2
 };
 };
 
 
-static void lib_evt_open_channel(struct conn_info *conn_info, void *message);
-static void lib_evt_open_channel_async(struct conn_info *conn_info, 
-		void *message);
-static void lib_evt_close_channel(struct conn_info *conn_info, void *message);
-static void lib_evt_unlink_channel(struct conn_info *conn_info, void *message);
-static void lib_evt_event_subscribe(struct conn_info *conn_info, 
-		void *message);
-static void lib_evt_event_unsubscribe(struct conn_info *conn_info, 
-		void *message);
-static void lib_evt_event_publish(struct conn_info *conn_info, void *message);
-static void lib_evt_event_clear_retentiontime(struct conn_info *conn_info, 
-		void *message);
-static void lib_evt_event_data_get(struct conn_info *conn_info, 
-		void *message);
+static void lib_evt_open_channel(void *conn, void *message);
+static void lib_evt_open_channel_async(void *conn, void *message);
+static void lib_evt_close_channel(void *conn, void *message);
+static void lib_evt_unlink_channel(void *conn, void *message);
+static void lib_evt_event_subscribe(void *conn, void *message);
+static void lib_evt_event_unsubscribe(void *conn, void *message);
+static void lib_evt_event_publish(void *conn, void *message);
+static void lib_evt_event_clear_retentiontime(void *conn, void *message);
+static void lib_evt_event_data_get(void *conn, void *message);
 
 
 static void evt_conf_change(
 static void evt_conf_change(
 		enum totem_configuration_type configuration_type,
 		enum totem_configuration_type configuration_type,
@@ -94,8 +118,8 @@ static void evt_conf_change(
 		struct totem_ip_address *joined_list, int joined_list_entries,
 		struct totem_ip_address *joined_list, int joined_list_entries,
 		struct memb_ring_id *ring_id);
 		struct memb_ring_id *ring_id);
 
 
-static int evt_lib_init(struct conn_info *conn_info);
-static int evt_lib_exit(struct conn_info *conn_info);
+static int evt_lib_init(void *conn);
+static int evt_lib_exit(void *conn);
 static int evt_exec_init(struct openais_config *openais_config);
 static int evt_exec_init(struct openais_config *openais_config);
 
 
 /*
 /*
@@ -190,6 +214,7 @@ struct openais_service_handler evt_service_handler = {
 	.name						=
 	.name						=
 								(unsigned char*)"openais event service B.01.01",
 								(unsigned char*)"openais event service B.01.01",
 	.id							= EVT_SERVICE,
 	.id							= EVT_SERVICE,
+	.private_data_size			= sizeof (struct libevt_pd),
 	.lib_init_fn				= evt_lib_init,
 	.lib_init_fn				= evt_lib_init,
 	.lib_exit_fn				= evt_lib_exit,
 	.lib_exit_fn				= evt_lib_exit,
 	.lib_handlers				= evt_lib_handlers,
 	.lib_handlers				= evt_lib_handlers,
@@ -206,7 +231,7 @@ struct openais_service_handler evt_service_handler = {
 };
 };
 
 
 #ifdef BUILD_DYNAMIC
 #ifdef BUILD_DYNAMIC
-struct openais_service_handler *evt_get_handler_ver0 (void);
+struct openais_service_handler *evt_get_handler_ver0(void);
 
 
 struct openais_service_handler_iface_ver0 evt_service_handler_iface = {
 struct openais_service_handler_iface_ver0 evt_service_handler_iface = {
 	.openais_get_service_handler_ver0		= evt_get_handler_ver0
 	.openais_get_service_handler_ver0		= evt_get_handler_ver0
@@ -231,13 +256,13 @@ struct lcr_comp evt_comp_ver0 = {
 	.ifaces					= openais_evt_ver0
 	.ifaces					= openais_evt_ver0
 };
 };
 
 
-extern int lcr_comp_get (struct lcr_comp **component)
+extern int lcr_comp_get(struct lcr_comp **component)
 {
 {
 	*component = &evt_comp_ver0;
 	*component = &evt_comp_ver0;
 	return (0);
 	return (0);
 }
 }
 
 
-struct openais_service_handler *evt_get_handler_ver0 (void)
+struct openais_service_handler *evt_get_handler_ver0(void)
 {
 {
 	return (&evt_service_handler);
 	return (&evt_service_handler);
 }
 }
@@ -262,13 +287,6 @@ static DECLARE_LIST_INIT(esc_head);
  */
  */
 static DECLARE_LIST_INIT(esc_unlinked_head);
 static DECLARE_LIST_INIT(esc_unlinked_head);
 
 
-/* 
- * list of all active event conn_info structs.
- * 		struct conn_info
- */
-static DECLARE_LIST_INIT(ci_head);
-
-
 /*
 /*
  * Track the state of event service recovery.
  * Track the state of event service recovery.
  *
  *
@@ -356,7 +374,7 @@ static int				processed_open_counts = 0;
  * 	ocp_async:			1 for async open
  * 	ocp_async:			1 for async open
  * 	ocp_invocation:		invocation for async open
  * 	ocp_invocation:		invocation for async open
  * 	ocp_chan_name:		requested channel
  * 	ocp_chan_name:		requested channel
- * 	ocp_conn_info:		conn_info for returning to the library.
+ * 	ocp_conn:			conn for returning to the library.
  * 	ocp_open_flags:		channel open flags
  * 	ocp_open_flags:		channel open flags
  * 	ocp_timer_handle:	timer handle for sync open
  * 	ocp_timer_handle:	timer handle for sync open
  * 	ocp_serial_no:		Identifier for the request
  * 	ocp_serial_no:		Identifier for the request
@@ -366,7 +384,7 @@ struct open_chan_pending {
 	int					ocp_async;
 	int					ocp_async;
 	SaInvocationT		ocp_invocation;
 	SaInvocationT		ocp_invocation;
 	SaNameT				ocp_chan_name;
 	SaNameT				ocp_chan_name;
-	struct conn_info	*ocp_conn_info;
+	void 				*ocp_conn;
 	SaEvtChannelOpenFlagsT	ocp_open_flag;
 	SaEvtChannelOpenFlagsT	ocp_open_flag;
 	poll_timer_handle	ocp_timer_handle;
 	poll_timer_handle	ocp_timer_handle;
 	uint64_t			ocp_c_handle;
 	uint64_t			ocp_c_handle;
@@ -391,12 +409,12 @@ static void chan_open_timeout(void *data);
 /*
 /*
  * Structure to track pending channel unlink requests.
  * Structure to track pending channel unlink requests.
  * ucp_unlink_id:		unlink ID of unlinked channel.
  * ucp_unlink_id:		unlink ID of unlinked channel.
- * ucp_conn_info:		conn_info for returning to the library.
+ * ucp_conn:			conn for returning to the library.
  * ucp_entry:			list entry for pending unlink list.
  * ucp_entry:			list entry for pending unlink list.
  */
  */
 struct unlink_chan_pending {
 struct unlink_chan_pending {
 	uint64_t	 		ucp_unlink_id;
 	uint64_t	 		ucp_unlink_id;
-	struct conn_info	*ucp_conn_info;
+	void				*ucp_conn;
  	struct list_head 	ucp_entry;
  	struct list_head 	ucp_entry;
 };
 };
 
 
@@ -408,12 +426,12 @@ static DECLARE_LIST_INIT(unlink_pending);
 /*
 /*
  * Structure to track pending retention time clear requests.
  * Structure to track pending retention time clear requests.
  * rtc_event_id:		event ID to clear.
  * rtc_event_id:		event ID to clear.
- * rtc_conn_info:		conn_info for returning to the library.
+ * rtc_conn:			conn for returning to the library.
  * rtc_entry:			list entry for pending clear list.
  * rtc_entry:			list entry for pending clear list.
  */
  */
 struct retention_time_clear_pending {
 struct retention_time_clear_pending {
 	SaEvtEventIdT		rtc_event_id;
 	SaEvtEventIdT		rtc_event_id;
-	struct conn_info	*rtc_conn_info;
+	void				*rtc_conn;
 	struct list_head	rtc_entry;
 	struct list_head	rtc_entry;
 };
 };
 
 
@@ -573,7 +591,7 @@ struct chan_event_list {
  * 						associated server instance.
  * 						associated server instance.
  * eco_subscr:			head of list of sbuscriptions for this channel open.
  * eco_subscr:			head of list of sbuscriptions for this channel open.
  * 						(event_svr_channel_subscr.ecs_entry)
  * 						(event_svr_channel_subscr.ecs_entry)
- * eco_conn_info:		refrence to EvtInitialize who owns this open.
+ * eco_conn:			refrence to EvtInitialize who owns this open.
  */
  */
 struct event_svr_channel_open {
 struct event_svr_channel_open {
 	uint8_t								eco_flags;
 	uint8_t								eco_flags;
@@ -583,7 +601,7 @@ struct event_svr_channel_open {
 	struct list_head 					eco_entry;
 	struct list_head 					eco_entry;
 	struct list_head 					eco_instance_entry;
 	struct list_head 					eco_instance_entry;
 	struct list_head 					eco_subscr;
 	struct list_head 					eco_subscr;
-	struct conn_info					*eco_conn_info;
+	void								*eco_conn;
 };
 };
 
 
 /*
 /*
@@ -1161,7 +1179,7 @@ static SaAisErrorT evt_open_channel(SaNameT *cn, SaUint8T flgs)
 	 */
 	 */
 	memset(&cpkt, 0, sizeof(cpkt));
 	memset(&cpkt, 0, sizeof(cpkt));
 	cpkt.chc_head.id =
 	cpkt.chc_head.id =
-		SERVICE_ID_MAKE (EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
+		SERVICE_ID_MAKE(EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
 	cpkt.chc_head.size = sizeof(cpkt);
 	cpkt.chc_head.size = sizeof(cpkt);
 	cpkt.chc_op = EVT_OPEN_CHAN_OP;
 	cpkt.chc_op = EVT_OPEN_CHAN_OP;
 	cpkt.u.chc_chan.ocr_name = *cn;
 	cpkt.u.chc_chan.ocr_name = *cn;
@@ -1169,7 +1187,8 @@ static SaAisErrorT evt_open_channel(SaNameT *cn, SaUint8T flgs)
 	chn_iovec.iov_base = &cpkt;
 	chn_iovec.iov_base = &cpkt;
 	chn_iovec.iov_len = cpkt.chc_head.size;
 	chn_iovec.iov_len = cpkt.chc_head.size;
 	log_printf(CHAN_OPEN_DEBUG, "evt_open_channel: Send open mcast\n");
 	log_printf(CHAN_OPEN_DEBUG, "evt_open_channel: Send open mcast\n");
-	res = totempg_groups_mcast_joined (openais_group_handle, &chn_iovec, 1, TOTEMPG_AGREED);
+	res = totempg_groups_mcast_joined(openais_group_handle,
+			&chn_iovec, 1, TOTEMPG_AGREED);
 	log_printf(CHAN_OPEN_DEBUG, "evt_open_channel: Open mcast result: %d\n",
 	log_printf(CHAN_OPEN_DEBUG, "evt_open_channel: Open mcast result: %d\n",
 				res);
 				res);
 	if (res != 0) {
 	if (res != 0) {
@@ -1199,14 +1218,15 @@ static SaAisErrorT evt_close_channel(SaNameT *cn, uint64_t unlink_id)
 	 */
 	 */
 	memset(&cpkt, 0, sizeof(cpkt));
 	memset(&cpkt, 0, sizeof(cpkt));
 	cpkt.chc_head.id =
 	cpkt.chc_head.id =
-		SERVICE_ID_MAKE (EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
+		SERVICE_ID_MAKE(EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
 	cpkt.chc_head.size = sizeof(cpkt);
 	cpkt.chc_head.size = sizeof(cpkt);
 	cpkt.chc_op = EVT_CLOSE_CHAN_OP;
 	cpkt.chc_op = EVT_CLOSE_CHAN_OP;
 	cpkt.u.chcu.chcu_name = *cn;
 	cpkt.u.chcu.chcu_name = *cn;
 	cpkt.u.chcu.chcu_unlink_id = unlink_id;
 	cpkt.u.chcu.chcu_unlink_id = unlink_id;
 	chn_iovec.iov_base = &cpkt;
 	chn_iovec.iov_base = &cpkt;
 	chn_iovec.iov_len = cpkt.chc_head.size;
 	chn_iovec.iov_len = cpkt.chc_head.size;
-	res = totempg_groups_mcast_joined (openais_group_handle, &chn_iovec, 1, TOTEMPG_AGREED);
+	res = totempg_groups_mcast_joined(openais_group_handle,
+			&chn_iovec, 1, TOTEMPG_AGREED);
 	if (res != 0) {
 	if (res != 0) {
 			ret = SA_AIS_ERR_LIBRARY;
 			ret = SA_AIS_ERR_LIBRARY;
 	}
 	}
@@ -1674,11 +1694,12 @@ filter_undelivered_events(struct event_svr_channel_open *op_chan)
 	struct event_svr_channel_instance *eci;
 	struct event_svr_channel_instance *eci;
 	struct event_svr_channel_subscr *ecs;
 	struct event_svr_channel_subscr *ecs;
 	struct chan_event_list *cel;
 	struct chan_event_list *cel;
-	struct libevt_ci *esip = &op_chan->eco_conn_info->ais_ci.u.libevt_ci;
+	struct libevt_pd *esip;
 	struct list_head *l, *nxt;
 	struct list_head *l, *nxt;
 	struct list_head *l1, *l2;
 	struct list_head *l1, *l2;
 	int i;
 	int i;
 
 
+	esip = (struct libevt_pd *)openais_conn_private_data_get(op_chan->eco_conn);
 	eci = op_chan->eco_channel;
 	eci = op_chan->eco_channel;
 
 
 	/*
 	/*
@@ -1702,7 +1723,7 @@ filter_undelivered_events(struct event_svr_channel_open *op_chan)
 				  * See if this channel open instance belongs
 				  * See if this channel open instance belongs
 				  * to this evtinitialize instance
 				  * to this evtinitialize instance
 				  */
 				  */
-				 if (eco->eco_conn_info != op_chan->eco_conn_info) {
+				 if (eco->eco_conn != op_chan->eco_conn) {
 					 continue;
 					 continue;
 				 }
 				 }
 
 
@@ -1751,30 +1772,34 @@ next_event:
 /*
 /*
  * Notify the library of a pending event
  * Notify the library of a pending event
  */
  */
-static void __notify_event(struct conn_info *conn_info)
+static void __notify_event(void	*conn)
 {
 {
 	struct res_evt_event_data res;
 	struct res_evt_event_data res;
-	struct libevt_ci *esip = &conn_info->ais_ci.u.libevt_ci;
+	struct libevt_pd *esip;
 
 
+	esip = (struct libevt_pd *)openais_conn_private_data_get(conn);
 	log_printf(LOG_LEVEL_DEBUG, "DELIVER: notify\n");
 	log_printf(LOG_LEVEL_DEBUG, "DELIVER: notify\n");
 	if (esip->esi_nevents != 0) {
 	if (esip->esi_nevents != 0) {
 		res.evd_head.size = sizeof(res);
 		res.evd_head.size = sizeof(res);
 		res.evd_head.id = MESSAGE_RES_EVT_AVAILABLE;
 		res.evd_head.id = MESSAGE_RES_EVT_AVAILABLE;
 		res.evd_head.error = SA_AIS_OK;
 		res.evd_head.error = SA_AIS_OK;
-		libais_send_response(conn_info->conn_info_partner, &res, sizeof(res));
+		openais_conn_send_response(openais_conn_partner_get(conn),
+				&res, sizeof(res));
 	}
 	}
 
 
 }
 }
-inline void notify_event(struct conn_info *conn_info)
+inline void notify_event(void *conn)
 {
 {
-	struct libevt_ci *esip = &conn_info->ais_ci.u.libevt_ci;
+	struct libevt_pd *esip;
+
+	esip = (struct libevt_pd *)openais_conn_private_data_get(conn);
 
 
 	/*
 	/*
 	 * Give the library a kick if there aren't already
 	 * Give the library a kick if there aren't already
 	 * events queued for delivery.
 	 * events queued for delivery.
 	 */
 	 */
 	if (esip->esi_nevents++ == 0) {
 	if (esip->esi_nevents++ == 0) {
-		__notify_event(conn_info);
+		__notify_event(conn);
 	}
 	}
 }
 }
 
 
@@ -1787,12 +1812,14 @@ deliver_event(struct event_data *evt,
 		struct event_svr_channel_subscr *ecs)
 		struct event_svr_channel_subscr *ecs)
 {
 {
 	struct chan_event_list *ep;
 	struct chan_event_list *ep;
-	struct libevt_ci *esip = &eco->eco_conn_info->ais_ci.u.libevt_ci;
 	SaEvtEventPriorityT evt_prio = evt->ed_event.led_priority;
 	SaEvtEventPriorityT evt_prio = evt->ed_event.led_priority;
 	struct chan_event_list *cel;
 	struct chan_event_list *cel;
 	int do_deliver_event = 0;
 	int do_deliver_event = 0;
 	int do_deliver_warning = 0;
 	int do_deliver_warning = 0;
 	int i;
 	int i;
+	struct libevt_pd *esip;
+
+	esip = (struct libevt_pd *)openais_conn_private_data_get(eco->eco_conn);
 
 
 	if (evt_prio > SA_EVT_LOWEST_PRIORITY) {
 	if (evt_prio > SA_EVT_LOWEST_PRIORITY) {
 		evt_prio = SA_EVT_LOWEST_PRIORITY;
 		evt_prio = SA_EVT_LOWEST_PRIORITY;
@@ -1863,7 +1890,7 @@ deliver_event(struct event_data *evt,
 		ep->cel_event = evt;
 		ep->cel_event = evt;
 		list_add_tail(&ep->cel_entry, &esip->esi_events[evt_prio]);
 		list_add_tail(&ep->cel_entry, &esip->esi_events[evt_prio]);
 		evt_delivered(evt, eco);
 		evt_delivered(evt, eco);
-		notify_event(eco->eco_conn_info);
+		notify_event(eco->eco_conn);
 	} 
 	} 
 
 
 	/*
 	/*
@@ -1896,7 +1923,7 @@ deliver_event(struct event_data *evt,
 		list_init(&ep->cel_entry);
 		list_init(&ep->cel_entry);
 		ep->cel_event = ed;
 		ep->cel_event = ed;
 		list_add_tail(&ep->cel_entry, &esip->esi_events[SA_EVT_HIGHEST_PRIORITY]);
 		list_add_tail(&ep->cel_entry, &esip->esi_events[SA_EVT_HIGHEST_PRIORITY]);
-		notify_event(eco->eco_conn_info);
+		notify_event(eco->eco_conn);
 	}
 	}
 }
 }
 
 
@@ -2037,7 +2064,7 @@ static struct event_svr_channel_subscr *find_subscr(
 	struct event_svr_channel_subscr *ecs;
 	struct event_svr_channel_subscr *ecs;
 	struct event_svr_channel_open	*eco;
 	struct event_svr_channel_open	*eco;
 	struct list_head *l, *l1;
 	struct list_head *l, *l1;
-	struct conn_info* conn_info = open_chan->eco_conn_info;
+	void  *conn = open_chan->eco_conn;
 
 
 	eci = open_chan->eco_channel;
 	eci = open_chan->eco_channel;
 
 
@@ -2051,7 +2078,7 @@ static struct event_svr_channel_subscr *find_subscr(
 		 * Don't bother with open channels associated with another 
 		 * Don't bother with open channels associated with another 
 		 * EvtInitialize
 		 * EvtInitialize
 		 */
 		 */
-		if (eco->eco_conn_info != conn_info) {
+		if (eco->eco_conn != conn) {
 			continue;
 			continue;
 		}
 		}
 
 
@@ -2068,50 +2095,40 @@ static struct event_svr_channel_subscr *find_subscr(
 /*
 /*
  * Handler for saEvtInitialize
  * Handler for saEvtInitialize
  */
  */
-static int evt_lib_init(struct conn_info *conn_info)
+static int evt_lib_init(void *conn)
 {
 {
-	struct libevt_ci *libevt_ci;
-	struct conn_info *resp_conn_info;
+	struct libevt_pd *libevt_pd;
 	int i;
 	int i;
 
 
+	libevt_pd = (struct libevt_pd *)openais_conn_private_data_get(conn);
 
 
-	log_printf(LOG_LEVEL_DEBUG, "saEvtInitialize request.\n");
-	list_init (&conn_info->conn_list);
-	resp_conn_info = conn_info->conn_info_partner;
-	list_init (&resp_conn_info->conn_list);
 
 
-	libevt_ci = &resp_conn_info->ais_ci.u.libevt_ci;
+	log_printf(LOG_LEVEL_DEBUG, "saEvtInitialize request.\n");
 
 
 	/*
 	/*
 	 * Initailze event instance data
 	 * Initailze event instance data
 	 */
 	 */
-
-	memset(libevt_ci, 0, sizeof(*libevt_ci));
+	memset(libevt_pd, 0, sizeof(*libevt_pd));
 
 
 	/*
 	/*
 	 * list of channels open on this instance
 	 * list of channels open on this instance
 	 */
 	 */
-	list_init(&libevt_ci->esi_open_chans);
+	list_init(&libevt_pd->esi_open_chans);
 
 
 	/*
 	/*
 	 * pending event lists for each piriority
 	 * pending event lists for each piriority
 	 */
 	 */
 	for (i = SA_EVT_HIGHEST_PRIORITY; i <= SA_EVT_LOWEST_PRIORITY; i++) {
 	for (i = SA_EVT_HIGHEST_PRIORITY; i <= SA_EVT_LOWEST_PRIORITY; i++) {
-		list_init(&libevt_ci->esi_events[i]);
+		list_init(&libevt_pd->esi_events[i]);
 	}
 	}
 
 
-	/*
-	 * Keep track of all event service connections
-	 */
-	list_add_tail(&resp_conn_info->conn_list, &ci_head);
-
 	return 0;
 	return 0;
 }
 }
 
 
 /*
 /*
  * Handler for saEvtChannelOpen
  * Handler for saEvtChannelOpen
  */
  */
-static void lib_evt_open_channel(struct conn_info *conn_info, void *message)
+static void lib_evt_open_channel(void *conn, void *message)
 {
 {
 	SaAisErrorT error;
 	SaAisErrorT error;
 	struct req_evt_channel_open *req;
 	struct req_evt_channel_open *req;
@@ -2153,7 +2170,7 @@ static void lib_evt_open_channel(struct conn_info *conn_info, void *message)
 	ocp->ocp_invocation = 0;
 	ocp->ocp_invocation = 0;
 	ocp->ocp_chan_name = req->ico_channel_name;
 	ocp->ocp_chan_name = req->ico_channel_name;
 	ocp->ocp_open_flag = req->ico_open_flag;
 	ocp->ocp_open_flag = req->ico_open_flag;
-	ocp->ocp_conn_info = conn_info;
+	ocp->ocp_conn = conn;
 	ocp->ocp_c_handle = req->ico_c_handle;
 	ocp->ocp_c_handle = req->ico_c_handle;
 	ocp->ocp_timer_handle = 0;
 	ocp->ocp_timer_handle = 0;
 	ocp->ocp_serial_no = open_serial_no;
 	ocp->ocp_serial_no = open_serial_no;
@@ -2180,14 +2197,13 @@ open_return:
 	res.ico_head.size = sizeof(res);
 	res.ico_head.size = sizeof(res);
 	res.ico_head.id = MESSAGE_RES_EVT_OPEN_CHANNEL;
 	res.ico_head.id = MESSAGE_RES_EVT_OPEN_CHANNEL;
 	res.ico_head.error = error;
 	res.ico_head.error = error;
-	libais_send_response (conn_info, &res, sizeof(res));
+	openais_conn_send_response(conn, &res, sizeof(res));
 }
 }
 
 
 /*
 /*
  * Handler for saEvtChannelOpen
  * Handler for saEvtChannelOpen
  */
  */
-static void lib_evt_open_channel_async(struct conn_info *conn_info, 
-		void *message)
+static void lib_evt_open_channel_async(void *conn, void *message)
 {
 {
 	SaAisErrorT error;
 	SaAisErrorT error;
 	struct req_evt_channel_open *req;
 	struct req_evt_channel_open *req;
@@ -2228,7 +2244,7 @@ static void lib_evt_open_channel_async(struct conn_info *conn_info,
 	ocp->ocp_c_handle = req->ico_c_handle;
 	ocp->ocp_c_handle = req->ico_c_handle;
 	ocp->ocp_chan_name = req->ico_channel_name;
 	ocp->ocp_chan_name = req->ico_channel_name;
 	ocp->ocp_open_flag = req->ico_open_flag;
 	ocp->ocp_open_flag = req->ico_open_flag;
-	ocp->ocp_conn_info = conn_info;
+	ocp->ocp_conn = conn;
 	ocp->ocp_timer_handle = 0;
 	ocp->ocp_timer_handle = 0;
 	ocp->ocp_serial_no = open_serial_no;
 	ocp->ocp_serial_no = open_serial_no;
 	list_init(&ocp->ocp_entry);
 	list_init(&ocp->ocp_entry);
@@ -2238,7 +2254,7 @@ open_return:
 	res.ico_head.size = sizeof(res);
 	res.ico_head.size = sizeof(res);
 	res.ico_head.id = MESSAGE_RES_EVT_OPEN_CHANNEL;
 	res.ico_head.id = MESSAGE_RES_EVT_OPEN_CHANNEL;
 	res.ico_head.error = error;
 	res.ico_head.error = error;
-	libais_send_response (conn_info, &res, sizeof(res));
+	openais_conn_send_response(conn, &res, sizeof(res));
 }
 }
 
 
 
 
@@ -2248,7 +2264,7 @@ open_return:
  * when saEvtFinalize is called with channels open.
  * when saEvtFinalize is called with channels open.
  */
  */
 static SaAisErrorT
 static SaAisErrorT
-common_chan_close(struct event_svr_channel_open	*eco, struct libevt_ci *esip)
+common_chan_close(struct event_svr_channel_open	*eco, struct libevt_pd *esip)
 {
 {
 	struct event_svr_channel_subscr *ecs;
 	struct event_svr_channel_subscr *ecs;
 	struct list_head *l, *nxt;
 	struct list_head *l, *nxt;
@@ -2296,14 +2312,16 @@ common_chan_close(struct event_svr_channel_open	*eco, struct libevt_ci *esip)
 /*
 /*
  * Handler for saEvtChannelClose
  * Handler for saEvtChannelClose
  */
  */
-static void lib_evt_close_channel(struct conn_info *conn_info, void *message)
+static void lib_evt_close_channel(void *conn, void *message)
 {
 {
 	struct req_evt_channel_close *req;
 	struct req_evt_channel_close *req;
 	struct res_evt_channel_close res;
 	struct res_evt_channel_close res;
 	struct event_svr_channel_open	*eco;
 	struct event_svr_channel_open	*eco;
-	struct libevt_ci *esip = &conn_info->ais_ci.u.libevt_ci;
 	unsigned int ret;
 	unsigned int ret;
 	void *ptr;
 	void *ptr;
+	struct libevt_pd *esip;
+
+	esip = (struct libevt_pd *)openais_conn_private_data_get(conn);
 
 
 	req = message;
 	req = message;
 
 
@@ -2329,13 +2347,13 @@ chan_close_done:
 	res.icc_head.size = sizeof(res);
 	res.icc_head.size = sizeof(res);
 	res.icc_head.id = MESSAGE_RES_EVT_CLOSE_CHANNEL;
 	res.icc_head.id = MESSAGE_RES_EVT_CLOSE_CHANNEL;
 	res.icc_head.error = ((ret == 0) ? SA_AIS_OK : SA_AIS_ERR_BAD_HANDLE);
 	res.icc_head.error = ((ret == 0) ? SA_AIS_OK : SA_AIS_ERR_BAD_HANDLE);
-	libais_send_response (conn_info, &res, sizeof(res));
+	openais_conn_send_response(conn, &res, sizeof(res));
 }
 }
 
 
 /*
 /*
  * Handler for saEvtChannelUnlink
  * Handler for saEvtChannelUnlink
  */
  */
-static void lib_evt_unlink_channel(struct conn_info *conn_info, void *message)
+static void lib_evt_unlink_channel(void *conn, void *message)
 {
 {
 	struct req_evt_channel_unlink *req;
 	struct req_evt_channel_unlink *req;
 	struct res_evt_channel_unlink res;
 	struct res_evt_channel_unlink res;
@@ -2371,7 +2389,7 @@ static void lib_evt_unlink_channel(struct conn_info *conn_info, void *message)
 	}
 	}
 
 
 	ucp->ucp_unlink_id = next_chan_unlink_id();
 	ucp->ucp_unlink_id = next_chan_unlink_id();
-	ucp->ucp_conn_info = conn_info;
+	ucp->ucp_conn = conn;
 	list_init(&ucp->ucp_entry);
 	list_init(&ucp->ucp_entry);
 	list_add_tail(&ucp->ucp_entry, &unlink_pending);
 	list_add_tail(&ucp->ucp_entry, &unlink_pending);
 
 
@@ -2381,14 +2399,15 @@ static void lib_evt_unlink_channel(struct conn_info *conn_info, void *message)
 	 */
 	 */
 	memset(&cpkt, 0, sizeof(cpkt));
 	memset(&cpkt, 0, sizeof(cpkt));
 	cpkt.chc_head.id =
 	cpkt.chc_head.id =
-		SERVICE_ID_MAKE (EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
+		SERVICE_ID_MAKE(EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
 	cpkt.chc_head.size = sizeof(cpkt);
 	cpkt.chc_head.size = sizeof(cpkt);
 	cpkt.chc_op = EVT_UNLINK_CHAN_OP;
 	cpkt.chc_op = EVT_UNLINK_CHAN_OP;
 	cpkt.u.chcu.chcu_name = req->iuc_channel_name;
 	cpkt.u.chcu.chcu_name = req->iuc_channel_name;
 	cpkt.u.chcu.chcu_unlink_id = ucp->ucp_unlink_id;
 	cpkt.u.chcu.chcu_unlink_id = ucp->ucp_unlink_id;
 	chn_iovec.iov_base = &cpkt;
 	chn_iovec.iov_base = &cpkt;
 	chn_iovec.iov_len = cpkt.chc_head.size;
 	chn_iovec.iov_len = cpkt.chc_head.size;
-	if (totempg_groups_mcast_joined (openais_group_handle, &chn_iovec, 1, TOTEMPG_AGREED) == 0) {
+	if (totempg_groups_mcast_joined(openais_group_handle,
+								&chn_iovec, 1, TOTEMPG_AGREED) == 0) {
 		return;
 		return;
 	}
 	}
 
 
@@ -2400,7 +2419,7 @@ evt_unlink_err:
 	res.iuc_head.size = sizeof(res);
 	res.iuc_head.size = sizeof(res);
 	res.iuc_head.id = MESSAGE_RES_EVT_UNLINK_CHANNEL;
 	res.iuc_head.id = MESSAGE_RES_EVT_UNLINK_CHANNEL;
 	res.iuc_head.error = error;
 	res.iuc_head.error = error;
-	libais_send_response (conn_info, &res, sizeof(res));
+	openais_conn_send_response(conn, &res, sizeof(res));
 }
 }
 
 
 /*
 /*
@@ -2424,7 +2443,7 @@ static char *filter_types[] = {
 /*
 /*
  * saEvtEventSubscribe Handler
  * saEvtEventSubscribe Handler
  */
  */
-static void lib_evt_event_subscribe(struct conn_info *conn_info, void *message)
+static void lib_evt_event_subscribe(void *conn, void *message)
 {
 {
 	struct req_evt_event_subscribe *req;
 	struct req_evt_event_subscribe *req;
 	struct res_evt_event_subscribe res;
 	struct res_evt_event_subscribe res;
@@ -2434,11 +2453,13 @@ static void lib_evt_event_subscribe(struct conn_info *conn_info, void *message)
 	struct event_svr_channel_instance *eci;
 	struct event_svr_channel_instance *eci;
 	struct event_svr_channel_subscr *ecs;
 	struct event_svr_channel_subscr *ecs;
 	struct event_data *evt;
 	struct event_data *evt;
-	struct libevt_ci *esip = &conn_info->ais_ci.u.libevt_ci;
 	struct list_head *l;
 	struct list_head *l;
 	void *ptr;
 	void *ptr;
 	unsigned int ret;
 	unsigned int ret;
 	int i;
 	int i;
+	struct libevt_pd *esip;
+
+	esip = (struct libevt_pd *)openais_conn_private_data_get(conn);
 
 
 	req = message;
 	req = message;
 
 
@@ -2503,7 +2524,7 @@ static void lib_evt_event_subscribe(struct conn_info *conn_info, void *message)
 	res.ics_head.size = sizeof(res);
 	res.ics_head.size = sizeof(res);
 	res.ics_head.id = MESSAGE_RES_EVT_SUBSCRIBE;
 	res.ics_head.id = MESSAGE_RES_EVT_SUBSCRIBE;
 	res.ics_head.error = error;
 	res.ics_head.error = error;
-	libais_send_response (conn_info, &res, sizeof(res));
+	openais_conn_send_response(conn, &res, sizeof(res));
 
 
 	/*
 	/*
 	 * See if an existing event with a retention time
 	 * See if an existing event with a retention time
@@ -2535,24 +2556,25 @@ subr_done:
 	res.ics_head.size = sizeof(res);
 	res.ics_head.size = sizeof(res);
 	res.ics_head.id = MESSAGE_RES_EVT_SUBSCRIBE;
 	res.ics_head.id = MESSAGE_RES_EVT_SUBSCRIBE;
 	res.ics_head.error = error;
 	res.ics_head.error = error;
-	libais_send_response (conn_info, &res, sizeof(res));
+	openais_conn_send_response(conn, &res, sizeof(res));
 }
 }
 
 
 /*
 /*
  * saEvtEventUnsubscribe Handler
  * saEvtEventUnsubscribe Handler
  */
  */
-static void lib_evt_event_unsubscribe(struct conn_info *conn_info, 
-		void *message)
+static void lib_evt_event_unsubscribe(void *conn, void *message)
 {
 {
 	struct req_evt_event_unsubscribe *req;
 	struct req_evt_event_unsubscribe *req;
 	struct res_evt_event_unsubscribe res;
 	struct res_evt_event_unsubscribe res;
 	struct event_svr_channel_open	*eco;
 	struct event_svr_channel_open	*eco;
 	struct event_svr_channel_instance *eci;
 	struct event_svr_channel_instance *eci;
 	struct event_svr_channel_subscr *ecs;
 	struct event_svr_channel_subscr *ecs;
-	struct libevt_ci *esip = &conn_info->ais_ci.u.libevt_ci;
 	SaAisErrorT error = SA_AIS_OK;
 	SaAisErrorT error = SA_AIS_OK;
 	unsigned int ret;
 	unsigned int ret;
 	void *ptr;
 	void *ptr;
+	struct libevt_pd *esip;
+
+	esip = (struct libevt_pd *)openais_conn_private_data_get(conn);
 
 
 	req = message;
 	req = message;
 
 
@@ -2601,17 +2623,16 @@ unsubr_done:
 	res.icu_head.size = sizeof(res);
 	res.icu_head.size = sizeof(res);
 	res.icu_head.id = MESSAGE_RES_EVT_UNSUBSCRIBE;
 	res.icu_head.id = MESSAGE_RES_EVT_UNSUBSCRIBE;
 	res.icu_head.error = error;
 	res.icu_head.error = error;
-	libais_send_response (conn_info, &res, sizeof(res));
+	openais_conn_send_response(conn, &res, sizeof(res));
 }
 }
 
 
 /*
 /*
  * saEvtEventPublish Handler
  * saEvtEventPublish Handler
  */
  */
-static void lib_evt_event_publish(struct conn_info *conn_info, void *message)
+static void lib_evt_event_publish(void *conn, void *message)
 {
 {
 	struct lib_event_data *req;
 	struct lib_event_data *req;
 	struct res_evt_event_publish res;
 	struct res_evt_event_publish res;
-	struct libevt_ci *esip = &conn_info->ais_ci.u.libevt_ci;
 	struct event_svr_channel_open	*eco;
 	struct event_svr_channel_open	*eco;
 	struct event_svr_channel_instance *eci;
 	struct event_svr_channel_instance *eci;
 	SaEvtEventIdT event_id = 0;
 	SaEvtEventIdT event_id = 0;
@@ -2621,6 +2642,9 @@ static void lib_evt_event_publish(struct conn_info *conn_info, void *message)
 	void *ptr;
 	void *ptr;
 	int result;
 	int result;
 	unsigned int ret;
 	unsigned int ret;
+	struct libevt_pd *esip;
+
+	esip = (struct libevt_pd *)openais_conn_private_data_get(conn);
 
 
 
 
 	req = message;
 	req = message;
@@ -2647,7 +2671,7 @@ static void lib_evt_event_publish(struct conn_info *conn_info, void *message)
 	 * processes.
 	 * processes.
 	 */
 	 */
 	get_event_id(&event_id, &msg_id);
 	get_event_id(&event_id, &msg_id);
-	req->led_head.id = SERVICE_ID_MAKE (EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_EVENTDATA);
+	req->led_head.id = SERVICE_ID_MAKE(EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_EVENTDATA);
 	req->led_chan_name = eci->esc_channel_name;
 	req->led_chan_name = eci->esc_channel_name;
 	req->led_event_id = event_id;
 	req->led_event_id = event_id;
 	req->led_msg_id = msg_id;
 	req->led_msg_id = msg_id;
@@ -2660,7 +2684,7 @@ static void lib_evt_event_publish(struct conn_info *conn_info, void *message)
 	 */
 	 */
 	pub_iovec.iov_base = req;
 	pub_iovec.iov_base = req;
 	pub_iovec.iov_len = req->led_head.size;
 	pub_iovec.iov_len = req->led_head.size;
-	result = totempg_groups_mcast_joined (openais_group_handle, &pub_iovec, 1, TOTEMPG_AGREED);
+	result = totempg_groups_mcast_joined(openais_group_handle, &pub_iovec, 1, TOTEMPG_AGREED);
 	if (result != 0) {
 	if (result != 0) {
 			error = SA_AIS_ERR_LIBRARY;
 			error = SA_AIS_ERR_LIBRARY;
 	}
 	}
@@ -2671,14 +2695,13 @@ pub_done:
 	res.iep_head.id = MESSAGE_RES_EVT_PUBLISH;
 	res.iep_head.id = MESSAGE_RES_EVT_PUBLISH;
 	res.iep_head.error = error;
 	res.iep_head.error = error;
 	res.iep_event_id = event_id;
 	res.iep_event_id = event_id;
-	libais_send_response (conn_info, &res, sizeof(res));
+	openais_conn_send_response(conn, &res, sizeof(res));
 }
 }
 
 
 /*
 /*
  * saEvtEventRetentionTimeClear handler
  * saEvtEventRetentionTimeClear handler
  */
  */
-static void lib_evt_event_clear_retentiontime(struct conn_info *conn_info, 
-				void *message)
+static void lib_evt_event_clear_retentiontime(void *conn, void *message)
 {
 {
 	struct req_evt_event_clear_retentiontime *req;
 	struct req_evt_event_clear_retentiontime *req;
 	struct res_evt_event_clear_retentiontime res;
 	struct res_evt_event_clear_retentiontime res;
@@ -2705,7 +2728,7 @@ static void lib_evt_event_clear_retentiontime(struct conn_info *conn_info,
 		goto evt_ret_clr_err;
 		goto evt_ret_clr_err;
 	}
 	}
 	rtc->rtc_event_id = req->iec_event_id;
 	rtc->rtc_event_id = req->iec_event_id;
-	rtc->rtc_conn_info = conn_info;
+	rtc->rtc_conn = conn;
 	list_init(&rtc->rtc_entry);
 	list_init(&rtc->rtc_entry);
 	list_add_tail(&rtc->rtc_entry, &clear_pending);
 	list_add_tail(&rtc->rtc_entry, &clear_pending);
 
 
@@ -2714,13 +2737,14 @@ static void lib_evt_event_clear_retentiontime(struct conn_info *conn_info,
 	 */
 	 */
 	memset(&cpkt, 0, sizeof(cpkt));
 	memset(&cpkt, 0, sizeof(cpkt));
 	cpkt.chc_head.id = 
 	cpkt.chc_head.id = 
-		SERVICE_ID_MAKE (EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
+		SERVICE_ID_MAKE(EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
 	cpkt.chc_head.size = sizeof(cpkt);
 	cpkt.chc_head.size = sizeof(cpkt);
 	cpkt.chc_op = EVT_CLEAR_RET_OP;
 	cpkt.chc_op = EVT_CLEAR_RET_OP;
 	cpkt.u.chc_event_id = req->iec_event_id;
 	cpkt.u.chc_event_id = req->iec_event_id;
 	rtn_iovec.iov_base = &cpkt;
 	rtn_iovec.iov_base = &cpkt;
 	rtn_iovec.iov_len = cpkt.chc_head.size;
 	rtn_iovec.iov_len = cpkt.chc_head.size;
-	ret = totempg_groups_mcast_joined (openais_group_handle, &rtn_iovec, 1, TOTEMPG_AGREED);
+	ret = totempg_groups_mcast_joined(openais_group_handle,
+			&rtn_iovec, 1, TOTEMPG_AGREED);
 	if (ret == 0) {
 	if (ret == 0) {
 		// TODO this should really assert
 		// TODO this should really assert
 		return;
 		return;
@@ -2735,20 +2759,22 @@ evt_ret_clr_err:
 	res.iec_head.size = sizeof(res);
 	res.iec_head.size = sizeof(res);
 	res.iec_head.id = MESSAGE_RES_EVT_CLEAR_RETENTIONTIME;
 	res.iec_head.id = MESSAGE_RES_EVT_CLEAR_RETENTIONTIME;
 	res.iec_head.error = error;
 	res.iec_head.error = error;
-	libais_send_response (conn_info, &res, sizeof(res));
+	openais_conn_send_response(conn, &res, sizeof(res));
 
 
 }
 }
 
 
 /*
 /*
  * Send requested event data to the application
  * Send requested event data to the application
  */
  */
-static void lib_evt_event_data_get(struct conn_info *conn_info, void *message)
+static void lib_evt_event_data_get(void *conn, void *message)
 {
 {
 	struct lib_event_data res;
 	struct lib_event_data res;
-	struct libevt_ci *esip = &conn_info->ais_ci.u.libevt_ci;
 	struct chan_event_list *cel;
 	struct chan_event_list *cel;
 	struct event_data *edp;
 	struct event_data *edp;
 	int i;
 	int i;
+	struct libevt_pd *esip;
+
+	esip = (struct libevt_pd *)openais_conn_private_data_get(conn);
 
 
 
 
 	/*
 	/*
@@ -2772,7 +2798,7 @@ static void lib_evt_event_data_get(struct conn_info *conn_info, void *message)
 			edp->ed_event.led_head.id = MESSAGE_RES_EVT_EVENT_DATA;
 			edp->ed_event.led_head.id = MESSAGE_RES_EVT_EVENT_DATA;
 			edp->ed_event.led_head.error = SA_AIS_OK;
 			edp->ed_event.led_head.error = SA_AIS_OK;
 			free(cel);
 			free(cel);
-			libais_send_response(conn_info, &edp->ed_event, 
+			openais_conn_send_response(conn, &edp->ed_event,
 											edp->ed_event.led_head.size);
 											edp->ed_event.led_head.size);
 			free_event_data(edp);
 			free_event_data(edp);
 			goto data_get_done;
 			goto data_get_done;
@@ -2782,7 +2808,7 @@ static void lib_evt_event_data_get(struct conn_info *conn_info, void *message)
 	res.led_head.size = sizeof(res.led_head);
 	res.led_head.size = sizeof(res.led_head);
 	res.led_head.id = MESSAGE_RES_EVT_EVENT_DATA;
 	res.led_head.id = MESSAGE_RES_EVT_EVENT_DATA;
 	res.led_head.error = SA_AIS_ERR_NOT_EXIST;
 	res.led_head.error = SA_AIS_ERR_NOT_EXIST;
-	libais_send_response(conn_info, &res, res.led_head.size);
+	openais_conn_send_response(conn, &res, res.led_head.size);
 
 
 	/*
 	/*
 	 * See if there are any events that the app doesn't know about
 	 * See if there are any events that the app doesn't know about
@@ -2790,7 +2816,7 @@ static void lib_evt_event_data_get(struct conn_info *conn_info, void *message)
 	 */
 	 */
 data_get_done:
 data_get_done:
 	if (esip->esi_nevents) {
 	if (esip->esi_nevents) {
-		__notify_event(conn_info);
+		__notify_event(conn);
 	}
 	}
 }
 }
 
 
@@ -2935,15 +2961,16 @@ static void evt_conf_change(
 /*
 /*
  * saEvtFinalize Handler
  * saEvtFinalize Handler
  */
  */
-static int evt_lib_exit(struct conn_info *conn_info)
+static int evt_lib_exit(void *conn)
 {
 {
 
 
-	struct libevt_ci *esip = &conn_info->conn_info_partner->ais_ci.u.libevt_ci;
 	struct event_svr_channel_open	*eco;
 	struct event_svr_channel_open	*eco;
 	struct list_head *l, *nxt;
 	struct list_head *l, *nxt;
 	struct open_chan_pending *ocp;
 	struct open_chan_pending *ocp;
 	struct unlink_chan_pending *ucp;
 	struct unlink_chan_pending *ucp;
 	struct retention_time_clear_pending *rtc;
 	struct retention_time_clear_pending *rtc;
+	struct libevt_pd *esip =
+		openais_conn_private_data_get(openais_conn_partner_get(conn));
 
 
 	log_printf(LOG_LEVEL_DEBUG, "saEvtFinalize (Event exit request)\n");
 	log_printf(LOG_LEVEL_DEBUG, "saEvtFinalize (Event exit request)\n");
 	log_printf(LOG_LEVEL_DEBUG, "saEvtFinalize %d evts on list\n",
 	log_printf(LOG_LEVEL_DEBUG, "saEvtFinalize %d evts on list\n",
@@ -2965,7 +2992,7 @@ static int evt_lib_exit(struct conn_info *conn_info)
 	for (l = open_pending.next; l != &open_pending; l = nxt) {
 	for (l = open_pending.next; l != &open_pending; l = nxt) {
 		nxt = l->next;
 		nxt = l->next;
 		ocp = list_entry(l, struct open_chan_pending, ocp_entry);
 		ocp = list_entry(l, struct open_chan_pending, ocp_entry);
-		if (esip == &ocp->ocp_conn_info->ais_ci.u.libevt_ci) {
+		if (esip == openais_conn_private_data_get(ocp->ocp_conn)) {
 			list_del(&ocp->ocp_entry);
 			list_del(&ocp->ocp_entry);
 			free(ocp);
 			free(ocp);
 		}
 		}
@@ -2974,7 +3001,7 @@ static int evt_lib_exit(struct conn_info *conn_info)
 	for (l = unlink_pending.next; l != &unlink_pending; l = nxt) {
 	for (l = unlink_pending.next; l != &unlink_pending; l = nxt) {
 		nxt = l->next;
 		nxt = l->next;
 		ucp = list_entry(l, struct unlink_chan_pending, ucp_entry);
 		ucp = list_entry(l, struct unlink_chan_pending, ucp_entry);
-		if (esip == &ucp->ucp_conn_info->ais_ci.u.libevt_ci) {
+		if (esip == openais_conn_private_data_get(ucp->ucp_conn)) {
 			list_del(&ucp->ucp_entry);
 			list_del(&ucp->ucp_entry);
 			free(ucp);
 			free(ucp);
 		}
 		}
@@ -2984,17 +3011,12 @@ static int evt_lib_exit(struct conn_info *conn_info)
 			l != &clear_pending; l = nxt) {
 			l != &clear_pending; l = nxt) {
 		nxt = l->next;
 		nxt = l->next;
 		rtc = list_entry(l, struct retention_time_clear_pending, rtc_entry);
 		rtc = list_entry(l, struct retention_time_clear_pending, rtc_entry);
-		if (esip == &rtc->rtc_conn_info->ais_ci.u.libevt_ci) {
+		if (esip == openais_conn_private_data_get(rtc->rtc_conn)) {
 			list_del(&rtc->rtc_entry);
 			list_del(&rtc->rtc_entry);
 			free(rtc);
 			free(rtc);
 		}
 		}
 	}
 	}
 
 
-	/*
-	 * Delete track entry if there is one
-	 */
-	list_del (&conn_info->conn_info_partner->conn_list);
-
 	return 0;
 	return 0;
 }
 }
 
 
@@ -3110,7 +3132,7 @@ static void evt_remote_evt(void *msg, struct totem_ip_address *source_addr)
 	 * See where the message came from so that we can set the 
 	 * See where the message came from so that we can set the 
 	 * publishing node id in the message before delivery.
 	 * publishing node id in the message before delivery.
 	 */
 	 */
-	cn = main_clm_get_by_nodeid (source_addr->nodeid);
+	cn = main_clm_get_by_nodeid(source_addr->nodeid);
 	if (!cn) {
 	if (!cn) {
 			/*
 			/*
 			 * Not sure how this can happen...
 			 * Not sure how this can happen...
@@ -3310,7 +3332,7 @@ static void chan_open_timeout(void *data)
 	res.ico_head.id = MESSAGE_RES_EVT_OPEN_CHANNEL;
 	res.ico_head.id = MESSAGE_RES_EVT_OPEN_CHANNEL;
 	res.ico_head.error = SA_AIS_ERR_TIMEOUT;
 	res.ico_head.error = SA_AIS_ERR_TIMEOUT;
 	ocp->ocp_invocation = OPEN_TIMED_OUT;
 	ocp->ocp_invocation = OPEN_TIMED_OUT;
-	libais_send_response (ocp->ocp_conn_info, &res, sizeof(res));
+	openais_conn_send_response(ocp->ocp_conn, &res, sizeof(res));
 }
 }
 
 
 /*
 /*
@@ -3320,13 +3342,15 @@ static void chan_open_timeout(void *data)
 static void evt_chan_open_finish(struct open_chan_pending *ocp, 
 static void evt_chan_open_finish(struct open_chan_pending *ocp, 
 		struct event_svr_channel_instance *eci)
 		struct event_svr_channel_instance *eci)
 {
 {
-	uint32_t handle;
 	struct event_svr_channel_open *eco;
 	struct event_svr_channel_open *eco;
 	SaAisErrorT error = SA_AIS_OK;
 	SaAisErrorT error = SA_AIS_OK;
-	struct libevt_ci *esip = &ocp->ocp_conn_info->ais_ci.u.libevt_ci;
 	unsigned int ret = 0;
 	unsigned int ret = 0;
-	unsigned int timer_del_status;
-	void *ptr;
+	unsigned int timer_del_status = 0;
+	void *ptr = 0;
+	uint32_t handle;
+	struct libevt_pd *esip;
+
+	esip = (struct libevt_pd *)openais_conn_private_data_get(ocp->ocp_conn);
 
 
 	log_printf(CHAN_OPEN_DEBUG, "Open channel finish %s\n",
 	log_printf(CHAN_OPEN_DEBUG, "Open channel finish %s\n",
 											getSaNameT(&ocp->ocp_chan_name));
 											getSaNameT(&ocp->ocp_chan_name));
@@ -3382,7 +3406,7 @@ static void evt_chan_open_finish(struct open_chan_pending *ocp,
 	eco->eco_channel = eci;
 	eco->eco_channel = eci;
 	eco->eco_lib_handle = ocp->ocp_c_handle;
 	eco->eco_lib_handle = ocp->ocp_c_handle;
 	eco->eco_my_handle = handle;
 	eco->eco_my_handle = handle;
-	eco->eco_conn_info = ocp->ocp_conn_info;
+	eco->eco_conn = ocp->ocp_conn;
 	list_add_tail(&eco->eco_entry, &eci->esc_open_chans);
 	list_add_tail(&eco->eco_entry, &eci->esc_open_chans);
 	list_add_tail(&eco->eco_instance_entry, &esip->esi_open_chans);
 	list_add_tail(&eco->eco_instance_entry, &esip->esi_open_chans);
 
 
@@ -3404,7 +3428,7 @@ open_return:
 		resa.ica_channel_handle = handle;
 		resa.ica_channel_handle = handle;
 		resa.ica_c_handle = ocp->ocp_c_handle;
 		resa.ica_c_handle = ocp->ocp_c_handle;
 		resa.ica_invocation = ocp->ocp_invocation;
 		resa.ica_invocation = ocp->ocp_invocation;
-		libais_send_response (ocp->ocp_conn_info->conn_info_partner, 
+		openais_conn_send_response(openais_conn_partner_get(ocp->ocp_conn),
 				&resa, sizeof(resa));
 				&resa, sizeof(resa));
 	} else {
 	} else {
 		struct res_evt_channel_open res;
 		struct res_evt_channel_open res;
@@ -3412,7 +3436,7 @@ open_return:
 		res.ico_head.id = MESSAGE_RES_EVT_OPEN_CHANNEL;
 		res.ico_head.id = MESSAGE_RES_EVT_OPEN_CHANNEL;
 		res.ico_head.error = (ret == 0 ? SA_AIS_OK : SA_AIS_ERR_BAD_HANDLE);
 		res.ico_head.error = (ret == 0 ? SA_AIS_OK : SA_AIS_ERR_BAD_HANDLE);
 		res.ico_channel_handle = handle;
 		res.ico_channel_handle = handle;
-		libais_send_response (ocp->ocp_conn_info, &res, sizeof(res));
+		openais_conn_send_response(ocp->ocp_conn, &res, sizeof(res));
 	}
 	}
 
 
 	if (timer_del_status == 0) {
 	if (timer_del_status == 0) {
@@ -3437,7 +3461,7 @@ static void evt_chan_unlink_finish(struct unlink_chan_pending *ucp)
 	res.iuc_head.size = sizeof(res);
 	res.iuc_head.size = sizeof(res);
 	res.iuc_head.id = MESSAGE_RES_EVT_UNLINK_CHANNEL;
 	res.iuc_head.id = MESSAGE_RES_EVT_UNLINK_CHANNEL;
 	res.iuc_head.error = SA_AIS_OK;
 	res.iuc_head.error = SA_AIS_OK;
-	libais_send_response (ucp->ucp_conn_info, &res, sizeof(res));
+	openais_conn_send_response(ucp->ucp_conn, &res, sizeof(res));
 
 
 	free(ucp);
 	free(ucp);
 }
 }
@@ -3457,7 +3481,7 @@ static void evt_ret_time_clr_finish(struct retention_time_clear_pending *rtc,
 	res.iec_head.size = sizeof(res);
 	res.iec_head.size = sizeof(res);
 	res.iec_head.id = MESSAGE_RES_EVT_CLEAR_RETENTIONTIME;
 	res.iec_head.id = MESSAGE_RES_EVT_CLEAR_RETENTIONTIME;
 	res.iec_head.error = ret;
 	res.iec_head.error = ret;
-	libais_send_response (rtc->rtc_conn_info, &res, sizeof(res));
+	openais_conn_send_response(rtc->rtc_conn, &res, sizeof(res));
 
 
 	list_del(&rtc->rtc_entry);
 	list_del(&rtc->rtc_entry);
 	free(rtc);
 	free(rtc);
@@ -4011,7 +4035,7 @@ static int evt_sync_process(void)
 				cpkt.u.chc_set_id.chc_last_id = md->mn_last_msg_id;
 				cpkt.u.chc_set_id.chc_last_id = md->mn_last_msg_id;
 				chn_iovec.iov_base = &cpkt;
 				chn_iovec.iov_base = &cpkt;
 				chn_iovec.iov_len = cpkt.chc_head.size;
 				chn_iovec.iov_len = cpkt.chc_head.size;
-				res = totempg_groups_mcast_joined (openais_group_handle,
+				res = totempg_groups_mcast_joined(openais_group_handle,
 						&chn_iovec, 1, TOTEMPG_AGREED);
 						&chn_iovec, 1, TOTEMPG_AGREED);
 				if (res != 0) {
 				if (res != 0) {
 					log_printf(RECOVERY_DEBUG, 
 					log_printf(RECOVERY_DEBUG, 
@@ -4071,14 +4095,14 @@ static int evt_sync_process(void)
 			eci = list_entry(next_chan, struct event_svr_channel_instance, 
 			eci = list_entry(next_chan, struct event_svr_channel_instance, 
 					esc_entry);
 					esc_entry);
 			cpkt.chc_head.id =
 			cpkt.chc_head.id =
-				SERVICE_ID_MAKE (EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
+				SERVICE_ID_MAKE(EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
 			cpkt.chc_head.size = sizeof(cpkt);
 			cpkt.chc_head.size = sizeof(cpkt);
 			cpkt.chc_op = EVT_OPEN_COUNT;
 			cpkt.chc_op = EVT_OPEN_COUNT;
 			cpkt.u.chc_set_opens.chc_chan_name = eci->esc_channel_name;
 			cpkt.u.chc_set_opens.chc_chan_name = eci->esc_channel_name;
 			cpkt.u.chc_set_opens.chc_open_count = eci->esc_local_opens;
 			cpkt.u.chc_set_opens.chc_open_count = eci->esc_local_opens;
 			chn_iovec.iov_base = &cpkt;
 			chn_iovec.iov_base = &cpkt;
 			chn_iovec.iov_len = cpkt.chc_head.size;
 			chn_iovec.iov_len = cpkt.chc_head.size;
-			res = totempg_groups_mcast_joined (openais_group_handle,
+			res = totempg_groups_mcast_joined(openais_group_handle,
 					&chn_iovec, 1, TOTEMPG_AGREED);
 					&chn_iovec, 1, TOTEMPG_AGREED);
 
 
 			if (res != 0) {
 			if (res != 0) {
@@ -4090,12 +4114,13 @@ static int evt_sync_process(void)
 		}
 		}
 		memset(&cpkt, 0, sizeof(cpkt));
 		memset(&cpkt, 0, sizeof(cpkt));
 		cpkt.chc_head.id =
 		cpkt.chc_head.id =
-			SERVICE_ID_MAKE (EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
+			SERVICE_ID_MAKE(EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
 		cpkt.chc_head.size = sizeof(cpkt);
 		cpkt.chc_head.size = sizeof(cpkt);
 		cpkt.chc_op = EVT_OPEN_COUNT_DONE;
 		cpkt.chc_op = EVT_OPEN_COUNT_DONE;
 		chn_iovec.iov_base = &cpkt;
 		chn_iovec.iov_base = &cpkt;
 		chn_iovec.iov_len = cpkt.chc_head.size;
 		chn_iovec.iov_len = cpkt.chc_head.size;
-		res = totempg_groups_mcast_joined (openais_group_handle, &chn_iovec, 1,TOTEMPG_AGREED);
+		res = totempg_groups_mcast_joined(openais_group_handle,
+				&chn_iovec, 1,TOTEMPG_AGREED);
 		if (res != 0) {
 		if (res != 0) {
 		/*
 		/*
 		 * Try again later.
 		 * Try again later.
@@ -4140,10 +4165,11 @@ static int evt_sync_process(void)
 			log_printf(LOG_LEVEL_DEBUG, "Sending next retained event\n");
 			log_printf(LOG_LEVEL_DEBUG, "Sending next retained event\n");
 			evt = list_entry(next_retained, struct event_data, ed_retained);
 			evt = list_entry(next_retained, struct event_data, ed_retained);
 			evt->ed_event.led_head.id =
 			evt->ed_event.led_head.id =
-				SERVICE_ID_MAKE (EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_RECOVERY_EVENTDATA);
+				SERVICE_ID_MAKE(EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_RECOVERY_EVENTDATA);
 			chn_iovec.iov_base = &evt->ed_event;
 			chn_iovec.iov_base = &evt->ed_event;
 			chn_iovec.iov_len = evt->ed_event.led_head.size;
 			chn_iovec.iov_len = evt->ed_event.led_head.size;
-			res = totempg_groups_mcast_joined (openais_group_handle, &chn_iovec, 1, TOTEMPG_AGREED);
+			res = totempg_groups_mcast_joined(openais_group_handle,
+					&chn_iovec, 1, TOTEMPG_AGREED);
 
 
 			if (res != 0) {
 			if (res != 0) {
 			/*
 			/*
@@ -4166,12 +4192,13 @@ static int evt_sync_process(void)
 		log_printf(RECOVERY_DEBUG, "DONE Sending retained events\n");
 		log_printf(RECOVERY_DEBUG, "DONE Sending retained events\n");
 		memset(&cpkt, 0, sizeof(cpkt));
 		memset(&cpkt, 0, sizeof(cpkt));
 		cpkt.chc_head.id =
 		cpkt.chc_head.id =
-				SERVICE_ID_MAKE (EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
+				SERVICE_ID_MAKE(EVT_SERVICE, MESSAGE_REQ_EXEC_EVT_CHANCMD);
 		cpkt.chc_head.size = sizeof(cpkt);
 		cpkt.chc_head.size = sizeof(cpkt);
 		cpkt.chc_op = EVT_CONF_DONE;
 		cpkt.chc_op = EVT_CONF_DONE;
 		chn_iovec.iov_base = &cpkt;
 		chn_iovec.iov_base = &cpkt;
 		chn_iovec.iov_len = cpkt.chc_head.size;
 		chn_iovec.iov_len = cpkt.chc_head.size;
-		res = totempg_groups_mcast_joined (openais_group_handle, &chn_iovec, 1, TOTEMPG_AGREED);
+		res = totempg_groups_mcast_joined(openais_group_handle,
+				&chn_iovec, 1, TOTEMPG_AGREED);
 
 
 		recovery_phase = evt_wait_send_retained_events;
 		recovery_phase = evt_wait_send_retained_events;
 		return 1;
 		return 1;

+ 1 - 30
exec/evt.h

@@ -33,41 +33,12 @@
 
 
 #ifndef EVT_H
 #ifndef EVT_H
 #define EVT_H
 #define EVT_H
-#include "../include/hdb.h"
-#include "../include/list.h"
+#include "../include/saAis.h"
 #include "../include/saEvt.h"
 #include "../include/saEvt.h"
 #include "handlers.h"
 #include "handlers.h"
 
 
 extern struct openais_service_handler evt_service_handler;
 extern struct openais_service_handler evt_service_handler;
 
 
-/*
- * event instance structure. Contains information about the
- * active connection to the API library.
- *
- * esi_version:				Version that the library is running.
- * esi_open_chans:			list of open channels associated with this
- * 							instance.  Used to clean up any data left
- * 							allocated when the finalize is done.
- * 							(event_svr_channel_open.eco_instance_entry)
- * esi_events:				list of pending events to be delivered on this 
- *  						instance (struct chan_event_list.cel_entry)
- * esi_queue_blocked:		non-zero if the delivery queue got too full
- * 							and we're blocking new messages until we
- * 							drain some of the queued messages.
- * esi_nevents:				Number of events in events lists to be sent.
- * esi_hdb:					Handle data base for open channels on this
- * 							instance.  Used for a quick lookup of
- * 							open channel data from a lib api message.
- */
-struct libevt_ci {
-	SaVersionT				esi_version;
-	struct list_head		esi_open_chans;
-	struct list_head		esi_events[SA_EVT_LOWEST_PRIORITY+1];
-	int						esi_nevents;
-	int						esi_queue_blocked;
-	struct hdb_handle_database	esi_hdb;
-};
-
 #endif
 #endif
 /*
 /*
  *	vi: set autoindent tabstop=4 shiftwidth=4 :
  *	vi: set autoindent tabstop=4 shiftwidth=4 :

+ 4 - 3
exec/handlers.h

@@ -49,7 +49,7 @@ enum openais_flow_control {
 };
 };
 
 
 struct openais_lib_handler {
 struct openais_lib_handler {
-	void (*lib_handler_fn) (struct conn_info *conn_info, void *msg);
+	void (*lib_handler_fn) (void *conn, void *msg);
 	int response_size;
 	int response_size;
 	int response_id;
 	int response_id;
 	enum openais_flow_control flow_control;
 	enum openais_flow_control flow_control;
@@ -63,8 +63,9 @@ struct openais_exec_handler {
 struct openais_service_handler {
 struct openais_service_handler {
 	unsigned char *name;
 	unsigned char *name;
 	unsigned short id;
 	unsigned short id;
-	int (*lib_init_fn) (struct conn_info *conn_info);
-	int (*lib_exit_fn) (struct conn_info *conn_info);
+	unsigned int private_data_size;
+	int (*lib_init_fn) (void *conn);
+	int (*lib_exit_fn) (void *conn);
 	struct openais_lib_handler *lib_handlers;
 	struct openais_lib_handler *lib_handlers;
 	int lib_handlers_count;
 	int lib_handlers_count;
 	struct openais_exec_handler *exec_handlers;
 	struct openais_exec_handler *exec_handlers;

+ 119 - 93
exec/lck.c

@@ -110,9 +110,9 @@ DECLARE_LIST_INIT(resource_list_head);
 
 
 static int lck_exec_init_fn (struct openais_config *);
 static int lck_exec_init_fn (struct openais_config *);
 
 
-static int lck_lib_exit_fn (struct conn_info *conn_info);
+static int lck_lib_exit_fn (void *conn);
 
 
-static int lck_lib_init_fn (struct conn_info *conn_info);
+static int lck_lib_init_fn (void *conn);
 
 
 static void message_handler_req_exec_lck_resourceopen (
 static void message_handler_req_exec_lck_resourceopen (
 	void *message,
 	void *message,
@@ -139,36 +139,36 @@ static void message_handler_req_exec_lck_lockpurge (
 	struct totem_ip_address *source_addr);
 	struct totem_ip_address *source_addr);
 
 
 static void message_handler_req_lib_lck_resourceopen (
 static void message_handler_req_lib_lck_resourceopen (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_lck_resourceopenasync (
 static void message_handler_req_lib_lck_resourceopenasync (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_lck_resourceclose (
 static void message_handler_req_lib_lck_resourceclose (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_lck_resourcelock (
 static void message_handler_req_lib_lck_resourcelock (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_lck_resourcelockasync (
 static void message_handler_req_lib_lck_resourcelockasync (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_lck_resourceunlock (
 static void message_handler_req_lib_lck_resourceunlock (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_lck_resourceunlockasync (
 static void message_handler_req_lib_lck_resourceunlockasync (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_lck_lockpurge (
 static void message_handler_req_lib_lck_lockpurge (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 #ifdef TODO
 #ifdef TODO
 static void lck_sync_init (void);
 static void lck_sync_init (void);
@@ -196,6 +196,12 @@ static void lck_confchg_fn (
 		struct totem_ip_address *joined_list, int joined_list_entries,
 		struct totem_ip_address *joined_list, int joined_list_entries,
 		struct memb_ring_id *ring_id);
 		struct memb_ring_id *ring_id);
 
 
+struct lck_pd {
+	struct list_head resource_list;
+	struct list_head resource_cleanup_list;
+};
+
+
 /*
 /*
  * Executive Handler Definition
  * Executive Handler Definition
  */
  */
@@ -276,6 +282,7 @@ static struct openais_exec_handler lck_exec_handlers[] = {
 struct openais_service_handler lck_service_handler = {
 struct openais_service_handler lck_service_handler = {
 	.name				= (unsigned char*)"openais distributed locking service B.01.01",
 	.name				= (unsigned char*)"openais distributed locking service B.01.01",
 	.id				= LCK_SERVICE,
 	.id				= LCK_SERVICE,
+	.private_data_size		= sizeof (struct lck_pd),
 	.lib_init_fn			= lck_lib_init_fn,
 	.lib_init_fn			= lck_lib_init_fn,
 	.lib_exit_fn			= lck_lib_exit_fn,
 	.lib_exit_fn			= lck_lib_exit_fn,
 	.lib_handlers			= lck_lib_handlers,
 	.lib_handlers			= lck_lib_handlers,
@@ -464,16 +471,15 @@ static struct resource_lock *resource_lock_find (
 }
 }
 
 
 struct resource_cleanup *lck_resource_cleanup_find (
 struct resource_cleanup *lck_resource_cleanup_find (
-	struct conn_info *conn_info,
+	void *conn,
 	SaLckResourceHandleT resource_handle)
 	SaLckResourceHandleT resource_handle)
 {
 {
-	
 	struct list_head *list;
 	struct list_head *list;
 	struct resource_cleanup *resource_cleanup;
 	struct resource_cleanup *resource_cleanup;
+	struct lck_pd *lck_pd = (struct lck_pd *)openais_conn_private_data_get (conn);
 
 
-   for (list = conn_info->ais_ci.u.liblck_ci.resource_cleanup_list.next;
-		list != &conn_info->ais_ci.u.liblck_ci.resource_cleanup_list;
-        list = list->next) {
+	for (list = lck_pd->resource_cleanup_list.next;
+		list != &lck_pd->resource_cleanup_list; list = list->next) {
 
 
 		resource_cleanup = list_entry (list, struct resource_cleanup, list);
 		resource_cleanup = list_entry (list, struct resource_cleanup, list);
 		if (resource_cleanup->resource_handle == resource_handle) {
 		if (resource_cleanup->resource_handle == resource_handle) {
@@ -532,8 +538,6 @@ void resource_lock_orphan (struct resource_lock *resource_lock)
 	iovec.iov_len = sizeof (req_exec_lck_resourcelockorphan);
 	iovec.iov_len = sizeof (req_exec_lck_resourcelockorphan);
 
 
 	assert (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED) == 0);
 	assert (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED) == 0);
-
-	// AAA
 }
 }
 
 
 void lck_resource_cleanup_lock_remove (
 void lck_resource_cleanup_lock_remove (
@@ -552,15 +556,16 @@ void lck_resource_cleanup_lock_remove (
 }
 }
 
 
 void lck_resource_cleanup_remove (
 void lck_resource_cleanup_remove (
-	struct conn_info *conn_info,
+	void *conn,
 	SaLckResourceHandleT resource_handle)
 	SaLckResourceHandleT resource_handle)
 {
 {
 	
 	
 	struct list_head *list;
 	struct list_head *list;
 	struct resource_cleanup *resource_cleanup;
 	struct resource_cleanup *resource_cleanup;
+	struct lck_pd *lck_pd = (struct lck_pd *)openais_conn_private_data_get (conn);
 
 
-	for (list = conn_info->ais_ci.u.liblck_ci.resource_cleanup_list.next;
-		list != &conn_info->ais_ci.u.liblck_ci.resource_cleanup_list;
+	for (list = lck_pd->resource_cleanup_list.next;
+		list != &lck_pd->resource_cleanup_list;
 		list = list->next) {
 		list = list->next) {
 
 
 		resource_cleanup = list_entry (list, struct resource_cleanup, list);
 		resource_cleanup = list_entry (list, struct resource_cleanup, list);
@@ -581,24 +586,21 @@ static int lck_exec_init_fn (struct openais_config *openais_config)
 	return (0);
 	return (0);
 }
 }
 
 
-static int lck_lib_exit_fn (struct conn_info *conn_info)
+static int lck_lib_exit_fn (void *conn)
 {
 {
 	struct resource_cleanup *resource_cleanup;
 	struct resource_cleanup *resource_cleanup;
-	struct list_head *list;
+	struct list_head *cleanup_list;
+	struct lck_pd *lck_pd = (struct lck_pd *)openais_conn_private_data_get (conn);
 	
 	
-	if (conn_info->conn_info_partner->service != LCK_SERVICE) {
-		return 0;
-	}
-
-	log_printf(LOG_LEVEL_NOTICE, "lck_exit_fn conn_info = %p, with fd = %d\n", conn_info, conn_info->fd);
+	log_printf(LOG_LEVEL_NOTICE, "lck_exit_fn conn_info %p\n", conn);
 	
 	
 	/*
 	/*
 	 * close all resources opened on this fd
 	 * close all resources opened on this fd
 	 */
 	 */
-	list = conn_info->conn_info_partner->ais_ci.u.liblck_ci.resource_cleanup_list.next;	
-	while (!list_empty(&conn_info->conn_info_partner->ais_ci.u.liblck_ci.resource_cleanup_list)) {
+	cleanup_list = lck_pd->resource_cleanup_list.next;
+	while (!list_empty(cleanup_list)) {
 		
 		
-		resource_cleanup = list_entry (list, struct resource_cleanup, list);
+		resource_cleanup = list_entry (cleanup_list, struct resource_cleanup, list);
 		
 		
 		if (resource_cleanup->resource->name.length > 0)	{
 		if (resource_cleanup->resource->name.length > 0)	{
 			lck_resource_cleanup_lock_remove (resource_cleanup);
 			lck_resource_cleanup_lock_remove (resource_cleanup);
@@ -608,17 +610,18 @@ static int lck_lib_exit_fn (struct conn_info *conn_info)
 		list_del (&resource_cleanup->list);	
 		list_del (&resource_cleanup->list);	
 		free (resource_cleanup);
 		free (resource_cleanup);
                 
                 
-		list = conn_info->conn_info_partner->ais_ci.u.liblck_ci.resource_cleanup_list.next;
+		cleanup_list = lck_pd->resource_cleanup_list.next;
 	}
 	}
 
 
 	return (0);
 	return (0);
 }
 }
 
 
-static int lck_lib_init_fn (struct conn_info *conn_info)
+static int lck_lib_init_fn (void *conn)
 {
 {
-	list_init (&conn_info->conn_info_partner->ais_ci.u.liblck_ci.resource_list);
-	list_init (&conn_info->conn_info_partner->ais_ci.u.liblck_ci.resource_cleanup_list);
+    struct lck_pd *lck_pd = (struct lck_pd *)openais_conn_private_data_get (conn);
 
 
+	list_init (&lck_pd->resource_list);
+	list_init (&lck_pd->resource_cleanup_list);
 	return (0);
 	return (0);
 }
 }
 
 
@@ -632,6 +635,7 @@ static void message_handler_req_exec_lck_resourceopen (
 	struct resource *resource;
 	struct resource *resource;
 	struct resource_cleanup *resource_cleanup;
 	struct resource_cleanup *resource_cleanup;
 	SaAisErrorT error = SA_AIS_OK;
 	SaAisErrorT error = SA_AIS_OK;
+	struct lck_pd *lck_pd = (struct lck_pd *)openais_conn_private_data_get (req_exec_lck_resourceopen->source.conn);
 
 
 	log_printf (LOG_LEVEL_NOTICE, "EXEC request: saLckResourceOpen %s\n",
 	log_printf (LOG_LEVEL_NOTICE, "EXEC request: saLckResourceOpen %s\n",
 		getSaNameT (&req_exec_lck_resourceopen->resource_name));
 		getSaNameT (&req_exec_lck_resourceopen->resource_name));
@@ -684,10 +688,11 @@ static void message_handler_req_exec_lck_resourceopen (
 			list_init (&resource_cleanup->list);
 			list_init (&resource_cleanup->list);
 			list_init (&resource_cleanup->resource_lock_list_head);
 			list_init (&resource_cleanup->resource_lock_list_head);
 			resource_cleanup->resource = resource;
 			resource_cleanup->resource = resource;
+printf ("resource is %p\n", resource);
 			resource_cleanup->resource_handle = req_exec_lck_resourceopen->resource_handle;
 			resource_cleanup->resource_handle = req_exec_lck_resourceopen->resource_handle;
 			list_add (
 			list_add (
 				&resource_cleanup->list,
 				&resource_cleanup->list,
-				&req_exec_lck_resourceopen->source.conn_info->ais_ci.u.liblck_ci.resource_cleanup_list);
+				&lck_pd->resource_cleanup_list);
 		}
 		}
 		resource->refcount += 1;
 		resource->refcount += 1;
 	}
 	}
@@ -714,12 +719,12 @@ error_exit:
 				&req_exec_lck_resourceopen->source,
 				&req_exec_lck_resourceopen->source,
 				sizeof (struct message_source));
 				sizeof (struct message_source));
 
 
-			libais_send_response (
-				req_exec_lck_resourceopen->source.conn_info,
+			openais_conn_send_response (
+				req_exec_lck_resourceopen->source.conn,
 				&res_lib_lck_resourceopenasync,
 				&res_lib_lck_resourceopenasync,
 				sizeof (struct res_lib_lck_resourceopenasync));
 				sizeof (struct res_lib_lck_resourceopenasync));
-			libais_send_response (
-				req_exec_lck_resourceopen->source.conn_info->conn_info_partner,
+			openais_conn_send_response (
+				openais_conn_partner_get (req_exec_lck_resourceopen->source.conn),
 				&res_lib_lck_resourceopenasync,
 				&res_lib_lck_resourceopenasync,
 				sizeof (struct res_lib_lck_resourceopenasync));
 				sizeof (struct res_lib_lck_resourceopenasync));
 		} else {
 		} else {
@@ -733,7 +738,8 @@ error_exit:
 				&req_exec_lck_resourceopen->source,
 				&req_exec_lck_resourceopen->source,
 				sizeof (struct message_source));
 				sizeof (struct message_source));
 
 
-			libais_send_response (req_exec_lck_resourceopen->source.conn_info, &res_lib_lck_resourceopen,
+			openais_conn_send_response (req_exec_lck_resourceopen->source.conn,
+				&res_lib_lck_resourceopen,
 				sizeof (struct res_lib_lck_resourceopen));
 				sizeof (struct res_lib_lck_resourceopen));
 		}
 		}
 	}
 	}
@@ -762,13 +768,14 @@ static void message_handler_req_exec_lck_resourceclose (
 error_exit:
 error_exit:
 	if (message_source_is_local(&req_exec_lck_resourceclose->source)) {
 	if (message_source_is_local(&req_exec_lck_resourceclose->source)) {
 		lck_resource_cleanup_remove (
 		lck_resource_cleanup_remove (
-			req_exec_lck_resourceclose->source.conn_info,
+			req_exec_lck_resourceclose->source.conn,
 			req_exec_lck_resourceclose->resource_handle);
 			req_exec_lck_resourceclose->resource_handle);
 
 
 		res_lib_lck_resourceclose.header.size = sizeof (struct res_lib_lck_resourceclose);
 		res_lib_lck_resourceclose.header.size = sizeof (struct res_lib_lck_resourceclose);
 		res_lib_lck_resourceclose.header.id = MESSAGE_RES_LCK_RESOURCECLOSE;
 		res_lib_lck_resourceclose.header.id = MESSAGE_RES_LCK_RESOURCECLOSE;
 		res_lib_lck_resourceclose.header.error = error;
 		res_lib_lck_resourceclose.header.error = error;
-		libais_send_response (req_exec_lck_resourceclose->source.conn_info,
+		openais_conn_send_response (
+			req_exec_lck_resourceclose->source.conn,
 			&res_lib_lck_resourceclose, sizeof (struct res_lib_lck_resourceclose));
 			&res_lib_lck_resourceclose, sizeof (struct res_lib_lck_resourceclose));
 	}
 	}
 }
 }
@@ -794,8 +801,8 @@ void waiter_notification_send (struct resource_lock *resource_lock)
 		res_lib_lck_lockwaitercallback.mode_held = SA_LCK_PR_LOCK_MODE;
 		res_lib_lck_lockwaitercallback.mode_held = SA_LCK_PR_LOCK_MODE;
 	}
 	}
 
 
-	libais_send_response (
-		resource_lock->callback_source.conn_info->conn_info_partner,
+	openais_conn_send_response (
+		openais_conn_partner_get (resource_lock->callback_source.conn),
 		&res_lib_lck_lockwaitercallback,
 		&res_lib_lck_lockwaitercallback,
 		sizeof (struct res_lib_lck_lockwaitercallback));
 		sizeof (struct res_lib_lck_lockwaitercallback));
 }
 }
@@ -830,7 +837,8 @@ void resource_lock_async_deliver (
 			res_lib_lck_resourcelockasync.lockStatus = resource_lock->lock_status;
 			res_lib_lck_resourcelockasync.lockStatus = resource_lock->lock_status;
 			res_lib_lck_resourcelockasync.invocation = resource_lock->invocation;
 			res_lib_lck_resourcelockasync.invocation = resource_lock->invocation;
 			res_lib_lck_resourcelockasync.lockId = resource_lock->lock_id;
 			res_lib_lck_resourcelockasync.lockId = resource_lock->lock_id;
-			libais_send_response (source->conn_info->conn_info_partner,
+			openais_conn_send_response (
+				openais_conn_partner_get (source->conn),
 				&res_lib_lck_resourcelockasync,
 				&res_lib_lck_resourcelockasync,
 				sizeof (struct res_lib_lck_resourcelockasync));
 				sizeof (struct res_lib_lck_resourcelockasync));
 		}
 		}
@@ -853,7 +861,7 @@ void lock_response_deliver (
 			res_lib_lck_resourcelock.header.error = error;
 			res_lib_lck_resourcelock.header.error = error;
 			res_lib_lck_resourcelock.resource_lock = (void *)resource_lock;
 			res_lib_lck_resourcelock.resource_lock = (void *)resource_lock;
 			res_lib_lck_resourcelock.lockStatus = resource_lock->lock_status;
 			res_lib_lck_resourcelock.lockStatus = resource_lock->lock_status;
-			libais_send_response (source->conn_info,
+			openais_conn_send_response (source->conn,
 				&res_lib_lck_resourcelock,
 				&res_lib_lck_resourcelock,
 				sizeof (struct res_lib_lck_resourcelock));
 				sizeof (struct res_lib_lck_resourcelock));
 		}
 		}
@@ -1095,7 +1103,7 @@ static void message_handler_req_exec_lck_resourcelock (
 	 */
 	 */
 	if (message_source_is_local (&req_exec_lck_resourcelock->source)) {
 	if (message_source_is_local (&req_exec_lck_resourcelock->source)) {
 		resource_cleanup = lck_resource_cleanup_find (
 		resource_cleanup = lck_resource_cleanup_find (
-			resource_lock->callback_source.conn_info,
+			resource_lock->callback_source.conn,
 			req_exec_lck_resourcelock->resource_handle);
 			req_exec_lck_resourcelock->resource_handle);
 
 
 		assert (resource_cleanup);
 		assert (resource_cleanup);
@@ -1124,14 +1132,15 @@ static void message_handler_req_exec_lck_resourcelock (
 		/*
 		/*
 		 * Deliver async response to library
 		 * Deliver async response to library
 		 */
 		 */
-		req_exec_lck_resourcelock->source.conn_info =
-			req_exec_lck_resourcelock->source.conn_info->conn_info_partner;
+		req_exec_lck_resourcelock->source.conn =
+			openais_conn_partner_get (req_exec_lck_resourcelock->source.conn);
 		resource_lock_async_deliver (
 		resource_lock_async_deliver (
 			&req_exec_lck_resourcelock->source,
 			&req_exec_lck_resourcelock->source,
 			resource_lock,
 			resource_lock,
 			SA_AIS_OK);
 			SA_AIS_OK);
-		req_exec_lck_resourcelock->source.conn_info =
-			req_exec_lck_resourcelock->source.conn_info->conn_info_partner;
+// TODO why is this twice ?
+		req_exec_lck_resourcelock->source.conn =
+			openais_conn_partner_get (req_exec_lck_resourcelock->source.conn);
 	}
 	}
 
 
 error_exit:
 error_exit:
@@ -1175,19 +1184,19 @@ error_exit:
 			res_lib_lck_resourceunlockasync.invocation =
 			res_lib_lck_resourceunlockasync.invocation =
 				req_exec_lck_resourceunlock->invocation;
 				req_exec_lck_resourceunlock->invocation;
 
 
-			libais_send_response (
-				req_exec_lck_resourceunlock->source.conn_info,
+			openais_conn_send_response (
+				req_exec_lck_resourceunlock->source.conn,
 				&res_lib_lck_resourceunlockasync,
 				&res_lib_lck_resourceunlockasync,
 				sizeof (struct res_lib_lck_resourceunlockasync));
 				sizeof (struct res_lib_lck_resourceunlockasync));
-			libais_send_response (
-				resource_lock->callback_source.conn_info,
+			openais_conn_send_response (
+				resource_lock->callback_source.conn,
 				&res_lib_lck_resourceunlockasync,
 				&res_lib_lck_resourceunlockasync,
 				sizeof (struct res_lib_lck_resourceunlockasync));
 				sizeof (struct res_lib_lck_resourceunlockasync));
 		} else {
 		} else {
 			res_lib_lck_resourceunlock.header.size = sizeof (struct res_lib_lck_resourceunlock);
 			res_lib_lck_resourceunlock.header.size = sizeof (struct res_lib_lck_resourceunlock);
 			res_lib_lck_resourceunlock.header.id = MESSAGE_RES_LCK_RESOURCEUNLOCK;
 			res_lib_lck_resourceunlock.header.id = MESSAGE_RES_LCK_RESOURCEUNLOCK;
 			res_lib_lck_resourceunlock.header.error = error;
 			res_lib_lck_resourceunlock.header.error = error;
-			libais_send_response (req_exec_lck_resourceunlock->source.conn_info,
+			openais_conn_send_response (req_exec_lck_resourceunlock->source.conn,
 				&res_lib_lck_resourceunlock, sizeof (struct res_lib_lck_resourceunlock));
 				&res_lib_lck_resourceunlock, sizeof (struct res_lib_lck_resourceunlock));
 		}
 		}
 	}
 	}
@@ -1220,10 +1229,10 @@ static void message_handler_req_exec_lck_resourcelockorphan (
 }
 }
 
 
 static void message_handler_req_exec_lck_lockpurge (
 static void message_handler_req_exec_lck_lockpurge (
-	void *message,
+	void *msg,
 	struct totem_ip_address *source_addr)
 	struct totem_ip_address *source_addr)
 {
 {
-	struct req_exec_lck_lockpurge *req_exec_lck_lockpurge = (struct req_exec_lck_lockpurge *)message;
+	struct req_exec_lck_lockpurge *req_exec_lck_lockpurge = (struct req_exec_lck_lockpurge *)msg;
 	struct res_lib_lck_lockpurge res_lib_lck_lockpurge;
 	struct res_lib_lck_lockpurge res_lib_lck_lockpurge;
 	struct resource *resource = 0;
 	struct resource *resource = 0;
 	SaAisErrorT error = SA_AIS_OK;
 	SaAisErrorT error = SA_AIS_OK;
@@ -1238,20 +1247,22 @@ static void message_handler_req_exec_lck_lockpurge (
 		
 		
 error_exit:
 error_exit:
 	if (message_source_is_local(&req_exec_lck_lockpurge->source)) {
 	if (message_source_is_local(&req_exec_lck_lockpurge->source)) {
-//		lck_resource_cleanup_remove (req_exec_lck_lockpurge->source.conn_info,
+//		lck_resource_cleanup_remove (req_exec_lck_lockpurge->source.conn,
 //			resource);
 //			resource);
 
 
 		res_lib_lck_lockpurge.header.size = sizeof (struct res_lib_lck_lockpurge);
 		res_lib_lck_lockpurge.header.size = sizeof (struct res_lib_lck_lockpurge);
 		res_lib_lck_lockpurge.header.id = MESSAGE_RES_LCK_LOCKPURGE;
 		res_lib_lck_lockpurge.header.id = MESSAGE_RES_LCK_LOCKPURGE;
 		res_lib_lck_lockpurge.header.error = error;
 		res_lib_lck_lockpurge.header.error = error;
-		libais_send_response (req_exec_lck_lockpurge->source.conn_info,
+		openais_conn_send_response (req_exec_lck_lockpurge->source.conn,
 			&res_lib_lck_lockpurge, sizeof (struct res_lib_lck_lockpurge));
 			&res_lib_lck_lockpurge, sizeof (struct res_lib_lck_lockpurge));
 	}
 	}
 }
 }
 
 
-static void message_handler_req_lib_lck_resourceopen (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_lck_resourceopen (
+	void *conn,
+	void *msg)
 {
 {
-	struct req_lib_lck_resourceopen *req_lib_lck_resourceopen = (struct req_lib_lck_resourceopen *)message;
+	struct req_lib_lck_resourceopen *req_lib_lck_resourceopen = (struct req_lib_lck_resourceopen *)msg;
 	struct req_exec_lck_resourceopen req_exec_lck_resourceopen;
 	struct req_exec_lck_resourceopen req_exec_lck_resourceopen;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1263,7 +1274,7 @@ static void message_handler_req_lib_lck_resourceopen (struct conn_info *conn_inf
 	req_exec_lck_resourceopen.header.id =
 	req_exec_lck_resourceopen.header.id =
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCEOPEN);
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCEOPEN);
 
 
-	message_source_set (&req_exec_lck_resourceopen.source, conn_info);
+	message_source_set (&req_exec_lck_resourceopen.source, conn);
 
 
 	memcpy (&req_exec_lck_resourceopen.resource_name,
 	memcpy (&req_exec_lck_resourceopen.resource_name,
 		&req_lib_lck_resourceopen->lockResourceName,
 		&req_lib_lck_resourceopen->lockResourceName,
@@ -1281,9 +1292,11 @@ static void message_handler_req_lib_lck_resourceopen (struct conn_info *conn_inf
 	assert (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED) == 0);
 	assert (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED) == 0);
 }
 }
 
 
-static void message_handler_req_lib_lck_resourceopenasync (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_lck_resourceopenasync (
+	void *conn,
+	void *msg)
 {
 {
-	struct req_lib_lck_resourceopen *req_lib_lck_resourceopen = (struct req_lib_lck_resourceopen *)message;
+	struct req_lib_lck_resourceopen *req_lib_lck_resourceopen = (struct req_lib_lck_resourceopen *)msg;
 	struct req_exec_lck_resourceopen req_exec_lck_resourceopen;
 	struct req_exec_lck_resourceopen req_exec_lck_resourceopen;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1295,7 +1308,7 @@ static void message_handler_req_lib_lck_resourceopenasync (struct conn_info *con
 	req_exec_lck_resourceopen.header.id =
 	req_exec_lck_resourceopen.header.id =
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCEOPEN);
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCEOPEN);
 
 
-	message_source_set (&req_exec_lck_resourceopen.source, conn_info);
+	message_source_set (&req_exec_lck_resourceopen.source, conn);
 
 
 	memcpy (&req_exec_lck_resourceopen.resource_name,
 	memcpy (&req_exec_lck_resourceopen.resource_name,
 		&req_lib_lck_resourceopen->lockResourceName,
 		&req_lib_lck_resourceopen->lockResourceName,
@@ -1313,8 +1326,11 @@ static void message_handler_req_lib_lck_resourceopenasync (struct conn_info *con
 	assert (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED) == 0);
 	assert (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED) == 0);
 }
 }
 
 
-static void message_handler_req_lib_lck_resourceclose (struct conn_info *conn_info, void *message) {
-	struct req_lib_lck_resourceclose *req_lib_lck_resourceclose = (struct req_lib_lck_resourceclose *)message;
+static void message_handler_req_lib_lck_resourceclose (
+	void *conn,
+	void *msg)
+{
+	struct req_lib_lck_resourceclose *req_lib_lck_resourceclose = (struct req_lib_lck_resourceclose *)msg;
 	struct req_exec_lck_resourceclose req_exec_lck_resourceclose;
 	struct req_exec_lck_resourceclose req_exec_lck_resourceclose;
 	struct iovec iovecs[2];
 	struct iovec iovecs[2];
 	struct resource *resource;
 	struct resource *resource;
@@ -1330,7 +1346,7 @@ static void message_handler_req_lib_lck_resourceclose (struct conn_info *conn_in
 		req_exec_lck_resourceclose.header.id =
 		req_exec_lck_resourceclose.header.id =
 			SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCECLOSE);
 			SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCECLOSE);
 
 
-		message_source_set (&req_exec_lck_resourceclose.source, conn_info);
+		message_source_set (&req_exec_lck_resourceclose.source, conn);
 
 
 		memcpy (&req_exec_lck_resourceclose.lockResourceName,
 		memcpy (&req_exec_lck_resourceclose.lockResourceName,
 			&req_lib_lck_resourceclose->lockResourceName, sizeof (SaNameT));
 			&req_lib_lck_resourceclose->lockResourceName, sizeof (SaNameT));
@@ -1350,15 +1366,17 @@ static void message_handler_req_lib_lck_resourceclose (struct conn_info *conn_in
 		res_lib_lck_resourceclose.header.id = MESSAGE_RES_LCK_RESOURCECLOSE;
 		res_lib_lck_resourceclose.header.id = MESSAGE_RES_LCK_RESOURCECLOSE;
 		res_lib_lck_resourceclose.header.error = SA_AIS_ERR_NOT_EXIST;
 		res_lib_lck_resourceclose.header.error = SA_AIS_ERR_NOT_EXIST;
 
 
-		libais_send_response (conn_info,
+		openais_conn_send_response (conn,
 			&res_lib_lck_resourceclose,
 			&res_lib_lck_resourceclose,
 			sizeof (struct res_lib_lck_resourceclose));
 			sizeof (struct res_lib_lck_resourceclose));
 	}
 	}
 }
 }
 
 
-static void message_handler_req_lib_lck_resourcelock (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_lck_resourcelock (
+	void *conn,
+	void *msg)
 {
 {
-	struct req_lib_lck_resourcelock *req_lib_lck_resourcelock = (struct req_lib_lck_resourcelock *)message;
+	struct req_lib_lck_resourcelock *req_lib_lck_resourcelock = (struct req_lib_lck_resourcelock *)msg;
 	struct req_exec_lck_resourcelock req_exec_lck_resourcelock;
 	struct req_exec_lck_resourcelock req_exec_lck_resourcelock;
 	struct iovec iovecs[2];
 	struct iovec iovecs[2];
 
 
@@ -1370,7 +1388,7 @@ static void message_handler_req_lib_lck_resourcelock (struct conn_info *conn_inf
 	req_exec_lck_resourcelock.header.id =
 	req_exec_lck_resourcelock.header.id =
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCELOCK);
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCELOCK);
 
 
-	message_source_set (&req_exec_lck_resourcelock.source, conn_info);
+	message_source_set (&req_exec_lck_resourcelock.source, conn);
 
 
 	memcpy (&req_exec_lck_resourcelock.req_lib_lck_resourcelock,
 	memcpy (&req_exec_lck_resourcelock.req_lib_lck_resourcelock,
 		req_lib_lck_resourcelock,
 		req_lib_lck_resourcelock,
@@ -1387,9 +1405,11 @@ static void message_handler_req_lib_lck_resourcelock (struct conn_info *conn_inf
 	assert (totempg_groups_mcast_joined (openais_group_handle, iovecs, 1, TOTEMPG_AGREED) == 0);
 	assert (totempg_groups_mcast_joined (openais_group_handle, iovecs, 1, TOTEMPG_AGREED) == 0);
 }
 }
 
 
-static void message_handler_req_lib_lck_resourcelockasync (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_lck_resourcelockasync (
+	void *conn,
+	void *msg)
 {
 {
-	struct req_lib_lck_resourcelock *req_lib_lck_resourcelock = (struct req_lib_lck_resourcelock *)message;
+	struct req_lib_lck_resourcelock *req_lib_lck_resourcelock = (struct req_lib_lck_resourcelock *)msg;
 	struct req_exec_lck_resourcelock req_exec_lck_resourcelock;
 	struct req_exec_lck_resourcelock req_exec_lck_resourcelock;
 	struct iovec iovecs[2];
 	struct iovec iovecs[2];
 
 
@@ -1401,7 +1421,7 @@ static void message_handler_req_lib_lck_resourcelockasync (struct conn_info *con
 	req_exec_lck_resourcelock.header.id =
 	req_exec_lck_resourcelock.header.id =
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCELOCK);
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCELOCK);
 
 
-	message_source_set (&req_exec_lck_resourcelock.source, conn_info);
+	message_source_set (&req_exec_lck_resourcelock.source, conn);
 
 
 	memcpy (&req_exec_lck_resourcelock.req_lib_lck_resourcelock,
 	memcpy (&req_exec_lck_resourcelock.req_lib_lck_resourcelock,
 		req_lib_lck_resourcelock,
 		req_lib_lck_resourcelock,
@@ -1417,9 +1437,11 @@ static void message_handler_req_lib_lck_resourcelockasync (struct conn_info *con
 	assert (totempg_groups_mcast_joined (openais_group_handle, iovecs, 1, TOTEMPG_AGREED) == 0);
 	assert (totempg_groups_mcast_joined (openais_group_handle, iovecs, 1, TOTEMPG_AGREED) == 0);
 }
 }
 
 
-static void message_handler_req_lib_lck_resourceunlock (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_lck_resourceunlock (
+	void *conn,
+	void *msg)
 {
 {
-	struct req_lib_lck_resourceunlock *req_lib_lck_resourceunlock = (struct req_lib_lck_resourceunlock *)message;
+	struct req_lib_lck_resourceunlock *req_lib_lck_resourceunlock = (struct req_lib_lck_resourceunlock *)msg;
 	struct req_exec_lck_resourceunlock req_exec_lck_resourceunlock;
 	struct req_exec_lck_resourceunlock req_exec_lck_resourceunlock;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1431,7 +1453,7 @@ static void message_handler_req_lib_lck_resourceunlock (struct conn_info *conn_i
 	req_exec_lck_resourceunlock.header.id =
 	req_exec_lck_resourceunlock.header.id =
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCEUNLOCK);
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCEUNLOCK);
 
 
-	message_source_set (&req_exec_lck_resourceunlock.source, conn_info);
+	message_source_set (&req_exec_lck_resourceunlock.source, conn);
 
 
 	memcpy (&req_exec_lck_resourceunlock.resource_name,
 	memcpy (&req_exec_lck_resourceunlock.resource_name,
 		&req_lib_lck_resourceunlock->lockResourceName,
 		&req_lib_lck_resourceunlock->lockResourceName,
@@ -1447,9 +1469,11 @@ static void message_handler_req_lib_lck_resourceunlock (struct conn_info *conn_i
 	assert (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED) == 0);
 	assert (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED) == 0);
 }
 }
 
 
-static void message_handler_req_lib_lck_resourceunlockasync (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_lck_resourceunlockasync (
+	void *conn,
+	void *msg)
 {
 {
-	struct req_lib_lck_resourceunlock *req_lib_lck_resourceunlock = (struct req_lib_lck_resourceunlock *)message;
+	struct req_lib_lck_resourceunlock *req_lib_lck_resourceunlock = (struct req_lib_lck_resourceunlock *)msg;
 	struct req_exec_lck_resourceunlock req_exec_lck_resourceunlock;
 	struct req_exec_lck_resourceunlock req_exec_lck_resourceunlock;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1461,7 +1485,7 @@ static void message_handler_req_lib_lck_resourceunlockasync (struct conn_info *c
 	req_exec_lck_resourceunlock.header.id =
 	req_exec_lck_resourceunlock.header.id =
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCEUNLOCK);
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_RESOURCEUNLOCK);
 
 
-	message_source_set (&req_exec_lck_resourceunlock.source, conn_info);
+	message_source_set (&req_exec_lck_resourceunlock.source, conn);
 
 
 	memcpy (&req_exec_lck_resourceunlock.resource_name,
 	memcpy (&req_exec_lck_resourceunlock.resource_name,
 		&req_lib_lck_resourceunlock->lockResourceName,
 		&req_lib_lck_resourceunlock->lockResourceName,
@@ -1477,9 +1501,11 @@ static void message_handler_req_lib_lck_resourceunlockasync (struct conn_info *c
 	assert (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED) == 0);
 	assert (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED) == 0);
 }
 }
 
 
-static void message_handler_req_lib_lck_lockpurge (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_lck_lockpurge (
+	void *conn,
+	void *msg)
 {
 {
-	struct req_lib_lck_lockpurge *req_lib_lck_lockpurge = (struct req_lib_lck_lockpurge *)message;
+	struct req_lib_lck_lockpurge *req_lib_lck_lockpurge = (struct req_lib_lck_lockpurge *)msg;
 	struct req_exec_lck_lockpurge req_exec_lck_lockpurge;
 	struct req_exec_lck_lockpurge req_exec_lck_lockpurge;
 	struct iovec iovecs[2];
 	struct iovec iovecs[2];
 
 
@@ -1491,7 +1517,7 @@ static void message_handler_req_lib_lck_lockpurge (struct conn_info *conn_info,
 	req_exec_lck_lockpurge.header.id =
 	req_exec_lck_lockpurge.header.id =
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_LOCKPURGE);
 		SERVICE_ID_MAKE (LCK_SERVICE, MESSAGE_REQ_EXEC_LCK_LOCKPURGE);
 
 
-	message_source_set (&req_exec_lck_lockpurge.source, conn_info);
+	message_source_set (&req_exec_lck_lockpurge.source, conn);
 
 
 	memcpy (&req_exec_lck_lockpurge.req_lib_lck_lockpurge,
 	memcpy (&req_exec_lck_lockpurge.req_lib_lck_lockpurge,
 		req_lib_lck_lockpurge,
 		req_lib_lck_lockpurge,

+ 0 - 5
exec/lck.h

@@ -39,11 +39,6 @@
 #ifndef LCK_H_DEFINED
 #ifndef LCK_H_DEFINED
 #define LCK_H_DEFINED
 #define LCK_H_DEFINED
 
 
-struct liblck_ci {
-	struct list_head resource_list;
-	struct list_head resource_cleanup_list;
-};
-
 extern struct openais_service_handler lck_service_handler;
 extern struct openais_service_handler lck_service_handler;
 
 
 #endif /* CKPT_H_DEFINED */
 #endif /* CKPT_H_DEFINED */

+ 86 - 12
exec/main.c

@@ -160,6 +160,32 @@ static struct openais_service_handler *ais_service_handlers[32];
 
 
 static unsigned int service_handlers_count = 32;
 static unsigned int service_handlers_count = 32;
 
 
+struct outq_item {
+	void *msg;
+	size_t mlen;
+};
+
+enum conn_state {
+	CONN_STATE_ACTIVE,
+	CONN_STATE_DISCONNECTING,
+	CONN_STATE_DISCONNECTING_DELAYED
+};
+
+struct conn_info {
+	int fd;			/* File descriptor  */
+	enum conn_state state;	/* State of this connection */
+	char *inb;		/* Input buffer for non-blocking reads */
+	int inb_nextheader;	/* Next message header starts here */
+	int inb_start;		/* Start location of input buffer */
+	int inb_inuse;		/* Bytes currently stored in input buffer */
+	struct queue outq;	/* Circular queue for outgoing requests */
+	int byte_start;		/* Byte to start sending from in head of queue */
+	enum service_types service;/* Type of service so dispatch knows how to route message */
+	int authenticated;	/* Is this connection authenticated? */
+	void *private_data;	/* library connection private data */
+	struct conn_info *conn_info_partner;	/* partner connection dispatch<->response */
+	int should_exit_fn;	/* Should call the exit function when closing this ipc */
+};
 SaClmClusterNodeT *(*main_clm_get_by_nodeid) (unsigned int node_id);
 SaClmClusterNodeT *(*main_clm_get_by_nodeid) (unsigned int node_id);
 
 
  /*
  /*
@@ -280,11 +306,17 @@ static int libais_disconnect (struct conn_info *conn_info)
 		res = ais_service_handlers[conn_info->service]->lib_exit_fn (conn_info);
 		res = ais_service_handlers[conn_info->service]->lib_exit_fn (conn_info);
 	}
 	}
 
 
+	/*
+	 * Call library exit handler and free private data
+	 */
 	if (conn_info->conn_info_partner && 
 	if (conn_info->conn_info_partner && 
 		conn_info->conn_info_partner->should_exit_fn &&
 		conn_info->conn_info_partner->should_exit_fn &&
 		ais_service_handlers[conn_info->conn_info_partner->service]->lib_exit_fn) {
 		ais_service_handlers[conn_info->conn_info_partner->service]->lib_exit_fn) {
 
 
 		res = ais_service_handlers[conn_info->conn_info_partner->service]->lib_exit_fn (conn_info->conn_info_partner);
 		res = ais_service_handlers[conn_info->conn_info_partner->service]->lib_exit_fn (conn_info->conn_info_partner);
+		if (conn_info->private_data) {
+			free (conn_info->private_data);
+		}
 	}
 	}
 
 
 	/*
 	/*
@@ -416,8 +448,10 @@ retry_sendmsg:
 	return (0);
 	return (0);
 }
 }
 
 
-extern int libais_send_response (struct conn_info *conn_info,
-	void *msg, int mlen)
+extern int openais_conn_send_response (
+	void *conn,
+	void *msg,
+	int mlen)
 {
 {
 	struct queue *outq;
 	struct queue *outq;
 	char *cmsg;
 	char *cmsg;
@@ -428,6 +462,7 @@ extern int libais_send_response (struct conn_info *conn_info,
 	struct msghdr msg_send;
 	struct msghdr msg_send;
 	struct iovec iov_send;
 	struct iovec iov_send;
 	char *msg_addr;
 	char *msg_addr;
+	struct conn_info *conn_info = (struct conn_info *)conn;
 
 
 	if (!libais_connection_active (conn_info)) {
 	if (!libais_connection_active (conn_info)) {
 		return (-1);
 		return (-1);
@@ -581,9 +616,6 @@ retry_accept:
 
 
 	poll_dispatch_add (aisexec_poll_handle, new_fd, POLLIN|POLLNVAL, conn_info,
 	poll_dispatch_add (aisexec_poll_handle, new_fd, POLLIN|POLLNVAL, conn_info,
 		poll_handler_libais_deliver, 0);
 		poll_handler_libais_deliver, 0);
-
-// TODO is this needed, or shouldn't it be in conn_info_create ?
-	memcpy (&conn_info->ais_ci.un_addr, &un_addr, sizeof (struct sockaddr_un));
 	return (0);
 	return (0);
 }
 }
 
 
@@ -602,24 +634,60 @@ static int dispatch_init_send_response (struct conn_info *conn_info, void *messa
 
 
 		msg_conn_info = (struct conn_info *)req_lib_dispatch_init->conn_info;
 		msg_conn_info = (struct conn_info *)req_lib_dispatch_init->conn_info;
 		msg_conn_info->conn_info_partner = conn_info;
 		msg_conn_info->conn_info_partner = conn_info;
-	}
+
+		if (error == SA_AIS_OK) {
+			int private_data_size;
+
+			private_data_size = ais_service_handlers[req_lib_dispatch_init->resdis_header.service]->private_data_size;
+			if (private_data_size) {
+				conn_info->private_data = malloc (private_data_size);
+
+				conn_info->conn_info_partner->private_data = conn_info->private_data;
+				if (conn_info->private_data == NULL) {
+					error = SA_AIS_ERR_NO_MEMORY;
+				} else {
+					memset (conn_info->private_data, 0, private_data_size);
+				}
+			} else {
+				conn_info->private_data = NULL;
+				conn_info->conn_info_partner->private_data = NULL;
+			}
+		}
 
 
 	res_lib_dispatch_init.header.size = sizeof (struct res_lib_dispatch_init);
 	res_lib_dispatch_init.header.size = sizeof (struct res_lib_dispatch_init);
 	res_lib_dispatch_init.header.id = MESSAGE_RES_INIT;
 	res_lib_dispatch_init.header.id = MESSAGE_RES_INIT;
 	res_lib_dispatch_init.header.error = error;
 	res_lib_dispatch_init.header.error = error;
 	
 	
-	libais_send_response (conn_info, &res_lib_dispatch_init,
+	openais_conn_send_response (
+		conn_info,
+		&res_lib_dispatch_init,
 		sizeof (res_lib_dispatch_init));
 		sizeof (res_lib_dispatch_init));
 
 
-	if (error == SA_AIS_ERR_ACCESS) {
+	if (error != SA_AIS_OK) {
 		return (-1);
 		return (-1);
 	}
 	}
 
 
+	}
+
 	conn_info->should_exit_fn = 1;
 	conn_info->should_exit_fn = 1;
 	ais_service_handlers[req_lib_dispatch_init->resdis_header.service]->lib_init_fn (conn_info);
 	ais_service_handlers[req_lib_dispatch_init->resdis_header.service]->lib_init_fn (conn_info);
 	return (0);
 	return (0);
 }
 }
 
 
+void *openais_conn_partner_get (void *conn)
+{
+	struct conn_info *conn_info = (struct conn_info *)conn;
+
+	return ((void *)conn_info->conn_info_partner);
+}
+
+void *openais_conn_private_data_get (void *conn)
+{
+	struct conn_info *conn_info = (struct conn_info *)conn;
+
+	return ((void *)conn_info->private_data);
+}
+
 static int response_init_send_response (struct conn_info *conn_info, void *message)
 static int response_init_send_response (struct conn_info *conn_info, void *message)
 {
 {
 	SaAisErrorT error = SA_AIS_ERR_ACCESS;
 	SaAisErrorT error = SA_AIS_ERR_ACCESS;
@@ -635,7 +703,9 @@ static int response_init_send_response (struct conn_info *conn_info, void *messa
 	res_lib_response_init.header.error = error;
 	res_lib_response_init.header.error = error;
 	res_lib_response_init.conn_info = (unsigned long)conn_info;
 	res_lib_response_init.conn_info = (unsigned long)conn_info;
 
 
-	libais_send_response (conn_info, &res_lib_response_init,
+	openais_conn_send_response (
+		conn_info,
+		&res_lib_response_init,
 		sizeof (res_lib_response_init));
 		sizeof (res_lib_response_init));
 
 
 	if (error == SA_AIS_ERR_ACCESS) {
 	if (error == SA_AIS_ERR_ACCESS) {
@@ -804,7 +874,9 @@ retry_recv:
 				res_overlay.header.id = 
 				res_overlay.header.id = 
 					ais_service_handlers[service]->lib_handlers[header->id].response_id;
 					ais_service_handlers[service]->lib_handlers[header->id].response_id;
 				res_overlay.header.error = SA_AIS_ERR_TRY_AGAIN;
 				res_overlay.header.error = SA_AIS_ERR_TRY_AGAIN;
-				libais_send_response (conn_info, &res_overlay,
+				openais_conn_send_response (
+					conn_info,
+					&res_overlay,
 					res_overlay.header.size);
 					res_overlay.header.size);
 			}
 			}
 		}
 		}
@@ -1089,10 +1161,12 @@ int message_source_is_local(struct message_source *source)
 	return ret;	
 	return ret;	
 }
 }
 
 
-void message_source_set (struct message_source *source, struct conn_info *conn_info)
+void message_source_set (
+	struct message_source *source,
+	void *conn)
 {
 {
 	totemip_copy(&source->addr, this_ip);
 	totemip_copy(&source->addr, this_ip);
-	source->conn_info = conn_info;
+	source->conn = conn;
 }
 }
 
 
 
 

+ 7 - 59
exec/main.h

@@ -59,64 +59,8 @@
 
 
 #define SOCKET_SERVICE_INIT 254
 #define SOCKET_SERVICE_INIT 254
 
 
-struct aisexec_ci {
-	struct sockaddr_in in_addr;	/* address of AF_INET socket, MUST BE FIRST IN STRUCTURE */
-	SaClmClusterNodeT clusterNode;
-	SaClmClusterChangesT lastChange;
-	unsigned char authentication_key[16];
-	int authenticated;
-};
-
-/*
- * Connection information for AIS connections
- */
-
-// TODO must make this dynamic
-struct ais_ci {
-	struct sockaddr_un un_addr;	/* address of AF_UNIX socket, MUST BE FIRST IN STRUCTURE */
-	union {
-		struct aisexec_ci aisexec_ci;
-		struct libevs_ci libevs_ci;
-		struct libclm_ci libclm_ci;
-		struct libamf_ci libamf_ci;
-		struct libckpt_ci libckpt_ci;
-		struct libevt_ci libevt_ci;
-		struct liblck_ci liblck_ci;
-		struct libmsg_ci libmsg_ci;
-	} u;
-};
-
-struct outq_item {
-	void *msg;
-	size_t mlen;
-};
-
 #define SIZEINB MESSAGE_SIZE_MAX
 #define SIZEINB MESSAGE_SIZE_MAX
 
 
-enum conn_state {
-	CONN_STATE_ACTIVE,
-	CONN_STATE_DISCONNECTING,
-	CONN_STATE_DISCONNECTING_DELAYED
-};
-
-struct conn_info {
-	int fd;				/* File descriptor  */
-	enum conn_state state;			/* State of this connection */
-	char *inb;			/* Input buffer for non-blocking reads */
-	int inb_nextheader;	/* Next message header starts here */
-	int inb_start;		/* Start location of input buffer */
-	int inb_inuse;		/* Bytes currently stored in input buffer */
-	struct queue outq;		/* Circular queue for outgoing requests */
-	int byte_start;			/* Byte to start sending from in head of queue */
-	enum service_types service;/* Type of service so dispatch knows how to route message */
-//	struct saAmfComponent *component;	/* Component for which this connection relates to  TODO shouldn't this be in the ci structure */
-	int authenticated;		/* Is this connection authenticated? */
-	struct list_head conn_list;
-	struct ais_ci ais_ci;	/* libais connection information */
-	struct conn_info *conn_info_partner;	/* partner connection dispatch<->response */
-	int should_exit_fn;			/* Should call the exit function when closing this ipc */
-};
-
 extern struct totem_ip_address *this_ip;
 extern struct totem_ip_address *this_ip;
 
 
 extern struct totempg_group openais_group;
 extern struct totempg_group openais_group;
@@ -125,12 +69,16 @@ extern totempg_groups_handle openais_group_handle;
 
 
 poll_handle aisexec_poll_handle;
 poll_handle aisexec_poll_handle;
 
 
-extern int libais_send_response (struct conn_info *conn_info, void *msg, int mlen);
-
 extern int message_source_is_local(struct message_source *source);
 extern int message_source_is_local(struct message_source *source);
 
 
-extern void message_source_set(struct message_source *source, struct conn_info *conn_info);
+extern void message_source_set(struct message_source *source, void *conn);
 
 
 extern SaClmClusterNodeT *(*main_clm_get_by_nodeid) (unsigned int node_id);
 extern SaClmClusterNodeT *(*main_clm_get_by_nodeid) (unsigned int node_id);
 
 
+extern void *openais_conn_partner_get (void *conn);
+
+extern void *openais_conn_private_data_get (void *conn);
+
+extern int openais_conn_send_response (void *conn, void *msg, int mlen);
+
 #endif /* AIS_EXEC_H_DEFINED */
 #endif /* AIS_EXEC_H_DEFINED */

+ 144 - 129
exec/msg.c

@@ -110,9 +110,9 @@ DECLARE_LIST_INIT(queue_group_list_head);
 
 
 static int msg_exec_init_fn (struct openais_config *);
 static int msg_exec_init_fn (struct openais_config *);
 
 
-static int msg_lib_exit_fn (struct conn_info *conn_info);
+static int msg_lib_exit_fn (void *conn);
 
 
-static int msg_lib_init_fn (struct conn_info *conn_info);
+static int msg_lib_init_fn (void *conn);
 
 
 static void message_handler_req_exec_msg_queueopen (
 static void message_handler_req_exec_msg_queueopen (
 	void *message,
 	void *message,
@@ -175,76 +175,76 @@ static void message_handler_req_exec_msg_messagereply (
 	struct totem_ip_address *source_addr);
 	struct totem_ip_address *source_addr);
 
 
 static void message_handler_req_lib_msg_queueopen (
 static void message_handler_req_lib_msg_queueopen (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_queueopenasync (
 static void message_handler_req_lib_msg_queueopenasync (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_queueclose (
 static void message_handler_req_lib_msg_queueclose (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_queuestatusget (
 static void message_handler_req_lib_msg_queuestatusget (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_queueunlink (
 static void message_handler_req_lib_msg_queueunlink (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_queuegroupcreate (
 static void message_handler_req_lib_msg_queuegroupcreate (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_queuegroupinsert (
 static void message_handler_req_lib_msg_queuegroupinsert (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_queuegroupremove (
 static void message_handler_req_lib_msg_queuegroupremove (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_queuegroupdelete (
 static void message_handler_req_lib_msg_queuegroupdelete (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_queuegrouptrack (
 static void message_handler_req_lib_msg_queuegrouptrack (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_queuegrouptrackstop (
 static void message_handler_req_lib_msg_queuegrouptrackstop (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_messagesend (
 static void message_handler_req_lib_msg_messagesend (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_messagesendasync (
 static void message_handler_req_lib_msg_messagesendasync (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_messageget (
 static void message_handler_req_lib_msg_messageget (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_messagecancel (
 static void message_handler_req_lib_msg_messagecancel (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_messagesendreceive (
 static void message_handler_req_lib_msg_messagesendreceive (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_messagereply (
 static void message_handler_req_lib_msg_messagereply (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 static void message_handler_req_lib_msg_messagereplyasync (
 static void message_handler_req_lib_msg_messagereplyasync (
-	struct conn_info *conn_info,
-	void *message);
+	void *conn,
+	void *msg);
 
 
 #ifdef TODO
 #ifdef TODO
 static void msg_sync_init (void);
 static void msg_sync_init (void);
@@ -262,6 +262,12 @@ static void msg_confchg_fn (
 		struct totem_ip_address *joined_list, int joined_list_entries,
 		struct totem_ip_address *joined_list, int joined_list_entries,
 		struct memb_ring_id *ring_id);
 		struct memb_ring_id *ring_id);
 
 
+struct msg_pd {
+	struct list_head queue_list;
+	struct list_head queue_cleanup_list;
+};
+
+
 /*
 /*
  * Executive Handler Definition
  * Executive Handler Definition
  */
  */
@@ -429,6 +435,7 @@ static struct openais_exec_handler msg_exec_handlers[] = {
 struct openais_service_handler msg_service_handler = {
 struct openais_service_handler msg_service_handler = {
 	.name				= (unsigned char *)"openais message service B.01.01",
 	.name				= (unsigned char *)"openais message service B.01.01",
 	.id				= MSG_SERVICE,
 	.id				= MSG_SERVICE,
+	.private_data_size		= sizeof (struct msg_pd),
 	.lib_init_fn			= msg_lib_init_fn,
 	.lib_init_fn			= msg_lib_init_fn,
 	.lib_exit_fn			= msg_lib_exit_fn,
 	.lib_exit_fn			= msg_lib_exit_fn,
 	.lib_handlers			= msg_lib_handlers,
 	.lib_handlers			= msg_lib_handlers,
@@ -673,18 +680,16 @@ static int msg_exec_init_fn (struct openais_config *openais_config)
 	return (0);
 	return (0);
 }
 }
 
 
-static int msg_lib_exit_fn (struct conn_info *conn_info)
+static int msg_lib_exit_fn (void *conn)
 {
 {
+//	struct msg_pd *msg_pd = (struct msg_pd *)openais_conn_private_data_get (conn);
 #ifdef COMPILE_OUT
 #ifdef COMPILE_OUT
 	struct queue_cleanup *queue_cleanup;
 	struct queue_cleanup *queue_cleanup;
 	struct list_head *list;
 	struct list_head *list;
 	
 	
 printf ("exit_fn\n");
 printf ("exit_fn\n");
-	if (conn_info->conn_info_partner->service != MSG_SERVICE) {
-		return 0;
-	}
 
 
-	log_printf(LOG_LEVEL_NOTICE, "msg_exit_fn conn_info = %#x, with fd = %d\n", conn_info, conn_info->fd);
+	log_printf(LOG_LEVEL_NOTICE, "msg_exit_fn conn_info = %p\n", conn);
 	
 	
 	/*
 	/*
 	 * close all queues opened on this fd
 	 * close all queues opened on this fd
@@ -711,11 +716,12 @@ printf ("queue cleanup %x\n", queue_cleanup);
 	return (0);
 	return (0);
 }
 }
 
 
-static int msg_lib_init_fn (struct conn_info *conn_info)
+static int msg_lib_init_fn (void *conn)
 {
 {
-	list_init (&conn_info->conn_info_partner->ais_ci.u.libmsg_ci.queue_list);
-	list_init (&conn_info->conn_info_partner->ais_ci.u.libmsg_ci.queue_cleanup_list);
+	struct msg_pd *msg_pd = (struct msg_pd *)openais_conn_private_data_get (conn);
 
 
+	list_init (&msg_pd->queue_list);
+	list_init (&msg_pd->queue_cleanup_list);
 	return (0);
 	return (0);
 }
 }
 
 
@@ -803,12 +809,12 @@ error_exit:
 				&req_exec_msg_queueopen->source,
 				&req_exec_msg_queueopen->source,
 				sizeof (struct message_source));
 				sizeof (struct message_source));
 
 
-			libais_send_response (
-				req_exec_msg_queueopen->source.conn_info,
+			openais_conn_send_response (
+				req_exec_msg_queueopen->source.conn,
 				&res_lib_msg_queueopenasync,
 				&res_lib_msg_queueopenasync,
 				sizeof (struct res_lib_msg_queueopenasync));
 				sizeof (struct res_lib_msg_queueopenasync));
-			libais_send_response (
-				req_exec_msg_queueopen->source.conn_info->conn_info_partner,
+			openais_conn_send_response (
+				openais_conn_partner_get (req_exec_msg_queueopen->source.conn),
 				&res_lib_msg_queueopenasync,
 				&res_lib_msg_queueopenasync,
 				sizeof (struct res_lib_msg_queueopenasync));
 				sizeof (struct res_lib_msg_queueopenasync));
 		} else {
 		} else {
@@ -822,7 +828,9 @@ error_exit:
 				&req_exec_msg_queueopen->source,
 				&req_exec_msg_queueopen->source,
 				sizeof (struct message_source));
 				sizeof (struct message_source));
 
 
-			libais_send_response (req_exec_msg_queueopen->source.conn_info, &res_lib_msg_queueopen,
+			openais_conn_send_response (
+				req_exec_msg_queueopen->source.conn,
+				&res_lib_msg_queueopen,
 				sizeof (struct res_lib_msg_queueopen));
 				sizeof (struct res_lib_msg_queueopen));
 		}
 		}
 	}
 	}
@@ -859,7 +867,7 @@ error_exit:
 		res_lib_msg_queueclose.header.size = sizeof (struct res_lib_msg_queueclose);
 		res_lib_msg_queueclose.header.size = sizeof (struct res_lib_msg_queueclose);
 		res_lib_msg_queueclose.header.id = MESSAGE_RES_MSG_QUEUECLOSE;
 		res_lib_msg_queueclose.header.id = MESSAGE_RES_MSG_QUEUECLOSE;
 		res_lib_msg_queueclose.header.error = error;
 		res_lib_msg_queueclose.header.error = error;
-		libais_send_response (req_exec_msg_queueclose->source.conn_info,
+		openais_conn_send_response (req_exec_msg_queueclose->source.conn,
 			&res_lib_msg_queueclose, sizeof (struct res_lib_msg_queueclose));
 			&res_lib_msg_queueclose, sizeof (struct res_lib_msg_queueclose));
 	}
 	}
 }
 }
@@ -917,8 +925,8 @@ error_exit:
 		res_lib_msg_queuegroupcreate.header.id = MESSAGE_RES_MSG_QUEUEGROUPCREATE;
 		res_lib_msg_queuegroupcreate.header.id = MESSAGE_RES_MSG_QUEUEGROUPCREATE;
 		res_lib_msg_queuegroupcreate.header.error = error;
 		res_lib_msg_queuegroupcreate.header.error = error;
 
 
-		libais_send_response (
-			req_exec_msg_queuegroupcreate->source.conn_info,
+		openais_conn_send_response (
+			req_exec_msg_queuegroupcreate->source.conn,
 			&res_lib_msg_queuegroupcreate,
 			&res_lib_msg_queuegroupcreate,
 			sizeof (struct res_lib_msg_queuegroupcreate));
 			sizeof (struct res_lib_msg_queuegroupcreate));
 	}
 	}
@@ -964,8 +972,8 @@ error_exit:
 		res_lib_msg_queuegroupinsert.header.id = MESSAGE_RES_MSG_QUEUEGROUPCREATE;
 		res_lib_msg_queuegroupinsert.header.id = MESSAGE_RES_MSG_QUEUEGROUPCREATE;
 		res_lib_msg_queuegroupinsert.header.error = error;
 		res_lib_msg_queuegroupinsert.header.error = error;
 
 
-		libais_send_response (
-			req_exec_msg_queuegroupinsert->source.conn_info,
+		openais_conn_send_response (
+			req_exec_msg_queuegroupinsert->source.conn,
 			&res_lib_msg_queuegroupinsert,
 			&res_lib_msg_queuegroupinsert,
 			sizeof (struct res_lib_msg_queuegroupinsert));
 			sizeof (struct res_lib_msg_queuegroupinsert));
 	}
 	}
@@ -1008,8 +1016,8 @@ error_exit:
 		res_lib_msg_queuegroupremove.header.id = MESSAGE_RES_MSG_QUEUEGROUPCREATE;
 		res_lib_msg_queuegroupremove.header.id = MESSAGE_RES_MSG_QUEUEGROUPCREATE;
 		res_lib_msg_queuegroupremove.header.error = error;
 		res_lib_msg_queuegroupremove.header.error = error;
 
 
-		libais_send_response (
-			req_exec_msg_queuegroupremove->source.conn_info,
+		openais_conn_send_response (
+			req_exec_msg_queuegroupremove->source.conn,
 			&res_lib_msg_queuegroupremove,
 			&res_lib_msg_queuegroupremove,
 			sizeof (struct res_lib_msg_queuegroupremove));
 			sizeof (struct res_lib_msg_queuegroupremove));
 	}
 	}
@@ -1039,8 +1047,8 @@ static void message_handler_req_exec_msg_queuegroupdelete (
 		res_lib_msg_queuegroupdelete.header.id = MESSAGE_RES_MSG_QUEUEGROUPCREATE;
 		res_lib_msg_queuegroupdelete.header.id = MESSAGE_RES_MSG_QUEUEGROUPCREATE;
 		res_lib_msg_queuegroupdelete.header.error = error;
 		res_lib_msg_queuegroupdelete.header.error = error;
 
 
-		libais_send_response (
-			req_exec_msg_queuegroupdelete->source.conn_info,
+		openais_conn_send_response (
+			req_exec_msg_queuegroupdelete->source.conn,
 			&res_lib_msg_queuegroupdelete,
 			&res_lib_msg_queuegroupdelete,
 			sizeof (struct res_lib_msg_queuegroupdelete));
 			sizeof (struct res_lib_msg_queuegroupdelete));
 	}
 	}
@@ -1110,9 +1118,11 @@ static void message_handler_req_exec_msg_messagereply (
 }
 }
 
 
 
 
-static void message_handler_req_lib_msg_queueopen (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_msg_queueopen (
+	void *conn,
+	void *msg)
 {
 {
-	struct req_lib_msg_queueopen *req_lib_msg_queueopen = (struct req_lib_msg_queueopen *)message;
+	struct req_lib_msg_queueopen *req_lib_msg_queueopen = (struct req_lib_msg_queueopen *)msg;
 	struct req_exec_msg_queueopen req_exec_msg_queueopen;
 	struct req_exec_msg_queueopen req_exec_msg_queueopen;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1124,7 +1134,7 @@ static void message_handler_req_lib_msg_queueopen (struct conn_info *conn_info,
 	req_exec_msg_queueopen.header.id = 
 	req_exec_msg_queueopen.header.id = 
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUEOPEN);
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUEOPEN);
 
 
-	message_source_set (&req_exec_msg_queueopen.source, conn_info);
+	message_source_set (&req_exec_msg_queueopen.source, conn);
 
 
 	memcpy (&req_exec_msg_queueopen.queue_name,
 	memcpy (&req_exec_msg_queueopen.queue_name,
 		&req_lib_msg_queueopen->queueName, sizeof (SaNameT));
 		&req_lib_msg_queueopen->queueName, sizeof (SaNameT));
@@ -1145,9 +1155,11 @@ static void message_handler_req_lib_msg_queueopen (struct conn_info *conn_info,
 		TOTEMPG_AGREED) == 0);
 		TOTEMPG_AGREED) == 0);
 }
 }
 
 
-static void message_handler_req_lib_msg_queueopenasync (struct conn_info *conn_info, void *message)
+static void message_handler_req_lib_msg_queueopenasync (
+	void *conn,
+	void *msg)
 {
 {
-	struct req_lib_msg_queueopen *req_lib_msg_queueopen = (struct req_lib_msg_queueopen *)message;
+	struct req_lib_msg_queueopen *req_lib_msg_queueopen = (struct req_lib_msg_queueopen *)msg;
 	struct req_exec_msg_queueopen req_exec_msg_queueopen;
 	struct req_exec_msg_queueopen req_exec_msg_queueopen;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1159,7 +1171,7 @@ static void message_handler_req_lib_msg_queueopenasync (struct conn_info *conn_i
 	req_exec_msg_queueopen.header.id =
 	req_exec_msg_queueopen.header.id =
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUEOPEN);
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUEOPEN);
 
 
-	message_source_set (&req_exec_msg_queueopen.source, conn_info);
+	message_source_set (&req_exec_msg_queueopen.source, conn);
 
 
 	memcpy (&req_exec_msg_queueopen.queue_name,
 	memcpy (&req_exec_msg_queueopen.queue_name,
 		&req_lib_msg_queueopen->queueName, sizeof (SaNameT));
 		&req_lib_msg_queueopen->queueName, sizeof (SaNameT));
@@ -1181,8 +1193,11 @@ static void message_handler_req_lib_msg_queueopenasync (struct conn_info *conn_i
 		TOTEMPG_AGREED) == 0);
 		TOTEMPG_AGREED) == 0);
 }
 }
 
 
-static void message_handler_req_lib_msg_queueclose (struct conn_info *conn_info, void *message) {
-	struct req_lib_msg_queueclose *req_lib_msg_queueclose = (struct req_lib_msg_queueclose *)message;
+static void message_handler_req_lib_msg_queueclose (
+	void *conn,
+	void *msg)
+{
+	struct req_lib_msg_queueclose *req_lib_msg_queueclose = (struct req_lib_msg_queueclose *)msg;
 	struct req_exec_msg_queueclose req_exec_msg_queueclose;
 	struct req_exec_msg_queueclose req_exec_msg_queueclose;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1194,7 +1209,7 @@ static void message_handler_req_lib_msg_queueclose (struct conn_info *conn_info,
 	req_exec_msg_queueclose.header.id = 
 	req_exec_msg_queueclose.header.id = 
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUECLOSE);
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUECLOSE);
 
 
-	message_source_set (&req_exec_msg_queueclose.source, conn_info);
+	message_source_set (&req_exec_msg_queueclose.source, conn);
 
 
 	memcpy (&req_exec_msg_queueclose.queue_name,
 	memcpy (&req_exec_msg_queueclose.queue_name,
 		&req_lib_msg_queueclose->queueName, sizeof (SaNameT));
 		&req_lib_msg_queueclose->queueName, sizeof (SaNameT));
@@ -1207,11 +1222,11 @@ static void message_handler_req_lib_msg_queueclose (struct conn_info *conn_info,
 }
 }
 
 
 static void message_handler_req_lib_msg_queuestatusget (
 static void message_handler_req_lib_msg_queuestatusget (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_queuestatusget *req_lib_msg_queuestatusget =
 	struct req_lib_msg_queuestatusget *req_lib_msg_queuestatusget =
-		(struct req_lib_msg_queuestatusget *)message;
+		(struct req_lib_msg_queuestatusget *)msg;
 	struct req_exec_msg_queuestatusget req_exec_msg_queuestatusget;
 	struct req_exec_msg_queuestatusget req_exec_msg_queuestatusget;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1223,7 +1238,7 @@ static void message_handler_req_lib_msg_queuestatusget (
 	req_exec_msg_queuestatusget.header.id =
 	req_exec_msg_queuestatusget.header.id =
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUESTATUSGET);
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUESTATUSGET);
 
 
-	message_source_set (&req_exec_msg_queuestatusget.source, conn_info);
+	message_source_set (&req_exec_msg_queuestatusget.source, conn);
 
 
 	memcpy (&req_exec_msg_queuestatusget.queue_name,
 	memcpy (&req_exec_msg_queuestatusget.queue_name,
 		&req_lib_msg_queuestatusget->queueName, sizeof (SaNameT));
 		&req_lib_msg_queuestatusget->queueName, sizeof (SaNameT));
@@ -1236,11 +1251,11 @@ static void message_handler_req_lib_msg_queuestatusget (
 }
 }
 
 
 static void message_handler_req_lib_msg_queueunlink (
 static void message_handler_req_lib_msg_queueunlink (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_queueunlink *req_lib_msg_queueunlink =
 	struct req_lib_msg_queueunlink *req_lib_msg_queueunlink =
-		(struct req_lib_msg_queueunlink *)message;
+		(struct req_lib_msg_queueunlink *)msg;
 	struct req_exec_msg_queueunlink req_exec_msg_queueunlink;
 	struct req_exec_msg_queueunlink req_exec_msg_queueunlink;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1252,7 +1267,7 @@ static void message_handler_req_lib_msg_queueunlink (
 	req_exec_msg_queueunlink.header.id =
 	req_exec_msg_queueunlink.header.id =
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUEUNLINK);
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUEUNLINK);
 
 
-	message_source_set (&req_exec_msg_queueunlink.source, conn_info);
+	message_source_set (&req_exec_msg_queueunlink.source, conn);
 
 
 	memcpy (&req_exec_msg_queueunlink.queue_name,
 	memcpy (&req_exec_msg_queueunlink.queue_name,
 		&req_lib_msg_queueunlink->queueName, sizeof (SaNameT));
 		&req_lib_msg_queueunlink->queueName, sizeof (SaNameT));
@@ -1265,11 +1280,11 @@ static void message_handler_req_lib_msg_queueunlink (
 }
 }
 
 
 static void message_handler_req_lib_msg_queuegroupcreate (
 static void message_handler_req_lib_msg_queuegroupcreate (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_queuegroupcreate *req_lib_msg_queuegroupcreate =
 	struct req_lib_msg_queuegroupcreate *req_lib_msg_queuegroupcreate =
-		(struct req_lib_msg_queuegroupcreate *)message;
+		(struct req_lib_msg_queuegroupcreate *)msg;
 	struct req_exec_msg_queuegroupcreate req_exec_msg_queuegroupcreate;
 	struct req_exec_msg_queuegroupcreate req_exec_msg_queuegroupcreate;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1281,7 +1296,7 @@ static void message_handler_req_lib_msg_queuegroupcreate (
 	req_exec_msg_queuegroupcreate.header.id =
 	req_exec_msg_queuegroupcreate.header.id =
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUEGROUPCREATE);
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUEGROUPCREATE);
 
 
-	message_source_set (&req_exec_msg_queuegroupcreate.source, conn_info);
+	message_source_set (&req_exec_msg_queuegroupcreate.source, conn);
 
 
 	memcpy (&req_exec_msg_queuegroupcreate.queue_group_name,
 	memcpy (&req_exec_msg_queuegroupcreate.queue_group_name,
 		&req_lib_msg_queuegroupcreate->queueGroupName, sizeof (SaNameT));
 		&req_lib_msg_queuegroupcreate->queueGroupName, sizeof (SaNameT));
@@ -1294,11 +1309,11 @@ static void message_handler_req_lib_msg_queuegroupcreate (
 }
 }
 
 
 static void message_handler_req_lib_msg_queuegroupinsert (
 static void message_handler_req_lib_msg_queuegroupinsert (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_queuegroupinsert *req_lib_msg_queuegroupinsert =
 	struct req_lib_msg_queuegroupinsert *req_lib_msg_queuegroupinsert =
-		(struct req_lib_msg_queuegroupinsert *)message;
+		(struct req_lib_msg_queuegroupinsert *)msg;
 	struct req_exec_msg_queuegroupinsert req_exec_msg_queuegroupinsert;
 	struct req_exec_msg_queuegroupinsert req_exec_msg_queuegroupinsert;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1310,7 +1325,7 @@ static void message_handler_req_lib_msg_queuegroupinsert (
 	req_exec_msg_queuegroupinsert.header.id =
 	req_exec_msg_queuegroupinsert.header.id =
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUEGROUPINSERT);
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_QUEUEGROUPINSERT);
 
 
-	message_source_set (&req_exec_msg_queuegroupinsert.source, conn_info);
+	message_source_set (&req_exec_msg_queuegroupinsert.source, conn);
 
 
 	memcpy (&req_exec_msg_queuegroupinsert.queue_name,
 	memcpy (&req_exec_msg_queuegroupinsert.queue_name,
 		&req_lib_msg_queuegroupinsert->queueName, sizeof (SaNameT));
 		&req_lib_msg_queuegroupinsert->queueName, sizeof (SaNameT));
@@ -1325,11 +1340,11 @@ static void message_handler_req_lib_msg_queuegroupinsert (
 }
 }
 
 
 static void message_handler_req_lib_msg_queuegroupremove (
 static void message_handler_req_lib_msg_queuegroupremove (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_queuegroupremove *req_lib_msg_queuegroupremove =
 	struct req_lib_msg_queuegroupremove *req_lib_msg_queuegroupremove =
-		(struct req_lib_msg_queuegroupremove *)message;
+		(struct req_lib_msg_queuegroupremove *)msg;
 	struct req_exec_msg_queuegroupremove req_exec_msg_queuegroupremove;
 	struct req_exec_msg_queuegroupremove req_exec_msg_queuegroupremove;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1341,7 +1356,7 @@ static void message_handler_req_lib_msg_queuegroupremove (
 	log_printf (LOG_LEVEL_NOTICE, "LIB request: saMsgQueueGroupRemove %s\n",
 	log_printf (LOG_LEVEL_NOTICE, "LIB request: saMsgQueueGroupRemove %s\n",
 		getSaNameT (&req_lib_msg_queuegroupremove->queueGroupName));
 		getSaNameT (&req_lib_msg_queuegroupremove->queueGroupName));
 
 
-	message_source_set (&req_exec_msg_queuegroupremove.source, conn_info);
+	message_source_set (&req_exec_msg_queuegroupremove.source, conn);
 
 
 	memcpy (&req_exec_msg_queuegroupremove.queue_name,
 	memcpy (&req_exec_msg_queuegroupremove.queue_name,
 		&req_lib_msg_queuegroupremove->queueName, sizeof (SaNameT));
 		&req_lib_msg_queuegroupremove->queueName, sizeof (SaNameT));
@@ -1356,11 +1371,11 @@ static void message_handler_req_lib_msg_queuegroupremove (
 }
 }
 
 
 static void message_handler_req_lib_msg_queuegroupdelete (
 static void message_handler_req_lib_msg_queuegroupdelete (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_queuegroupdelete *req_lib_msg_queuegroupdelete =
 	struct req_lib_msg_queuegroupdelete *req_lib_msg_queuegroupdelete =
-		(struct req_lib_msg_queuegroupdelete *)message;
+		(struct req_lib_msg_queuegroupdelete *)msg;
 	struct req_exec_msg_queuegroupdelete req_exec_msg_queuegroupdelete;
 	struct req_exec_msg_queuegroupdelete req_exec_msg_queuegroupdelete;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1372,7 +1387,7 @@ static void message_handler_req_lib_msg_queuegroupdelete (
 	log_printf (LOG_LEVEL_NOTICE, "LIB request: saMsgQueueGroupDelete %s\n",
 	log_printf (LOG_LEVEL_NOTICE, "LIB request: saMsgQueueGroupDelete %s\n",
 		getSaNameT (&req_lib_msg_queuegroupdelete->queueGroupName));
 		getSaNameT (&req_lib_msg_queuegroupdelete->queueGroupName));
 
 
-	message_source_set (&req_exec_msg_queuegroupdelete.source, conn_info);
+	message_source_set (&req_exec_msg_queuegroupdelete.source, conn);
 
 
 	memcpy (&req_exec_msg_queuegroupdelete.queue_group_name,
 	memcpy (&req_exec_msg_queuegroupdelete.queue_group_name,
 		&req_lib_msg_queuegroupdelete->queueGroupName, sizeof (SaNameT));
 		&req_lib_msg_queuegroupdelete->queueGroupName, sizeof (SaNameT));
@@ -1385,11 +1400,11 @@ static void message_handler_req_lib_msg_queuegroupdelete (
 }
 }
 
 
 static void message_handler_req_lib_msg_queuegrouptrack (
 static void message_handler_req_lib_msg_queuegrouptrack (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_queuegrouptrack *req_lib_msg_queuegrouptrack =
 	struct req_lib_msg_queuegrouptrack *req_lib_msg_queuegrouptrack =
-		(struct req_lib_msg_queuegrouptrack *)message;
+		(struct req_lib_msg_queuegrouptrack *)msg;
 	struct req_exec_msg_queuegrouptrack req_exec_msg_queuegrouptrack;
 	struct req_exec_msg_queuegrouptrack req_exec_msg_queuegrouptrack;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1401,7 +1416,7 @@ static void message_handler_req_lib_msg_queuegrouptrack (
 	log_printf (LOG_LEVEL_NOTICE, "LIB request: saMsgQueueGroupTrack %s\n",
 	log_printf (LOG_LEVEL_NOTICE, "LIB request: saMsgQueueGroupTrack %s\n",
 		getSaNameT (&req_lib_msg_queuegrouptrack->queueGroupName));
 		getSaNameT (&req_lib_msg_queuegrouptrack->queueGroupName));
 
 
-	message_source_set (&req_exec_msg_queuegrouptrack.source, conn_info);
+	message_source_set (&req_exec_msg_queuegrouptrack.source, conn);
 
 
 	memcpy (&req_exec_msg_queuegrouptrack.queue_group_name,
 	memcpy (&req_exec_msg_queuegrouptrack.queue_group_name,
 		&req_lib_msg_queuegrouptrack->queueGroupName, sizeof (SaNameT));
 		&req_lib_msg_queuegrouptrack->queueGroupName, sizeof (SaNameT));
@@ -1414,11 +1429,11 @@ static void message_handler_req_lib_msg_queuegrouptrack (
 }
 }
 
 
 static void message_handler_req_lib_msg_queuegrouptrackstop (
 static void message_handler_req_lib_msg_queuegrouptrackstop (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_queuegrouptrackstop *req_lib_msg_queuegrouptrackstop =
 	struct req_lib_msg_queuegrouptrackstop *req_lib_msg_queuegrouptrackstop =
-		(struct req_lib_msg_queuegrouptrackstop *)message;
+		(struct req_lib_msg_queuegrouptrackstop *)msg;
 	struct req_exec_msg_queuegrouptrackstop req_exec_msg_queuegrouptrackstop;
 	struct req_exec_msg_queuegrouptrackstop req_exec_msg_queuegrouptrackstop;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1430,7 +1445,7 @@ static void message_handler_req_lib_msg_queuegrouptrackstop (
 	log_printf (LOG_LEVEL_NOTICE, "LIB request: saMsgQueueGroupTrackStop %s\n",
 	log_printf (LOG_LEVEL_NOTICE, "LIB request: saMsgQueueGroupTrackStop %s\n",
 		getSaNameT (&req_lib_msg_queuegrouptrackstop->queueGroupName));
 		getSaNameT (&req_lib_msg_queuegrouptrackstop->queueGroupName));
 
 
-	message_source_set (&req_exec_msg_queuegrouptrackstop.source, conn_info);
+	message_source_set (&req_exec_msg_queuegrouptrackstop.source, conn);
 
 
 	memcpy (&req_exec_msg_queuegrouptrackstop.queue_group_name,
 	memcpy (&req_exec_msg_queuegrouptrackstop.queue_group_name,
 		&req_lib_msg_queuegrouptrackstop->queueGroupName, sizeof (SaNameT));
 		&req_lib_msg_queuegrouptrackstop->queueGroupName, sizeof (SaNameT));
@@ -1443,11 +1458,11 @@ static void message_handler_req_lib_msg_queuegrouptrackstop (
 }
 }
 
 
 static void message_handler_req_lib_msg_messagesend (
 static void message_handler_req_lib_msg_messagesend (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_messagesend *req_lib_msg_messagesend =
 	struct req_lib_msg_messagesend *req_lib_msg_messagesend =
-		(struct req_lib_msg_messagesend *)message;
+		(struct req_lib_msg_messagesend *)msg;
 	struct req_exec_msg_messagesend req_exec_msg_messagesend;
 	struct req_exec_msg_messagesend req_exec_msg_messagesend;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1460,7 +1475,7 @@ static void message_handler_req_lib_msg_messagesend (
 	log_printf (LOG_LEVEL_NOTICE, "LIB request: saMsgMessageSend %s\n",
 	log_printf (LOG_LEVEL_NOTICE, "LIB request: saMsgMessageSend %s\n",
 		getSaNameT (&req_lib_msg_messagesend->destination));
 		getSaNameT (&req_lib_msg_messagesend->destination));
 
 
-	message_source_set (&req_exec_msg_messagesend.source, conn_info);
+	message_source_set (&req_exec_msg_messagesend.source, conn);
 
 
 	memcpy (&req_exec_msg_messagesend.destination,
 	memcpy (&req_exec_msg_messagesend.destination,
 		&req_lib_msg_messagesend->destination, sizeof (SaNameT));
 		&req_lib_msg_messagesend->destination, sizeof (SaNameT));
@@ -1473,11 +1488,11 @@ static void message_handler_req_lib_msg_messagesend (
 }
 }
 
 
 static void message_handler_req_lib_msg_messagesendasync (
 static void message_handler_req_lib_msg_messagesendasync (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_messagesend *req_lib_msg_messagesend =
 	struct req_lib_msg_messagesend *req_lib_msg_messagesend =
-		(struct req_lib_msg_messagesend *)message;
+		(struct req_lib_msg_messagesend *)msg;
 	struct req_exec_msg_messagesend req_exec_msg_messagesend;
 	struct req_exec_msg_messagesend req_exec_msg_messagesend;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1490,7 +1505,7 @@ static void message_handler_req_lib_msg_messagesendasync (
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_MESSAGESEND);
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_MESSAGESEND);
 	req_exec_msg_messagesend.async_call = 1;
 	req_exec_msg_messagesend.async_call = 1;
 
 
-	message_source_set (&req_exec_msg_messagesend.source, conn_info);
+	message_source_set (&req_exec_msg_messagesend.source, conn);
 
 
 	memcpy (&req_exec_msg_messagesend.destination,
 	memcpy (&req_exec_msg_messagesend.destination,
 		&req_lib_msg_messagesend->destination, sizeof (SaNameT));
 		&req_lib_msg_messagesend->destination, sizeof (SaNameT));
@@ -1503,11 +1518,11 @@ static void message_handler_req_lib_msg_messagesendasync (
 }
 }
 
 
 static void message_handler_req_lib_msg_messageget (
 static void message_handler_req_lib_msg_messageget (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_messageget *req_lib_msg_messageget =
 	struct req_lib_msg_messageget *req_lib_msg_messageget =
-		(struct req_lib_msg_messageget *)message;
+		(struct req_lib_msg_messageget *)msg;
 	struct req_exec_msg_messageget req_exec_msg_messageget;
 	struct req_exec_msg_messageget req_exec_msg_messageget;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1519,7 +1534,7 @@ static void message_handler_req_lib_msg_messageget (
 	req_exec_msg_messageget.header.id =
 	req_exec_msg_messageget.header.id =
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_MESSAGEGET);
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_MESSAGEGET);
 
 
-	message_source_set (&req_exec_msg_messageget.source, conn_info);
+	message_source_set (&req_exec_msg_messageget.source, conn);
 
 
 	memcpy (&req_exec_msg_messageget.queue_name,
 	memcpy (&req_exec_msg_messageget.queue_name,
 		&req_lib_msg_messageget->queueName, sizeof (SaNameT));
 		&req_lib_msg_messageget->queueName, sizeof (SaNameT));
@@ -1532,11 +1547,11 @@ static void message_handler_req_lib_msg_messageget (
 }
 }
 
 
 static void message_handler_req_lib_msg_messagecancel (
 static void message_handler_req_lib_msg_messagecancel (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_messagecancel *req_lib_msg_messagecancel =
 	struct req_lib_msg_messagecancel *req_lib_msg_messagecancel =
-		(struct req_lib_msg_messagecancel *)message;
+		(struct req_lib_msg_messagecancel *)msg;
 	struct req_exec_msg_messagecancel req_exec_msg_messagecancel;
 	struct req_exec_msg_messagecancel req_exec_msg_messagecancel;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1548,7 +1563,7 @@ static void message_handler_req_lib_msg_messagecancel (
 	req_exec_msg_messagecancel.header.id =
 	req_exec_msg_messagecancel.header.id =
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_MESSAGECANCEL);
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_MESSAGECANCEL);
 
 
-	message_source_set (&req_exec_msg_messagecancel.source, conn_info);
+	message_source_set (&req_exec_msg_messagecancel.source, conn);
 
 
 	memcpy (&req_exec_msg_messagecancel.queue_name,
 	memcpy (&req_exec_msg_messagecancel.queue_name,
 		&req_lib_msg_messagecancel->queueName, sizeof (SaNameT));
 		&req_lib_msg_messagecancel->queueName, sizeof (SaNameT));
@@ -1561,11 +1576,11 @@ static void message_handler_req_lib_msg_messagecancel (
 }
 }
 
 
 static void message_handler_req_lib_msg_messagesendreceive (
 static void message_handler_req_lib_msg_messagesendreceive (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_messagesendreceive *req_lib_msg_messagesendreceive =
 	struct req_lib_msg_messagesendreceive *req_lib_msg_messagesendreceive =
-		(struct req_lib_msg_messagesendreceive *)message;
+		(struct req_lib_msg_messagesendreceive *)msg;
 	struct req_exec_msg_messagesendreceive req_exec_msg_messagesendreceive;
 	struct req_exec_msg_messagesendreceive req_exec_msg_messagesendreceive;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1577,7 +1592,7 @@ static void message_handler_req_lib_msg_messagesendreceive (
 	req_exec_msg_messagesendreceive.header.id =
 	req_exec_msg_messagesendreceive.header.id =
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_MESSAGESENDRECEIVE);
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_MESSAGESENDRECEIVE);
 
 
-	message_source_set (&req_exec_msg_messagesendreceive.source, conn_info);
+	message_source_set (&req_exec_msg_messagesendreceive.source, conn);
 
 
 	memcpy (&req_exec_msg_messagesendreceive.queue_name,
 	memcpy (&req_exec_msg_messagesendreceive.queue_name,
 		&req_lib_msg_messagesendreceive->queueName, sizeof (SaNameT));
 		&req_lib_msg_messagesendreceive->queueName, sizeof (SaNameT));
@@ -1590,11 +1605,11 @@ static void message_handler_req_lib_msg_messagesendreceive (
 }
 }
 
 
 static void message_handler_req_lib_msg_messagereply (
 static void message_handler_req_lib_msg_messagereply (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_messagereply *req_lib_msg_messagereply =
 	struct req_lib_msg_messagereply *req_lib_msg_messagereply =
-		(struct req_lib_msg_messagereply *)message;
+		(struct req_lib_msg_messagereply *)msg;
 	struct req_exec_msg_messagereply req_exec_msg_messagereply;
 	struct req_exec_msg_messagereply req_exec_msg_messagereply;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1607,7 +1622,7 @@ static void message_handler_req_lib_msg_messagereply (
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_MESSAGEREPLY);
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_MESSAGEREPLY);
 	req_exec_msg_messagereply.async_call = 0;
 	req_exec_msg_messagereply.async_call = 0;
 
 
-	message_source_set (&req_exec_msg_messagereply.source, conn_info);
+	message_source_set (&req_exec_msg_messagereply.source, conn);
 
 
 	memcpy (&req_exec_msg_messagereply.queue_name,
 	memcpy (&req_exec_msg_messagereply.queue_name,
 		&req_lib_msg_messagereply->queueName, sizeof (SaNameT));
 		&req_lib_msg_messagereply->queueName, sizeof (SaNameT));
@@ -1620,11 +1635,11 @@ static void message_handler_req_lib_msg_messagereply (
 }
 }
 
 
 static void message_handler_req_lib_msg_messagereplyasync (
 static void message_handler_req_lib_msg_messagereplyasync (
-	struct conn_info *conn_info,
-	void *message)
+	void *conn,
+	void *msg)
 {
 {
 	struct req_lib_msg_messagereply *req_lib_msg_messagereply =
 	struct req_lib_msg_messagereply *req_lib_msg_messagereply =
-		(struct req_lib_msg_messagereply *)message;
+		(struct req_lib_msg_messagereply *)msg;
 	struct req_exec_msg_messagereply req_exec_msg_messagereply;
 	struct req_exec_msg_messagereply req_exec_msg_messagereply;
 	struct iovec iovec;
 	struct iovec iovec;
 
 
@@ -1637,7 +1652,7 @@ static void message_handler_req_lib_msg_messagereplyasync (
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_MESSAGEREPLY);
 		SERVICE_ID_MAKE (MSG_SERVICE, MESSAGE_REQ_EXEC_MSG_MESSAGEREPLY);
 	req_exec_msg_messagereply.async_call = 1;
 	req_exec_msg_messagereply.async_call = 1;
 
 
-	message_source_set (&req_exec_msg_messagereply.source, conn_info);
+	message_source_set (&req_exec_msg_messagereply.source, conn);
 
 
 	memcpy (&req_exec_msg_messagereply.queue_name,
 	memcpy (&req_exec_msg_messagereply.queue_name,
 		&req_lib_msg_messagereply->queueName, sizeof (SaNameT));
 		&req_lib_msg_messagereply->queueName, sizeof (SaNameT));

+ 0 - 5
exec/msg.h

@@ -39,11 +39,6 @@
 #ifndef MSG_H_DEFINED
 #ifndef MSG_H_DEFINED
 #define MSG_H_DEFINED
 #define MSG_H_DEFINED
 
 
-struct libmsg_ci {
-	struct list_head queue_list;
-	struct list_head queue_cleanup_list;
-};
-
 extern struct openais_service_handler msg_service_handler;
 extern struct openais_service_handler msg_service_handler;
 
 
 #endif /* MSG_H_DEFINED */
 #endif /* MSG_H_DEFINED */

+ 1 - 1
exec/print.c

@@ -203,7 +203,7 @@ char *getSaNameT (SaNameT *name)
 	return (ret_name);
 	return (ret_name);
 }
 }
 
 
-#ifdef DEBUG
+#ifdef DEBUGA
 extern char *getSaClmNodeAddressT (SaClmNodeAddressT *nodeAddress) {
 extern char *getSaClmNodeAddressT (SaClmNodeAddressT *nodeAddress) {
 	int i;
 	int i;
 	static char node_address[300];
 	static char node_address[300];

+ 1 - 1
include/ipc_gen.h

@@ -113,8 +113,8 @@ struct res_lib_dispatch_init {
 	struct res_header header;
 	struct res_header header;
 };
 };
 struct message_source {
 struct message_source {
-	struct conn_info *conn_info;
 	struct totem_ip_address addr;
 	struct totem_ip_address addr;
+	void *conn;
 } __attribute__((packed));
 } __attribute__((packed));
 
 
 #endif /* IPC_GEN_H_DEFINED */
 #endif /* IPC_GEN_H_DEFINED */

+ 10 - 5
lcr/Makefile

@@ -26,7 +26,7 @@
 #LDFLAGS = 
 #LDFLAGS = 
 
 
 # Debug mode flags
 # Debug mode flags
-CFLAGS = -g -DDEBUG -Wall
+CFLAGS = -g -Wall
 LDFLAGS = -g -L./
 LDFLAGS = -g -L./
 
 
 # Profile mode flags
 # Profile mode flags
@@ -37,8 +37,7 @@ LDFLAGS = -g -L./
 #CFLAGS = -ftest-coverage -fprofile-arcs
 #CFLAGS = -ftest-coverage -fprofile-arcs
 #LDFLAGS = -g
 #LDFLAGS = -g
 
 
-
-CFLAGS += -fPIC
+LDFLAGS += -ldl
 
 
 all:liblcr.a test uic libtest_a.lcrso libtest_b.lcrso
 all:liblcr.a test uic libtest_a.lcrso libtest_b.lcrso
 
 
@@ -46,10 +45,10 @@ liblcr.a: lcr_ifact.o
 	$(AR) -rc liblcr.a lcr_ifact.o
 	$(AR) -rc liblcr.a lcr_ifact.o
 
 
 libtest_a.lcrso: libtest_a.o
 libtest_a.lcrso: libtest_a.o
-	$(CC) -shared -Wl,-soname,libtest_b.lcrso libtest_a.o -o $@
+	$(CC) $(CFLAGS) -shared -Wl,-soname,libtest_b.lcrso libtest_a.o -o $@
 
 
 libtest_b.lcrso: libtest_b.o
 libtest_b.lcrso: libtest_b.o
-	$(CC) -shared -Wl,-soname,libtest_b.lcrso libtest_b.o -o $@
+	$(CC) $(CFLAGS) -shared -Wl,-soname,libtest_b.lcrso libtest_b.o -o $@
 	
 	
 test: test.o uis.o lcr_ifact.o
 test: test.o uis.o lcr_ifact.o
 	$(CC) $(LDFLAGS) test.o lcr_ifact.o uis.o -lpthread -ldl -o test
 	$(CC) $(LDFLAGS) test.o lcr_ifact.o uis.o -lpthread -ldl -o test
@@ -57,5 +56,11 @@ test: test.o uis.o lcr_ifact.o
 uic: uic.o
 uic: uic.o
 	$(CC) $(LDFLAGS) uic.o -o uic
 	$(CC) $(LDFLAGS) uic.o -o uic
 
 
+libtest_a.o: libtest_a.c
+	$(CC) $(CFLAGS) -fPIC -c -o $@ $(*F).c
+
+libtest_b.o: libtest_b.c
+	$(CC) $(CFLAGS) -fPIC -c -o $@ $(*F).c
+
 clean:
 clean:
 	rm -f test libtest.so* *.o uic liblcr.so* liblcr.a *.lcrso *.da *.ba *.bb *.bbg
 	rm -f test libtest.so* *.o uic liblcr.so* liblcr.a *.lcrso *.da *.ba *.bb *.bbg

Some files were not shown because too many files changed in this diff