/**
* Check if a struct sockaddr has an unspecified address.
*/
-bool is_zero_addr(const struct sockaddr *pss)
+bool is_zero_addr(const struct sockaddr_storage *pss)
{
#if defined(HAVE_IPV6)
- if (pss->sa_family == AF_INET6) {
+ if (pss->ss_family == AF_INET6) {
const struct in6_addr *pin6 =
&((const struct sockaddr_in6 *)pss)->sin6_addr;
return IN6_IS_ADDR_UNSPECIFIED(pin6);
}
#endif
- if (pss->sa_family == AF_INET) {
+ if (pss->ss_family == AF_INET) {
const struct in_addr *pin = &((const struct sockaddr_in *)pss)->sin_addr;
return is_zero_ip_v4(*pin);
}
bool is_broadcast_addr(const struct sockaddr *pss);
bool is_loopback_ip_v4(struct in_addr ip);
bool is_loopback_addr(const struct sockaddr *pss);
-bool is_zero_addr(const struct sockaddr *pss);
+bool is_zero_addr(const struct sockaddr_storage *pss);
void zero_ip_v4(struct in_addr *ip);
void in_addr_to_sockaddr_storage(struct sockaddr_storage *ss,
struct in_addr ip);
return true;
}
- if (is_zero_addr((struct sockaddr *)&ss) ||
+ if (is_zero_addr(&ss) ||
is_loopback_addr((struct sockaddr *)&ss)) {
return false;
}
*p = 0;
}
- if (!dest_ss || is_zero_addr((struct sockaddr *)dest_ss)) {
+ if (!dest_ss || is_zero_addr(dest_ss)) {
NTSTATUS status =resolve_name_list(frame,
cli->desthost,
name_type,
* back to netbios lookups is that our DNS server doesn't know
* anything about the DC's -- jerry */
- if (!is_zero_addr((struct sockaddr *)(void *)&r->ss)) {
+ if (!is_zero_addr(&r->ss)) {
count++;
continue;
}
/* one loop to remove duplicates */
for ( i=0; i<count; i++ ) {
- if ( is_zero_addr((struct sockaddr *)&iplist[i].ss)) {
+ if ( is_zero_addr(&iplist[i].ss)) {
continue;
}
/* one loop to clean up any holes we left */
/* first ip should never be a zero_ip() */
for (i = 0; i<count; ) {
- if (is_zero_addr((struct sockaddr *)&iplist[i].ss) ) {
+ if (is_zero_addr(&iplist[i].ss) ) {
if (i != count-1) {
memmove(&iplist[i], &iplist[i+1],
(count - i - 1)*sizeof(iplist[i]));
* for falling back to netbios lookups is that our DNS server
* doesn't know anything about the DC's -- jerry */
- if (!is_zero_addr((struct sockaddr *)&r->ss)) {
+ if (!is_zero_addr(&r->ss)) {
(*return_count)++;
}
}
if (prefer_ipv4) {
for (i=0; i<count; i++) {
- if (!is_zero_addr((struct sockaddr *)&ss_list[i].ss) &&
+ if (!is_zero_addr(&ss_list[i].ss) &&
!is_broadcast_addr((struct sockaddr *)&ss_list[i].ss) &&
(ss_list[i].ss.ss_family == AF_INET)) {
*return_ss = ss_list[i].ss;
/* only return valid addresses for TCP connections */
for (i=0; i<count; i++) {
- if (!is_zero_addr((struct sockaddr *)&ss_list[i].ss) &&
+ if (!is_zero_addr(&ss_list[i].ss) &&
!is_broadcast_addr((struct sockaddr *)&ss_list[i].ss)) {
*return_ss = ss_list[i].ss;
SAFE_FREE(ss_list);
/* only return valid addresses for TCP connections */
for (i=0, num_entries = 0; i<count; i++) {
- if (!is_zero_addr((struct sockaddr *)&ss_list[i].ss) &&
+ if (!is_zero_addr(&ss_list[i].ss) &&
!is_broadcast_addr((struct sockaddr *)&ss_list[i].ss)) {
num_entries++;
}
}
for (i=0, num_entries = 0; i<count; i++) {
- if (!is_zero_addr((struct sockaddr *)&ss_list[i].ss) &&
+ if (!is_zero_addr(&ss_list[i].ss) &&
!is_broadcast_addr((struct sockaddr *)&ss_list[i].ss)) {
(*return_ss_arr)[num_entries++] = ss_list[i].ss;
}
/* Remove the entry we've already failed with (should be the PDC). */
for (i = 0; i < count; i++) {
- if (is_zero_addr((struct sockaddr *)&ip_list[i].ss))
+ if (is_zero_addr(&ip_list[i].ss))
continue;
if (name_status_find(domain, 0x1c, 0x20, &ip_list[i].ss, srv_name)) {
struct sockaddr_storage rm_addr;
char addr[INET6_ADDRSTRLEN];
- if ( is_zero_addr((struct sockaddr *)client_ss) ) {
+ if ( is_zero_addr(client_ss) ) {
DEBUG(2,("spoolss_connect_to_client: resolving %s\n",
remote_machine));
if ( !resolve_name( remote_machine, &rm_addr, 0x20, false) ) {
return false;
}
- if (is_zero_addr((struct sockaddr *)&pdc_ss)) {
+ if (is_zero_addr(&pdc_ss)) {
return false;
}
if (!get_pdc_ip(domain_name, server_ss)) {
return false;
}
- if (is_zero_addr((struct sockaddr *)server_ss)) {
+ if (is_zero_addr(server_ss)) {
return false;
}