diff options
author | Gerald (Jerry) Carter <jerry@samba.org> | 2008-10-03 10:51:54 -0500 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2008-10-03 10:51:54 -0500 |
commit | c7625979ceb350d90d87d2add6ed7156440072c3 (patch) | |
tree | 9e0d9111b4c567a26e6a392b975e30e379a7cb5b /source3 | |
parent | 8e1d93e6a692676744c267dfd0d95802ff036a5f (diff) | |
download | samba-c7625979ceb350d90d87d2add6ed7156440072c3.tar.gz samba-c7625979ceb350d90d87d2add6ed7156440072c3.tar.bz2 samba-c7625979ceb350d90d87d2add6ed7156440072c3.zip |
net_dns: Make "lwinet ads dns register" honor the "interfaces" parameter.
This is helpful on multihomed hosts that only require a subset
of IP addresses be registered with DNS.
Diffstat (limited to 'source3')
-rw-r--r-- | source3/utils/net_dns.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/source3/utils/net_dns.c b/source3/utils/net_dns.c index 14d45e2b0f..46f38d42f6 100644 --- a/source3/utils/net_dns.c +++ b/source3/utils/net_dns.c @@ -150,9 +150,10 @@ int get_my_ip_address( struct sockaddr_storage **pp_ss ) struct sockaddr_storage *list = NULL; int count = 0; - /* find the first non-loopback address from our list of interfaces */ + /* Honor the configured list of interfaces to register */ - n = get_interfaces(nics, MAX_INTERFACES); + load_interfaces(); + n = iface_count(); if (n <= 0) { return -1; @@ -163,19 +164,17 @@ int get_my_ip_address( struct sockaddr_storage **pp_ss ) } for ( i=0; i<n; i++ ) { - if (is_loopback_addr(&nics[i].ip)) { + const struct sockaddr_storage *nic_sa_storage = NULL; + + if ((nic_sa_storage = iface_n_sockaddr_storage(i)) == NULL) + continue; + + /* Don't register loopback addresses */ + if (is_loopback_addr(nic_sa_storage)) { continue; } -#if defined(HAVE_IPV6) - if ((nics[i].ip.ss_family == AF_INET6)) { - memcpy(&list[count++], &nics[i].ip, - sizeof(struct sockaddr_storage)); - } else -#endif - if (nics[i].ip.ss_family == AF_INET) { - memcpy(&list[count++], &nics[i].ip, - sizeof(struct sockaddr_storage)); - } + + memcpy(&list[count++], nic_sa_storage, sizeof(struct sockaddr_storage)); } *pp_ss = list; |