Now that IPv6 supports policy routing we need to reroute in NF_IP6_LOCAL_OUT
when the mark value changes.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
 };
 
 #ifdef CONFIG_NETFILTER
+extern int ip6_route_me_harder(struct sk_buff *skb);
 extern unsigned int nf_ip6_checksum(struct sk_buff *skb, unsigned int hook,
                                    unsigned int dataoff, u_int8_t protocol);
 
 
 extern struct dst_entry *      ip6_route_output(struct sock *sk,
                                                 struct flowi *fl);
 
-extern int                     ip6_route_me_harder(struct sk_buff *skb);
-
 extern void                    ip6_route_init(void);
 extern void                    ip6_route_cleanup(void);
 
 
                && (memcmp(&(*pskb)->nh.ipv6h->saddr, &saddr, sizeof(saddr))
                    || memcmp(&(*pskb)->nh.ipv6h->daddr, &daddr, sizeof(daddr))
                    || (*pskb)->nfmark != nfmark
-                   || (*pskb)->nh.ipv6h->hop_limit != hop_limit)) {
-
-               /* something which could affect routing has changed */
-
-               DEBUGP("ip6table_mangle: we'd need to re-route a packet\n");
-       }
+                   || (*pskb)->nh.ipv6h->hop_limit != hop_limit))
+               return ip6_route_me_harder(*pskb) == 0 ? ret : NF_DROP;
 
        return ret;
 }