diff options
Diffstat (limited to 'net/ipv4/esp4.c')
-rw-r--r-- | net/ipv4/esp4.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c index 66eb4968b910..8377bedf3f66 100644 --- a/net/ipv4/esp4.c +++ b/net/ipv4/esp4.c | |||
@@ -16,7 +16,6 @@ | |||
16 | static int esp_output(struct xfrm_state *x, struct sk_buff *skb) | 16 | static int esp_output(struct xfrm_state *x, struct sk_buff *skb) |
17 | { | 17 | { |
18 | int err; | 18 | int err; |
19 | struct iphdr *top_iph; | ||
20 | struct ip_esp_hdr *esph; | 19 | struct ip_esp_hdr *esph; |
21 | struct crypto_blkcipher *tfm; | 20 | struct crypto_blkcipher *tfm; |
22 | struct blkcipher_desc desc; | 21 | struct blkcipher_desc desc; |
@@ -59,9 +58,7 @@ static int esp_output(struct xfrm_state *x, struct sk_buff *skb) | |||
59 | pskb_put(skb, trailer, clen - skb->len); | 58 | pskb_put(skb, trailer, clen - skb->len); |
60 | 59 | ||
61 | skb_push(skb, -skb_network_offset(skb)); | 60 | skb_push(skb, -skb_network_offset(skb)); |
62 | top_iph = ip_hdr(skb); | ||
63 | esph = ip_esp_hdr(skb); | 61 | esph = ip_esp_hdr(skb); |
64 | top_iph->tot_len = htons(skb->len + alen); | ||
65 | *(skb_tail_pointer(trailer) - 1) = *skb_mac_header(skb); | 62 | *(skb_tail_pointer(trailer) - 1) = *skb_mac_header(skb); |
66 | *skb_mac_header(skb) = IPPROTO_ESP; | 63 | *skb_mac_header(skb) = IPPROTO_ESP; |
67 | 64 | ||
@@ -76,7 +73,7 @@ static int esp_output(struct xfrm_state *x, struct sk_buff *skb) | |||
76 | uh = (struct udphdr *)esph; | 73 | uh = (struct udphdr *)esph; |
77 | uh->source = encap->encap_sport; | 74 | uh->source = encap->encap_sport; |
78 | uh->dest = encap->encap_dport; | 75 | uh->dest = encap->encap_dport; |
79 | uh->len = htons(skb->len + alen - top_iph->ihl*4); | 76 | uh->len = htons(skb->len + alen - skb_transport_offset(skb)); |
80 | uh->check = 0; | 77 | uh->check = 0; |
81 | 78 | ||
82 | switch (encap->encap_type) { | 79 | switch (encap->encap_type) { |
@@ -136,8 +133,6 @@ static int esp_output(struct xfrm_state *x, struct sk_buff *skb) | |||
136 | unlock: | 133 | unlock: |
137 | spin_unlock_bh(&x->lock); | 134 | spin_unlock_bh(&x->lock); |
138 | 135 | ||
139 | ip_send_check(top_iph); | ||
140 | |||
141 | error: | 136 | error: |
142 | return err; | 137 | return err; |
143 | } | 138 | } |