diff options
Diffstat (limited to 'include/uapi/linux/fib_rules.h')
| -rw-r--r-- | include/uapi/linux/fib_rules.h | 72 | 
1 files changed, 72 insertions, 0 deletions
diff --git a/include/uapi/linux/fib_rules.h b/include/uapi/linux/fib_rules.h new file mode 100644 index 00000000000..51da65b68b8 --- /dev/null +++ b/include/uapi/linux/fib_rules.h @@ -0,0 +1,72 @@ +#ifndef __LINUX_FIB_RULES_H +#define __LINUX_FIB_RULES_H + +#include <linux/types.h> +#include <linux/rtnetlink.h> + +/* rule is permanent, and cannot be deleted */ +#define FIB_RULE_PERMANENT	0x00000001 +#define FIB_RULE_INVERT		0x00000002 +#define FIB_RULE_UNRESOLVED	0x00000004 +#define FIB_RULE_IIF_DETACHED	0x00000008 +#define FIB_RULE_DEV_DETACHED	FIB_RULE_IIF_DETACHED +#define FIB_RULE_OIF_DETACHED	0x00000010 + +/* try to find source address in routing lookups */ +#define FIB_RULE_FIND_SADDR	0x00010000 + +struct fib_rule_hdr { +	__u8		family; +	__u8		dst_len; +	__u8		src_len; +	__u8		tos; + +	__u8		table; +	__u8		res1;	/* reserved */ +	__u8		res2;	/* reserved */ +	__u8		action; + +	__u32		flags; +}; + +enum { +	FRA_UNSPEC, +	FRA_DST,	/* destination address */ +	FRA_SRC,	/* source address */ +	FRA_IIFNAME,	/* interface name */ +#define FRA_IFNAME	FRA_IIFNAME +	FRA_GOTO,	/* target to jump to (FR_ACT_GOTO) */ +	FRA_UNUSED2, +	FRA_PRIORITY,	/* priority/preference */ +	FRA_UNUSED3, +	FRA_UNUSED4, +	FRA_UNUSED5, +	FRA_FWMARK,	/* mark */ +	FRA_FLOW,	/* flow/class id */ +	FRA_UNUSED6, +	FRA_UNUSED7, +	FRA_UNUSED8, +	FRA_TABLE,	/* Extended table id */ +	FRA_FWMASK,	/* mask for netfilter mark */ +	FRA_OIFNAME, +	__FRA_MAX +}; + +#define FRA_MAX (__FRA_MAX - 1) + +enum { +	FR_ACT_UNSPEC, +	FR_ACT_TO_TBL,		/* Pass to fixed table */ +	FR_ACT_GOTO,		/* Jump to another rule */ +	FR_ACT_NOP,		/* No operation */ +	FR_ACT_RES3, +	FR_ACT_RES4, +	FR_ACT_BLACKHOLE,	/* Drop without notification */ +	FR_ACT_UNREACHABLE,	/* Drop with ENETUNREACH */ +	FR_ACT_PROHIBIT,	/* Drop with EACCES */ +	__FR_ACT_MAX, +}; + +#define FR_ACT_MAX (__FR_ACT_MAX - 1) + +#endif  |