summaryrefslogtreecommitdiff
path: root/src/devices/nm-device.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/nm-device.c')
-rw-r--r--src/devices/nm-device.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 334912b058..8fe3e5776f 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -7566,15 +7566,23 @@ ip_config_merge_and_apply (NMDevice *self,
}
if (!IS_IPv4) {
+ const NMPlatformLink *link;
NMUtilsIPv6IfaceId iid;
+ NMPlatform *platform;
+ int ifindex;
if ( commit
&& priv->ndisc_started
&& ip6_addr_gen_token
&& nm_utils_ipv6_interface_identifier_get_from_token (&iid, ip6_addr_gen_token)) {
- nm_platform_link_set_ipv6_token (nm_device_get_platform (self),
- nm_device_get_ip_ifindex (self),
- iid);
+ platform = nm_device_get_platform (self);
+ ifindex = nm_device_get_ip_ifindex (self);
+ link = nm_platform_link_get (platform, ifindex);
+
+ if (link && link->inet6_token.id == iid.id)
+ _LOGT (LOGD_DEVICE | LOGD_IP6, "token %s already set", ip6_addr_gen_token);
+ else
+ nm_platform_link_set_ipv6_token (platform, ifindex, iid);
}
}