summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-06-30 14:20:45 +0200
committerThomas Haller <thaller@redhat.com>2022-06-30 14:20:45 +0200
commitcd63708d17608b61ecad133d3897c63bcf4afa4d (patch)
treeb2d2664010babf9f8f04f5d3e11b77a97e26e5df
parentaf447c493c67df2e4a81b60d4819fea9cd6c6853 (diff)
parent5245fc6c75068025b53de9540873bb1ecc2e372c (diff)
downloadNetworkManager-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.c4
-rw-r--r--src/core/devices/nm-device.c6
-rw-r--r--src/core/dhcp/nm-dhcp-client.c4
-rw-r--r--src/core/nm-l3-ipv4ll.c4
-rw-r--r--src/core/nm-l3-ipv6ll.c4
-rw-r--r--src/core/nm-l3cfg.c4
-rw-r--r--src/core/platform/tests/test-common.c8
-rw-r--r--src/core/platform/tests/test-nmp-object.c4
-rw-r--r--src/core/platform/tests/test-route.c5
-rw-r--r--src/core/platform/tests/test-tc.c9
-rw-r--r--src/core/tests/test-l3cfg.c2
-rw-r--r--src/libnm-platform/nm-linux-platform.c4
-rw-r--r--src/libnm-platform/nm-platform.c12
-rw-r--r--src/libnm-platform/nmp-object.c27
-rw-r--r--src/libnm-platform/nmp-object.h7
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);
}