about summary refs log tree commit diff
path: root/src/platform
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2018-06-04 00:08:31 +0200
committerMichael Biebl <biebl@debian.org>2018-06-04 00:08:31 +0200
commit0dd9df69fdbd475c48a0c8d5b0a1882550fe7321 (patch)
tree249cf25643b1fe408e10679bb61613bc6540e894 /src/platform
parent2e94a3b93171ab3fb95bf689aab1664d23988809 (diff)
parent04bc9e1cd3544445d883ad29ea108c1645c8e7b7 (diff)
Update upstream source from tag 'upstream/1.11.4'
Update to upstream version '1.11.4'
with Debian dir d0638aa2e32d5bae4e8daa021b9a66b7c4d6647e
Diffstat (limited to 'src/platform')
-rw-r--r--src/platform/nm-linux-platform.c5
-rw-r--r--src/platform/nm-platform-utils.h3
-rw-r--r--src/platform/nm-platform.c45
-rw-r--r--src/platform/nm-platform.h3
-rw-r--r--src/platform/nmp-object.c1
-rw-r--r--src/platform/tests/test-common.c6
-rw-r--r--src/platform/tests/test-general.c1
-rw-r--r--src/platform/tests/test-link.c12
-rw-r--r--src/platform/wifi/wifi-utils-nl80211.c8
-rw-r--r--src/platform/wifi/wifi-utils.h1
10 files changed, 48 insertions, 37 deletions
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index 0ed8fa06..3a671acf 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -181,7 +181,6 @@ G_STATIC_ASSERT (RTA_MAX == (__RTA_MAX - 1));
 #define _NMLOG2(level, ...)               _LOG     (       level, _NMLOG2_DOMAIN, NULL,     __VA_ARGS__)
 #define _NMLOG2_err(errsv, level, ...)    _LOG_err (errsv, level, _NMLOG2_DOMAIN, NULL,     __VA_ARGS__)
 
-
 #define _LOG_print(__level, __domain, __errsv, self, ...) \
     G_STMT_START { \
         char __prefix[32]; \
@@ -226,7 +225,6 @@ G_STATIC_ASSERT (RTA_MAX == (__RTA_MAX - 1));
         } \
     } G_STMT_END
 
-
 #define LOG_FMT_IP_TUNNEL "adding %s '%s' parent %u local %s remote %s"
 
 /******************************************************************
@@ -1536,7 +1534,6 @@ _parse_lnk_vlan (const char *kind, struct nlattr *info_data)
 	                                 &obj->_lnk_vlan.n_egress_qos_map))
 		return NULL;
 
-
 	obj_result = obj;
 	obj = NULL;
 	return obj_result;
@@ -6983,7 +6980,7 @@ handle_udev_event (NMUdevClient *udev_client,
 	seqnum = udev_device_get_seqnum (udevice);
 	_LOGD ("UDEV event: action '%s' subsys '%s' device '%s' (%s); seqnum=%" G_GUINT64_FORMAT,
 	        action, subsys, udev_device_get_sysname (udevice),
-	        ifindex ? ifindex : "unknown", seqnum);
+	        ifindex ?: "unknown", seqnum);
 
 	if (NM_IN_STRSET (action, "add", "move"))
 		udev_device_added (platform, udevice);
diff --git a/src/platform/nm-platform-utils.h b/src/platform/nm-platform-utils.h
index ea25470e..97f5630a 100644
--- a/src/platform/nm-platform-utils.h
+++ b/src/platform/nm-platform-utils.h
@@ -24,7 +24,6 @@
 #include "nm-platform.h"
 #include "nm-setting-wired.h"
 
-
 const char *nmp_utils_ethtool_get_driver (int ifindex);
 gboolean nmp_utils_ethtool_supports_carrier_detect (int ifindex);
 gboolean nmp_utils_ethtool_supports_vlans (int ifindex);
@@ -60,10 +59,8 @@ gboolean  nmp_utils_ethtool_get_permanent_address (int ifindex,
                                                    guint8 *buf,
                                                    size_t *length);
 
-
 gboolean nmp_utils_mii_supports_carrier_detect (int ifindex);
 
-
 struct udev_device;
 
 const char *nmp_utils_udev_get_driver (struct udev_device *udevice);
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
index 84d862d2..1a94ce28 100644
--- a/src/platform/nm-platform.c
+++ b/src/platform/nm-platform.c
@@ -2396,7 +2396,6 @@ nm_platform_link_infiniband_delete (NMPlatform *self,
 	return _infiniband_add_add_or_delete (self, parent, p_key, FALSE, NULL);
 }
 
-
 gboolean
 nm_platform_link_infiniband_get_properties (NMPlatform *self,
                                             int ifindex,
@@ -3596,6 +3595,25 @@ delete_and_next2:
 	return TRUE;
 }
 
+static guint
+ip6_address_scope_priority (const struct in6_addr *addr)
+{
+	if (IN6_IS_ADDR_LINKLOCAL (addr))
+		return 1;
+	if (IN6_IS_ADDR_SITELOCAL (addr))
+		return 2;
+	return 3;
+}
+
+static gint
+ip6_address_scope_cmp (gconstpointer a, gconstpointer b)
+{
+	const NMPlatformIP6Address *x = NMP_OBJECT_CAST_IP6_ADDRESS (*(const void **) a);
+	const NMPlatformIP6Address *y = NMP_OBJECT_CAST_IP6_ADDRESS (*(const void **) b);
+
+	return ip6_address_scope_priority (&x->address) - ip6_address_scope_priority (&y->address);
+}
+
 /**
  * nm_platform_ip6_address_sync:
  * @self: platform instance
@@ -3629,6 +3647,13 @@ nm_platform_ip6_address_sync (NMPlatform *self,
 	NMPLookup lookup;
 	guint32 ifa_flags;
 
+	/* The order we want to enforce is only among addresses with the same
+	 * scope, as the kernel keeps addresses sorted by scope. Therefore,
+	 * apply the same sorting to known addresses, so that we don't try to
+	 * unnecessary change the order of addresses with different scopes. */
+	if (known_addresses)
+		g_ptr_array_sort (known_addresses, ip6_address_scope_cmp);
+
 	if (!_addr_array_clean_expired (AF_INET6, ifindex, known_addresses, now, &known_addresses_idx))
 		known_addresses = NULL;
 
@@ -4019,6 +4044,7 @@ sync_route_add:
 						nmp_object_stackinit (&oo,
 						                      NMP_OBJECT_TYPE_IP4_ROUTE,
 						                      &((NMPlatformIP4Route) {
+						                          .ifindex = r->ifindex,
 						                          .network = r->gateway,
 						                          .plen = 32,
 						                          .metric = r->metric,
@@ -4031,6 +4057,7 @@ sync_route_add:
 						nmp_object_stackinit (&oo,
 						                      NMP_OBJECT_TYPE_IP6_ROUTE,
 						                      &((NMPlatformIP6Route) {
+						                          .ifindex = r->ifindex,
 						                          .network = r->gateway,
 						                          .plen = 128,
 						                          .metric = r->metric,
@@ -4651,7 +4678,6 @@ nm_platform_qdisc_sync (NMPlatform *self,
 	                                                                ifindex),
 	                                        NULL, NULL);
 
-
 	if (plat_qdiscs) {
 		for (i = 0; i < plat_qdiscs->len; i++) {
 			const NMPObject *q = g_ptr_array_index (plat_qdiscs, i);
@@ -4717,7 +4743,6 @@ nm_platform_tfilter_sync (NMPlatform *self,
 	                                                                  ifindex),
 	                                          NULL, NULL);
 
-
 	if (plat_tfilters) {
 		for (i = 0; i < plat_tfilters->len; i++) {
 			const NMPObject *q = g_ptr_array_index (plat_tfilters, i);
@@ -4786,7 +4811,6 @@ _lifetime_to_string (guint32 timestamp, guint32 lifetime, gint32 now, char *buf,
 	return buf;
 }
 
-
 static const char *
 _lifetime_summary_to_string (gint32 now, guint32 timestamp, guint32 preferred, guint32 lifetime, char *buf, size_t buf_size)
 {
@@ -4884,11 +4908,11 @@ nm_platform_link_to_string (const NMPlatformLink *link, char *buf, gsize len)
 	            link->inet6_addr_gen_mode_inv ? " addrgenmode " : "",
 	            link->inet6_addr_gen_mode_inv ? nm_platform_link_inet6_addrgenmode2str (_nm_platform_uint8_inv (link->inet6_addr_gen_mode_inv), str_addrmode, sizeof (str_addrmode)) : "",
 	            str_addr ? " addr " : "",
-	            str_addr ? str_addr : "",
+	            str_addr ?: "",
 	            link->inet6_token.id ? " inet6token " : "",
 	            link->inet6_token.id ? nm_utils_inet6_interface_identifier_to_token (link->inet6_token, str_inet6_token) : "",
 	            link->driver ? " driver " : "",
-	            link->driver ? link->driver : "",
+	            link->driver ?: "",
 	            link->rx_packets, link->rx_bytes,
 	            link->tx_packets, link->tx_bytes);
 	g_string_free (str_flags, TRUE);
@@ -5300,7 +5324,7 @@ nm_platform_ip4_address_to_string (const NMPlatformIP4Address *address, char *bu
 		str_label[0] = 0;
 
 	str_lft_p = _lifetime_to_string (address->timestamp,
-	                                 address->lifetime ? address->lifetime : NM_PLATFORM_LIFETIME_PERMANENT,
+	                                 address->lifetime ?: NM_PLATFORM_LIFETIME_PERMANENT,
 	                                 now, str_lft, sizeof (str_lft)),
 	str_pref_p = (address->lifetime == address->preferred)
 	             ? str_lft_p
@@ -5312,7 +5336,7 @@ nm_platform_ip4_address_to_string (const NMPlatformIP4Address *address, char *bu
 	g_snprintf (buf, len,
 	            "%s/%d lft %s pref %s%s%s%s%s%s src %s",
 	            s_address, address->plen, str_lft_p, str_pref_p, str_time_p,
-	            str_peer ? str_peer : "",
+	            str_peer ?: "",
 	            str_dev,
 	            _to_string_ifa_flags (address->n_ifa_flags, s_flags, sizeof (s_flags)),
 	            str_label,
@@ -5407,7 +5431,7 @@ nm_platform_ip6_address_to_string (const NMPlatformIP6Address *address, char *bu
 	_to_string_dev (NULL, address->ifindex, str_dev, sizeof (str_dev));
 
 	str_lft_p = _lifetime_to_string (address->timestamp,
-	                                 address->lifetime ? address->lifetime : NM_PLATFORM_LIFETIME_PERMANENT,
+	                                 address->lifetime ?: NM_PLATFORM_LIFETIME_PERMANENT,
 	                                 now, str_lft, sizeof (str_lft)),
 	str_pref_p = (address->lifetime == address->preferred)
 	             ? str_lft_p
@@ -5419,7 +5443,7 @@ nm_platform_ip6_address_to_string (const NMPlatformIP6Address *address, char *bu
 	g_snprintf (buf, len,
 	            "%s/%d lft %s pref %s%s%s%s%s src %s",
 	            s_address, address->plen, str_lft_p, str_pref_p, str_time_p,
-	            str_peer ? str_peer : "",
+	            str_peer ?: "",
 	            str_dev,
 	            _to_string_ifa_flags (address->n_ifa_flags, s_flags, sizeof (s_flags)),
 	            nmp_utils_ip_config_source_to_string (address->addr_source, s_source, sizeof (s_source)));
@@ -5492,7 +5516,6 @@ nm_platform_ip4_route_to_string (const NMPlatformIP4Route *route, char *buf, gsi
 
 	_to_string_dev (NULL, route->ifindex, str_dev, sizeof (str_dev));
 
-
 	g_snprintf (buf, len,
 	            "%s" /* table */
 	            "%s/%d"
diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h
index e6cef63b..2d2bfaab 100644
--- a/src/platform/nm-platform.h
+++ b/src/platform/nm-platform.h
@@ -375,7 +375,6 @@ typedef union {
 
 #undef __NMPlatformIPAddress_COMMON
 
-
 /* Default value for adding an IPv4 route. This is also what iproute2 does.
  * Note that contrary to IPv6, you can add routes with metric 0 and it is even
  * the default.
@@ -471,7 +470,6 @@ typedef union {
 	\
 	/*end*/
 
-
 typedef struct {
 	__NMPlatformIPRoute_COMMON;
 	union {
@@ -595,7 +593,6 @@ typedef struct {
 
 #undef __NMPlatformObject_COMMON
 
-
 typedef struct {
 	gboolean is_ip4;
 	NMPObjectType obj_type;
diff --git a/src/platform/nmp-object.c b/src/platform/nmp-object.c
index 29bb999b..50e6825b 100644
--- a/src/platform/nmp-object.c
+++ b/src/platform/nmp-object.c
@@ -2387,7 +2387,6 @@ out:
 	return ops_type;
 }
 
-
 NMPCacheOpsType
 nmp_cache_update_link_udev (NMPCache *cache,
                             int ifindex,
diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c
index 7885c083..42569d5b 100644
--- a/src/platform/tests/test-common.c
+++ b/src/platform/tests/test-common.c
@@ -28,7 +28,7 @@
 #include "test-common.h"
 
 #define SIGNAL_DATA_FMT "'%s-%s' ifindex %d%s%s%s (%d times received)"
-#define SIGNAL_DATA_ARG(data) (data)->name, nm_platform_signal_change_type_to_string ((data)->change_type), (data)->ifindex, (data)->ifname ? " ifname '" : "", (data)->ifname ? (data)->ifname : "", (data)->ifname ? "'" : "", (data)->received_count
+#define SIGNAL_DATA_ARG(data) (data)->name, nm_platform_signal_change_type_to_string ((data)->change_type), (data)->ifindex, (data)->ifname ? " ifname '" : "", (data)->ifname ?: "", (data)->ifname ? "'" : "", (data)->received_count
 
 int NMTSTP_ENV1_IFINDEX = -1;
 int NMTSTP_ENV1_EX = -1;
@@ -1258,7 +1258,7 @@ nmtstp_link_gre_add (NMPlatform *platform,
 
 		success = !nmtstp_run_command ("ip tunnel add %s mode gre %s local %s remote %s ttl %u tos %02x %s",
 		                                name,
-		                                dev ? dev : "",
+		                                dev ?: "",
 		                                nm_utils_inet4_ntop (lnk->local, NULL),
 		                                nm_utils_inet4_ntop (lnk->remote, buffer),
 		                                lnk->ttl,
@@ -1568,7 +1568,7 @@ nmtstp_link_vxlan_add (NMPlatform *platform,
 		err = nmtstp_run_command ("ip link add %s type vxlan id %u %s local %s group %s ttl %u tos %02x dstport %u srcport %u %u ageing %u",
 		                          name,
 		                          lnk->id,
-		                          dev ? dev : "",
+		                          dev ?: "",
 		                          local,
 		                          remote,
 		                          lnk->ttl,
diff --git a/src/platform/tests/test-general.c b/src/platform/tests/test-general.c
index 342aa0d6..8708c80f 100644
--- a/src/platform/tests/test-general.c
+++ b/src/platform/tests/test-general.c
@@ -27,7 +27,6 @@
 
 #include "nm-test-utils-core.h"
 
-
 /*****************************************************************************/
 
 static void
diff --git a/src/platform/tests/test-link.c b/src/platform/tests/test-link.c
index dcd600ee..cd5880e3 100644
--- a/src/platform/tests/test-link.c
+++ b/src/platform/tests/test-link.c
@@ -1070,6 +1070,14 @@ test_software_detect (gconstpointer user_data)
 			if (lnk)
 				g_assert (memcmp (plnk, &lnk_tun2, sizeof (NMPlatformLnkTun)) == 0);
 
+			if (i_step == 0) {
+				/* Before we upped the device for the first time the kernel didn't notify
+				 * us of the owner set after the link creation:
+				 * https://bugzilla.redhat.com/show_bug.cgi?id=1566062
+				 */
+				break;
+			}
+
 			g_assert (nm_platform_lnk_tun_cmp (plnk, &lnk_tun) == 0);
 			break;
 		}
@@ -1513,7 +1521,6 @@ test_vlan_set_xgress (void)
 		                              6, 7);
 	}
 
-
 	{
 		const NMVlanQosMapping ingress_map[] = {
 			{ .from = 1, .to = 5 },
@@ -1826,14 +1833,12 @@ test_nl_bugs_veth (void)
 	}
 	g_assert_cmpint (pllink_veth0->parent, ==, ifindex_veth1);
 
-
 	/* The following tests whether we have a workaround for kernel bug
 	 * https://bugzilla.redhat.com/show_bug.cgi?id=1285827 in place. */
 	pllink_veth1 = nm_platform_link_get (NM_PLATFORM_GET, ifindex_veth1);
 	g_assert (pllink_veth1);
 	g_assert_cmpint (pllink_veth1->parent, ==, ifindex_veth0);
 
-
 	/* move one veth peer to another namespace and check that the
 	 * parent/IFLA_LINK of the remaining peer properly updates
 	 * (https://bugzilla.redhat.com/show_bug.cgi?id=1262908). */
@@ -2381,7 +2386,6 @@ test_netns_push (gpointer fixture, gconstpointer test_data)
 			g_assert_not_reached ();
 	}
 
-
 	for (i = nstack; i >= 1; ) {
 		i--;
 		nmp_netns_pop (nm_platform_netns_get (stack[i].pl->platform));
diff --git a/src/platform/wifi/wifi-utils-nl80211.c b/src/platform/wifi/wifi-utils-nl80211.c
index db187a1f..767e23a9 100644
--- a/src/platform/wifi/wifi-utils-nl80211.c
+++ b/src/platform/wifi/wifi-utils-nl80211.c
@@ -250,8 +250,7 @@ wifi_nl80211_set_mode (WifiData *data, const NM80211Mode mode)
 	err = nl80211_send_and_recv (nl80211, msg, NULL, NULL);
 	return err >= 0;
 
- nla_put_failure:
-	nlmsg_free (msg);
+nla_put_failure:
 	return FALSE;
 }
 
@@ -269,7 +268,6 @@ wifi_nl80211_set_powersave (WifiData *data, guint32 powersave)
 	return err >= 0;
 
 nla_put_failure:
-	nlmsg_free (msg);
 	return FALSE;
 }
 
@@ -542,8 +540,7 @@ nl80211_get_ap_info (WifiDataNl80211 *nl80211,
 
 	return;
 
- nla_put_failure:
-	nlmsg_free (msg);
+nla_put_failure:
 	return;
 }
 
@@ -597,7 +594,6 @@ wifi_nl80211_indicate_addressing_running (WifiData *data, gboolean running)
 	return err >= 0;
 
 nla_put_failure:
-	nlmsg_free (msg);
 	return FALSE;
 }
 
diff --git a/src/platform/wifi/wifi-utils.h b/src/platform/wifi/wifi-utils.h
index 2633e965..8acc35fc 100644
--- a/src/platform/wifi/wifi-utils.h
+++ b/src/platform/wifi/wifi-utils.h
@@ -66,7 +66,6 @@ gboolean wifi_utils_get_wowlan (WifiData *data);
 
 gboolean wifi_utils_set_powersave (WifiData *data, guint32 powersave);
 
-
 /* OLPC Mesh-only functions */
 guint32 wifi_utils_get_mesh_channel (WifiData *data);