diff options
Diffstat (limited to 'src/platform/nmp-object.c')
-rw-r--r-- | src/platform/nmp-object.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/platform/nmp-object.c b/src/platform/nmp-object.c index e58868645e..d5c4eafb44 100644 --- a/src/platform/nmp-object.c +++ b/src/platform/nmp-object.c @@ -968,6 +968,9 @@ _vt_cmd_plobj_id_copy (ip6_route, NMPlatformIP6Route, { *dst = *src; nm_assert (nm_platform_ip6_route_cmp (dst, src, NM_PLATFORM_IP_ROUTE_CMP_TYPE_ID) == 0); }); +_vt_cmd_plobj_id_copy (ndisc_gateway, NMPNDiscGateway, { + dst->address = src->address; +}); /* Uses internally nmp_object_copy(), hence it also violates the const * promise for @obj. @@ -1060,6 +1063,10 @@ _vt_cmd_plobj_id_cmp_ip6_route (const NMPlatformObject *obj1, const NMPlatformOb return nm_platform_ip6_route_cmp ((NMPlatformIP6Route *) obj1, (NMPlatformIP6Route *) obj2, NM_PLATFORM_IP_ROUTE_CMP_TYPE_ID); } +_vt_cmd_plobj_id_cmp (ndisc_gateway, NMPNDiscGateway, + NM_CMP_FIELD_IN6ADDR (obj1, obj2, address); +) + guint nmp_object_id_hash (const NMPObject *obj) { @@ -1118,6 +1125,10 @@ _vt_cmd_plobj_id_hash (ip6_route, NMPlatformIP6Route, { hash = (guint) 1233384151u; hash = NM_HASH_COMBINE (hash, nm_platform_ip6_route_hash (obj, NM_PLATFORM_IP_ROUTE_CMP_TYPE_ID)); }) +_vt_cmd_plobj_id_hash (ndisc_gateway, NMPNDiscGateway, { + hash = (guint) 977597377u; + hash = NM_HASH_COMBINE (hash, nm_utils_in6_addr_hash (&obj->address)); +}) gboolean nmp_object_is_alive (const NMPObject *obj) @@ -2577,6 +2588,23 @@ const NMPClass _nmp_classes[NMP_OBJECT_TYPE_MAX] = { .cmd_plobj_hash = (guint (*) (const NMPlatformObject *obj)) nm_platform_ip6_route_hash_full, .cmd_plobj_cmp = (int (*) (const NMPlatformObject *obj1, const NMPlatformObject *obj2)) nm_platform_ip6_route_cmp_full, }, + [NMP_OBJECT_TYPE_NDISC_GATEWAY - 1] = { + .parent = DEDUP_MULTI_OBJ_CLASS_INIT(), + .obj_type = NMP_OBJECT_TYPE_NDISC_GATEWAY, + .sizeof_data = sizeof (NMPObjectNDiscGateway), + .sizeof_public = sizeof (NMPNDiscGateway), + .obj_type_name = "ndisc-gateway", + .addr_family = AF_INET6, + .cmd_plobj_id_copy = _vt_cmd_plobj_id_copy_ndisc_gateway, + .cmd_plobj_id_cmp = _vt_cmd_plobj_id_cmp_ndisc_gateway, + .cmd_plobj_id_hash = _vt_cmd_plobj_id_hash_ndisc_gateway, + /* + .cmd_plobj_to_string_id = (const char *(*) (const NMPlatformObject *obj, char *buf, gsize len)) nm_platform_ndisc_gateway_to_string, + .cmd_plobj_to_string = (const char *(*) (const NMPlatformObject *obj, char *buf, gsize len)) nm_platform_ndisc_gateway_to_string, + .cmd_plobj_hash = (guint (*) (const NMPlatformObject *obj)) nm_platform_ndisc_gateway_hash_full, + .cmd_plobj_cmp = (int (*) (const NMPlatformObject *obj1, const NMPlatformObject *obj2)) nm_platform_ndisc_gateway_cmp_full, + */ + }, [NMP_OBJECT_TYPE_LNK_GRE - 1] = { .parent = DEDUP_MULTI_OBJ_CLASS_INIT(), .obj_type = NMP_OBJECT_TYPE_LNK_GRE, |