summaryrefslogtreecommitdiff
path: root/src/platform/nmp-object.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/nmp-object.c')
-rw-r--r--src/platform/nmp-object.c28
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,