diff options
Diffstat (limited to 'src/platform')
| -rw-r--r-- | src/platform/nm-linux-platform.c | 5 | ||||
| -rw-r--r-- | src/platform/nm-platform-utils.h | 3 | ||||
| -rw-r--r-- | src/platform/nm-platform.c | 45 | ||||
| -rw-r--r-- | src/platform/nm-platform.h | 3 | ||||
| -rw-r--r-- | src/platform/nmp-object.c | 1 | ||||
| -rw-r--r-- | src/platform/tests/test-common.c | 6 | ||||
| -rw-r--r-- | src/platform/tests/test-general.c | 1 | ||||
| -rw-r--r-- | src/platform/tests/test-link.c | 12 | ||||
| -rw-r--r-- | src/platform/wifi/wifi-utils-nl80211.c | 8 | ||||
| -rw-r--r-- | src/platform/wifi/wifi-utils.h | 1 |
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); |