aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/xfrm4_output.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/xfrm4_output.c')
-rw-r--r--net/ipv4/xfrm4_output.c8
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
70static inline int xfrm4_output_one(struct sk_buff *skb) 70static 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