chiark / gitweb /
sd-rtnl: add typesystem for RTM_*NEIGH
authorTom Gundersen <teg@jklm.no>
Tue, 2 Dec 2014 00:23:47 +0000 (01:23 +0100)
committerTom Gundersen <teg@jklm.no>
Tue, 2 Dec 2014 09:19:52 +0000 (10:19 +0100)
src/libsystemd/sd-rtnl/rtnl-types.c
src/systemd/sd-rtnl.h

index b6c483c..a1db2ab 100644 (file)
@@ -329,6 +329,25 @@ static const NLTypeSystem rtnl_route_type_system = {
         .types = rtnl_route_types,
 };
 
+static const NLType rtnl_neigh_types[NDA_MAX + 1] = {
+        [NDA_DST]               = { .type = NLA_IN_ADDR },
+        [NDA_LLADDR]            = { .type = NLA_ETHER_ADDR },
+/*
+        NDA_CACHEINFO,
+        NDA_PROBES,
+        NDA_VLAN,
+        NDA_PORT
+        NDA_VNI
+        NDA_IFINDEX
+        NDA_MASTER
+*/
+};
+
+static const NLTypeSystem rtnl_neigh_type_system = {
+        .max = ELEMENTSOF(rtnl_neigh_types) - 1,
+        .types = rtnl_neigh_types,
+};
+
 static const NLType rtnl_types[RTM_MAX + 1] = {
         [NLMSG_ERROR]  = { .type = NLA_META, .size = sizeof(struct nlmsgerr) },
         [RTM_NEWLINK]  = { .type = NLA_NESTED, .type_system = &rtnl_link_type_system, .size = sizeof(struct ifinfomsg) },
@@ -341,6 +360,9 @@ static const NLType rtnl_types[RTM_MAX + 1] = {
         [RTM_NEWROUTE] = { .type = NLA_NESTED, .type_system = &rtnl_route_type_system, .size = sizeof(struct rtmsg) },
         [RTM_DELROUTE] = { .type = NLA_NESTED, .type_system = &rtnl_route_type_system, .size = sizeof(struct rtmsg) },
         [RTM_GETROUTE] = { .type = NLA_NESTED, .type_system = &rtnl_route_type_system, .size = sizeof(struct rtmsg) },
+        [RTM_NEWNEIGH] = { .type = NLA_NESTED, .type_system = &rtnl_neigh_type_system, .size = sizeof(struct ndmsg) },
+        [RTM_DELNEIGH] = { .type = NLA_NESTED, .type_system = &rtnl_neigh_type_system, .size = sizeof(struct ndmsg) },
+        [RTM_GETNEIGH] = { .type = NLA_NESTED, .type_system = &rtnl_neigh_type_system, .size = sizeof(struct ndmsg) },
 };
 
 const NLTypeSystem rtnl_type_system = {
index 0d17b16..14eb9b8 100644 (file)
@@ -26,6 +26,7 @@
 #include <netinet/in.h>
 #include <netinet/ether.h>
 #include <linux/rtnetlink.h>
+#include <linux/neighbour.h>
 
 #include "sd-event.h"
 #include "_sd-common.h"