diff options
author | Thomas Haller <thaller@redhat.com> | 2022-06-30 14:20:45 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2022-06-30 14:20:45 +0200 |
commit | cd63708d17608b61ecad133d3897c63bcf4afa4d (patch) | |
tree | b2d2664010babf9f8f04f5d3e11b77a97e26e5df | |
parent | af447c493c67df2e4a81b60d4819fea9cd6c6853 (diff) | |
parent | 5245fc6c75068025b53de9540873bb1ecc2e372c (diff) | |
download | NetworkManager-cd63708d17608b61ecad133d3897c63bcf4afa4d.tar.gz |
platform: merge branch 'th/platform-nmp-object-lookup'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1281
-rw-r--r-- | src/core/NetworkManagerUtils.c | 4 | ||||
-rw-r--r-- | src/core/devices/nm-device.c | 6 | ||||
-rw-r--r-- | src/core/dhcp/nm-dhcp-client.c | 4 | ||||
-rw-r--r-- | src/core/nm-l3-ipv4ll.c | 4 | ||||
-rw-r--r-- | src/core/nm-l3-ipv6ll.c | 4 | ||||
-rw-r--r-- | src/core/nm-l3cfg.c | 4 | ||||
-rw-r--r-- | src/core/platform/tests/test-common.c | 8 | ||||
-rw-r--r-- | src/core/platform/tests/test-nmp-object.c | 4 | ||||
-rw-r--r-- | src/core/platform/tests/test-route.c | 5 | ||||
-rw-r--r-- | src/core/platform/tests/test-tc.c | 9 | ||||
-rw-r--r-- | src/core/tests/test-l3cfg.c | 2 | ||||
-rw-r--r-- | src/libnm-platform/nm-linux-platform.c | 4 | ||||
-rw-r--r-- | src/libnm-platform/nm-platform.c | 12 | ||||
-rw-r--r-- | src/libnm-platform/nmp-object.c | 27 | ||||
-rw-r--r-- | src/libnm-platform/nmp-object.h | 7 |
15 files changed, 55 insertions, 49 deletions
diff --git a/src/core/NetworkManagerUtils.c b/src/core/NetworkManagerUtils.c index 503d52038c..8b0b484583 100644 --- a/src/core/NetworkManagerUtils.c +++ b/src/core/NetworkManagerUtils.c @@ -1694,7 +1694,7 @@ nm_utils_platform_capture_ip_setting(NMPlatform *platform, return NM_SETTING(g_steal_pointer(&s_ip)); } - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4), ifindex); + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4), ifindex); nm_platform_iter_obj_for_each (&iter, platform, &lookup, &obj) { const NMPlatformIPXAddress *address = NMP_OBJECT_CAST_IPX_ADDRESS(obj); nm_auto_unref_ip_address NMIPAddress *s_addr = NULL; @@ -1748,7 +1748,7 @@ nm_utils_platform_capture_ip_setting(NMPlatform *platform, } g_object_set(s_ip, NM_SETTING_IP_CONFIG_METHOD, method, NULL); - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4), ifindex); + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4), ifindex); nm_platform_iter_obj_for_each (&iter, platform, &lookup, &obj) { const NMPlatformIPXRoute *route = NMP_OBJECT_CAST_IPX_ROUTE(obj); nm_auto_unref_ip_route NMIPRoute *s_route = NULL; diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c index c4798a5023..987c43720b 100644 --- a/src/core/devices/nm-device.c +++ b/src/core/devices/nm-device.c @@ -8323,13 +8323,13 @@ device_has_config(NMDevice *self) head_entry = nm_platform_lookup( nm_device_get_platform(self), - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP4_ADDRESS, pllink->ifindex)); + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_IP4_ADDRESS, pllink->ifindex)); if (head_entry) return TRUE; head_entry = nm_platform_lookup( nm_device_get_platform(self), - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP6_ADDRESS, pllink->ifindex)); + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_IP6_ADDRESS, pllink->ifindex)); if (head_entry) return TRUE; @@ -17017,7 +17017,7 @@ get_address_for_hostname_dns_lookup(NMDevice *self, int addr_family) * opposed to an address that is configured? */ head_entry = nm_platform_lookup( nm_device_get_platform(self), - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4), ifindex)); + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4), ifindex)); if (head_entry) { c_list_for_each_entry (iter, &head_entry->lst_entries_head, lst_entries) { diff --git a/src/core/dhcp/nm-dhcp-client.c b/src/core/dhcp/nm-dhcp-client.c index 113a2c904c..d3419cf541 100644 --- a/src/core/dhcp/nm-dhcp-client.c +++ b/src/core/dhcp/nm-dhcp-client.c @@ -1020,7 +1020,9 @@ ipv6_lladdr_find(NMDhcpClient *self) nm_assert(!NM_IS_IPv4(priv->config.addr_family)); l3cfg = priv->config.l3cfg; - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP6_ADDRESS, nm_l3cfg_get_ifindex(l3cfg)); + nmp_lookup_init_object_by_ifindex(&lookup, + NMP_OBJECT_TYPE_IP6_ADDRESS, + nm_l3cfg_get_ifindex(l3cfg)); nm_platform_iter_obj_for_each (&iter, nm_l3cfg_get_platform(l3cfg), &lookup, &obj) { const NMPlatformIP6Address *pladdr = NMP_OBJECT_CAST_IP6_ADDRESS(obj); diff --git a/src/core/nm-l3-ipv4ll.c b/src/core/nm-l3-ipv4ll.c index 2aedab5608..3fc1e165f5 100644 --- a/src/core/nm-l3-ipv4ll.c +++ b/src/core/nm-l3-ipv4ll.c @@ -672,7 +672,9 @@ _ipv4ll_platform_find_addr(NML3IPv4LL *self, const NML3AcdAddrInfo **out_acd_inf const NML3AcdAddrInfo *acd_info; const NMPlatformIP4Address *addr; - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP4_ADDRESS, nm_l3_ipv4ll_get_ifindex(self)); + nmp_lookup_init_object_by_ifindex(&lookup, + NMP_OBJECT_TYPE_IP4_ADDRESS, + nm_l3_ipv4ll_get_ifindex(self)); nm_platform_iter_obj_for_each (&iter, nm_l3_ipv4ll_get_platform(self), &lookup, &obj) { addr = NMP_OBJECT_CAST_IP4_ADDRESS(obj); if (!_ip4_address_is_link_local(addr)) diff --git a/src/core/nm-l3-ipv6ll.c b/src/core/nm-l3-ipv6ll.c index 2b9a1a0ef4..2640c07554 100644 --- a/src/core/nm-l3-ipv6ll.c +++ b/src/core/nm-l3-ipv6ll.c @@ -343,7 +343,9 @@ _pladdr_find_ll(NML3IPv6LL *self, gboolean *out_cur_addr_failed) if (!NM_IN_SET(self->state, NM_L3_IPV6LL_STATE_DAD_IN_PROGRESS, NM_L3_IPV6LL_STATE_READY)) cur_addr_check = FALSE; - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP6_ADDRESS, nm_l3_ipv6ll_get_ifindex(self)); + nmp_lookup_init_object_by_ifindex(&lookup, + NMP_OBJECT_TYPE_IP6_ADDRESS, + nm_l3_ipv6ll_get_ifindex(self)); nm_platform_iter_obj_for_each (&iter, nm_l3_ipv6ll_get_platform(self), &lookup, &obj) { const NMPlatformIP6Address *pladdr = NMP_OBJECT_CAST_IP6_ADDRESS(obj); diff --git a/src/core/nm-l3cfg.c b/src/core/nm-l3cfg.c index bbb42d722f..23afa1833e 100644 --- a/src/core/nm-l3cfg.c +++ b/src/core/nm-l3cfg.c @@ -4625,7 +4625,9 @@ nm_l3cfg_has_commited_ip6_addresses_pending_dad(NML3Cfg *self) * Of course, all lookups are O(1) anyway, so in any case the operation is * O(n) (once "n" being the addresses in platform, and once in l3cd). */ - nmp_lookup_init_object(&plat_lookup, NMP_OBJECT_TYPE_IP6_ADDRESS, self->priv.ifindex); + nmp_lookup_init_object_by_ifindex(&plat_lookup, + NMP_OBJECT_TYPE_IP6_ADDRESS, + self->priv.ifindex); nm_platform_iter_obj_for_each (&iter, self->priv.platform, &plat_lookup, &plat_obj) { const NMPlatformIP6Address *plat_addr = NMP_OBJECT_CAST_IP6_ADDRESS(plat_obj); diff --git a/src/core/platform/tests/test-common.c b/src/core/platform/tests/test-common.c index d7fed22087..4b6cbec66c 100644 --- a/src/core/platform/tests/test-common.c +++ b/src/core/platform/tests/test-common.c @@ -70,7 +70,7 @@ _ipx_address_get_all(NMPlatform *self, int ifindex, NMPObjectType obj_type) g_assert(NM_IS_PLATFORM(self)); g_assert(ifindex > 0); g_assert(NM_IN_SET(obj_type, NMP_OBJECT_TYPE_IP4_ADDRESS, NMP_OBJECT_TYPE_IP6_ADDRESS)); - nmp_lookup_init_object(&lookup, obj_type, ifindex); + nmp_lookup_init_object_by_ifindex(&lookup, obj_type, ifindex); return nmp_cache_lookup_to_array(nm_platform_lookup(self, &lookup), obj_type, FALSE /*addresses are always visible. */); @@ -103,7 +103,7 @@ nmtstp_platform_ip_address_find(NMPlatform *self, int ifindex, int addr_family, nm_assert(addr); if (ifindex > 0) - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4), ifindex); + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4), ifindex); else nmp_lookup_init_obj_type(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4)); @@ -187,7 +187,9 @@ _nmtstp_platform_ip_addresses_assert(const char *filename, plat_addrs = nm_platform_lookup_clone( self, - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4), ifindex), + nmp_lookup_init_object_by_ifindex(&lookup, + NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4), + ifindex), NULL, NULL); diff --git a/src/core/platform/tests/test-nmp-object.c b/src/core/platform/tests/test-nmp-object.c index ddd5aa938b..193e750f6d 100644 --- a/src/core/platform/tests/test-nmp-object.c +++ b/src/core/platform/tests/test-nmp-object.c @@ -551,7 +551,9 @@ test_cache_qdisc(void) g_assert(nmp_cache_lookup_obj(cache, obj1b) == obj1b); g_assert(nmp_cache_lookup_obj(cache, obj2) == obj2); - head_entry = nmp_cache_lookup(cache, nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_QDISC, 1)); + head_entry = + nmp_cache_lookup(cache, + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_QDISC, 1)); g_assert(head_entry->len == 2); nmp_cache_free(cache); diff --git a/src/core/platform/tests/test-route.c b/src/core/platform/tests/test-route.c index 19555cd771..4e5fa46fbc 100644 --- a/src/core/platform/tests/test-route.c +++ b/src/core/platform/tests/test-route.c @@ -35,8 +35,9 @@ _wait_for_ipv4_addr_device_route(NMPlatform *platform, nmp_cache_iter_for_each ( &iter, - nm_platform_lookup(platform, - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP4_ROUTE, ifindex)), + nm_platform_lookup( + platform, + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_IP4_ROUTE, ifindex)), &o) { const NMPlatformIP4Route *r = NMP_OBJECT_CAST_IP4_ROUTE(o); diff --git a/src/core/platform/tests/test-tc.c b/src/core/platform/tests/test-tc.c index db23a93214..6a2019c84a 100644 --- a/src/core/platform/tests/test-tc.c +++ b/src/core/platform/tests/test-tc.c @@ -30,10 +30,11 @@ qdiscs_lookup(int ifindex) { NMPLookup lookup; - return nm_platform_lookup_clone(NM_PLATFORM_GET, - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_QDISC, ifindex), - NULL, - NULL); + return nm_platform_lookup_clone( + NM_PLATFORM_GET, + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_QDISC, ifindex), + NULL, + NULL); } static void diff --git a/src/core/tests/test-l3cfg.c b/src/core/tests/test-l3cfg.c index 924d98f16d..a9ac400496 100644 --- a/src/core/tests/test-l3cfg.c +++ b/src/core/tests/test-l3cfg.c @@ -821,7 +821,7 @@ _test_l3_ipv6ll_find_lladdr(TestL3IPv6LLData *tdata, int ifindex) g_assert(tdata); - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP6_ADDRESS, ifindex); + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_IP6_ADDRESS, ifindex); nm_platform_iter_obj_for_each (&iter, tdata->f->platform, &lookup, &obj) { const NMPlatformIP6Address *a = NMP_OBJECT_CAST_IP6_ADDRESS(obj); diff --git a/src/libnm-platform/nm-linux-platform.c b/src/libnm-platform/nm-linux-platform.c index 92106a75b5..6c9243a633 100644 --- a/src/libnm-platform/nm-linux-platform.c +++ b/src/libnm-platform/nm-linux-platform.c @@ -8603,11 +8603,11 @@ link_can_assume(NMPlatform *platform, int ifindex) if (link->link.master > 0) return TRUE; - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP4_ADDRESS, ifindex); + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_IP4_ADDRESS, ifindex); if (nmp_cache_lookup(cache, &lookup)) return TRUE; - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP6_ADDRESS, ifindex); + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_IP6_ADDRESS, ifindex); nmp_cache_iter_for_each (&iter, nmp_cache_lookup(cache, &lookup), &o) { nm_assert(NMP_OBJECT_GET_TYPE(o) == NMP_OBJECT_TYPE_IP6_ADDRESS); if (!IN6_IS_ADDR_LINKLOCAL(&o->ip6_address.address)) diff --git a/src/libnm-platform/nm-platform.c b/src/libnm-platform/nm-platform.c index cd4a61aab7..50204abc5f 100644 --- a/src/libnm-platform/nm-platform.c +++ b/src/libnm-platform/nm-platform.c @@ -4133,7 +4133,7 @@ nm_platform_ip_address_sync(NMPlatform *self, * we check the "secondary" flag. */ plat_addresses = nm_platform_lookup_clone( self, - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4), ifindex), + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4), ifindex), NULL, NULL); @@ -4545,7 +4545,9 @@ nm_platform_ip_address_get_prune_list(NMPlatform *self, GPtrArray *result = NULL; CList *iter; - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(NM_IS_IPv4(addr_family)), ifindex); + nmp_lookup_init_object_by_ifindex(&lookup, + NMP_OBJECT_TYPE_IP_ADDRESS(NM_IS_IPv4(addr_family)), + ifindex); head_entry = nm_platform_lookup(self, &lookup); @@ -4626,7 +4628,9 @@ nm_platform_ip_route_get_prune_list(NMPlatform *self, NM_IP_ROUTE_TABLE_SYNC_MODE_ALL, NM_IP_ROUTE_TABLE_SYNC_MODE_ALL_PRUNE)); - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ROUTE(NM_IS_IPv4(addr_family)), ifindex); + nmp_lookup_init_object_by_ifindex(&lookup, + NMP_OBJECT_TYPE_IP_ROUTE(NM_IS_IPv4(addr_family)), + ifindex); head_entry = nm_platform_lookup(self, &lookup); if (!head_entry) return NULL; @@ -8983,7 +8987,7 @@ nm_platform_ip4_address_addr_to_hash(NMPlatform *self, int ifindex) g_return_val_if_fail(NM_IS_PLATFORM(self), NULL); g_return_val_if_fail(ifindex > 0, NULL); - nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP4_ADDRESS, ifindex); + nmp_lookup_init_object_by_ifindex(&lookup, NMP_OBJECT_TYPE_IP4_ADDRESS, ifindex); head_entry = nmp_cache_lookup(NM_PLATFORM_GET_PRIVATE(self)->cache, &lookup); diff --git a/src/libnm-platform/nmp-object.c b/src/libnm-platform/nmp-object.c index 6c177b4c26..99e2287691 100644 --- a/src/libnm-platform/nmp-object.c +++ b/src/libnm-platform/nmp-object.c @@ -805,13 +805,9 @@ _nmp_object_stackinit_from_class(NMPObject *obj, const NMPClass *klass) nm_assert(obj); nm_assert(klass); - *obj = (NMPObject){ - .parent = - { - .klass = (const NMDedupMultiObjClass *) klass, - ._ref_count = NM_OBJ_REF_COUNT_STACKINIT, - }, - }; + memset(obj, 0, sizeof(NMPObject)); + obj->_class = klass; + obj->parent._ref_count = NM_OBJ_REF_COUNT_STACKINIT; return obj; } @@ -2122,7 +2118,7 @@ nmp_lookup_init_link_by_ifname(NMPLookup *lookup, const char *ifname) } const NMPLookup * -nmp_lookup_init_object(NMPLookup *lookup, NMPObjectType obj_type, int ifindex) +nmp_lookup_init_object_by_ifindex(NMPLookup *lookup, NMPObjectType obj_type, int ifindex) { NMPObject *o; @@ -2134,18 +2130,9 @@ nmp_lookup_init_object(NMPLookup *lookup, NMPObjectType obj_type, int ifindex) NMP_OBJECT_TYPE_IP6_ROUTE, NMP_OBJECT_TYPE_QDISC, NMP_OBJECT_TYPE_TFILTER)); - - if (G_UNLIKELY( - (ifindex < 0) - || (ifindex == 0 - && !NM_IN_SET(obj_type, NMP_OBJECT_TYPE_IP4_ROUTE, NMP_OBJECT_TYPE_IP6_ROUTE)))) { - /* This function used to have a fallback that meant to lookup all objects, if - * ifindex is non-positive. As routes can have a zero ifindex, that fallback is - * confusing and no longer supported. Only have this code, to catch accidental bugs - * after the API change. */ - nm_assert_not_reached(); - return nmp_lookup_init_obj_type(lookup, obj_type); - } + nm_assert(ifindex > 0 + || (ifindex == 0 + && NM_IN_SET(obj_type, NMP_OBJECT_TYPE_IP4_ROUTE, NMP_OBJECT_TYPE_IP6_ROUTE))); o = _nmp_object_stackinit_from_type(&lookup->selector_obj, obj_type); o->obj_with_ifindex.ifindex = ifindex; diff --git a/src/libnm-platform/nmp-object.h b/src/libnm-platform/nmp-object.h index d6b88ba243..d0c0463f13 100644 --- a/src/libnm-platform/nmp-object.h +++ b/src/libnm-platform/nmp-object.h @@ -792,7 +792,8 @@ nmp_cache_lookup(const NMPCache *cache, const NMPLookup *lookup) const NMPLookup *nmp_lookup_init_obj_type(NMPLookup *lookup, NMPObjectType obj_type); const NMPLookup *nmp_lookup_init_link_by_ifname(NMPLookup *lookup, const char *ifname); -const NMPLookup *nmp_lookup_init_object(NMPLookup *lookup, NMPObjectType obj_type, int ifindex); +const NMPLookup * +nmp_lookup_init_object_by_ifindex(NMPLookup *lookup, NMPObjectType obj_type, int ifindex); const NMPLookup *nmp_lookup_init_route_default(NMPLookup *lookup, NMPObjectType obj_type); const NMPLookup *nmp_lookup_init_route_by_weak_id(NMPLookup *lookup, const NMPObject *obj); const NMPLookup *nmp_lookup_init_ip4_route_by_weak_id(NMPLookup *lookup, @@ -1019,7 +1020,7 @@ nm_platform_lookup_object(NMPlatform *platform, NMPObjectType obj_type, int ifin { NMPLookup lookup; - nmp_lookup_init_object(&lookup, obj_type, ifindex); + nmp_lookup_init_object_by_ifindex(&lookup, obj_type, ifindex); return nm_platform_lookup(platform, &lookup); } @@ -1032,7 +1033,7 @@ nm_platform_lookup_object_clone(NMPlatform *platform, { NMPLookup lookup; - nmp_lookup_init_object(&lookup, obj_type, ifindex); + nmp_lookup_init_object_by_ifindex(&lookup, obj_type, ifindex); return nm_platform_lookup_clone(platform, &lookup, predicate, user_data); } |