[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openais
Subject:    [Openais] [PATCH corosync/trunk] totemip_iface_check() copies the
From:       "angus salkeld" <angus.salkeld () alliedtelesis ! co ! nz>
Date:       2009-07-21 21:22:17
Message-ID: 4A66DA49020000700001670F () gwia ! alliedtelesyn ! co ! nz
[Download RAW message or body]

This will make it behave more like the bsd/solaris versions

-Angus

Index: exec/totemip.c
===================================================================
--- exec/totemip.c	(revision 2367)
+++ exec/totemip.c	(working copy)
@@ -471,6 +471,7 @@
 			int mask_high_bit)
 {
 	int fd;
+	int res = -1;
 	struct {
                 struct nlmsghdr nlh;
                 struct rtgenmsg g;
@@ -588,17 +589,28 @@
 					/* SIOCGIFFLAGS needs an interface name */
 					status = ioctl(ioctl_fd, SIOCGIFNAME, &ifr);
 					status = ioctl(ioctl_fd, SIOCGIFFLAGS, &ifr);
+					close(ioctl_fd);
 					if (status) {
-						close(ioctl_fd);
-						close(fd);
-						return -1;
+						res = -1;
+						goto finished;
 					}
 
 					if (ifr.ifr_flags & IFF_UP)
 						*interface_up = 1;
 
 					*interface_num = ifa->ifa_index;
-					close(ioctl_fd);
+					/* Mask 32nd bit off to workaround bugs in other peoples code
+					 * (if configuration requests it). */
+					if (ipaddr.family == AF_INET && ipaddr.nodeid == 0) {
+						unsigned int nodeid = 0;
+						memcpy (&nodeid, ipaddr.addr, sizeof (int));
+						if (mask_high_bit) {
+							nodeid &= 0x7FFFFFFF;
+						}
+						ipaddr.nodeid = nodeid;
+					}
+					totemip_copy (boundto, &ipaddr);
+					res = 0;
 					goto finished;
 				}
 			}
@@ -606,21 +618,9 @@
 			h = NLMSG_NEXT(h, status);
 		}
 	}
+	res = -1; /* address not found */
 finished:
-	/*
-	 * Mask 32nd bit off to workaround bugs in other poeples code
-	 * if configuration requests it.
-	 */
-	if (ipaddr.family == AF_INET && ipaddr.nodeid == 0) {
-                unsigned int nodeid = 0;
-                memcpy (&nodeid, ipaddr.addr, sizeof (int));
-		if (mask_high_bit) {
-                        nodeid &= 0x7FFFFFFF;
-		}
-                ipaddr.nodeid = nodeid;
-        }
-	totemip_copy (boundto, &ipaddr);
 	close(fd);
-	return 0;
+	return res;
 }
 #endif /* COROSYNC_LINUX */


_______________________________________________
Openais mailing list
Openais@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/openais
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic