diff options
author | Jamal Hadi Salim <hadi@cyberus.ca> | 2009-12-25 17:30:22 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-12-25 17:30:22 -0800 |
commit | 28f6aeea3f12d37bd258b2c0d5ba891bff4ec479 (patch) | |
tree | fadf8801f14420d7aac5d0a22812da8773c7f836 /net/ipv4/fib_frontend.c | |
parent | 4a6e47a460ce55e283063fc3f7391c8ea46bea27 (diff) | |
download | op-kernel-dev-28f6aeea3f12d37bd258b2c0d5ba891bff4ec479.zip op-kernel-dev-28f6aeea3f12d37bd258b2c0d5ba891bff4ec479.tar.gz |
net: restore ip source validation
when using policy routing and the skb mark:
there are cases where a back path validation requires us
to use a different routing table for src ip validation than
the one used for mapping ingress dst ip.
One such a case is transparent proxying where we pretend to be
the destination system and therefore the local table
is used for incoming packets but possibly a main table would
be used on outbound.
Make the default behavior to allow the above and if users
need to turn on the symmetry via sysctl src_valid_mark
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/fib_frontend.c')
-rw-r--r-- | net/ipv4/fib_frontend.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index 3323168..82dbf71 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c @@ -252,6 +252,8 @@ int fib_validate_source(__be32 src, __be32 dst, u8 tos, int oif, no_addr = in_dev->ifa_list == NULL; rpf = IN_DEV_RPFILTER(in_dev); accept_local = IN_DEV_ACCEPT_LOCAL(in_dev); + if (mark && !IN_DEV_SRC_VMARK(in_dev)) + fl.mark = 0; } rcu_read_unlock(); |