]> xenbits.xensource.com Git - libvirt.git/commitdiff
virSocketAddrGetIpPrefix 0.0.0.0 and :: special cases
authorCédric Bosdonnat <cbosdonnat@suse.com>
Thu, 15 Jan 2015 08:13:09 +0000 (09:13 +0100)
committerCédric Bosdonnat <cbosdonnat@suse.com>
Fri, 16 Jan 2015 09:14:03 +0000 (10:14 +0100)
If 0.0.0.0  or :: address is provided, then the returned prefix should
be 0, for the default address.

src/util/virsocketaddr.c

index c5584af86a59707e9ed51b4faf084c27c19f2e7e..91bcadf5f56e5314d9983d6185a07a04b6026946 100644 (file)
@@ -832,6 +832,12 @@ virSocketAddrGetIpPrefix(const virSocketAddr *address,
          */
         unsigned char octet
             = ntohl(address->data.inet4.sin_addr.s_addr) >> 24;
+
+        /* If address is 0.0.0.0, we surely want to have 0 prefix for
+         * the default route. */
+        if (address->data.inet4.sin_addr.s_addr == 0)
+            return 0;
+
         if ((octet & 0x80) == 0) {
             /* Class A network */
             return 8;
@@ -844,6 +850,8 @@ virSocketAddrGetIpPrefix(const virSocketAddr *address,
         }
         return -1;
     } else if (VIR_SOCKET_ADDR_IS_FAMILY(address, AF_INET6)) {
+        if (address->data.inet6.sin6_addr.s6_addr == 0)
+            return 0;
         return 64;
     }