From 4d2e24a2c31be0f207144ef1bec779cfbfa27660 Mon Sep 17 00:00:00 2001 From: Jan Friesse Date: Mon, 11 Jan 2010 10:12:17 +0000 Subject: [PATCH] Generate nodeid value when unset on BSD Generated nodeid is generated in same way as on Linux is. git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2641 fd59a12c-fef9-0310-b244-a6a79926bd2f --- exec/totemip.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/exec/totemip.c b/exec/totemip.c index 9e1bc441..f6613e89 100644 --- a/exec/totemip.c +++ b/exec/totemip.c @@ -447,6 +447,25 @@ int totemip_iface_check(struct totem_ip_address *bindnet, */ *interface_up = ifa->ifa_flags & IFF_UP; *interface_num = if_nametoindex(ifa->ifa_name); + + /* + * Handle case, when nodeid is set to 0 or not set. + */ + if (bindnet->family == AF_INET && bindnet->nodeid == 0) { + unsigned int nodeid = 0; + memcpy (&nodeid, boundto->addr, sizeof (int)); +#if _BYTE_ORDER == _BIG_ENDIAN + nodeid = swab32 (nodeid); +#endif + /* + * Mask 32nd bit off to workaround bugs in other peoples code + * (if configuration requests it). + */ + if (mask_high_bit) { + nodeid &= 0x7FFFFFFF; + } + boundto->nodeid = nodeid; + } res = 0; break; /* for */ }