Like the previous diffs, it reduces the number of m-m_pkthdr.rcvif
occurrences, this time in ip6_input(). Should be no functional change.
Ok?
Index: netinet6/ip6_input.c
===
RCS file: /home/ncvs/src/sys/netinet6/ip6_input.c,v
retrieving revision 1.124
diff -u -p -r1.124 ip6_input.c
--- netinet6/ip6_input.c14 Apr 2014 09:06:42 - 1.124
+++ netinet6/ip6_input.c12 May 2014 13:08:35 -
@@ -190,6 +190,7 @@ extern struct route_in6 ip6_forward_rt;
void
ip6_input(struct mbuf *m)
{
+ struct ifnet *ifp;
struct ip6_hdr *ip6;
int off, nest;
u_int32_t plen;
@@ -202,9 +203,8 @@ ip6_input(struct mbuf *m)
int srcrt = 0, isanycast = 0;
u_int rtableid = 0;
- /*
-* mbuf statistics by kazu
-*/
+ ifp = m-m_pkthdr.rcvif;
+
if (m-m_flags M_EXT) {
if (m-m_next)
ip6stat.ip6s_mext2m++;
@@ -214,23 +214,21 @@ ip6_input(struct mbuf *m)
if (m-m_next) {
if (m-m_flags M_LOOP) {
ip6stat.ip6s_m2m[lo0ifp-if_index]++; /*XXX*/
- } else if (m-m_pkthdr.rcvif-if_index
nitems(ip6stat.ip6s_m2m))
- ip6stat.ip6s_m2m[m-m_pkthdr.rcvif-if_index]++;
+ } else if (ifp-if_index nitems(ip6stat.ip6s_m2m))
+ ip6stat.ip6s_m2m[ifp-if_index]++;
else
ip6stat.ip6s_m2m[0]++;
} else
ip6stat.ip6s_m1++;
}
- in6_ifstat_inc(m-m_pkthdr.rcvif, ifs6_in_receive);
+ in6_ifstat_inc(ifp, ifs6_in_receive);
ip6stat.ip6s_total++;
if (m-m_len sizeof(struct ip6_hdr)) {
- struct ifnet *inifp;
- inifp = m-m_pkthdr.rcvif;
if ((m = m_pullup(m, sizeof(struct ip6_hdr))) == NULL) {
ip6stat.ip6s_toosmall++;
- in6_ifstat_inc(inifp, ifs6_in_hdrerr);
+ in6_ifstat_inc(ifp, ifs6_in_hdrerr);
return;
}
}
@@ -239,13 +237,12 @@ ip6_input(struct mbuf *m)
if ((ip6-ip6_vfc IPV6_VERSION_MASK) != IPV6_VERSION) {
ip6stat.ip6s_badvers++;
- in6_ifstat_inc(m-m_pkthdr.rcvif, ifs6_in_hdrerr);
+ in6_ifstat_inc(ifp, ifs6_in_hdrerr);
goto bad;
}
#if NCARP 0
- if (m-m_pkthdr.rcvif-if_type == IFT_CARP
- ip6-ip6_nxt != IPPROTO_ICMPV6
+ if (ifp-if_type == IFT_CARP ip6-ip6_nxt != IPPROTO_ICMPV6
carp_lsdrop(m, AF_INET6, ip6-ip6_src.s6_addr32,
ip6-ip6_dst.s6_addr32))
goto bad;
@@ -261,14 +258,14 @@ ip6_input(struct mbuf *m)
* XXX: badscope is not very suitable for a multicast source.
*/
ip6stat.ip6s_badscope++;
- in6_ifstat_inc(m-m_pkthdr.rcvif, ifs6_in_addrerr);
+ in6_ifstat_inc(ifp, ifs6_in_addrerr);
goto bad;
}
if ((IN6_IS_ADDR_LOOPBACK(ip6-ip6_src) ||
IN6_IS_ADDR_LOOPBACK(ip6-ip6_dst))
- (m-m_pkthdr.rcvif-if_flags IFF_LOOPBACK) == 0) {
+ (ifp-if_flags IFF_LOOPBACK) == 0) {
ip6stat.ip6s_badscope++;
- in6_ifstat_inc(m-m_pkthdr.rcvif, ifs6_in_addrerr);
+ in6_ifstat_inc(ifp, ifs6_in_addrerr);
goto bad;
}
if (IN6_IS_ADDR_MC_INTFACELOCAL(ip6-ip6_dst)
@@ -280,7 +277,7 @@ ip6_input(struct mbuf *m)
* as the outgoing/incoming interface.
*/
ip6stat.ip6s_badscope++;
- in6_ifstat_inc(m-m_pkthdr.rcvif, ifs6_in_addrerr);
+ in6_ifstat_inc(ifp, ifs6_in_addrerr);
goto bad;
}
@@ -299,7 +296,7 @@ ip6_input(struct mbuf *m)
if (IN6_IS_ADDR_V4MAPPED(ip6-ip6_src) ||
IN6_IS_ADDR_V4MAPPED(ip6-ip6_dst)) {
ip6stat.ip6s_badscope++;
- in6_ifstat_inc(m-m_pkthdr.rcvif, ifs6_in_addrerr);
+ in6_ifstat_inc(ifp, ifs6_in_addrerr);
goto bad;
}
#if 0
@@ -313,7 +310,7 @@ ip6_input(struct mbuf *m)
if (IN6_IS_ADDR_V4COMPAT(ip6-ip6_src) ||
IN6_IS_ADDR_V4COMPAT(ip6-ip6_dst)) {
ip6stat.ip6s_badscope++;
- in6_ifstat_inc(m-m_pkthdr.rcvif, ifs6_in_addrerr);
+ in6_ifstat_inc(ifp, ifs6_in_addrerr);
goto bad;
}
#endif
@@ -323,7 +320,7 @@ ip6_input(struct mbuf *m)
* Packet filter
*/
odst = ip6-ip6_dst;
- if (pf_test(AF_INET6, PF_IN, m-m_pkthdr.rcvif, m, NULL) != PF_PASS)
+ if (pf_test(AF_INET6, PF_IN, ifp, m, NULL) != PF_PASS)
goto bad;
if (m == NULL)