diff --git a/src/platform/nmp-object.c b/src/platform/nmp-object.c index 8f32b11007..615c458ab7 100644 --- a/src/platform/nmp-object.c +++ b/src/platform/nmp-object.c @@ -3046,6 +3046,9 @@ ASSERT_nmp_cache_is_consistent (const NMPCache *cache) /*****************************************************************************/ +/* below, ensure that addr_family get's automatically initialize to AF_UNSPEC. */ +G_STATIC_ASSERT (AF_UNSPEC == 0); + const NMPClass _nmp_classes[NMP_OBJECT_TYPE_MAX] = { [NMP_OBJECT_TYPE_LINK - 1] = { .parent = DEDUP_MULTI_OBJ_CLASS_INIT(), diff --git a/src/platform/nmp-object.h b/src/platform/nmp-object.h index 388ea9dd5e..bf4ff42379 100644 --- a/src/platform/nmp-object.h +++ b/src/platform/nmp-object.h @@ -556,19 +556,16 @@ _NMP_OBJECT_TYPE_IS_OBJ_WITH_IFINDEX (NMPObjectType obj_type) #define NMP_OBJECT_CAST_TFILTER(obj) _NMP_OBJECT_CAST (obj, tfilter, NMP_OBJECT_TYPE_TFILTER) #define NMP_OBJECT_CAST_LNK_WIREGUARD(obj) _NMP_OBJECT_CAST (obj, lnk_wireguard, NMP_OBJECT_TYPE_LNK_WIREGUARD) +static inline int +NMP_OBJECT_TYPE_TO_ADDR_FAMILY (NMPObjectType obj_type) +{ + return nmp_class_from_type (obj_type)->addr_family; +} + static inline int NMP_OBJECT_GET_ADDR_FAMILY (const NMPObject *obj) { - switch (NMP_OBJECT_GET_TYPE (obj)) { - case NMP_OBJECT_TYPE_IP4_ADDRESS: - case NMP_OBJECT_TYPE_IP4_ROUTE: - return AF_INET; - case NMP_OBJECT_TYPE_IP6_ADDRESS: - case NMP_OBJECT_TYPE_IP6_ROUTE: - return AF_INET6; - default: - return AF_UNSPEC; - } + return NMP_OBJECT_GET_CLASS (obj)->addr_family; } static inline const NMPObject *