summaryrefslogtreecommitdiff
path: root/libnm-core/nm-utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-core/nm-utils.c')
-rw-r--r--libnm-core/nm-utils.c38
1 files changed, 18 insertions, 20 deletions
diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c
index 9ccb107c61..f1f5a9e8ca 100644
--- a/libnm-core/nm-utils.c
+++ b/libnm-core/nm-utils.c
@@ -1228,14 +1228,12 @@ nm_utils_ip4_addresses_from_variant (GVariant *value, char **out_gateway)
}
addr = nm_ip_address_new_binary (AF_INET, &addr_array[0], addr_array[1], &error);
- if (addresses->len == 0 && out_gateway) {
- if (addr_array[2])
- *out_gateway = g_strdup (nm_utils_inet4_ntop (addr_array[2], NULL));
- }
-
- if (addr)
+ if (addr) {
g_ptr_array_add (addresses, addr);
- else {
+
+ if (addr_array[2] && out_gateway && !*out_gateway)
+ *out_gateway = g_strdup (nm_utils_inet4_ntop (addr_array[2], NULL));
+ } else {
g_warning ("Ignoring invalid IP4 address: %s", error->message);
g_clear_error (&error);
}
@@ -1586,21 +1584,21 @@ nm_utils_ip6_addresses_from_variant (GVariant *value, char **out_gateway)
goto next;
}
- if (addresses->len == 0 && out_gateway) {
- gateway_bytes = g_variant_get_fixed_array (gateway_var, &gateway_len, 1);
- if (gateway_len != 16) {
- g_warning ("%s: ignoring invalid IP6 address of length %d",
- __func__, (int) gateway_len);
- goto next;
- }
- if (!IN6_IS_ADDR_UNSPECIFIED (gateway_bytes))
- *out_gateway = g_strdup (nm_utils_inet6_ntop (gateway_bytes, NULL));
- }
-
addr = nm_ip_address_new_binary (AF_INET6, addr_bytes, prefix, &error);
- if (addr)
+ if (addr) {
g_ptr_array_add (addresses, addr);
- else {
+
+ if (out_gateway && !*out_gateway) {
+ gateway_bytes = g_variant_get_fixed_array (gateway_var, &gateway_len, 1);
+ if (gateway_len != 16) {
+ g_warning ("%s: ignoring invalid IP6 address of length %d",
+ __func__, (int) gateway_len);
+ goto next;
+ }
+ if (!IN6_IS_ADDR_UNSPECIFIED (gateway_bytes))
+ *out_gateway = g_strdup (nm_utils_inet6_ntop (gateway_bytes, NULL));
+ }
+ } else {
g_warning ("Ignoring invalid IP4 address: %s", error->message);
g_clear_error (&error);
}