]> git.puffer.fish Git - matthieu/frr.git/commitdiff
linux: Update our netlink headers for nexthop group support
authorStephen Worley <sworley@cumulusnetworks.com>
Tue, 12 Feb 2019 19:32:07 +0000 (14:32 -0500)
committerStephen Worley <sworley@cumulusnetworks.com>
Fri, 25 Oct 2019 15:13:35 +0000 (11:13 -0400)
The linux kernel is adding support for nexthop groups. Update our
includes to reflect new types and structs we should be listening
for from the kernel.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
include/linux/nexthop.h [new file with mode: 0644]

diff --git a/include/linux/nexthop.h b/include/linux/nexthop.h
new file mode 100644 (file)
index 0000000..e4d6e25
--- /dev/null
@@ -0,0 +1,58 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+#ifndef _LINUX_NEXTHOP_H
+#define _LINUX_NEXTHOP_H
+
+#include <linux/types.h>
+
+#define RTM_NHA(h)  ((struct rtattr *)(((char *)(h)) + \
+                       NLMSG_ALIGN(sizeof(struct nhmsg))))
+
+struct nhmsg {
+       unsigned char   nh_family;
+       unsigned char   nh_scope;     /* return only */
+       unsigned char   nh_protocol;  /* Routing protocol that installed nh */
+       unsigned char   resvd;
+       unsigned int    nh_flags;     /* RTNH_F flags */
+};
+
+struct nexthop_grp {
+       __u32   id;       /* nexthop id - must exist */
+       __u8    weight;   /* weight of this nexthop */
+       __u8    resvd1;
+       __u16   resvd2;
+};
+
+enum {
+       NEXTHOP_GRP_TYPE_MPATH,  /* default type if not specified */
+       __NEXTHOP_GRP_TYPE_MAX,
+};
+
+#define NEXTHOP_GRP_TYPE_MAX (__NEXTHOP_GRP_TYPE_MAX - 1)
+
+enum {
+       NHA_UNSPEC,
+       NHA_ID,         /* u32; id for nexthop. id == 0 means auto-assign */
+
+       NHA_GROUP,      /* array of nexthop_grp */
+       NHA_GROUP_TYPE, /* u16 one of NEXTHOP_GRP_TYPE */
+       /* if NHA_GROUP attribute is added, no other attributes can be set */
+
+       NHA_BLACKHOLE,  /* flag; nexthop used to blackhole packets */
+       /* if NHA_BLACKHOLE is added, OIF, GATEWAY, ENCAP can not be set */
+
+       NHA_OIF,        /* u32; nexthop device */
+       NHA_GATEWAY,    /* be32 (IPv4) or in6_addr (IPv6) gw address */
+       NHA_ENCAP_TYPE, /* u16; lwt encap type */
+       NHA_ENCAP,      /* lwt encap data */
+
+       /* NHA_OIF can be appended to dump request to return only
+        * nexthops using given device
+        */
+       NHA_GROUPS,     /* flag; only return nexthop groups in dump */
+       NHA_MASTER,     /* u32;  only return nexthops with given master dev */
+
+       __NHA_MAX,
+};
+
+#define NHA_MAX        (__NHA_MAX - 1)
+#endif