summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt3
-rw-r--r--src/common/socket.c6
2 files changed, 6 insertions, 3 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index bc629ffd5..62d4ad2ee 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -3,9 +3,6 @@ Date Added
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
-2008/02/17
- * Made unix interface enumeration work with dynamic sockaddr lengths
- (BSD, for example). Complain if it doesn't compile. (bugreport:765)
2008/02/14
* Removed/replaced all calls to map_getallusers (followup to r12195)
* Trashed @whozeny (from r269) [ultramage]
diff --git a/src/common/socket.c b/src/common/socket.c
index 58c7b6c5e..2dd860715 100644
--- a/src/common/socket.c
+++ b/src/common/socket.c
@@ -1153,6 +1153,8 @@ int socket_getips(uint32* ips, int max)
fd = sSocket(AF_INET, SOCK_STREAM, 0);
+ memset(buf, 0x00, sizeof(buf));
+
// The ioctl call will fail with Invalid Argument if there are more
// interfaces than will fit in the buffer
ic.ifc_len = sizeof(buf);
@@ -1173,7 +1175,11 @@ int socket_getips(uint32* ips, int max)
if( ad != INADDR_LOOPBACK && ad != INADDR_ANY )
ips[num++] = (uint32)ad;
}
+ #if (defined(BSD) && BSD >= 199103) || defined(_AIX) || defined(__APPLE__)
pos += ir->ifr_addr.sa_len + sizeof(ir->ifr_name);
+ #else// not AIX or APPLE
+ pos += sizeof(struct ifreq);
+ #endif//not AIX or APPLE
}
}
sClose(fd);