projects
/
linux-2.6-block.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild
[linux-2.6-block.git]
/
net
/
ipv4
/
xfrm4_mode_transport.c
diff --git
a/net/ipv4/xfrm4_mode_transport.c
b/net/ipv4/xfrm4_mode_transport.c
index 601047161ea6102ff80fb4e89ebd25672dae2378..fd840c7d75ea9bc0214bb14dd238e3cee820521a 100644
(file)
--- a/
net/ipv4/xfrm4_mode_transport.c
+++ b/
net/ipv4/xfrm4_mode_transport.c
@@
-17,18
+17,17
@@
*
* The IP header will be moved forward to make space for the encapsulation
* header.
*
* The IP header will be moved forward to make space for the encapsulation
* header.
- *
- * On exit, skb->h will be set to the start of the payload to be processed
- * by x->type->output and skb->nh will be set to the top IP header.
*/
static int xfrm4_transport_output(struct xfrm_state *x, struct sk_buff *skb)
{
struct iphdr *iph = ip_hdr(skb);
int ihl = iph->ihl * 4;
*/
static int xfrm4_transport_output(struct xfrm_state *x, struct sk_buff *skb)
{
struct iphdr *iph = ip_hdr(skb);
int ihl = iph->ihl * 4;
+ skb_set_network_header(skb, -x->props.header_len);
+ skb->mac_header = skb->network_header +
+ offsetof(struct iphdr, protocol);
skb->transport_header = skb->network_header + ihl;
skb->transport_header = skb->network_header + ihl;
- skb_push(skb, x->props.header_len);
- skb_reset_network_header(skb);
+ __skb_pull(skb, ihl);
memmove(skb_network_header(skb), iph, ihl);
return 0;
}
memmove(skb_network_header(skb), iph, ihl);
return 0;
}