mirror of
https://github.com/adulau/aha.git
synced 2025-01-01 13:46:24 +00:00
0947c9fe56
This patch adds a new rule action FR_ACT_GOTO which allows to skip a set of rules by jumping to another rule. The rule to jump to is specified via the FRA_GOTO attribute which carries a rule preference. Referring to a rule which doesn't exists is explicitely allowed. Such goto rules are marked with the flag FIB_RULE_UNRESOLVED and will act like a rule with a non-matching selector. The rule will become functional as soon as its target is present. The goto action enables performance optimizations by reducing the average number of rules that have to be passed per lookup. Example: 0: from all lookup local 40: not from all to 192.168.23.128 goto 32766 41: from all fwmark 0xa blackhole 42: from all fwmark 0xff blackhole 32766: from all lookup main Signed-off-by: Thomas Graf <tgraf@suug.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
67 lines
1.3 KiB
C
67 lines
1.3 KiB
C
#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 1
|
|
#define FIB_RULE_INVERT 2
|
|
#define FIB_RULE_UNRESOLVED 4
|
|
|
|
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_IFNAME, /* interface name */
|
|
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_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_RES2,
|
|
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
|