mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-10-10 05:27:38 +00:00
ip rule: Honor filter arguments on flush
'ip ru flush' currently removes all rules with priority > 0 regardless of any other command line arguments passed in. Update flush_rule to call filter_nlmsg to determine if the rule should be flushed or not. This enables rule flushing such as 'ip ru flush table 1001' and 'ip ru flush pref 99'. Signed-off-by: David Ahern <dsahern@gmail.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
parent
508f3c231e
commit
b65b4c0870
@ -461,6 +461,7 @@ static int flush_rule(struct nlmsghdr *n, void *arg)
|
|||||||
struct fib_rule_hdr *frh = NLMSG_DATA(n);
|
struct fib_rule_hdr *frh = NLMSG_DATA(n);
|
||||||
int len = n->nlmsg_len;
|
int len = n->nlmsg_len;
|
||||||
struct rtattr *tb[FRA_MAX+1];
|
struct rtattr *tb[FRA_MAX+1];
|
||||||
|
int host_len = -1;
|
||||||
|
|
||||||
len -= NLMSG_LENGTH(sizeof(*frh));
|
len -= NLMSG_LENGTH(sizeof(*frh));
|
||||||
if (len < 0)
|
if (len < 0)
|
||||||
@ -468,6 +469,10 @@ static int flush_rule(struct nlmsghdr *n, void *arg)
|
|||||||
|
|
||||||
parse_rtattr(tb, FRA_MAX, RTM_RTA(frh), len);
|
parse_rtattr(tb, FRA_MAX, RTM_RTA(frh), len);
|
||||||
|
|
||||||
|
host_len = af_bit_len(frh->family);
|
||||||
|
if (!filter_nlmsg(n, tb, host_len))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (tb[FRA_PROTOCOL]) {
|
if (tb[FRA_PROTOCOL]) {
|
||||||
__u8 protocol = rta_getattr_u8(tb[FRA_PROTOCOL]);
|
__u8 protocol = rta_getattr_u8(tb[FRA_PROTOCOL]);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user