summaryrefslogtreecommitdiff
path: root/source3/lib/interfaces.c
diff options
context:
space:
mode:
authorGerald (Jerry) Carter <jerry@samba.org>2007-11-02 14:16:40 -0400
committerGerald (Jerry) Carter <jerry@samba.org>2007-11-02 14:16:40 -0400
commit8a33035038d176ca3065daf2ff4f1c93464d5e9c (patch)
treedbc3d000567ecded7aeb80fa6eba2d5ea0ffd1fd /source3/lib/interfaces.c
parent7bbdc00545ded27f10e87c5b90345bd96d09dfd2 (diff)
parent414ab2ce46dd62d0119f03eca93783bc489af896 (diff)
downloadsamba-8a33035038d176ca3065daf2ff4f1c93464d5e9c.tar.gz
samba-8a33035038d176ca3065daf2ff4f1c93464d5e9c.tar.bz2
samba-8a33035038d176ca3065daf2ff4f1c93464d5e9c.zip
Merge branch 'v3-2-test' of git://git.samba.org/samba into v3-2-test
(This used to be commit 95de80218c10a72c7b28541c3c2e475e083b68f1)
Diffstat (limited to 'source3/lib/interfaces.c')
-rw-r--r--source3/lib/interfaces.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/source3/lib/interfaces.c b/source3/lib/interfaces.c
index 38abb9299b..01481c50e9 100644
--- a/source3/lib/interfaces.c
+++ b/source3/lib/interfaces.c
@@ -696,6 +696,16 @@ int get_interfaces(struct iface_struct *ifaces, int max_interfaces)
#ifdef AUTOCONF_TEST
/* this is the autoconf driver to test get_interfaces() */
+static socklen_t calc_sa_size(struct sockaddr *psa)
+{
+ socklen_t sl = sizeof(struct sockaddr_in);
+#if defined(HAVE_IPV6)
+ if (psa->sa_family == AF_INET6) {
+ salen = sizeof(struct sockaddr_in6);
+ }
+#endif
+}
+
int main()
{
struct iface_struct ifaces[MAX_INTERFACES];
@@ -710,22 +720,23 @@ int get_interfaces(struct iface_struct *ifaces, int max_interfaces)
for (i=0;i<total;i++) {
char addr[INET6_ADDRSTRLEN];
int ret;
+ socklen_t sl;
printf("%-10s ", ifaces[i].name);
addr[0] = '\0';
ret = getnameinfo((struct sockaddr *)&ifaces[i].ip,
- sizeof(ifaces[i].ip),
+ calc_sa_size(&ifaces[i].ip),
addr, sizeof(addr),
NULL, 0, NI_NUMERICHOST);
printf("IP=%s ", addr);
addr[0] = '\0';
ret = getnameinfo((struct sockaddr *)&ifaces[i].netmask,
- sizeof(ifaces[i].netmask),
+ calc_sa_size(&ifaces[i].netmask),
addr, sizeof(addr),
NULL, 0, NI_NUMERICHOST);
printf("NETMASK=%s ", addr);
addr[0] = '\0';
ret = getnameinfo((struct sockaddr *)&ifaces[i].bcast,
- sizeof(ifaces[i].bcast),
+ calc_sa_size(&ifaces[i].bcast),
addr, sizeof(addr),
NULL, 0, NI_NUMERICHOST);
printf("BCAST=%s\n", addr);