This is the mail archive of the cluster-cvs@sourceware.org mailing list for the cluster.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

cluster: master - cman: Add broadcast option


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=ff00108e7d1ac7d8f5e211081a2e9ddc4670371d
Commit:        ff00108e7d1ac7d8f5e211081a2e9ddc4670371d
Parent:        bd6b6c98d717447b4f1cc6746cd19929bc8352fb
Author:        Christine Caulfield <ccaulfie@redhat.com>
AuthorDate:    Wed May 27 14:19:43 2009 +0100
Committer:     Christine Caulfield <ccaulfie@redhat.com>
CommitterDate: Wed May 27 14:19:43 2009 +0100

cman: Add broadcast option

Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
---
 cman/config/cman-preconfig.c     |   27 ++++++++++++++++++++++-----
 cman/services/cman/lib/libcman.c |    6 +++++-
 2 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/cman/config/cman-preconfig.c b/cman/config/cman-preconfig.c
index 91a914b..2b98410 100644
--- a/cman/config/cman-preconfig.c
+++ b/cman/config/cman-preconfig.c
@@ -239,7 +239,7 @@ static int sum_expected(struct objdb_iface_ver0 *objdb)
 	return vote_sum;
 }
 
-static int add_ifaddr(struct objdb_iface_ver0 *objdb, char *mcast, char *ifaddr, int portnum)
+static int add_ifaddr(struct objdb_iface_ver0 *objdb, char *mcast, char *ifaddr, int portnum, int broadcast)
 {
 	hdb_handle_t totem_object_handle;
 	hdb_handle_t find_handle;
@@ -288,8 +288,12 @@ static int add_ifaddr(struct objdb_iface_ver0 *objdb, char *mcast, char *ifaddr,
 		objdb->object_key_create(interface_object_handle, "bindnetaddr", strlen("bindnetaddr"),
 					 tmp, strlen(tmp)+1);
 
-		objdb->object_key_create(interface_object_handle, "mcastaddr", strlen("mcastaddr"),
-					 mcast, strlen(mcast)+1);
+		if (broadcast)
+			objdb->object_key_create(interface_object_handle, "broadcast", strlen("broadcast"),
+						 "yes", strlen("yes")+1);
+		else
+			objdb->object_key_create(interface_object_handle, "mcastaddr", strlen("mcastaddr"),
+						 mcast, strlen(mcast)+1);
 
 		sprintf(tmp, "%d", portnum);
 		objdb->object_key_create(interface_object_handle, "mcastport", strlen("mcastport"),
@@ -532,6 +536,8 @@ static int get_nodename(struct objdb_iface_ver0 *objdb)
 	hdb_handle_t find_handle;
 	hdb_handle_t node_object_handle;
 	hdb_handle_t alt_object;
+	int broadcast = 0;
+	char *str;
 	int error;
 
 	if (!getenv("CMAN_NOCONFIG")) {
@@ -622,7 +628,18 @@ static int get_nodename(struct objdb_iface_ver0 *objdb)
 		objdb_get_int(objdb, object_handle, "port", &portnum, DEFAULT_PORT);
 	}
 
-	if (add_ifaddr(objdb, mcast_name, nodename, portnum))
+	/* Check for broadcast */
+	if (!objdb_get_string(objdb, object_handle, "broadcast", &str)) {
+		if (strcmp(str, "yes") == 0) {
+			mcast_name = strdup("255.255.255.255");
+			if (!mcast_name)
+				return -1;
+			broadcast = 1;
+		}
+		free(str);
+	}
+
+	if (add_ifaddr(objdb, mcast_name, nodename, portnum, broadcast))
 		return -1;
 
 	/* Get all alternative node names */
@@ -643,7 +660,7 @@ static int get_nodename(struct objdb_iface_ver0 *objdb)
 			mcast = mcast_name;
 		}
 
-		if (add_ifaddr(objdb, mcast, nodename, portnum))
+		if (add_ifaddr(objdb, mcast, nodename, portnum, broadcast))
 			return -1;
 
 		num_nodenames++;
diff --git a/cman/services/cman/lib/libcman.c b/cman/services/cman/lib/libcman.c
index d03238f..6381018 100644
--- a/cman/services/cman/lib/libcman.c
+++ b/cman/services/cman/lib/libcman.c
@@ -1245,7 +1245,11 @@ int cman_get_extra_info(cman_handle_t handle, cman_extra_info_t *info, int maxle
 	info->ei_num_addresses = 1;
 
 	ccs_handle = ccs_connect();
-	if (!ccs_get(ccs_handle, "/totem/interface/@mcastaddr", &value)) {
+	if (!ccs_get(ccs_handle, "/totem/interface/@broadcast", &value)) {
+		strcpy(info->ei_addresses, "255.255.255.255");
+		free(value);
+	}
+	else if (!ccs_get(ccs_handle, "/totem/interface/@mcastaddr", &value)) {
 		strcpy(info->ei_addresses, value);
 		free(value);
 	}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]