brintos

brintos / linux-shallow public Read only

0
0
Text · 4.0 KiB · bc49baf Raw
158 lines · c
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */2#ifndef _UAPI_LINUX_NEXTHOP_H3#define _UAPI_LINUX_NEXTHOP_H4 5#include <linux/types.h>6 7struct nhmsg {8	unsigned char	nh_family;9	unsigned char	nh_scope;     /* return only */10	unsigned char	nh_protocol;  /* Routing protocol that installed nh */11	unsigned char	resvd;12	unsigned int	nh_flags;     /* RTNH_F flags */13};14 15/* entry in a nexthop group */16struct nexthop_grp {17	__u32	id;	  /* nexthop id - must exist */18	__u8	weight;   /* weight of this nexthop */19	__u8	weight_high;	/* high order bits of weight */20	__u16	resvd2;21};22 23static inline __u16 nexthop_grp_weight(const struct nexthop_grp *entry)24{25	return ((entry->weight_high << 8) | entry->weight) + 1;26}27 28enum {29	NEXTHOP_GRP_TYPE_MPATH,  /* hash-threshold nexthop group30				  * default type if not specified31				  */32	NEXTHOP_GRP_TYPE_RES,    /* resilient nexthop group */33	__NEXTHOP_GRP_TYPE_MAX,34};35 36#define NEXTHOP_GRP_TYPE_MAX (__NEXTHOP_GRP_TYPE_MAX - 1)37 38#define NHA_OP_FLAG_DUMP_STATS		BIT(0)39#define NHA_OP_FLAG_DUMP_HW_STATS	BIT(1)40 41/* Response OP_FLAGS. */42#define NHA_OP_FLAG_RESP_GRP_RESVD_0	BIT(31)	/* Dump clears resvd fields. */43 44enum {45	NHA_UNSPEC,46	NHA_ID,		/* u32; id for nexthop. id == 0 means auto-assign */47 48	NHA_GROUP,	/* array of nexthop_grp */49	NHA_GROUP_TYPE,	/* u16 one of NEXTHOP_GRP_TYPE */50	/* if NHA_GROUP attribute is added, no other attributes can be set */51 52	NHA_BLACKHOLE,	/* flag; nexthop used to blackhole packets */53	/* if NHA_BLACKHOLE is added, OIF, GATEWAY, ENCAP can not be set */54 55	NHA_OIF,	/* u32; nexthop device */56	NHA_GATEWAY,	/* be32 (IPv4) or in6_addr (IPv6) gw address */57	NHA_ENCAP_TYPE, /* u16; lwt encap type */58	NHA_ENCAP,	/* lwt encap data */59 60	/* NHA_OIF can be appended to dump request to return only61	 * nexthops using given device62	 */63	NHA_GROUPS,	/* flag; only return nexthop groups in dump */64	NHA_MASTER,	/* u32;  only return nexthops with given master dev */65 66	NHA_FDB,	/* flag; nexthop belongs to a bridge fdb */67	/* if NHA_FDB is added, OIF, BLACKHOLE, ENCAP cannot be set */68 69	/* nested; resilient nexthop group attributes */70	NHA_RES_GROUP,71	/* nested; nexthop bucket attributes */72	NHA_RES_BUCKET,73 74	/* u32; operation-specific flags */75	NHA_OP_FLAGS,76 77	/* nested; nexthop group stats */78	NHA_GROUP_STATS,79 80	/* u32; nexthop hardware stats enable */81	NHA_HW_STATS_ENABLE,82 83	/* u32; read-only; whether any driver collects HW stats */84	NHA_HW_STATS_USED,85 86	__NHA_MAX,87};88 89#define NHA_MAX	(__NHA_MAX - 1)90 91enum {92	NHA_RES_GROUP_UNSPEC,93	/* Pad attribute for 64-bit alignment. */94	NHA_RES_GROUP_PAD = NHA_RES_GROUP_UNSPEC,95 96	/* u16; number of nexthop buckets in a resilient nexthop group */97	NHA_RES_GROUP_BUCKETS,98	/* clock_t as u32; nexthop bucket idle timer (per-group) */99	NHA_RES_GROUP_IDLE_TIMER,100	/* clock_t as u32; nexthop unbalanced timer */101	NHA_RES_GROUP_UNBALANCED_TIMER,102	/* clock_t as u64; nexthop unbalanced time */103	NHA_RES_GROUP_UNBALANCED_TIME,104 105	__NHA_RES_GROUP_MAX,106};107 108#define NHA_RES_GROUP_MAX	(__NHA_RES_GROUP_MAX - 1)109 110enum {111	NHA_RES_BUCKET_UNSPEC,112	/* Pad attribute for 64-bit alignment. */113	NHA_RES_BUCKET_PAD = NHA_RES_BUCKET_UNSPEC,114 115	/* u16; nexthop bucket index */116	NHA_RES_BUCKET_INDEX,117	/* clock_t as u64; nexthop bucket idle time */118	NHA_RES_BUCKET_IDLE_TIME,119	/* u32; nexthop id assigned to the nexthop bucket */120	NHA_RES_BUCKET_NH_ID,121 122	__NHA_RES_BUCKET_MAX,123};124 125#define NHA_RES_BUCKET_MAX	(__NHA_RES_BUCKET_MAX - 1)126 127enum {128	NHA_GROUP_STATS_UNSPEC,129 130	/* nested; nexthop group entry stats */131	NHA_GROUP_STATS_ENTRY,132 133	__NHA_GROUP_STATS_MAX,134};135 136#define NHA_GROUP_STATS_MAX	(__NHA_GROUP_STATS_MAX - 1)137 138enum {139	NHA_GROUP_STATS_ENTRY_UNSPEC,140 141	/* u32; nexthop id of the nexthop group entry */142	NHA_GROUP_STATS_ENTRY_ID,143 144	/* uint; number of packets forwarded via the nexthop group entry */145	NHA_GROUP_STATS_ENTRY_PACKETS,146 147	/* uint; number of packets forwarded via the nexthop group entry in148	 * hardware149	 */150	NHA_GROUP_STATS_ENTRY_PACKETS_HW,151 152	__NHA_GROUP_STATS_ENTRY_MAX,153};154 155#define NHA_GROUP_STATS_ENTRY_MAX	(__NHA_GROUP_STATS_ENTRY_MAX - 1)156 157#endif158