diff options
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r-- | net/ipv6/ip6_output.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index e46d4683eab0..011082ed921a 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -1399,6 +1399,13 @@ int ip6_push_pending_frames(struct sock *sk) | |||
1399 | 1399 | ||
1400 | skb->dst = dst_clone(&rt->u.dst); | 1400 | skb->dst = dst_clone(&rt->u.dst); |
1401 | IP6_INC_STATS(rt->rt6i_idev, IPSTATS_MIB_OUTREQUESTS); | 1401 | IP6_INC_STATS(rt->rt6i_idev, IPSTATS_MIB_OUTREQUESTS); |
1402 | if (proto == IPPROTO_ICMPV6) { | ||
1403 | struct inet6_dev *idev = ip6_dst_idev(skb->dst); | ||
1404 | |||
1405 | ICMP6MSGOUT_INC_STATS_BH(idev, icmp6_hdr(skb)->icmp6_type); | ||
1406 | ICMP6_INC_STATS_BH(idev, ICMP6_MIB_OUTMSGS); | ||
1407 | } | ||
1408 | |||
1402 | err = NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, skb->dst->dev, dst_output); | 1409 | err = NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, skb->dst->dev, dst_output); |
1403 | if (err) { | 1410 | if (err) { |
1404 | if (err > 0) | 1411 | if (err > 0) |