diff options
author | Jamal Hadi Salim <hadi@cyberus.ca> | 2009-12-25 20:30:22 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-12-25 20:30:22 -0500 |
commit | 28f6aeea3f12d37bd258b2c0d5ba891bff4ec479 (patch) | |
tree | fadf8801f14420d7aac5d0a22812da8773c7f836 /net/ipv4/fib_frontend.c | |
parent | 4a6e47a460ce55e283063fc3f7391c8ea46bea27 (diff) |
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 3323168ee52d..82dbf711d6d0 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, | |||
252 | no_addr = in_dev->ifa_list == NULL; | 252 | no_addr = in_dev->ifa_list == NULL; |
253 | rpf = IN_DEV_RPFILTER(in_dev); | 253 | rpf = IN_DEV_RPFILTER(in_dev); |
254 | accept_local = IN_DEV_ACCEPT_LOCAL(in_dev); | 254 | accept_local = IN_DEV_ACCEPT_LOCAL(in_dev); |
255 | if (mark && !IN_DEV_SRC_VMARK(in_dev)) | ||
256 | fl.mark = 0; | ||
255 | } | 257 | } |
256 | rcu_read_unlock(); | 258 | rcu_read_unlock(); |
257 | 259 | ||