diff options
| author | Stephen Worley <sworley@cumulusnetworks.com> | 2019-02-12 14:32:07 -0500 | 
|---|---|---|
| committer | Stephen Worley <sworley@cumulusnetworks.com> | 2019-10-25 11:13:35 -0400 | 
| commit | ce0e6980179dabd9d056e147d6160c6dd22f2f44 (patch) | |
| tree | 84a328d8a17c994d017f7365cd2c1c4fa80bdc68 /include | |
| parent | 22bcedb231390df39c327eba1f12f1da50da0bf2 (diff) | |
linux: Update our netlink headers for nexthop group support
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>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/nexthop.h | 58 | 
1 files changed, 58 insertions, 0 deletions
diff --git a/include/linux/nexthop.h b/include/linux/nexthop.h new file mode 100644 index 0000000000..e4d6e256ef --- /dev/null +++ b/include/linux/nexthop.h @@ -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  | 
