Kaynağa Gözat

Make external service engines (openais) work properly.
Also fix up make install.


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

Steven Dake 17 yıl önce
ebeveyn
işleme
9c9a91be3d

+ 2 - 2
corosync/Makefile

@@ -1,5 +1,5 @@
 # Copyright (c) 2002-2006 MontaVista Software, Inc.
-# Copyright (c) 2006 Red Hat, Inc.
+# Copyright (c) 2006-2008 Red Hat, Inc.
 # 
 # All rights reserved.
 # 
@@ -43,7 +43,7 @@ SBINDIR=$(PREFIX)/sbin
 INCLUDEDIR=$(PREFIX)/include/corosync
 INCLUDEDIR_TOTEM=$(PREFIX)/include/corosync/totem
 INCLUDEDIR_LCR=$(PREFIX)/include/corosync/lcr
-INCLUDEDIR_ENGINE=$(PREFIX)/include/corosync/service
+INCLUDEDIR_ENGINE=$(PREFIX)/include/corosync/engine
 MANDIR=$(PREFIX)/share/man
 ETCDIR=/etc
 ARCH=$(shell uname -p)

+ 1 - 0
corosync/exec/apidef.c

@@ -67,6 +67,7 @@ static struct corosync_api_v1 apidef_corosync_api_v1 = {
 	.ipc_fc_create = openais_ipc_flow_control_create,
 	.ipc_fc_destroy = openais_ipc_flow_control_destroy,
 	.totem_nodeid_get = totempg_my_nodeid_get,
+	.totem_family_get = totempg_my_family_get,
 	.totem_ring_reenable = totempg_ring_reenable,
 	.totem_mcast = main_mcast,
 	.totem_send_ok = main_send_ok,

+ 2 - 2
corosync/exec/ipc.c

@@ -590,9 +590,9 @@ retry_poll:
 #endif
 
 #if defined(OPENAIS_LINUX)
-char *socketname = "libais.socket";
+char *socketname = "libcorosync.socket";
 #else
-char *socketname = "/var/run/libais.socket";
+char *socketname = "/var/run/libcorosync.socket";
 #endif
 
 

+ 1 - 1
corosync/exec/service.c

@@ -219,7 +219,7 @@ static int openais_service_unlink_common (
 		service_name, service_version);
 
 	if (ais_service[*service_id]->exec_exit_fn) {
-		ais_service[*service_id]->exec_exit_fn (api);
+		ais_service[*service_id]->exec_exit_fn ();
 	}
 	ais_service[*service_id] = NULL;
     

+ 2 - 2
corosync/exec/totemip.c

@@ -202,11 +202,11 @@ int totemip_localhost_check(struct totem_ip_address *addr)
 	return totemip_equal(addr, &localhost);
 }
 
-const char *totemip_print(struct totem_ip_address *addr)
+char *totemip_print(struct totem_ip_address *addr)
 {
 	static char buf[INET6_ADDRSTRLEN];
 
-	return inet_ntop(addr->family, addr->addr, buf, sizeof(buf));
+	return ((char *)inet_ntop(addr->family, addr->addr, buf, sizeof(buf)));
 }
 
 /* Make a totem_ip_address into a usable sockaddr_storage */

+ 1 - 1
corosync/exec/totemip.h

@@ -67,7 +67,7 @@ extern void totemip_copy(struct totem_ip_address *addr1, struct totem_ip_address
 extern void totemip_copy_endian_convert(struct totem_ip_address *addr1, struct totem_ip_address *addr2);
 int totemip_localhost(int family, struct totem_ip_address *localhost);
 extern int totemip_localhost_check(struct totem_ip_address *addr);
-extern const char *totemip_print(struct totem_ip_address *addr);
+extern char *totemip_print(struct totem_ip_address *addr);
 extern int totemip_sockaddr_to_totemip_convert(struct sockaddr_storage *saddr, struct totem_ip_address *ip_addr);
 extern int totemip_totemip_to_sockaddr_convert(struct totem_ip_address *ip_addr,
 					       uint16_t port, struct sockaddr_storage *saddr, int *addrlen);

+ 4 - 0
corosync/include/ais_util.h

@@ -38,7 +38,11 @@
 #include <sys/poll.h>
 #include <sys/socket.h>
 
+#ifdef COROSYNC_EXTERNAL_ENGINE
+#include <corosync/ipc_gen.h>
+#else
 #include <ipc_gen.h>
+#endif
 
 /* Debug macro
  */

+ 3 - 1
corosync/include/coroapi.h

@@ -287,6 +287,8 @@ struct corosync_api_v1 {
 	 */
 	int (*totem_nodeid_get) (void);
 
+	int (*totem_family_get) (void);
+
 	int (*totem_ring_reenable) (void);
 
 	int (*totem_mcast) (struct iovec *iovec, int iov_len, unsigned int gaurantee);
@@ -348,7 +350,7 @@ struct corosync_service_engine {
 	unsigned int private_data_size;
 	enum corosync_lib_flow_control flow_control;
 	int (*exec_init_fn) (struct corosync_api_v1 *);
-	int (*exec_exit_fn) (struct corosync_api_v1 *);
+	int (*exec_exit_fn) (void);
 	void (*exec_dump_fn) (void);
 	int (*lib_init_fn) (void *conn);
 	int (*lib_exit_fn) (void *conn);

+ 5 - 1
corosync/include/ipc_gen.h

@@ -34,7 +34,11 @@
 #ifndef IPC_GEN_H_DEFINED
 #define IPC_GEN_H_DEFINED
 
-#include <mar_gen.h>
+#ifdef COROSYNC_EXTERNAL_SERVICE
+#include <corosync/mar_gen.h>
+#else
+#include "mar_gen.h"
+#endif
 
 enum service_types {
 	EVS_SERVICE = 0,

+ 19 - 1
corosync/include/mar_gen.h

@@ -44,7 +44,11 @@
 #include <string.h>
 
 #include <saAis.h>
-#include <swab.h>
+#ifdef COROSYNC_EXTERNAL_ENGINE
+#include <corosync/engine/swab.h>
+#else
+#include "swab.h"
+#endif
 
 typedef int8_t mar_int8_t;
 typedef int16_t mar_int16_t;
@@ -101,6 +105,20 @@ typedef struct {
 	mar_uint8_t value[SA_MAX_NAME_LENGTH] __attribute__((aligned(8)));
 } mar_name_t;
 
+static inline char *get_mar_name_t (mar_name_t *name) {
+        return ((char *)name->value);
+}
+
+static int mar_name_match(mar_name_t *name1, mar_name_t *name2)
+{
+        if (name1->length == name2->length) {
+                return ((strncmp ((char *)name1->value, (char *)name2->value,
+                        name1->length)) == 0);
+        }
+        return 0;
+}
+
+
 static inline void swab_mar_name_t (mar_name_t *to_swab)
 {
 	swab_mar_uint16_t (&to_swab->length);

+ 2 - 2
corosync/lib/util.c

@@ -83,9 +83,9 @@ struct saHandle {
 #endif
 
 #ifdef OPENAIS_LINUX
-static char *socketname = "libais.socket";
+static char *socketname = "libcorosync.socket";
 #else
-static char *socketname = "/var/run/libais.socket";
+static char *socketname = "/var/run/libcorosync.socket";
 #endif
 
 #ifdef SO_NOSIGPIPE