diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c index 7c166b77eb1..ed3d873d850 100644 --- a/sys/netinet/ip_output.c +++ b/sys/netinet/ip_output.c @@ -934,10 +934,14 @@ sendorfree: for (m = m0; m; m = m0) { m0 = m->m_nextpkt; m->m_nextpkt = 0; - if (error == 0) + if (error == 0) { + /* Record statistics for this interface address. */ + ia->ia_ifa.if_opackets++; + ia->ia_ifa.if_obytes += m->m_pkthdr.len; + error = (*ifp->if_output)(ifp, m, (struct sockaddr *)dst, ro->ro_rt); - else + } else m_freem(m); } diff --git a/sys/netinet6/ip6_output.c b/sys/netinet6/ip6_output.c index 4f1bd4cabe1..328e7ea8c33 100644 --- a/sys/netinet6/ip6_output.c +++ b/sys/netinet6/ip6_output.c @@ -1012,6 +1012,12 @@ sendorfree: m0 = m->m_nextpkt; m->m_nextpkt = 0; if (error == 0) { + /* Record statistics for this interface address. */ + if (ia) { + ia->ia_ifa.if_opackets++; + ia->ia_ifa.if_obytes += m->m_pkthdr.len; + } + error = nd6_output(ifp, origifp, m, dst, ro->ro_rt); } else m_freem(m);