| 1 | /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | 
|---|
| 2 | #ifndef _UAPI__LINUX_FIB_RULES_H | 
|---|
| 3 | #define _UAPI__LINUX_FIB_RULES_H | 
|---|
| 4 |  | 
|---|
| 5 | #include <linux/types.h> | 
|---|
| 6 | #include <linux/rtnetlink.h> | 
|---|
| 7 |  | 
|---|
| 8 | /* rule is permanent, and cannot be deleted */ | 
|---|
| 9 | #define FIB_RULE_PERMANENT	0x00000001 | 
|---|
| 10 | #define FIB_RULE_INVERT		0x00000002 | 
|---|
| 11 | #define FIB_RULE_UNRESOLVED	0x00000004 | 
|---|
| 12 | #define FIB_RULE_IIF_DETACHED	0x00000008 | 
|---|
| 13 | #define FIB_RULE_DEV_DETACHED	FIB_RULE_IIF_DETACHED | 
|---|
| 14 | #define FIB_RULE_OIF_DETACHED	0x00000010 | 
|---|
| 15 |  | 
|---|
| 16 | /* try to find source address in routing lookups */ | 
|---|
| 17 | #define FIB_RULE_FIND_SADDR	0x00010000 | 
|---|
| 18 |  | 
|---|
| 19 | struct fib_rule_hdr { | 
|---|
| 20 | __u8		family; | 
|---|
| 21 | __u8		dst_len; | 
|---|
| 22 | __u8		src_len; | 
|---|
| 23 | __u8		tos; | 
|---|
| 24 |  | 
|---|
| 25 | __u8		table; | 
|---|
| 26 | __u8		res1;   /* reserved */ | 
|---|
| 27 | __u8		res2;	/* reserved */ | 
|---|
| 28 | __u8		action; | 
|---|
| 29 |  | 
|---|
| 30 | __u32		flags; | 
|---|
| 31 | }; | 
|---|
| 32 |  | 
|---|
| 33 | struct fib_rule_uid_range { | 
|---|
| 34 | __u32		start; | 
|---|
| 35 | __u32		end; | 
|---|
| 36 | }; | 
|---|
| 37 |  | 
|---|
| 38 | struct fib_rule_port_range { | 
|---|
| 39 | __u16		start; | 
|---|
| 40 | __u16		end; | 
|---|
| 41 | }; | 
|---|
| 42 |  | 
|---|
| 43 | enum { | 
|---|
| 44 | FRA_UNSPEC, | 
|---|
| 45 | FRA_DST,	/* destination address */ | 
|---|
| 46 | FRA_SRC,	/* source address */ | 
|---|
| 47 | FRA_IIFNAME,	/* interface name */ | 
|---|
| 48 | #define FRA_IFNAME	FRA_IIFNAME | 
|---|
| 49 | FRA_GOTO,	/* target to jump to (FR_ACT_GOTO) */ | 
|---|
| 50 | FRA_UNUSED2, | 
|---|
| 51 | FRA_PRIORITY,	/* priority/preference */ | 
|---|
| 52 | FRA_UNUSED3, | 
|---|
| 53 | FRA_UNUSED4, | 
|---|
| 54 | FRA_UNUSED5, | 
|---|
| 55 | FRA_FWMARK,	/* mark */ | 
|---|
| 56 | FRA_FLOW,	/* flow/class id */ | 
|---|
| 57 | FRA_TUN_ID, | 
|---|
| 58 | FRA_SUPPRESS_IFGROUP, | 
|---|
| 59 | FRA_SUPPRESS_PREFIXLEN, | 
|---|
| 60 | FRA_TABLE,	/* Extended table id */ | 
|---|
| 61 | FRA_FWMASK,	/* mask for netfilter mark */ | 
|---|
| 62 | FRA_OIFNAME, | 
|---|
| 63 | FRA_PAD, | 
|---|
| 64 | FRA_L3MDEV,	/* iif or oif is l3mdev goto its table */ | 
|---|
| 65 | FRA_UID_RANGE,	/* UID range */ | 
|---|
| 66 | FRA_PROTOCOL,   /* Originator of the rule */ | 
|---|
| 67 | FRA_IP_PROTO,	/* ip proto */ | 
|---|
| 68 | FRA_SPORT_RANGE, /* sport */ | 
|---|
| 69 | FRA_DPORT_RANGE, /* dport */ | 
|---|
| 70 | FRA_DSCP,	/* dscp */ | 
|---|
| 71 | FRA_FLOWLABEL,	/* flowlabel */ | 
|---|
| 72 | FRA_FLOWLABEL_MASK,	/* flowlabel mask */ | 
|---|
| 73 | FRA_SPORT_MASK,	/* sport mask */ | 
|---|
| 74 | FRA_DPORT_MASK,	/* dport mask */ | 
|---|
| 75 | FRA_DSCP_MASK,	/* dscp mask */ | 
|---|
| 76 | __FRA_MAX | 
|---|
| 77 | }; | 
|---|
| 78 |  | 
|---|
| 79 | #define FRA_MAX (__FRA_MAX - 1) | 
|---|
| 80 |  | 
|---|
| 81 | enum { | 
|---|
| 82 | FR_ACT_UNSPEC, | 
|---|
| 83 | FR_ACT_TO_TBL,		/* Pass to fixed table */ | 
|---|
| 84 | FR_ACT_GOTO,		/* Jump to another rule */ | 
|---|
| 85 | FR_ACT_NOP,		/* No operation */ | 
|---|
| 86 | FR_ACT_RES3, | 
|---|
| 87 | FR_ACT_RES4, | 
|---|
| 88 | FR_ACT_BLACKHOLE,	/* Drop without notification */ | 
|---|
| 89 | FR_ACT_UNREACHABLE,	/* Drop with ENETUNREACH */ | 
|---|
| 90 | FR_ACT_PROHIBIT,	/* Drop with EACCES */ | 
|---|
| 91 | __FR_ACT_MAX, | 
|---|
| 92 | }; | 
|---|
| 93 |  | 
|---|
| 94 | #define FR_ACT_MAX (__FR_ACT_MAX - 1) | 
|---|
| 95 |  | 
|---|
| 96 | #endif | 
|---|
| 97 |  | 
|---|