From: Roopa Prabhu <ro...@cumulusnetworks.com> Date: Fri, 29 Jun 2018 14:32:15 -0700
> From: Roopa Prabhu <ro...@cumulusnetworks.com> > > After commit f9d4b0c1e969 ("fib_rules: move common handling of newrule > delrule msgs into fib_nl2rule"), rule_exists got replaced by rule_find > for existing rule lookup in both the add and del paths. While this > is good for the delete path, it solves a few problems but opens up > a few invalid key matches in the add path. > > $ip -4 rule add table main tos 10 fwmark 1 > $ip -4 rule add table main tos 10 > RTNETLINK answers: File exists > > The problem here is rule_find does not check if the key masks in > the new and old rule are the same and hence ends up matching a more > secific rule. Rule key masks cannot be easily compared today without > an elaborate if-else block. Its best to introduce key masks for easier > and accurate rule comparison in the future. Until then, due to fear of > regressions this patch re-introduces older loose rule_exists during add. > Also fixes both rule_exists and rule_find to cover missing attributes. > > Fixes: f9d4b0c1e969 ("fib_rules: move common handling of newrule delrule msgs > into fib_nl2rule") > Signed-off-by: Roopa Prabhu <ro...@cumulusnetworks.com> Applied, thanks for resolving all of these issues.