diff options
Diffstat (limited to 'net/ipv6/ndisc.c')
-rw-r--r-- | net/ipv6/ndisc.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 9f061d1adbc2..9eb68e92cc18 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c | |||
@@ -465,8 +465,8 @@ struct sk_buff *ndisc_build_skb(struct net_device *dev, | |||
465 | 1, &err); | 465 | 1, &err); |
466 | if (!skb) { | 466 | if (!skb) { |
467 | ND_PRINTK0(KERN_ERR | 467 | ND_PRINTK0(KERN_ERR |
468 | "ICMPv6 ND: %s() failed to allocate an skb.\n", | 468 | "ICMPv6 ND: %s() failed to allocate an skb, err=%d.\n", |
469 | __func__); | 469 | __func__, err); |
470 | return NULL; | 470 | return NULL; |
471 | } | 471 | } |
472 | 472 | ||
@@ -530,10 +530,10 @@ void ndisc_send_skb(struct sk_buff *skb, | |||
530 | return; | 530 | return; |
531 | } | 531 | } |
532 | 532 | ||
533 | skb->dst = dst; | 533 | skb_dst_set(skb, dst); |
534 | 534 | ||
535 | idev = in6_dev_get(dst->dev); | 535 | idev = in6_dev_get(dst->dev); |
536 | IP6_INC_STATS(net, idev, IPSTATS_MIB_OUTREQUESTS); | 536 | IP6_UPD_PO_STATS(net, idev, IPSTATS_MIB_OUT, skb->len); |
537 | 537 | ||
538 | err = NF_HOOK(PF_INET6, NF_INET_LOCAL_OUT, skb, NULL, dst->dev, | 538 | err = NF_HOOK(PF_INET6, NF_INET_LOCAL_OUT, skb, NULL, dst->dev, |
539 | dst_output); | 539 | dst_output); |
@@ -658,6 +658,7 @@ void ndisc_send_rs(struct net_device *dev, const struct in6_addr *saddr, | |||
658 | &icmp6h, NULL, | 658 | &icmp6h, NULL, |
659 | send_sllao ? ND_OPT_SOURCE_LL_ADDR : 0); | 659 | send_sllao ? ND_OPT_SOURCE_LL_ADDR : 0); |
660 | } | 660 | } |
661 | EXPORT_SYMBOL(ndisc_send_rs); | ||
661 | 662 | ||
662 | 663 | ||
663 | static void ndisc_error_report(struct neighbour *neigh, struct sk_buff *skb) | 664 | static void ndisc_error_report(struct neighbour *neigh, struct sk_buff *skb) |
@@ -1561,8 +1562,8 @@ void ndisc_send_redirect(struct sk_buff *skb, struct neighbour *neigh, | |||
1561 | 1, &err); | 1562 | 1, &err); |
1562 | if (buff == NULL) { | 1563 | if (buff == NULL) { |
1563 | ND_PRINTK0(KERN_ERR | 1564 | ND_PRINTK0(KERN_ERR |
1564 | "ICMPv6 Redirect: %s() failed to allocate an skb.\n", | 1565 | "ICMPv6 Redirect: %s() failed to allocate an skb, err=%d.\n", |
1565 | __func__); | 1566 | __func__, err); |
1566 | goto release; | 1567 | goto release; |
1567 | } | 1568 | } |
1568 | 1569 | ||
@@ -1611,9 +1612,9 @@ void ndisc_send_redirect(struct sk_buff *skb, struct neighbour *neigh, | |||
1611 | len, IPPROTO_ICMPV6, | 1612 | len, IPPROTO_ICMPV6, |
1612 | csum_partial(icmph, len, 0)); | 1613 | csum_partial(icmph, len, 0)); |
1613 | 1614 | ||
1614 | buff->dst = dst; | 1615 | skb_dst_set(buff, dst); |
1615 | idev = in6_dev_get(dst->dev); | 1616 | idev = in6_dev_get(dst->dev); |
1616 | IP6_INC_STATS(net, idev, IPSTATS_MIB_OUTREQUESTS); | 1617 | IP6_UPD_PO_STATS(net, idev, IPSTATS_MIB_OUT, skb->len); |
1617 | err = NF_HOOK(PF_INET6, NF_INET_LOCAL_OUT, buff, NULL, dst->dev, | 1618 | err = NF_HOOK(PF_INET6, NF_INET_LOCAL_OUT, buff, NULL, dst->dev, |
1618 | dst_output); | 1619 | dst_output); |
1619 | if (!err) { | 1620 | if (!err) { |