diff options
| author | Michael Biebl <biebl@debian.org> | 2017-11-07 00:14:39 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2017-11-07 00:14:39 +0100 |
| commit | 90e8691111889a7b5f3c812f5a41f15a8a058913 (patch) | |
| tree | f101a879eca27c34a9bfa5f3da52266b22539a36 /src/nm-dispatcher.c | |
| parent | bdb6eeb0670658255c2a4c3c501c0a27fa8cfe55 (diff) | |
New upstream version 1.9.90 upstream/1.9.90
Diffstat (limited to 'src/nm-dispatcher.c')
| -rw-r--r-- | src/nm-dispatcher.c | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/src/nm-dispatcher.c b/src/nm-dispatcher.c index 0d482e0c..237afdef 100644 --- a/src/nm-dispatcher.c +++ b/src/nm-dispatcher.c @@ -113,6 +113,8 @@ static void dump_ip4_to_props (NMIP4Config *ip4, GVariantBuilder *builder) { GVariantBuilder int_builder; + NMDedupMultiIter ipconf_iter; + gboolean first; guint n, i; const NMPlatformIP4Address *addr; const NMPlatformIP4Route *route; @@ -120,15 +122,20 @@ dump_ip4_to_props (NMIP4Config *ip4, GVariantBuilder *builder) /* Addresses */ g_variant_builder_init (&int_builder, G_VARIANT_TYPE ("aau")); - n = nm_ip4_config_get_num_addresses (ip4); - for (i = 0; i < n; i++) { - addr = nm_ip4_config_get_address (ip4, i); + first = TRUE; + nm_ip_config_iter_ip4_address_for_each (&ipconf_iter, ip4, &addr) { + const NMPObject *default_route; + array[0] = addr->address; array[1] = addr->plen; - array[2] = (i == 0) ? nm_ip4_config_get_gateway (ip4) : 0; + array[2] = ( first + && (default_route = nm_ip4_config_best_default_route_get (ip4))) + ? NMP_OBJECT_CAST_IP4_ROUTE (default_route)->gateway + : (guint32) 0; g_variant_builder_add (&int_builder, "@au", g_variant_new_fixed_array (G_VARIANT_TYPE_UINT32, array, 3, sizeof (guint32))); + first = FALSE; } g_variant_builder_add (builder, "{sv}", "addresses", @@ -163,9 +170,9 @@ dump_ip4_to_props (NMIP4Config *ip4, GVariantBuilder *builder) /* Static routes */ g_variant_builder_init (&int_builder, G_VARIANT_TYPE ("aau")); - n = nm_ip4_config_get_num_routes (ip4); - for (i = 0; i < n; i++) { - route = nm_ip4_config_get_route (ip4, i); + nm_ip_config_iter_ip4_route_for_each (&ipconf_iter, ip4, &route) { + if (NM_PLATFORM_IP_ROUTE_IS_DEFAULT (route)) + continue; array[0] = route->network; array[1] = route->plen; array[2] = route->gateway; @@ -183,25 +190,31 @@ static void dump_ip6_to_props (NMIP6Config *ip6, GVariantBuilder *builder) { GVariantBuilder int_builder; + NMDedupMultiIter ipconf_iter; guint n, i; + gboolean first; const NMPlatformIP6Address *addr; - const struct in6_addr *gw_bytes; const NMPlatformIP6Route *route; GVariant *ip, *gw; /* Addresses */ g_variant_builder_init (&int_builder, G_VARIANT_TYPE ("a(ayuay)")); - n = nm_ip6_config_get_num_addresses (ip6); - for (i = 0; i < n; i++) { - addr = nm_ip6_config_get_address (ip6, i); - gw_bytes = nm_ip6_config_get_gateway (ip6); + + first = TRUE; + nm_ip_config_iter_ip6_address_for_each (&ipconf_iter, ip6, &addr) { + const NMPObject *default_route; + ip = g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE, &addr->address, sizeof (struct in6_addr), 1); gw = g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE, - (i == 0 && gw_bytes) ? gw_bytes : &in6addr_any, + ( first + && (default_route = nm_ip6_config_best_default_route_get (ip6))) + ? &NMP_OBJECT_CAST_IP6_ROUTE (default_route)->gateway + : &in6addr_any, sizeof (struct in6_addr), 1); g_variant_builder_add (&int_builder, "(@ayu@ay)", ip, addr->plen, gw); + first = FALSE; } g_variant_builder_add (builder, "{sv}", "addresses", @@ -231,9 +244,9 @@ dump_ip6_to_props (NMIP6Config *ip6, GVariantBuilder *builder) /* Static routes */ g_variant_builder_init (&int_builder, G_VARIANT_TYPE ("a(ayuayu)")); - n = nm_ip6_config_get_num_routes (ip6); - for (i = 0; i < n; i++) { - route = nm_ip6_config_get_route (ip6, i); + nm_ip_config_iter_ip6_route_for_each (&ipconf_iter, ip6, &route) { + if (NM_PLATFORM_IP_ROUTE_IS_DEFAULT (route)) + continue; ip = g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE, &route->network, sizeof (struct in6_addr), 1); |