diff options
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  | 
