From: Julian Anastasov <ja@ssi.bg>
Date: Mon, 8 Oct 2012 23:43:45 +0300 (EEST)
On Mon, 8 Oct 2012, David Miller wrote:
quoted
From: Julian Anastasov <ja@ssi.bg>
Date: Sun, 7 Oct 2012 14:26:03 +0300
quoted
@@ -322,7 +322,8 @@ int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
{
int r = secpath_exists(skb) ? 0 : IN_DEV_RPFILTER(idev);
- if (!r && !fib_num_tclassid_users(dev_net(dev))) {
+ if (!r && !fib_num_tclassid_users(dev_net(dev)) &&
+ dev->ifindex != oif) {
*itag = 0;
return 0;
}
Hmmm, won't this cause the slow path to be taken for locally
destined traffic?
In this case idev=eth0 and oif=lo. The only case
where we can see same input and output device is for
forwarding and loopback (but only output routes where
there is no such validation).
Ok, now I understand. This added condition is fine.
Thanks.