From dbfb7fe2d79c9421518c5350a0c3a1cb42b51110 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 16 Sep 2020 14:05:54 +0200 Subject: [PATCH] l3cfg: add nm_l3_config_data_lookup_address_6() helper --- src/nm-l3-config-data.c | 22 ++++++++++++++++++++++ src/nm-l3-config-data.h | 3 +++ 2 files changed, 25 insertions(+) diff --git a/src/nm-l3-config-data.c b/src/nm-l3-config-data.c index a5080b0bb8..91cb7190eb 100644 --- a/src/nm-l3-config-data.c +++ b/src/nm-l3-config-data.c @@ -623,6 +623,28 @@ nm_l3_config_data_lookup_obj (const NML3ConfigData *self, obj); } +const NMPlatformIP6Address * +nm_l3_config_data_lookup_address_6 (const NML3ConfigData *self, + const struct in6_addr *addr) +{ + const NMDedupMultiEntry *head; + NMPObject obj_stack; + + nm_assert (_NM_IS_L3_CONFIG_DATA (self, TRUE)); + + /* this works only, because the primary key for a Ipv6 address is the + * ifindex and the "struct in6_addr". */ + nmp_object_stackinit_id_ip6_address (&obj_stack, + self->ifindex, + addr); + + head = nm_l3_config_data_lookup_obj (self, &obj_stack); + if (!head) + return NULL; + + return NMP_OBJECT_CAST_IP6_ADDRESS (head->obj); +} + const NMPObject * nmtst_l3_config_data_get_obj_at (const NML3ConfigData *self, NMPObjectType obj_type, diff --git a/src/nm-l3-config-data.h b/src/nm-l3-config-data.h index fe7bac03be..1f3a33eaac 100644 --- a/src/nm-l3-config-data.h +++ b/src/nm-l3-config-data.h @@ -188,6 +188,9 @@ const NMDedupMultiIdxType *nm_l3_config_data_lookup_index (const NML3ConfigData const NMDedupMultiEntry *nm_l3_config_data_lookup_obj (const NML3ConfigData *self, const NMPObject *obj); +const NMPlatformIP6Address *nm_l3_config_data_lookup_address_6 (const NML3ConfigData *self, + const struct in6_addr *addr); + const NMDedupMultiEntry *nm_l3_config_data_lookup_route_obj (const NML3ConfigData *self, const NMPObject *needle);