[IPv6] rules: Use RT6_LOOKUP_F_HAS_SADDR and fix source based selectors
commitadaa70bbdfbc725e485179b06c8b23a20fbb7952
authorThomas Graf <tgraf@suug.ch>
Fri, 13 Oct 2006 22:01:03 +0000 (13 15:01 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Mon, 16 Oct 2006 06:14:19 +0000 (15 23:14 -0700)
treec402d42c660163902e1667fd67a00de409ac4a68
parent918049f0135854a1583f9b3b88f44dbf2b027329
[IPv6] rules: Use RT6_LOOKUP_F_HAS_SADDR and fix source based selectors

Fixes rt6_lookup() to provide the source address in the flow
and sets RT6_LOOKUP_F_HAS_SADDR whenever it is present in
the flow.

Avoids unnecessary prefix comparisons by checking for a prefix
length first.

Fixes the rule logic to not match packets if a source selector
has been specified but no source address is available.

Thanks to Kim Nordlund <kim.nordlund@nokia.com> for working
on this patch with me.

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Acked-by: Ville Nuorvala <vnuorval@tcs.hut.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/fib6_rules.c
net/ipv6/route.c