OSDN Git Service

net: fib_rules: do not flow dissect local packets
authorPetar Penkov <ppenkov@google.com>
Fri, 5 Jul 2019 18:46:43 +0000 (11:46 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 11 Jul 2019 21:22:53 +0000 (14:22 -0700)
Rules matching on loopback iif do not need early flow dissection as the
packet originates from the host. Stop counting such rules in
fib_rule_requires_fldissect

Signed-off-by: Petar Penkov <ppenkov@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/fib_rules.h

index eba8465..20dcadd 100644 (file)
@@ -180,9 +180,9 @@ static inline bool fib_rule_port_range_compare(struct fib_rule_port_range *a,
 
 static inline bool fib_rule_requires_fldissect(struct fib_rule *rule)
 {
-       return rule->ip_proto ||
+       return rule->iifindex != LOOPBACK_IFINDEX && (rule->ip_proto ||
                fib_rule_port_range_set(&rule->sport_range) ||
-               fib_rule_port_range_set(&rule->dport_range);
+               fib_rule_port_range_set(&rule->dport_range));
 }
 
 struct fib_rules_ops *fib_rules_register(const struct fib_rules_ops *,