diff options
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/xfrm6_input.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/net/ipv6/xfrm6_input.c b/net/ipv6/xfrm6_input.c index 063ce6ed1bd0..a4714d76ae6b 100644 --- a/net/ipv6/xfrm6_input.c +++ b/net/ipv6/xfrm6_input.c | |||
@@ -34,19 +34,17 @@ int xfrm6_transport_finish(struct sk_buff *skb, int async) | |||
34 | skb_network_header(skb)[IP6CB(skb)->nhoff] = | 34 | skb_network_header(skb)[IP6CB(skb)->nhoff] = |
35 | XFRM_MODE_SKB_CB(skb)->protocol; | 35 | XFRM_MODE_SKB_CB(skb)->protocol; |
36 | 36 | ||
37 | #ifdef CONFIG_NETFILTER | 37 | #ifndef CONFIG_NETFILTER |
38 | if (!async) | ||
39 | return 1; | ||
40 | #endif | ||
41 | |||
38 | ipv6_hdr(skb)->payload_len = htons(skb->len); | 42 | ipv6_hdr(skb)->payload_len = htons(skb->len); |
39 | __skb_push(skb, skb->data - skb_network_header(skb)); | 43 | __skb_push(skb, skb->data - skb_network_header(skb)); |
40 | 44 | ||
41 | NF_HOOK(PF_INET6, NF_INET_PRE_ROUTING, skb, skb->dev, NULL, | 45 | NF_HOOK(PF_INET6, NF_INET_PRE_ROUTING, skb, skb->dev, NULL, |
42 | ip6_rcv_finish); | 46 | ip6_rcv_finish); |
43 | return -1; | 47 | return -1; |
44 | #else | ||
45 | if (async) | ||
46 | return ip6_rcv_finish(skb); | ||
47 | |||
48 | return 1; | ||
49 | #endif | ||
50 | } | 48 | } |
51 | 49 | ||
52 | int xfrm6_rcv(struct sk_buff *skb) | 50 | int xfrm6_rcv(struct sk_buff *skb) |