summaryrefslogtreecommitdiff
path: root/source3/utils/net_dns.c
diff options
context:
space:
mode:
authorGerald (Jerry) Carter <jerry@samba.org>2008-10-03 10:51:54 -0500
committerGerald (Jerry) Carter <jerry@samba.org>2008-10-03 10:51:54 -0500
commitc7625979ceb350d90d87d2add6ed7156440072c3 (patch)
tree9e0d9111b4c567a26e6a392b975e30e379a7cb5b /source3/utils/net_dns.c
parent8e1d93e6a692676744c267dfd0d95802ff036a5f (diff)
downloadsamba-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/utils/net_dns.c')
-rw-r--r--source3/utils/net_dns.c25
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;