|
@@ -1732,17 +1732,17 @@ static int verify_hello(struct ceph_connection *con)
|
|
|
|
|
|
static bool addr_is_blank(struct sockaddr_storage *ss)
|
|
static bool addr_is_blank(struct sockaddr_storage *ss)
|
|
{
|
|
{
|
|
|
|
+ struct in_addr *addr = &((struct sockaddr_in *)ss)->sin_addr;
|
|
|
|
+ struct in6_addr *addr6 = &((struct sockaddr_in6 *)ss)->sin6_addr;
|
|
|
|
+
|
|
switch (ss->ss_family) {
|
|
switch (ss->ss_family) {
|
|
case AF_INET:
|
|
case AF_INET:
|
|
- return ((struct sockaddr_in *)ss)->sin_addr.s_addr == 0;
|
|
|
|
|
|
+ return addr->s_addr == htonl(INADDR_ANY);
|
|
case AF_INET6:
|
|
case AF_INET6:
|
|
- return
|
|
|
|
- ((struct sockaddr_in6 *)ss)->sin6_addr.s6_addr32[0] == 0 &&
|
|
|
|
- ((struct sockaddr_in6 *)ss)->sin6_addr.s6_addr32[1] == 0 &&
|
|
|
|
- ((struct sockaddr_in6 *)ss)->sin6_addr.s6_addr32[2] == 0 &&
|
|
|
|
- ((struct sockaddr_in6 *)ss)->sin6_addr.s6_addr32[3] == 0;
|
|
|
|
|
|
+ return ipv6_addr_any(addr6);
|
|
|
|
+ default:
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
- return false;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
static int addr_port(struct sockaddr_storage *ss)
|
|
static int addr_port(struct sockaddr_storage *ss)
|