ipv6: ignore looped-back NA while dad is running
[deliverable/linux.git] / net / ipv6 / netfilter.c
index 39aaca2b4fd2db98d7463110107ecc0ec70b2097..28bc1f644b7b3158470620a9a8ca2b9c0c1f44e8 100644 (file)
@@ -90,9 +90,18 @@ static int nf_ip6_reroute(struct sk_buff *skb,
        return 0;
 }
 
-static int nf_ip6_route(struct dst_entry **dst, struct flowi *fl)
+static int nf_ip6_route(struct net *net, struct dst_entry **dst,
+                       struct flowi *fl, bool strict)
 {
-       *dst = ip6_route_output(&init_net, NULL, &fl->u.ip6);
+       static const struct ipv6_pinfo fake_pinfo;
+       static const struct inet_sock fake_sk = {
+               /* makes ip6_route_output set RT6_LOOKUP_F_IFACE: */
+               .sk.sk_bound_dev_if = 1,
+               .pinet6 = (struct ipv6_pinfo *) &fake_pinfo,
+       };
+       const void *sk = strict ? &fake_sk : NULL;
+
+       *dst = ip6_route_output(net, sk, &fl->u.ip6);
        return (*dst)->error;
 }
 
This page took 0.025565 seconds and 5 git commands to generate.