public inbox for cluster-cvs@sourceware.org
help / color / mirror / Atom feed
* cluster: STABLE2 - cman: Allow use of broadcast communications
@ 2009-05-26 10:23 Christine Caulfield
  0 siblings, 0 replies; only message in thread
From: Christine Caulfield @ 2009-05-26 10:23 UTC (permalink / raw)
  To: cluster-cvs-relay

Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=ee1e985411a98170ce8f4b530ac83c5a495cca93
Commit:        ee1e985411a98170ce8f4b530ac83c5a495cca93
Parent:        629ccc03fec52605b2a2aca06dc3fd1b6225e0f1
Author:        Christine Caulfield <ccaulfie@redhat.com>
AuthorDate:    Tue May 26 11:19:12 2009 +0100
Committer:     Christine Caulfield <ccaulfie@redhat.com>
CommitterDate: Tue May 26 11:19:12 2009 +0100

cman: Allow use of broadcast communications

The latest version of openais allows broadcast to be configured as
an option. This makes it available from cman with the option
<cman broadcast = "yes"/>

Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
---
 cman/daemon/ais.c     |   15 +++++++++++----
 cman/daemon/ais.h     |    2 +-
 cman/daemon/cmanccs.c |   10 +++++++++-
 3 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/cman/daemon/ais.c b/cman/daemon/ais.c
index 4d898ea..03052a9 100644
--- a/cman/daemon/ais.c
+++ b/cman/daemon/ais.c
@@ -289,7 +289,7 @@ int cman_exit_fn(void *conn_info)
 
 /* END Plugin-specific code */
 
-int ais_add_ifaddr(char *mcast, char *ifaddr, int portnum)
+int ais_add_ifaddr(char *mcast, char *ifaddr, int portnum, int broadcast)
 {
 	struct totem_ip_address localhost;
 	unsigned int totem_object_handle;
@@ -322,13 +322,20 @@ int ais_add_ifaddr(char *mcast, char *ifaddr, int portnum)
 			global_objdb->object_key_create(interface_object_handle, "bindnetaddr", strlen("bindnetaddr"),
 							ifaddr, strlen(ifaddr)+1);
 
-			global_objdb->object_key_create(interface_object_handle, "mcastaddr", strlen("mcastaddr"),
-							mcast, strlen(mcast)+1);
-
 			sprintf(tmp, "%d", portnum);
 			global_objdb->object_key_create(interface_object_handle, "mcastport", strlen("mcastport"),
 							tmp, strlen(tmp)+1);
 
+			if (broadcast) {
+				global_objdb->object_key_create(interface_object_handle, "broadcast", strlen("broadcast"),
+								"yes", strlen("yes")+1);
+				mcast = "255.255.255.255";
+			}
+			else {
+				global_objdb->object_key_create(interface_object_handle, "mcastaddr", strlen("mcastaddr"),
+								mcast, strlen(mcast)+1);
+			}
+
 			/* Save a local copy */
 			ret = totemip_parse(&mcast_addr[num_interfaces], mcast, 0);
 			if (!ret)
diff --git a/cman/daemon/ais.h b/cman/daemon/ais.h
index 4db5d21..212e9f1 100644
--- a/cman/daemon/ais.h
+++ b/cman/daemon/ais.h
@@ -3,7 +3,7 @@
 
 #include <openais/totem/totem.h>
 
-extern int ais_add_ifaddr(char *mcast, char *ifaddr, int portnum);
+extern int ais_add_ifaddr(char *mcast, char *ifaddr, int portnum, int broadcast);
 extern int comms_send_message(void *buf, int len,
 			      unsigned char toport, unsigned char fromport,
 			      int nodeid,
diff --git a/cman/daemon/cmanccs.c b/cman/daemon/cmanccs.c
index 1def234..e55dff4 100644
--- a/cman/daemon/cmanccs.c
+++ b/cman/daemon/cmanccs.c
@@ -39,6 +39,7 @@
 #define PORT_PATH		"/cluster/cman/@port"
 #define KEY_PATH		"/cluster/cman/@keyfile"
 #define MAXQUEUED_PATH		"/cluster/cman/@max_queued"
+#define BROADCAST_PATH		"/cluster/cman/@broadcast"
 
 #define NODE_NAME_PATH_BYNAME	"/cluster/clusternodes/clusternode[@name=\"%s\"]/@name"
 #define NODE_NAME_PATH_BYNUM	"/cluster/clusternodes/clusternode[%d]/@name"
@@ -61,6 +62,7 @@ static int num_nodenames;
        int two_node;
        char *key_filename=NULL;
 static char *mcast_name;
+static int use_broadcast = 0;
 static unsigned char votes;
 static unsigned int expected_votes;
 static unsigned short cluster_id;
@@ -255,7 +257,7 @@ static int join(void)
 	 * Setup the interface/multicast addresses
 	 */
 	for (i = 0; i<num_nodenames; i++) {
-		error = ais_add_ifaddr(mcast[i], nodenames[i], portnums[i]);
+		error = ais_add_ifaddr(mcast[i], nodenames[i], portnums[i], use_broadcast);
 		if (error) {
 			if (errno == EADDRINUSE)
 				write_cman_pipe("Local host name resolves to 127.0.0.1; fix /etc/hosts before starting cluster.");
@@ -525,6 +527,12 @@ static int get_ccs_join_info(void)
 		}
 	}
 
+	error = ccs_get(cd, BROADCAST_PATH, &str);
+	if (!error) {
+		if (strcmp(str, "yes") == 0)
+			use_broadcast = 1;
+	}
+
 	if (strlen(str) >= sizeof(cluster_name)) {
 		free(str);
 		write_cman_pipe("Cluster name in CCS is too long");


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-05-26 10:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-05-26 10:23 cluster: STABLE2 - cman: Allow use of broadcast communications Christine Caulfield

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).