ip rule: Honor filter arguments on flush
Subsystems (2)
PATCH 1/1 ip rule: Honor filter arguments on flush
From: David Ahern <[email protected]>
'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 <[email protected]>
--- ip/iprule.c | 5 +++++ 1 file changed, 5 insertions(+)
ip/iprule.c +5 -0
@@ -461,6 +461,7 @@ static int flush_rule(struct nlmsghdr *n, void *arg)struct fib_rule_hdr *frh =NLMSG_DATA (n);int len = n->nlmsg_len;struct rtattr *tb[FRA_MAX +1 ]; +int host_len =-1 ; len -=NLMSG_LENGTH (sizeof (*frh));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); + host_len =af_bit_len (frh->family); +if (!filter_nlmsg (n, tb, host_len)) +return 0 ; +if (tb[FRA_PROTOCOL ]) {__u8 protocol =rta_getattr_u8 (tb[FRA_PROTOCOL ]);
Signature · 1 line
2.11.0