{ 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)
{
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;
}
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)));
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;
}
}