summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-02-09 20:48:11 +0100
committerThomas Haller <thaller@redhat.com>2018-02-09 21:07:57 +0100
commit3e9e51f1dda8b142f63fa9eace77e02208fb5113 (patch)
tree6793867c67835b8d9534693e218ad07fa922371a
parentfa41e5852cebb3ba5f6dde880ef792d361cc7fe9 (diff)
downloadNetworkManager-3e9e51f1dda8b142f63fa9eace77e02208fb5113.tar.gz
core: distinguish between IFA_F_SECONDARY and IFA_F_TEMPORARY
While the numerical values of IFA_F_SECONDARY and IFA_F_TEMPORARY are identical, their meaning is not. IFA_F_SECONDARY is only relevant for IPv4 addresses, while IFA_F_TEMPORARY is only relevant for IPv6 addresses. IFA_F_TEMPORARY is automatically set by kernel for the addresses that it generates as part of IFA_F_MANAGETEMPADDR. It cannot be actively set by user-space. IFA_F_SECONDARY is automatically set by kernel depending on the order in which the addresses for the same subnet are added. This essentially reverts 8b4f11927 (core: avoid IFA_F_TEMPORARY alias for IFA_F_SECONDARY).
-rw-r--r--src/devices/nm-device.c4
-rw-r--r--src/nm-ip6-config.c8
-rw-r--r--src/platform/nm-platform.c4
-rw-r--r--src/tests/test-ip6-config.c12
4 files changed, 14 insertions, 14 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 8b99fc0ba8..ae64229cda 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -11569,7 +11569,7 @@ queued_ip6_config_change (gpointer user_data)
NMP_CACHE_ID_TYPE_OBJECT_TYPE,
obj));
if ( addr2
- && ( NM_FLAGS_HAS (addr2->n_ifa_flags, IFA_F_SECONDARY)
+ && ( NM_FLAGS_HAS (addr2->n_ifa_flags, IFA_F_TEMPORARY)
|| !NM_FLAGS_HAS (addr2->n_ifa_flags, IFA_F_DADFAILED))) {
/* the address still/again exists and is not in DADFAILED state. Skip it. */
continue;
@@ -11652,7 +11652,7 @@ device_ipx_changed (NMPlatform *platform,
case NMP_OBJECT_TYPE_IP6_ADDRESS:
addr = platform_object;
- if ( !NM_FLAGS_HAS (addr->n_ifa_flags, IFA_F_SECONDARY)
+ if ( !NM_FLAGS_HAS (addr->n_ifa_flags, IFA_F_TEMPORARY)
&& priv->state > NM_DEVICE_STATE_DISCONNECTED
&& priv->state < NM_DEVICE_STATE_DEACTIVATING
&& ( (change_type == NM_PLATFORM_SIGNAL_CHANGED && addr->n_ifa_flags & IFA_F_DADFAILED)
diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c
index 3fb1c8675a..8d2d9471a4 100644
--- a/src/nm-ip6-config.c
+++ b/src/nm-ip6-config.c
@@ -268,19 +268,19 @@ _addresses_sort_cmp (const NMPlatformIP6Address *a1,
if (p1 != p2)
return p1 > p2 ? -1 : 1;
- ipv6_privacy1 = !!(a1->n_ifa_flags & (IFA_F_MANAGETEMPADDR | IFA_F_SECONDARY));
- ipv6_privacy2 = !!(a2->n_ifa_flags & (IFA_F_MANAGETEMPADDR | IFA_F_SECONDARY));
+ ipv6_privacy1 = !!(a1->n_ifa_flags & (IFA_F_MANAGETEMPADDR | IFA_F_TEMPORARY));
+ ipv6_privacy2 = !!(a2->n_ifa_flags & (IFA_F_MANAGETEMPADDR | IFA_F_TEMPORARY));
if (ipv6_privacy1 || ipv6_privacy2) {
gboolean public1 = TRUE, public2 = TRUE;
if (ipv6_privacy1) {
- if (a1->n_ifa_flags & IFA_F_SECONDARY)
+ if (a1->n_ifa_flags & IFA_F_TEMPORARY)
public1 = prefer_temp;
else
public1 = !prefer_temp;
}
if (ipv6_privacy2) {
- if (a2->n_ifa_flags & IFA_F_SECONDARY)
+ if (a2->n_ifa_flags & IFA_F_TEMPORARY)
public2 = prefer_temp;
else
public2 = !prefer_temp;
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
index 9ac6a646e1..e82c44bef4 100644
--- a/src/platform/nm-platform.c
+++ b/src/platform/nm-platform.c
@@ -3159,7 +3159,7 @@ _addr_array_clean_expired (int addr_family, int ifindex, GPtrArray *array, guint
}
#endif
- if (NM_FLAGS_HAS (a->n_ifa_flags, IFA_F_SECONDARY)) {
+ if (NM_FLAGS_HAS (a->n_ifa_flags, IFA_F_TEMPORARY)) {
/* temporary addresses are never added explicitly by NetworkManager but
* kernel adds them via mngtempaddr flag.
*
@@ -3553,7 +3553,7 @@ nm_platform_ip6_address_sync (NMPlatform *self,
const NMPObject *know_obj;
const NMPlatformIP6Address *plat_addr = NMP_OBJECT_CAST_IP6_ADDRESS (plat_obj);
- if ( NM_FLAGS_HAS (plat_addr->n_ifa_flags, IFA_F_SECONDARY)
+ if ( NM_FLAGS_HAS (plat_addr->n_ifa_flags, IFA_F_TEMPORARY)
|| IN6_IS_ADDR_LINKLOCAL (&plat_addr->address)) {
if (!full_sync) {
/* just mark as handled, without actually deleting the address. */
diff --git a/src/tests/test-ip6-config.c b/src/tests/test-ip6-config.c
index 5a34547278..816a816f0b 100644
--- a/src/tests/test-ip6-config.c
+++ b/src/tests/test-ip6-config.c
@@ -298,9 +298,9 @@ test_nm_ip6_config_addresses_sort (void)
ADDR_ADD("2607:f0d0:1002:51::4", NULL, 64, 0, NM_IP_CONFIG_SOURCE_USER, 0, 0, 0, 0);
ADDR_ADD("2607:f0d0:1002:51::5", NULL, 64, 0, NM_IP_CONFIG_SOURCE_USER, 0, 0, 0, 0);
ADDR_ADD("2607:f0d0:1002:51::6", NULL, 64, 0, NM_IP_CONFIG_SOURCE_NDISC, 0, 0, 0, IFA_F_MANAGETEMPADDR);
- ADDR_ADD("2607:f0d0:1002:51::3", NULL, 64, 0, NM_IP_CONFIG_SOURCE_USER, 0, 0, 0, IFA_F_SECONDARY);
- ADDR_ADD("2607:f0d0:1002:51::8", NULL, 64, 0, NM_IP_CONFIG_SOURCE_USER, 0, 0, 0, IFA_F_SECONDARY);
- ADDR_ADD("2607:f0d0:1002:51::0", NULL, 64, 0, NM_IP_CONFIG_SOURCE_KERNEL, 0, 0, 0, IFA_F_SECONDARY);
+ ADDR_ADD("2607:f0d0:1002:51::3", NULL, 64, 0, NM_IP_CONFIG_SOURCE_USER, 0, 0, 0, IFA_F_TEMPORARY);
+ ADDR_ADD("2607:f0d0:1002:51::8", NULL, 64, 0, NM_IP_CONFIG_SOURCE_USER, 0, 0, 0, IFA_F_TEMPORARY);
+ ADDR_ADD("2607:f0d0:1002:51::0", NULL, 64, 0, NM_IP_CONFIG_SOURCE_KERNEL, 0, 0, 0, IFA_F_TEMPORARY);
ADDR_ADD("fec0::1", NULL, 128, 0, NM_IP_CONFIG_SOURCE_KERNEL, 0, 0, 0, 0);
ADDR_ADD("fe80::208:74ff:feda:625c", NULL, 128, 0, NM_IP_CONFIG_SOURCE_KERNEL, 0, 0, 0, 0);
ADDR_ADD("fe80::208:74ff:feda:625d", NULL, 128, 0, NM_IP_CONFIG_SOURCE_KERNEL, 0, 0, 0, 0);
@@ -311,11 +311,11 @@ test_nm_ip6_config_addresses_sort (void)
test_nm_ip6_config_addresses_sort_check (config, NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_PUBLIC_ADDR, 8);
nm_ip6_config_reset_addresses (config);
- ADDR_ADD("2607:f0d0:1002:51::3", NULL, 64, 0, NM_IP_CONFIG_SOURCE_USER, 0, 0, 0, IFA_F_SECONDARY);
+ ADDR_ADD("2607:f0d0:1002:51::3", NULL, 64, 0, NM_IP_CONFIG_SOURCE_USER, 0, 0, 0, IFA_F_TEMPORARY);
ADDR_ADD("2607:f0d0:1002:51::4", NULL, 64, 0, NM_IP_CONFIG_SOURCE_USER, 0, 0, 0, 0);
ADDR_ADD("2607:f0d0:1002:51::5", NULL, 64, 0, NM_IP_CONFIG_SOURCE_USER, 0, 0, 0, 0);
- ADDR_ADD("2607:f0d0:1002:51::8", NULL, 64, 0, NM_IP_CONFIG_SOURCE_USER, 0, 0, 0, IFA_F_SECONDARY);
- ADDR_ADD("2607:f0d0:1002:51::0", NULL, 64, 0, NM_IP_CONFIG_SOURCE_KERNEL, 0, 0, 0, IFA_F_SECONDARY);
+ ADDR_ADD("2607:f0d0:1002:51::8", NULL, 64, 0, NM_IP_CONFIG_SOURCE_USER, 0, 0, 0, IFA_F_TEMPORARY);
+ ADDR_ADD("2607:f0d0:1002:51::0", NULL, 64, 0, NM_IP_CONFIG_SOURCE_KERNEL, 0, 0, 0, IFA_F_TEMPORARY);
ADDR_ADD("2607:f0d0:1002:51::6", NULL, 64, 0, NM_IP_CONFIG_SOURCE_NDISC, 0, 0, 0, IFA_F_MANAGETEMPADDR);
ADDR_ADD("fec0::1", NULL, 128, 0, NM_IP_CONFIG_SOURCE_KERNEL, 0, 0, 0, 0);
ADDR_ADD("fe80::208:74ff:feda:625c", NULL, 128, 0, NM_IP_CONFIG_SOURCE_KERNEL, 0, 0, 0, 0);