summaryrefslogtreecommitdiff
path: root/source3/libsmb/dsgetdcname.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2007-10-29 13:34:00 -0700
committerJeremy Allison <jra@samba.org>2007-10-29 13:34:00 -0700
commite2d0526c9799a75f87bbbe24f2e5a268df89fea9 (patch)
tree27527f08d76ecf5b1f018c99763054d2c3577c46 /source3/libsmb/dsgetdcname.c
parent6ca0d8124c26edec1d9232d7380c4b66a2915cad (diff)
downloadsamba-e2d0526c9799a75f87bbbe24f2e5a268df89fea9.tar.gz
samba-e2d0526c9799a75f87bbbe24f2e5a268df89fea9.tar.bz2
samba-e2d0526c9799a75f87bbbe24f2e5a268df89fea9.zip
Change our DNS code to cope with AAAA records. A6 records
look like a nightmare to use, so ignore them for now. Jeremy. (This used to be commit 814daded90781dc5a5bdd522ea8cfe5d47e6d7a7)
Diffstat (limited to 'source3/libsmb/dsgetdcname.c')
-rw-r--r--source3/libsmb/dsgetdcname.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/source3/libsmb/dsgetdcname.c b/source3/libsmb/dsgetdcname.c
index bffbd0f8dc..f6c3273084 100644
--- a/source3/libsmb/dsgetdcname.c
+++ b/source3/libsmb/dsgetdcname.c
@@ -27,7 +27,7 @@
#define DSGETDCNAME_CACHE_TTL 60*15
struct ip_service_name {
- struct in_addr ip;
+ struct sockaddr_storage ss;
unsigned port;
const char *hostname;
};
@@ -625,8 +625,8 @@ static NTSTATUS discover_dc_dns(TALLOC_CTX *mem_ctx,
/* If we don't have an IP list for a name, lookup it up */
- if (!dcs[i].ips) {
- r->ip = *interpret_addr2(dcs[i].hostname);
+ if (!dcs[i].ss_s) {
+ interpret_string_addr(&r->ss, dcs[i].hostname, 0);
i++;
j = 0;
} else {
@@ -638,7 +638,7 @@ static NTSTATUS discover_dc_dns(TALLOC_CTX *mem_ctx,
continue;
}
- r->ip = dcs[i].ips[j];
+ r->ss = dcs[i].ss_s[j];
j++;
}
@@ -650,7 +650,7 @@ static NTSTATUS discover_dc_dns(TALLOC_CTX *mem_ctx,
* back to netbios lookups is that our DNS server doesn't know
* anything about the DC's -- jerry */
- if (!is_zero_ip_v4(r->ip)) {
+ if (!is_zero_addr(&r->ss)) {
(*return_count)++;
continue;
}
@@ -789,8 +789,10 @@ static NTSTATUS process_dc_dns(TALLOC_CTX *mem_ctx,
}
if (flags & DS_IP_REQUIRED) {
+ char addr[INET6_ADDRSTRLEN];
+ print_sockaddr(addr, sizeof(addr), &dclist[i]->ss);
dc_address = talloc_asprintf(mem_ctx, "\\\\%s",
- inet_ntoa(dclist[i]->ip));
+ addr);
dc_address_type = ADS_INET_ADDRESS;
} else {
dc_address = talloc_asprintf(mem_ctx, "\\\\%s",