diff --git a/libnm-core/nm-setting-ip-config.c b/libnm-core/nm-setting-ip-config.c index 43a2dc3fdd..9e3a9fb14c 100644 --- a/libnm-core/nm-setting-ip-config.c +++ b/libnm-core/nm-setting-ip-config.c @@ -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; } }