libnm-core: use utility function in NMIPRoute for getting size of addresses per family
authorThomas Haller <thaller@redhat.com>
Thu, 28 Jan 2016 20:13:48 +0000 (21:13 +0100)
committerThomas Haller <thaller@redhat.com>
Thu, 28 Jan 2016 20:15:59 +0000 (21:15 +0100)
libnm-core/nm-setting-ip-config.c

index 43a2dc3..9e3a9fb 100644 (file)
@@ -63,6 +63,19 @@ const NMUtilsDNSOptionDesc _nm_utils_dns_option_descs[] = {
        { NULL,                                        FALSE,   FALSE }
 };
 
+static int
+_addr_size (int family)
+{
+       switch (family) {
+       case AF_INET:
+               return sizeof (in_addr_t);
+       case AF_INET6:
+               return sizeof (struct in6_addr);
+       default:
+               g_return_val_if_reached (0);
+       }
+}
+
 static char *
 canonicalize_ip (int family, const char *ip, gboolean null_any)
 {
@@ -77,9 +90,7 @@ canonicalize_ip (int family, const char *ip, gboolean null_any)
        g_return_val_if_fail (ret == 1, NULL);
 
        if (null_any) {
-               int addrlen = (family == AF_INET ? sizeof (struct in_addr) : sizeof (struct in6_addr));
-
-               if (!memcmp (addr_bytes, &in6addr_any, addrlen))
+               if (!memcmp (addr_bytes, &in6addr_any, _addr_size (family)))
                        return NULL;
        }
 
@@ -101,9 +112,7 @@ canonicalize_ip_binary (int family, gconstpointer ip, gboolean null_any)
                g_return_val_if_reached (NULL);
        }
        if (null_any) {
-               int addrlen = (family == AF_INET ? sizeof (struct in_addr) : sizeof (struct in6_addr));
-
-               if (!memcmp (ip, &in6addr_any, addrlen))
+               if (!memcmp (ip, &in6addr_any, _addr_size (family)))
                        return NULL;
        }
        return g_strdup (inet_ntop (family, ip, string, sizeof (string)));
@@ -956,8 +965,7 @@ nm_ip_route_get_next_hop_binary (NMIPRoute *route,
                inet_pton (route->family, route->next_hop, next_hop);
                return TRUE;
        } else {
-               memset (next_hop, 0,
-                       route->family == AF_INET ? sizeof (struct in_addr) : sizeof (struct in6_addr));
+               memset (next_hop, 0, _addr_size (route->family));
                return FALSE;
        }
 }