diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2016-11-18 11:52:56 +0100 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2016-12-05 10:56:51 +0100 |
commit | 0a0bca9c7fad072c31c91f93a9200c83aab37d0c (patch) | |
tree | 410f7e1296b46b3542d113d7a24af7f6d5e75d41 /src/nm-ip6-config.c | |
parent | 803a79f778ddc50d9ec387ab6a01cc5f5418e20f (diff) | |
download | NetworkManager-0a0bca9c7fad072c31c91f93a9200c83aab37d0c.tar.gz |
ip6-config: sort addresses only when reading the property value
Don't change the address order from configuration, but instead sort
addresses just before returning them to clients.
Diffstat (limited to 'src/nm-ip6-config.c')
-rw-r--r-- | src/nm-ip6-config.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c index 8b866a8fa2..661d4377b6 100644 --- a/src/nm-ip6-config.c +++ b/src/nm-ip6-config.c @@ -2066,6 +2066,7 @@ get_property (GObject *object, guint prop_id, case PROP_ADDRESSES: { GVariantBuilder array_builder, addr_builder; + gs_unref_array GArray *new = NULL; const struct in6_addr *gateway; guint naddr, i; @@ -2076,10 +2077,14 @@ get_property (GObject *object, guint prop_id, naddr = nm_ip6_config_get_num_addresses (config); gateway = nm_ip6_config_get_gateway (config); + new = g_array_sized_new (FALSE, FALSE, sizeof (NMPlatformIP6Address), naddr); + g_array_append_vals (new, priv->addresses->data, naddr); + g_array_sort_with_data (new, _addresses_sort_cmp, + GINT_TO_POINTER (priv->privacy)); g_variant_builder_init (&array_builder, G_VARIANT_TYPE ("aa{sv}")); for (i = 0; i < naddr; i++) { - const NMPlatformIP6Address *address = nm_ip6_config_get_address (config, i); + const NMPlatformIP6Address *address = &g_array_index (new, NMPlatformIP6Address, i); g_variant_builder_init (&addr_builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_add (&addr_builder, "{sv}", @@ -2101,7 +2106,7 @@ get_property (GObject *object, guint prop_id, g_variant_builder_init (&array_builder, G_VARIANT_TYPE ("a(ayuay)")); for (i = 0; i < naddr; i++) { - const NMPlatformIP6Address *address = nm_ip6_config_get_address (config, i); + const NMPlatformIP6Address *address = &g_array_index (new, NMPlatformIP6Address, i); g_variant_builder_add (&array_builder, "(@ayu@ay)", g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE, |