From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31742 invoked by alias); 27 May 2009 13:20:41 -0000 Received: (qmail 31727 invoked by alias); 27 May 2009 13:20:40 -0000 X-SWARE-Spam-Status: No, hits=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_73,SPF_HELO_PASS X-Spam-Status: No, hits=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_73,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion2.fedora.phx.redhat.com Subject: cluster: master - cman: Add broadcast option To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: bd6b6c98d717447b4f1cc6746cd19929bc8352fb X-Git-Newrev: ff00108e7d1ac7d8f5e211081a2e9ddc4670371d From: Christine Caulfield Message-Id: <20090527132002.A759112020E@lists.fedorahosted.org> Date: Wed, 27 May 2009 13:20:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2009-q2/txt/msg00428.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=ff00108e7d1ac7d8f5e211081a2e9ddc4670371d Commit: ff00108e7d1ac7d8f5e211081a2e9ddc4670371d Parent: bd6b6c98d717447b4f1cc6746cd19929bc8352fb Author: Christine Caulfield AuthorDate: Wed May 27 14:19:43 2009 +0100 Committer: Christine Caulfield CommitterDate: Wed May 27 14:19:43 2009 +0100 cman: Add broadcast option Signed-off-by: Christine Caulfield --- 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); }