From b664acf1131c80fbd2a786741f4f92f7edf930e2 Mon Sep 17 00:00:00 2001 From: Eric Leblond Date: Tue, 25 Nov 2008 12:18:11 +0100 Subject: [PATCH] --- yaml --- r: 122385 b: refs/heads/master c: 9f40ac713c49fb6ca655550b620edc85c445d743 h: refs/heads/master i: 122383: 2d399a1263bbf50f40a765291e8752cf8c5a7997 v: v3 --- [refs] | 2 +- trunk/net/ipv6/netfilter.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 58e77537d27a..8c0136948154 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5f145e44ae09f629d25536b2947a91e9c01bddcb +refs/heads/master: 9f40ac713c49fb6ca655550b620edc85c445d743 diff --git a/trunk/net/ipv6/netfilter.c b/trunk/net/ipv6/netfilter.c index fd5b3a4e3329..0b88c5632793 100644 --- a/trunk/net/ipv6/netfilter.c +++ b/trunk/net/ipv6/netfilter.c @@ -56,6 +56,7 @@ EXPORT_SYMBOL(ip6_route_me_harder); struct ip6_rt_info { struct in6_addr daddr; struct in6_addr saddr; + u_int32_t mark; }; static void nf_ip6_saveroute(const struct sk_buff *skb, @@ -68,6 +69,7 @@ static void nf_ip6_saveroute(const struct sk_buff *skb, rt_info->daddr = iph->daddr; rt_info->saddr = iph->saddr; + rt_info->mark = skb->mark; } } @@ -79,7 +81,8 @@ static int nf_ip6_reroute(struct sk_buff *skb, if (entry->hook == NF_INET_LOCAL_OUT) { struct ipv6hdr *iph = ipv6_hdr(skb); if (!ipv6_addr_equal(&iph->daddr, &rt_info->daddr) || - !ipv6_addr_equal(&iph->saddr, &rt_info->saddr)) + !ipv6_addr_equal(&iph->saddr, &rt_info->saddr) || + skb->mark != rt_info->mark) return ip6_route_me_harder(skb); } return 0;