Re: [patch net-next v2 1/9] net: fib_rules: Check if selector matches all packets
From: Ido Schimmel <hidden>
Date: 2017-03-15 15:30:34
On Wed, Mar 15, 2017 at 09:15:43AM -0600, David Ahern wrote:
On 3/15/17 5:05 AM, Jiri Pirko wrote:quoted
diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c index b6791d9..4ed475d 100644 --- a/net/core/fib_rules.c +++ b/net/core/fib_rules.c@@ -23,6 +23,20 @@ static const struct fib_kuid_range fib_kuid_range_unset = { KUIDT_INIT(~0), }; +bool fib_rule_matchall(const struct fib_rule *rule) +{ + if (rule->iifindex || rule->oifindex || rule->mark || rule->l3mdev ||l3mdev should not be in that list. Setting l3mdev is functionally equivalent to setting rule->table. The difference is that l3mdev means go get the table from the device. It has no bearing on a 'matchall' intent.
Good idea. Will drop this and the last patch.
quoted
+ rule->tun_id || rule->flags) + return false; + if (rule->suppress_ifgroup != -1 || rule->suppress_prefixlen != -1) + return false; + if (!uid_eq(rule->uid_range.start, fib_kuid_range_unset.start) || + !uid_eq(rule->uid_range.end, fib_kuid_range_unset.end)) + return false; + return true; +} +EXPORT_SYMBOL_GPL(fib_rule_matchall); + int fib_default_rule_add(struct fib_rules_ops *ops, u32 pref, u32 table, u32 flags) {diff --git a/net/ipv4/fib_rules.c b/net/ipv4/fib_rules.c index 2892109..7a941a5 100644 --- a/net/ipv4/fib_rules.c +++ b/net/ipv4/fib_rules.c@@ -47,6 +47,16 @@ struct fib4_rule { #endif }; +bool fib4_rule_matchall(const struct fib_rule *rule) +{ + struct fib4_rule *r = (struct fib4_rule *) rule;Use container_of instead of typecast.
There are multiple conversions from 'fib_rule' to 'fib4_rule' in this file, all use typecast. Thanks David.