aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2006-08-26 16:50:20 -0700
committerDavid S. Miller <davem@sunset.davemloft.net>2006-09-22 15:18:14 -0700
commit366e4adc0f9ef33f56c62f980a7d83775e64abd0 (patch)
tree66a33db0eb110e75c55e906de27b6693b42e7efa
parent74975d40b16fd4bad24a2e2630dc7957d8cba013 (diff)
downloadkernel_samsung_tuna-366e4adc0f9ef33f56c62f980a7d83775e64abd0.zip
kernel_samsung_tuna-366e4adc0f9ef33f56c62f980a7d83775e64abd0.tar.gz
kernel_samsung_tuna-366e4adc0f9ef33f56c62f980a7d83775e64abd0.tar.bz2
[IPV6]: Fix routing by fwmark
Fix mark comparison, also dump the mask to userspace when the mask is zero, but the mark is not (in which case the mark is dumped, so the mask is needed to make sense of it). Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/ipv6/fib6_rules.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv6/fib6_rules.c b/net/ipv6/fib6_rules.c
index ee4aa43..2fbc71d 100644
--- a/net/ipv6/fib6_rules.c
+++ b/net/ipv6/fib6_rules.c
@@ -129,7 +129,7 @@ static int fib6_rule_match(struct fib_rule *rule, struct flowi *fl, int flags)
return 0;
#ifdef CONFIG_IPV6_ROUTE_FWMARK
- if ((r->fwmark ^ fl->fl6_fwmark) / r->fwmask)
+ if ((r->fwmark ^ fl->fl6_fwmark) & r->fwmask)
return 0;
#endif
@@ -256,7 +256,7 @@ static int fib6_rule_fill(struct fib_rule *rule, struct sk_buff *skb,
if (rule6->fwmark)
NLA_PUT_U32(skb, FRA_FWMARK, rule6->fwmark);
- if (rule6->fwmask)
+ if (rule6->fwmask || rule6->fwmark)
NLA_PUT_U32(skb, FRA_FWMASK, rule6->fwmask);
#endif