Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
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 /* rule is permanent, and cannot be deleted */
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 /* try to find source address in routing lookups */
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;   /* reserved */
0027     __u8        res2;   /* reserved */
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,    /* destination address */
0046     FRA_SRC,    /* source address */
0047     FRA_IIFNAME,    /* interface name */
0048 #define FRA_IFNAME  FRA_IIFNAME
0049     FRA_GOTO,   /* target to jump to (FR_ACT_GOTO) */
0050     FRA_UNUSED2,
0051     FRA_PRIORITY,   /* priority/preference */
0052     FRA_UNUSED3,
0053     FRA_UNUSED4,
0054     FRA_UNUSED5,
0055     FRA_FWMARK, /* mark */
0056     FRA_FLOW,   /* flow/class id */
0057     FRA_TUN_ID,
0058     FRA_SUPPRESS_IFGROUP,
0059     FRA_SUPPRESS_PREFIXLEN,
0060     FRA_TABLE,  /* Extended table id */
0061     FRA_FWMASK, /* mask for netfilter mark */
0062     FRA_OIFNAME,
0063     FRA_PAD,
0064     FRA_L3MDEV, /* iif or oif is l3mdev goto its table */
0065     FRA_UID_RANGE,  /* UID range */
0066     FRA_PROTOCOL,   /* Originator of the rule */
0067     FRA_IP_PROTO,   /* ip proto */
0068     FRA_SPORT_RANGE, /* sport */
0069     FRA_DPORT_RANGE, /* dport */
0070     __FRA_MAX
0071 };
0072 
0073 #define FRA_MAX (__FRA_MAX - 1)
0074 
0075 enum {
0076     FR_ACT_UNSPEC,
0077     FR_ACT_TO_TBL,      /* Pass to fixed table */
0078     FR_ACT_GOTO,        /* Jump to another rule */
0079     FR_ACT_NOP,     /* No operation */
0080     FR_ACT_RES3,
0081     FR_ACT_RES4,
0082     FR_ACT_BLACKHOLE,   /* Drop without notification */
0083     FR_ACT_UNREACHABLE, /* Drop with ENETUNREACH */
0084     FR_ACT_PROHIBIT,    /* Drop with EACCES */
0085     __FR_ACT_MAX,
0086 };
0087 
0088 #define FR_ACT_MAX (__FR_ACT_MAX - 1)
0089 
0090 #endif