mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-20 21:00:07 +01:00
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.
This commit is contained in:
parent
803a79f778
commit
0a0bca9c7f
2 changed files with 7 additions and 4 deletions
|
|
@ -5717,8 +5717,6 @@ END_ADD_DEFAULT_ROUTE:
|
||||||
priv->default_route.v6_has = _device_get_default_route_from_platform (self, AF_INET6, (NMPlatformIPRoute *) &priv->default_route.v6);
|
priv->default_route.v6_has = _device_get_default_route_from_platform (self, AF_INET6, (NMPlatformIPRoute *) &priv->default_route.v6);
|
||||||
}
|
}
|
||||||
|
|
||||||
nm_ip6_config_addresses_sort (composite);
|
|
||||||
|
|
||||||
/* Allow setting MTU etc */
|
/* Allow setting MTU etc */
|
||||||
if (commit) {
|
if (commit) {
|
||||||
NMUtilsIPv6IfaceId iid;
|
NMUtilsIPv6IfaceId iid;
|
||||||
|
|
|
||||||
|
|
@ -2066,6 +2066,7 @@ get_property (GObject *object, guint prop_id,
|
||||||
case PROP_ADDRESSES:
|
case PROP_ADDRESSES:
|
||||||
{
|
{
|
||||||
GVariantBuilder array_builder, addr_builder;
|
GVariantBuilder array_builder, addr_builder;
|
||||||
|
gs_unref_array GArray *new = NULL;
|
||||||
const struct in6_addr *gateway;
|
const struct in6_addr *gateway;
|
||||||
guint naddr, i;
|
guint naddr, i;
|
||||||
|
|
||||||
|
|
@ -2076,10 +2077,14 @@ get_property (GObject *object, guint prop_id,
|
||||||
|
|
||||||
naddr = nm_ip6_config_get_num_addresses (config);
|
naddr = nm_ip6_config_get_num_addresses (config);
|
||||||
gateway = nm_ip6_config_get_gateway (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}"));
|
g_variant_builder_init (&array_builder, G_VARIANT_TYPE ("aa{sv}"));
|
||||||
for (i = 0; i < naddr; i++) {
|
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_init (&addr_builder, G_VARIANT_TYPE ("a{sv}"));
|
||||||
g_variant_builder_add (&addr_builder, "{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)"));
|
g_variant_builder_init (&array_builder, G_VARIANT_TYPE ("a(ayuay)"));
|
||||||
for (i = 0; i < naddr; i++) {
|
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_builder_add (&array_builder, "(@ayu@ay)",
|
||||||
g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE,
|
g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue