X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=net%2Fceph%2Fmessenger.c;h=e3be1d22a2477dd2d9e271a4594d70ebdb1148e7;hb=c44bd69c0c8cfadf0239437635b2933efb1f6c4c;hp=5c1f98ea6741029afb8ec40e667913dfe8f2a08e;hpb=757856d2b9568a701df9ea6a4be68effbb9d6f44;p=linux-2.6-block.git diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c index 5c1f98ea6741..e3be1d22a247 100644 --- a/net/ceph/messenger.c +++ b/net/ceph/messenger.c @@ -1732,17 +1732,17 @@ static int verify_hello(struct ceph_connection *con) 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) { case AF_INET: - return ((struct sockaddr_in *)ss)->sin_addr.s_addr == 0; + return addr->s_addr == htonl(INADDR_ANY); 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)