[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-unstable-101-g4d4ab9a

Jeremy Allison jra at samba.org
Wed Oct 24 19:45:15 GMT 2007


The branch, v3-2-test has been updated
       via  4d4ab9aeb9d85b4c98cbf8a8363a9cefecd4b365 (commit)
      from  251bd4ea4cdd0a751ed3b91562272221af148e37 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 4d4ab9aeb9d85b4c98cbf8a8363a9cefecd4b365
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Oct 24 12:44:38 2007 -0700

    Fix for AIX interface code from Kyle Stemen <kstemen at centeris.com>
    Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 source/lib/interfaces.c |   25 ++++++++++++++++---------
 1 files changed, 16 insertions(+), 9 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/lib/interfaces.c b/source/lib/interfaces.c
index ae6c972..ee5d9df 100644
--- a/source/lib/interfaces.c
+++ b/source/lib/interfaces.c
@@ -330,7 +330,9 @@ static int _get_interfaces(struct iface_struct *ifaces, int max_interfaces)
 			continue;
 		}
 
-		strlcpy(ifaces[total].name, iname, sizeof(ifaces[total].name));
+		strlcpy(ifaces[total].name,
+				ifreq.ifr_name,
+				sizeof(ifaces[total].name));
 
 		memcpy(&ifaces[total].ip, &ifreq.ifr_addr,
 				sizeof(struct sockaddr_in));
@@ -444,19 +446,19 @@ static int _get_interfaces(struct iface_struct *ifaces, int max_interfaces)
 				sizeof(struct sockaddr_in));
 
 		if (ifaces[total].flags & IFF_BROADCAST) {
-			if (ioctl(fd, SIOCGIFBRDADDR, &ifr[i]) != 0) {
-				continue;
+			if (ioctl(fd, SIOCGIFBRDADDR, ifr) != 0) {
+				goto next;
 			}
-			memcpy(&ifaces[total].bcast, &ifr[i].ifr_broadaddr,
+			memcpy(&ifaces[total].bcast, &ifr->ifr_broadaddr,
 				sizeof(struct sockaddr_in));
 		} else if (ifaces[total].flags & IFF_POINTOPOINT) {
-			if (ioctl(fd, SIOCGIFDSTADDR, &ifr[i]) != 0) {
-				continue;
+			if (ioctl(fd, SIOCGIFDSTADDR, ifr) != 0) {
+				goto next;
 			}
-			memcpy(&ifaces[total].bcast, &ifr[i].ifr_dstaddr,
+			memcpy(&ifaces[total].bcast, &ifr->ifr_dstaddr,
 				sizeof(struct sockaddr_in));
 		} else {
-			continue;
+			goto next;
 		}
 
 
@@ -532,7 +534,12 @@ static int iface_comp(struct iface_struct *i1, struct iface_struct *i2)
 	}
 #endif
 
-	if (i1->ip.ss_family == AF_INET) {
+	/* AIX uses __ss_family instead of ss_family inside of
+	   sockaddr_storage. Instead of trying to figure out which field to
+	   use, we can just cast it to a sockaddr.
+	 */
+
+	if (((struct sockaddr *)&i1->ip)->sa_family == AF_INET) {
 		struct sockaddr_in *s1 = (struct sockaddr_in *)&i1->ip;
 		struct sockaddr_in *s2 = (struct sockaddr_in *)&i2->ip;
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list