diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2007-03-14 20:05:37 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 01:26:01 -0400 |
commit | d10ba34b001944a8d1c8adb5646140ef089c432b (patch) | |
tree | cba54f5d23021a2b0061f5f2891ac7fa8fca6d5a /net/ipv4 | |
parent | 55f79cc0c02f9ce8f85e965e9679796f62b790f5 (diff) |
[SK_BUFF]: More skb_put related skb_reset_transport_header
This time we have to set it to skb->tail that is not anymore equal to
skb->data, so we either add a new helper or just add the skb->tail - skb->data
offset, for now do the later.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/igmp.c | 3 | ||||
-rw-r--r-- | net/ipv4/ipvs/ip_vs_xmit.c | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c index 8f0df7b4dfe7..b0efd279ddb4 100644 --- a/net/ipv4/igmp.c +++ b/net/ipv4/igmp.c | |||
@@ -333,7 +333,8 @@ static struct sk_buff *igmpv3_newpack(struct net_device *dev, int size) | |||
333 | ((u8*)&pip[1])[2] = 0; | 333 | ((u8*)&pip[1])[2] = 0; |
334 | ((u8*)&pip[1])[3] = 0; | 334 | ((u8*)&pip[1])[3] = 0; |
335 | 335 | ||
336 | skb->h.raw = skb_put(skb, sizeof(*pig)); | 336 | skb->h.raw = skb->nh.raw + sizeof(struct iphdr) + 4; |
337 | skb_put(skb, sizeof(*pig)); | ||
337 | pig = igmpv3_report_hdr(skb); | 338 | pig = igmpv3_report_hdr(skb); |
338 | pig->type = IGMPV3_HOST_MEMBERSHIP_REPORT; | 339 | pig->type = IGMPV3_HOST_MEMBERSHIP_REPORT; |
339 | pig->resv1 = 0; | 340 | pig->resv1 = 0; |
diff --git a/net/ipv4/ipvs/ip_vs_xmit.c b/net/ipv4/ipvs/ip_vs_xmit.c index a7aee6822033..c6276d08b31e 100644 --- a/net/ipv4/ipvs/ip_vs_xmit.c +++ b/net/ipv4/ipvs/ip_vs_xmit.c | |||
@@ -323,6 +323,7 @@ ip_vs_tunnel_xmit(struct sk_buff *skb, struct ip_vs_conn *cp, | |||
323 | struct iphdr *old_iph = ip_hdr(skb); | 323 | struct iphdr *old_iph = ip_hdr(skb); |
324 | u8 tos = old_iph->tos; | 324 | u8 tos = old_iph->tos; |
325 | __be16 df = old_iph->frag_off; | 325 | __be16 df = old_iph->frag_off; |
326 | unsigned char *old_h = skb_transport_header(skb); | ||
326 | struct iphdr *iph; /* Our new IP header */ | 327 | struct iphdr *iph; /* Our new IP header */ |
327 | int max_headroom; /* The extra header space needed */ | 328 | int max_headroom; /* The extra header space needed */ |
328 | int mtu; | 329 | int mtu; |
@@ -380,7 +381,7 @@ ip_vs_tunnel_xmit(struct sk_buff *skb, struct ip_vs_conn *cp, | |||
380 | old_iph = ip_hdr(skb); | 381 | old_iph = ip_hdr(skb); |
381 | } | 382 | } |
382 | 383 | ||
383 | skb->h.raw = (void *) old_iph; | 384 | skb->h.raw = old_h; |
384 | 385 | ||
385 | /* fix old IP header checksum */ | 386 | /* fix old IP header checksum */ |
386 | ip_send_check(old_iph); | 387 | ip_send_check(old_iph); |