diff options
Diffstat (limited to 'net/ipv4/xfrm4_output.c')
-rw-r--r-- | net/ipv4/xfrm4_output.c | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/net/ipv4/xfrm4_output.c b/net/ipv4/xfrm4_output.c index 13fd11335e28..0ffc3d078489 100644 --- a/net/ipv4/xfrm4_output.c +++ b/net/ipv4/xfrm4_output.c | |||
@@ -69,17 +69,12 @@ EXPORT_SYMBOL(xfrm4_prepare_output); | |||
69 | 69 | ||
70 | static inline int xfrm4_output_one(struct sk_buff *skb) | 70 | static inline int xfrm4_output_one(struct sk_buff *skb) |
71 | { | 71 | { |
72 | struct iphdr *iph; | ||
73 | int err; | 72 | int err; |
74 | 73 | ||
75 | err = xfrm_output(skb); | 74 | err = xfrm_output(skb); |
76 | if (err) | 75 | if (err) |
77 | goto error_nolock; | 76 | goto error_nolock; |
78 | 77 | ||
79 | iph = ip_hdr(skb); | ||
80 | iph->tot_len = htons(skb->len); | ||
81 | ip_send_check(iph); | ||
82 | |||
83 | IPCB(skb)->flags |= IPSKB_XFRM_TRANSFORMED; | 78 | IPCB(skb)->flags |= IPSKB_XFRM_TRANSFORMED; |
84 | err = 0; | 79 | err = 0; |
85 | 80 | ||
@@ -97,8 +92,7 @@ static int xfrm4_output_finish2(struct sk_buff *skb) | |||
97 | while (likely((err = xfrm4_output_one(skb)) == 0)) { | 92 | while (likely((err = xfrm4_output_one(skb)) == 0)) { |
98 | nf_reset(skb); | 93 | nf_reset(skb); |
99 | 94 | ||
100 | err = nf_hook(PF_INET, NF_IP_LOCAL_OUT, skb, NULL, | 95 | err = __ip_local_out(skb); |
101 | skb->dst->dev, dst_output); | ||
102 | if (unlikely(err != 1)) | 96 | if (unlikely(err != 1)) |
103 | break; | 97 | break; |
104 | 98 | ||