Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/netinet6 Get rcvif once and reuse it
details: https://anonhg.NetBSD.org/src/rev/e3a4c90cc318
branches: trunk
changeset: 345325:e3a4c90cc318
user: ozaki-r <ozaki-r%NetBSD.org@localhost>
date: Thu May 19 08:53:25 2016 +0000
description:
Get rcvif once and reuse it
No functional change.
diffstat:
sys/netinet6/ip6_input.c | 68 ++++++++++++++++++++++-------------------------
1 files changed, 32 insertions(+), 36 deletions(-)
diffs (249 lines):
diff -r cfd84d88a46a -r e3a4c90cc318 sys/netinet6/ip6_input.c
--- a/sys/netinet6/ip6_input.c Thu May 19 08:35:03 2016 +0000
+++ b/sys/netinet6/ip6_input.c Thu May 19 08:53:25 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ip6_input.c,v 1.158 2016/04/04 07:37:07 ozaki-r Exp $ */
+/* $NetBSD: ip6_input.c,v 1.159 2016/05/19 08:53:25 ozaki-r Exp $ */
/* $KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $ */
/*
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.158 2016/04/04 07:37:07 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.159 2016/05/19 08:53:25 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_gateway.h"
@@ -248,6 +248,7 @@
struct sockaddr dst;
struct sockaddr_in6 dst6;
} u;
+ struct ifnet *rcvif = m->m_pkthdr.rcvif;
/*
* make sure we don't have onion peering information into m_tag.
@@ -265,19 +266,18 @@
} else {
#define M2MMAX 32
if (m->m_next) {
- if (m->m_flags & M_LOOP) {
+ if (m->m_flags & M_LOOP)
/*XXX*/ IP6_STATINC(IP6_STAT_M2M + lo0ifp->if_index);
- } else if (m->m_pkthdr.rcvif->if_index < M2MMAX) {
- IP6_STATINC(IP6_STAT_M2M +
- m->m_pkthdr.rcvif->if_index);
- } else
+ else if (rcvif->if_index < M2MMAX)
+ IP6_STATINC(IP6_STAT_M2M + rcvif->if_index);
+ else
IP6_STATINC(IP6_STAT_M2M);
} else
IP6_STATINC(IP6_STAT_M1);
#undef M2MMAX
}
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_receive);
+ in6_ifstat_inc(rcvif, ifs6_in_receive);
IP6_STATINC(IP6_STAT_TOTAL);
/*
@@ -287,19 +287,17 @@
* IPv6 header is in the first mbuf of the chain.
*/
if (IP6_HDR_ALIGNED_P(mtod(m, void *)) == 0) {
- struct ifnet *inifp = m->m_pkthdr.rcvif;
if ((m = m_copyup(m, sizeof(struct ip6_hdr),
(max_linkhdr + 3) & ~3)) == NULL) {
/* XXXJRT new stat, please */
IP6_STATINC(IP6_STAT_TOOSMALL);
- in6_ifstat_inc(inifp, ifs6_in_hdrerr);
+ in6_ifstat_inc(rcvif, ifs6_in_hdrerr);
return;
}
} else if (__predict_false(m->m_len < sizeof(struct ip6_hdr))) {
- struct ifnet *inifp = m->m_pkthdr.rcvif;
if ((m = m_pullup(m, sizeof(struct ip6_hdr))) == NULL) {
IP6_STATINC(IP6_STAT_TOOSMALL);
- in6_ifstat_inc(inifp, ifs6_in_hdrerr);
+ in6_ifstat_inc(rcvif, ifs6_in_hdrerr);
return;
}
}
@@ -308,7 +306,7 @@
if ((ip6->ip6_vfc & IPV6_VERSION_MASK) != IPV6_VERSION) {
IP6_STATINC(IP6_STAT_BADVERS);
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_hdrerr);
+ in6_ifstat_inc(rcvif, ifs6_in_hdrerr);
goto bad;
}
@@ -338,8 +336,7 @@
struct in6_addr odst;
odst = ip6->ip6_dst;
- if (pfil_run_hooks(inet6_pfil_hook, &m, m->m_pkthdr.rcvif,
- PFIL_IN) != 0)
+ if (pfil_run_hooks(inet6_pfil_hook, &m, rcvif, PFIL_IN) != 0)
return;
if (m == NULL)
return;
@@ -365,7 +362,7 @@
* XXX: "badscope" is not very suitable for a multicast source.
*/
IP6_STATINC(IP6_STAT_BADSCOPE);
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_addrerr);
+ in6_ifstat_inc(rcvif, ifs6_in_addrerr);
goto bad;
}
/*
@@ -383,7 +380,7 @@
if (IN6_IS_ADDR_V4MAPPED(&ip6->ip6_src) ||
IN6_IS_ADDR_V4MAPPED(&ip6->ip6_dst)) {
IP6_STATINC(IP6_STAT_BADSCOPE);
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_addrerr);
+ in6_ifstat_inc(rcvif, ifs6_in_addrerr);
goto bad;
}
#if 0
@@ -397,7 +394,7 @@
if (IN6_IS_ADDR_V4COMPAT(&ip6->ip6_src) ||
IN6_IS_ADDR_V4COMPAT(&ip6->ip6_dst)) {
IP6_STATINC(IP6_STAT_BADSCOPE);
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_addrerr);
+ in6_ifstat_inc(rcvif, ifs6_in_addrerr);
goto bad;
}
#endif
@@ -420,8 +417,8 @@
IP6_STATINC(IP6_STAT_BADSCOPE); /* XXX */
goto bad;
}
- if (in6_setscope(&ip6->ip6_src, m->m_pkthdr.rcvif, NULL) ||
- in6_setscope(&ip6->ip6_dst, m->m_pkthdr.rcvif, NULL)) {
+ if (in6_setscope(&ip6->ip6_src, rcvif, NULL) ||
+ in6_setscope(&ip6->ip6_dst, rcvif, NULL)) {
IP6_STATINC(IP6_STAT_BADSCOPE);
goto bad;
}
@@ -432,12 +429,12 @@
if (IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst)) {
struct in6_multi *in6m = 0;
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_mcast);
+ in6_ifstat_inc(rcvif, ifs6_in_mcast);
/*
* See if we belong to the destination multicast group on the
* arrival interface.
*/
- IN6_LOOKUP_MULTI(ip6->ip6_dst, m->m_pkthdr.rcvif, in6m);
+ IN6_LOOKUP_MULTI(ip6->ip6_dst, rcvif, in6m);
if (in6m)
ours = 1;
else if (!ip6_mrouter) {
@@ -445,10 +442,10 @@
ip6s[IP6_STAT_NOTMEMBER]++;
ip6s[IP6_STAT_CANTFORWARD]++;
IP6_STAT_PUTREF();
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_discard);
+ in6_ifstat_inc(rcvif, ifs6_in_discard);
goto bad;
}
- deliverifp = m->m_pkthdr.rcvif;
+ deliverifp = rcvif;
goto hbhcheck;
}
@@ -530,7 +527,7 @@
* working right.
*/
struct ifaddr *ifa;
- IFADDR_FOREACH(ifa, m->m_pkthdr.rcvif) {
+ IFADDR_FOREACH(ifa, rcvif) {
if (ifa->ifa_addr == NULL)
continue; /* just for safety */
if (ifa->ifa_addr->sa_family != AF_INET6)
@@ -550,7 +547,7 @@
*/
if (!ip6_forwarding) {
IP6_STATINC(IP6_STAT_CANTFORWARD);
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_discard);
+ in6_ifstat_inc(rcvif, ifs6_in_discard);
goto bad;
}
@@ -585,7 +582,7 @@
if (ip6_hopopts_input(&plen, &rtalert, &m, &off)) {
#if 0 /*touches NULL pointer*/
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_discard);
+ in6_ifstat_inc(rcvif, ifs6_in_discard);
#endif
return; /* m have already been freed */
}
@@ -605,8 +602,8 @@
* (non-zero) payload length to the variable plen.
*/
IP6_STATINC(IP6_STAT_BADOPTIONS);
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_discard);
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_hdrerr);
+ in6_ifstat_inc(rcvif, ifs6_in_discard);
+ in6_ifstat_inc(rcvif, ifs6_in_hdrerr);
icmp6_error(m, ICMP6_PARAM_PROB,
ICMP6_PARAMPROB_HEADER,
(char *)&ip6->ip6_plen - (char *)ip6);
@@ -638,7 +635,7 @@
*/
if (m->m_pkthdr.len - sizeof(struct ip6_hdr) < plen) {
IP6_STATINC(IP6_STAT_TOOSHORT);
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_truncated);
+ in6_ifstat_inc(rcvif, ifs6_in_truncated);
goto bad;
}
if (m->m_pkthdr.len > sizeof(struct ip6_hdr) + plen) {
@@ -661,7 +658,7 @@
* ip6_mforward() returns a non-zero value, the packet
* must be discarded, else it may be accepted below.
*/
- if (ip6_mrouter && ip6_mforward(ip6, m->m_pkthdr.rcvif, m)) {
+ if (ip6_mrouter && ip6_mforward(ip6, rcvif, m)) {
IP6_STATINC(IP6_STAT_CANTFORWARD);
m_freem(m);
return;
@@ -689,7 +686,7 @@
if (IN6_IS_ADDR_V4MAPPED(&ip6->ip6_src) ||
IN6_IS_ADDR_V4MAPPED(&ip6->ip6_dst)) {
IP6_STATINC(IP6_STAT_BADSCOPE);
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_addrerr);
+ in6_ifstat_inc(rcvif, ifs6_in_addrerr);
goto bad;
}
@@ -712,7 +709,7 @@
while (nxt != IPPROTO_DONE) {
if (ip6_hdrnestlimit && (++nest > ip6_hdrnestlimit)) {
IP6_STATINC(IP6_STAT_TOOMANYHDR);
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_hdrerr);
+ in6_ifstat_inc(rcvif, ifs6_in_hdrerr);
goto bad;
}
@@ -722,14 +719,13 @@
*/
if (m->m_pkthdr.len < off) {
IP6_STATINC(IP6_STAT_TOOSHORT);
- in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_truncated);
+ in6_ifstat_inc(rcvif, ifs6_in_truncated);
goto bad;
}
if (nxt == IPPROTO_ROUTING) {
if (rh_present++) {
- in6_ifstat_inc(m->m_pkthdr.rcvif,
- ifs6_in_hdrerr);
+ in6_ifstat_inc(rcvif, ifs6_in_hdrerr);
IP6_STATINC(IP6_STAT_BADOPTIONS);
goto bad;
}
Home |
Main Index |
Thread Index |
Old Index