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