diff options
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/mcast.c | 5 | ||||
-rw-r--r-- | net/ipv6/ndisc.c | 20 |
2 files changed, 15 insertions, 10 deletions
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index c6436f5e3e9f..07e86ebb46b8 100644 --- a/net/ipv6/mcast.c +++ b/net/ipv6/mcast.c | |||
@@ -1423,8 +1423,9 @@ static struct sk_buff *mld_newpack(struct net_device *dev, int size) | |||
1423 | 1423 | ||
1424 | memcpy(skb_put(skb, sizeof(ra)), ra, sizeof(ra)); | 1424 | memcpy(skb_put(skb, sizeof(ra)), ra, sizeof(ra)); |
1425 | 1425 | ||
1426 | pmr =(struct mld2_report *)skb_put(skb, sizeof(*pmr)); | 1426 | skb_set_transport_header(skb, skb->tail - skb->data); |
1427 | skb->h.raw = (unsigned char *)pmr; | 1427 | skb_put(skb, sizeof(*pmr)); |
1428 | pmr = (struct mld2_report *)skb_transport_header(skb); | ||
1428 | pmr->type = ICMPV6_MLD2_REPORT; | 1429 | pmr->type = ICMPV6_MLD2_REPORT; |
1429 | pmr->resv1 = 0; | 1430 | pmr->resv1 = 0; |
1430 | pmr->csum = 0; | 1431 | pmr->csum = 0; |
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index f9a85ab594db..f8e619772fb4 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c | |||
@@ -492,8 +492,9 @@ static void ndisc_send_na(struct net_device *dev, struct neighbour *neigh, | |||
492 | skb_reserve(skb, LL_RESERVED_SPACE(dev)); | 492 | skb_reserve(skb, LL_RESERVED_SPACE(dev)); |
493 | ip6_nd_hdr(sk, skb, dev, src_addr, daddr, IPPROTO_ICMPV6, len); | 493 | ip6_nd_hdr(sk, skb, dev, src_addr, daddr, IPPROTO_ICMPV6, len); |
494 | 494 | ||
495 | msg = (struct nd_msg *)skb_put(skb, len); | 495 | skb_set_transport_header(skb, skb->tail - skb->data); |
496 | skb->h.raw = (unsigned char*)msg; | 496 | skb_put(skb, len); |
497 | msg = (struct nd_msg *)skb_transport_header(skb); | ||
497 | 498 | ||
498 | msg->icmph.icmp6_type = NDISC_NEIGHBOUR_ADVERTISEMENT; | 499 | msg->icmph.icmp6_type = NDISC_NEIGHBOUR_ADVERTISEMENT; |
499 | msg->icmph.icmp6_code = 0; | 500 | msg->icmph.icmp6_code = 0; |
@@ -583,8 +584,9 @@ void ndisc_send_ns(struct net_device *dev, struct neighbour *neigh, | |||
583 | skb_reserve(skb, LL_RESERVED_SPACE(dev)); | 584 | skb_reserve(skb, LL_RESERVED_SPACE(dev)); |
584 | ip6_nd_hdr(sk, skb, dev, saddr, daddr, IPPROTO_ICMPV6, len); | 585 | ip6_nd_hdr(sk, skb, dev, saddr, daddr, IPPROTO_ICMPV6, len); |
585 | 586 | ||
586 | msg = (struct nd_msg *)skb_put(skb, len); | 587 | skb_set_transport_header(skb, skb->tail - skb->data); |
587 | skb->h.raw = (unsigned char*)msg; | 588 | skb_put(skb, len); |
589 | msg = (struct nd_msg *)skb_transport_header(skb); | ||
588 | msg->icmph.icmp6_type = NDISC_NEIGHBOUR_SOLICITATION; | 590 | msg->icmph.icmp6_type = NDISC_NEIGHBOUR_SOLICITATION; |
589 | msg->icmph.icmp6_code = 0; | 591 | msg->icmph.icmp6_code = 0; |
590 | msg->icmph.icmp6_cksum = 0; | 592 | msg->icmph.icmp6_cksum = 0; |
@@ -683,8 +685,9 @@ void ndisc_send_rs(struct net_device *dev, struct in6_addr *saddr, | |||
683 | skb_reserve(skb, LL_RESERVED_SPACE(dev)); | 685 | skb_reserve(skb, LL_RESERVED_SPACE(dev)); |
684 | ip6_nd_hdr(sk, skb, dev, saddr, daddr, IPPROTO_ICMPV6, len); | 686 | ip6_nd_hdr(sk, skb, dev, saddr, daddr, IPPROTO_ICMPV6, len); |
685 | 687 | ||
686 | hdr = (struct icmp6hdr *)skb_put(skb, len); | 688 | skb_set_transport_header(skb, skb->tail - skb->data); |
687 | skb->h.raw = (unsigned char*)hdr; | 689 | skb_put(skb, len); |
690 | hdr = icmp6_hdr(skb); | ||
688 | hdr->icmp6_type = NDISC_ROUTER_SOLICITATION; | 691 | hdr->icmp6_type = NDISC_ROUTER_SOLICITATION; |
689 | hdr->icmp6_code = 0; | 692 | hdr->icmp6_code = 0; |
690 | hdr->icmp6_cksum = 0; | 693 | hdr->icmp6_cksum = 0; |
@@ -1519,8 +1522,9 @@ void ndisc_send_redirect(struct sk_buff *skb, struct neighbour *neigh, | |||
1519 | ip6_nd_hdr(sk, buff, dev, &saddr_buf, &ipv6_hdr(skb)->saddr, | 1522 | ip6_nd_hdr(sk, buff, dev, &saddr_buf, &ipv6_hdr(skb)->saddr, |
1520 | IPPROTO_ICMPV6, len); | 1523 | IPPROTO_ICMPV6, len); |
1521 | 1524 | ||
1522 | icmph = (struct icmp6hdr *)skb_put(buff, len); | 1525 | skb_set_transport_header(buff, buff->tail - buff->data); |
1523 | buff->h.raw = (unsigned char*)icmph; | 1526 | skb_put(buff, len); |
1527 | icmph = icmp6_hdr(buff); | ||
1524 | 1528 | ||
1525 | memset(icmph, 0, sizeof(struct icmp6hdr)); | 1529 | memset(icmph, 0, sizeof(struct icmp6hdr)); |
1526 | icmph->icmp6_type = NDISC_REDIRECT; | 1530 | icmph->icmp6_type = NDISC_REDIRECT; |