[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