diff options
author | David Ahern <dsa@cumulusnetworks.com> | 2018-03-14 00:17:25 (GMT) |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2018-04-06 12:54:12 (GMT) |
commit | 961c4f675054cf605c71e533e77528035d38b2a1 (patch) | |
tree | ab3d37f6a5e1eb5f6d69ded0d6ed6a0fad82dc32 /include | |
parent | fc4880fa5b5d0e81f7e4246c3049124835eda158 (diff) | |
download | libnl-961c4f675054cf605c71e533e77528035d38b2a1.zip libnl-961c4f675054cf605c71e533e77528035d38b2a1.tar.gz libnl-961c4f675054cf605c71e533e77528035d38b2a1.tar.bz2 |
rule: Add support for protocol and port ranges
Add support for recent fib rule features - specifying a protocol
that installed a rule and an IP protocol plus port range for rules.
Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/netlink-private/types.h | 6 | ||||
-rw-r--r-- | include/netlink/route/rule.h | 16 |
2 files changed, 22 insertions, 0 deletions
diff --git a/include/netlink-private/types.h b/include/netlink-private/types.h index 35c9689..db03192 100644 --- a/include/netlink-private/types.h +++ b/include/netlink-private/types.h @@ -31,6 +31,7 @@ #include <linux/tc_act/tc_skbedit.h> #include <linux/tc_act/tc_gact.h> #include <linux/sock_diag.h> +#include <linux/fib_rules.h> #define NL_SOCK_PASSCRED (1<<1) #define NL_OWN_PORT (1<<2) @@ -358,6 +359,8 @@ struct rtnl_rule uint8_t r_action; uint8_t r_dsfield; /* ipv4 only */ uint8_t r_l3mdev; + uint8_t r_protocol; /* protocol that installed rule */ + uint8_t r_ip_proto; /* IP/IPv6 protocol */ uint32_t r_table; uint32_t r_flags; uint32_t r_prio; @@ -369,6 +372,9 @@ struct rtnl_rule struct nl_addr *r_dst; char r_iifname[IFNAMSIZ]; char r_oifname[IFNAMSIZ]; + + struct fib_rule_port_range r_sport; + struct fib_rule_port_range r_dport; }; struct rtnl_neightbl_parms diff --git a/include/netlink/route/rule.h b/include/netlink/route/rule.h index 7aee8d2..d0c335f 100644 --- a/include/netlink/route/rule.h +++ b/include/netlink/route/rule.h @@ -69,6 +69,22 @@ extern void rtnl_rule_set_goto(struct rtnl_rule *, uint32_t); extern uint32_t rtnl_rule_get_goto(struct rtnl_rule *); extern void rtnl_rule_set_l3mdev(struct rtnl_rule *, int); extern int rtnl_rule_get_l3mdev(struct rtnl_rule *); +extern int rtnl_rule_set_protocol(struct rtnl_rule *, uint8_t); +extern int rtnl_rule_get_protocol(struct rtnl_rule *, uint8_t *); +extern int rtnl_rule_set_ipproto(struct rtnl_rule *, uint8_t); +extern int rtnl_rule_get_ipproto(struct rtnl_rule *, uint8_t *); +extern int rtnl_rule_set_sport(struct rtnl_rule *, uint16_t start); +extern int rtnl_rule_set_sport_range(struct rtnl_rule *, + uint16_t start, + uint16_t end); +extern int rtnl_rule_get_sport(struct rtnl_rule *, uint16_t *start, + uint16_t *end); +extern int rtnl_rule_set_dport(struct rtnl_rule *, uint16_t start); +extern int rtnl_rule_set_dport_range(struct rtnl_rule *, + uint16_t start, + uint16_t end); +extern int rtnl_rule_get_dport(struct rtnl_rule *, uint16_t *start, + uint16_t *end); #ifdef __cplusplus } |