0001
0002 #ifndef __LINUX_FIB_RULES_H
0003 #define __LINUX_FIB_RULES_H
0004
0005 #include <linux/types.h>
0006 #include <linux/rtnetlink.h>
0007
0008
0009 #define FIB_RULE_PERMANENT 0x00000001
0010 #define FIB_RULE_INVERT 0x00000002
0011 #define FIB_RULE_UNRESOLVED 0x00000004
0012 #define FIB_RULE_IIF_DETACHED 0x00000008
0013 #define FIB_RULE_DEV_DETACHED FIB_RULE_IIF_DETACHED
0014 #define FIB_RULE_OIF_DETACHED 0x00000010
0015
0016
0017 #define FIB_RULE_FIND_SADDR 0x00010000
0018
0019 struct fib_rule_hdr {
0020 __u8 family;
0021 __u8 dst_len;
0022 __u8 src_len;
0023 __u8 tos;
0024
0025 __u8 table;
0026 __u8 res1;
0027 __u8 res2;
0028 __u8 action;
0029
0030 __u32 flags;
0031 };
0032
0033 struct fib_rule_uid_range {
0034 __u32 start;
0035 __u32 end;
0036 };
0037
0038 struct fib_rule_port_range {
0039 __u16 start;
0040 __u16 end;
0041 };
0042
0043 enum {
0044 FRA_UNSPEC,
0045 FRA_DST,
0046 FRA_SRC,
0047 FRA_IIFNAME,
0048 #define FRA_IFNAME FRA_IIFNAME
0049 FRA_GOTO,
0050 FRA_UNUSED2,
0051 FRA_PRIORITY,
0052 FRA_UNUSED3,
0053 FRA_UNUSED4,
0054 FRA_UNUSED5,
0055 FRA_FWMARK,
0056 FRA_FLOW,
0057 FRA_TUN_ID,
0058 FRA_SUPPRESS_IFGROUP,
0059 FRA_SUPPRESS_PREFIXLEN,
0060 FRA_TABLE,
0061 FRA_FWMASK,
0062 FRA_OIFNAME,
0063 FRA_PAD,
0064 FRA_L3MDEV,
0065 FRA_UID_RANGE,
0066 FRA_PROTOCOL,
0067 FRA_IP_PROTO,
0068 FRA_SPORT_RANGE,
0069 FRA_DPORT_RANGE,
0070 __FRA_MAX
0071 };
0072
0073 #define FRA_MAX (__FRA_MAX - 1)
0074
0075 enum {
0076 FR_ACT_UNSPEC,
0077 FR_ACT_TO_TBL,
0078 FR_ACT_GOTO,
0079 FR_ACT_NOP,
0080 FR_ACT_RES3,
0081 FR_ACT_RES4,
0082 FR_ACT_BLACKHOLE,
0083 FR_ACT_UNREACHABLE,
0084 FR_ACT_PROHIBIT,
0085 __FR_ACT_MAX,
0086 };
0087
0088 #define FR_ACT_MAX (__FR_ACT_MAX - 1)
0089
0090 #endif