aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2007-03-14 20:05:37 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-04-26 01:26:01 -0400
commitd10ba34b001944a8d1c8adb5646140ef089c432b (patch)
treecba54f5d23021a2b0061f5f2891ac7fa8fca6d5a /net/ipv4
parent55f79cc0c02f9ce8f85e965e9679796f62b790f5 (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.c3
-rw-r--r--net/ipv4/ipvs/ip_vs_xmit.c3
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);