diff options
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r-- | net/ipv6/ip6_output.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index db28c208f329..f0fded630f57 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -103,7 +103,8 @@ static int ip6_output_finish(struct sk_buff *skb) | |||
103 | else if (dst->neighbour) | 103 | else if (dst->neighbour) |
104 | return dst->neighbour->output(skb); | 104 | return dst->neighbour->output(skb); |
105 | 105 | ||
106 | IP6_INC_STATS_BH(ip6_dst_idev(dst), IPSTATS_MIB_OUTNOROUTES); | 106 | IP6_INC_STATS_BH(dev_net(dst->dev), |
107 | ip6_dst_idev(dst), IPSTATS_MIB_OUTNOROUTES); | ||
107 | kfree_skb(skb); | 108 | kfree_skb(skb); |
108 | return -EINVAL; | 109 | return -EINVAL; |
109 | 110 | ||
@@ -458,7 +459,8 @@ int ip6_forward(struct sk_buff *skb) | |||
458 | skb->dev = dst->dev; | 459 | skb->dev = dst->dev; |
459 | icmpv6_send(skb, ICMPV6_TIME_EXCEED, ICMPV6_EXC_HOPLIMIT, | 460 | icmpv6_send(skb, ICMPV6_TIME_EXCEED, ICMPV6_EXC_HOPLIMIT, |
460 | 0, skb->dev); | 461 | 0, skb->dev); |
461 | IP6_INC_STATS_BH(ip6_dst_idev(dst), IPSTATS_MIB_INHDRERRORS); | 462 | IP6_INC_STATS_BH(net, |
463 | ip6_dst_idev(dst), IPSTATS_MIB_INHDRERRORS); | ||
462 | 464 | ||
463 | kfree_skb(skb); | 465 | kfree_skb(skb); |
464 | return -ETIMEDOUT; | 466 | return -ETIMEDOUT; |
@@ -527,8 +529,10 @@ int ip6_forward(struct sk_buff *skb) | |||
527 | /* Again, force OUTPUT device used as source address */ | 529 | /* Again, force OUTPUT device used as source address */ |
528 | skb->dev = dst->dev; | 530 | skb->dev = dst->dev; |
529 | icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, dst_mtu(dst), skb->dev); | 531 | icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, dst_mtu(dst), skb->dev); |
530 | IP6_INC_STATS_BH(ip6_dst_idev(dst), IPSTATS_MIB_INTOOBIGERRORS); | 532 | IP6_INC_STATS_BH(net, |
531 | IP6_INC_STATS_BH(ip6_dst_idev(dst), IPSTATS_MIB_FRAGFAILS); | 533 | ip6_dst_idev(dst), IPSTATS_MIB_INTOOBIGERRORS); |
534 | IP6_INC_STATS_BH(net, | ||
535 | ip6_dst_idev(dst), IPSTATS_MIB_FRAGFAILS); | ||
532 | kfree_skb(skb); | 536 | kfree_skb(skb); |
533 | return -EMSGSIZE; | 537 | return -EMSGSIZE; |
534 | } | 538 | } |
@@ -544,12 +548,12 @@ int ip6_forward(struct sk_buff *skb) | |||
544 | 548 | ||
545 | hdr->hop_limit--; | 549 | hdr->hop_limit--; |
546 | 550 | ||
547 | IP6_INC_STATS_BH(ip6_dst_idev(dst), IPSTATS_MIB_OUTFORWDATAGRAMS); | 551 | IP6_INC_STATS_BH(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTFORWDATAGRAMS); |
548 | return NF_HOOK(PF_INET6, NF_INET_FORWARD, skb, skb->dev, dst->dev, | 552 | return NF_HOOK(PF_INET6, NF_INET_FORWARD, skb, skb->dev, dst->dev, |
549 | ip6_forward_finish); | 553 | ip6_forward_finish); |
550 | 554 | ||
551 | error: | 555 | error: |
552 | IP6_INC_STATS_BH(ip6_dst_idev(dst), IPSTATS_MIB_INADDRERRORS); | 556 | IP6_INC_STATS_BH(net, ip6_dst_idev(dst), IPSTATS_MIB_INADDRERRORS); |
553 | drop: | 557 | drop: |
554 | kfree_skb(skb); | 558 | kfree_skb(skb); |
555 | return -EINVAL; | 559 | return -EINVAL; |
@@ -991,7 +995,7 @@ static int ip6_dst_lookup_tail(struct sock *sk, | |||
991 | 995 | ||
992 | out_err_release: | 996 | out_err_release: |
993 | if (err == -ENETUNREACH) | 997 | if (err == -ENETUNREACH) |
994 | IP6_INC_STATS_BH(NULL, IPSTATS_MIB_OUTNOROUTES); | 998 | IP6_INC_STATS_BH(net, NULL, IPSTATS_MIB_OUTNOROUTES); |
995 | dst_release(*dst); | 999 | dst_release(*dst); |
996 | *dst = NULL; | 1000 | *dst = NULL; |
997 | return err; | 1001 | return err; |