From d6a5476ee7af464a381bbeeec576ee58f3650a43 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 23 Oct 2008 19:53:15 +0200 Subject: Use sockaddr_storage only where we rely on the size, use sockaddr otherwise (to clarify we can also pass in structs smaller than sockaddr_storage, such as sockaddr_in). --- source3/libsmb/namequery.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'source3/libsmb/namequery.c') diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c index 24d7ee1a9c..e6eed8289e 100644 --- a/source3/libsmb/namequery.c +++ b/source3/libsmb/namequery.c @@ -381,16 +381,16 @@ bool name_status_find(const char *q_name, comparison function used by sort_addr_list */ -static int addr_compare(const struct sockaddr_storage *ss1, - const struct sockaddr_storage *ss2) +static int addr_compare(const struct sockaddr *ss1, + const struct sockaddr *ss2) { int max_bits1=0, max_bits2=0; int num_interfaces = iface_count(); int i; /* Sort IPv6 addresses first. */ - if (ss1->ss_family != ss2->ss_family) { - if (ss2->ss_family == AF_INET) { + if (ss1->sa_family != ss2->sa_family) { + if (ss2->sa_family == AF_INET) { return -1; } else { return 1; @@ -408,7 +408,7 @@ static int addr_compare(const struct sockaddr_storage *ss1, size_t len = 0; int bits1, bits2; - if (pss->ss_family != ss1->ss_family) { + if (pss->ss_family != ss1->sa_family) { /* Ignore interfaces of the wrong type. */ continue; } @@ -443,14 +443,14 @@ static int addr_compare(const struct sockaddr_storage *ss1, /* Bias towards directly reachable IPs */ if (iface_local(ss1)) { - if (ss1->ss_family == AF_INET) { + if (ss1->sa_family == AF_INET) { max_bits1 += 32; } else { max_bits1 += 128; } } if (iface_local(ss2)) { - if (ss2->ss_family == AF_INET) { + if (ss2->sa_family == AF_INET) { max_bits2 += 32; } else { max_bits2 += 128; @@ -467,7 +467,7 @@ int ip_service_compare(struct ip_service *ss1, struct ip_service *ss2) { int result; - if ((result = addr_compare(&ss1->ss, &ss2->ss)) != 0) { + if ((result = addr_compare((struct sockaddr *)&ss1->ss, (struct sockaddr *)&ss2->ss)) != 0) { return result; } @@ -521,12 +521,12 @@ static int remove_duplicate_addrs2(struct ip_service *iplist, int count ) /* one loop to remove duplicates */ for ( i=0; iss)) { + if (!is_zero_addr((struct sockaddr *)&r->ss)) { (*return_count)++; } } @@ -1632,8 +1632,8 @@ bool resolve_name(const char *name, /* only return valid addresses for TCP connections */ for (i=0; i