diff options
Diffstat (limited to 'net/ipv6/xfrm6_output.c')
-rw-r--r-- | net/ipv6/xfrm6_output.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/net/ipv6/xfrm6_output.c b/net/ipv6/xfrm6_output.c index c45050cfe72b..0f0ff51f6dba 100644 --- a/net/ipv6/xfrm6_output.c +++ b/net/ipv6/xfrm6_output.c | |||
@@ -75,16 +75,12 @@ EXPORT_SYMBOL(xfrm6_prepare_output); | |||
75 | 75 | ||
76 | static inline int xfrm6_output_one(struct sk_buff *skb) | 76 | static inline int xfrm6_output_one(struct sk_buff *skb) |
77 | { | 77 | { |
78 | struct ipv6hdr *iph; | ||
79 | int err; | 78 | int err; |
80 | 79 | ||
81 | err = xfrm_output(skb); | 80 | err = xfrm_output(skb); |
82 | if (err) | 81 | if (err) |
83 | goto error_nolock; | 82 | goto error_nolock; |
84 | 83 | ||
85 | iph = ipv6_hdr(skb); | ||
86 | iph->payload_len = htons(skb->len - sizeof(*iph)); | ||
87 | |||
88 | IP6CB(skb)->flags |= IP6SKB_XFRM_TRANSFORMED; | 84 | IP6CB(skb)->flags |= IP6SKB_XFRM_TRANSFORMED; |
89 | err = 0; | 85 | err = 0; |
90 | 86 | ||
@@ -102,8 +98,7 @@ static int xfrm6_output_finish2(struct sk_buff *skb) | |||
102 | while (likely((err = xfrm6_output_one(skb)) == 0)) { | 98 | while (likely((err = xfrm6_output_one(skb)) == 0)) { |
103 | nf_reset(skb); | 99 | nf_reset(skb); |
104 | 100 | ||
105 | err = nf_hook(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, | 101 | err = __ip6_local_out(skb); |
106 | skb->dst->dev, dst_output); | ||
107 | if (unlikely(err != 1)) | 102 | if (unlikely(err != 1)) |
108 | break; | 103 | break; |
109 | 104 | ||