Module Name: src Committed By: riastradh Date: Sat Jun 29 13:00:45 UTC 2024
Modified Files: src/sys/netinet6: icmp6.c ip6_flow.c ip6_forward.c ip6_input.c Log Message: netinet6: Use _NET_STAT* API instead of direct array access. XXX Exception: ip6flow_addstats_rt _assigns_ one of the `statistics' to the current count of ip6 flows in use, and we don't have anything in the _NET_STAT* API for that. So for now I abuse the abstraction, until we sort out this one exceptional case properly. PR kern/58380 To generate a diff of this commit: cvs rdiff -u -r1.256 -r1.257 src/sys/netinet6/icmp6.c cvs rdiff -u -r1.42 -r1.43 src/sys/netinet6/ip6_flow.c cvs rdiff -u -r1.102 -r1.103 src/sys/netinet6/ip6_forward.c cvs rdiff -u -r1.227 -r1.228 src/sys/netinet6/ip6_input.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/netinet6/icmp6.c diff -u src/sys/netinet6/icmp6.c:1.256 src/sys/netinet6/icmp6.c:1.257 --- src/sys/netinet6/icmp6.c:1.256 Sat Feb 24 21:41:13 2024 +++ src/sys/netinet6/icmp6.c Sat Jun 29 13:00:44 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: icmp6.c,v 1.256 2024/02/24 21:41:13 mlelstv Exp $ */ +/* $NetBSD: icmp6.c,v 1.257 2024/06/29 13:00:44 riastradh Exp $ */ /* $KAME: icmp6.c,v 1.217 2001/06/20 15:03:29 jinmei Exp $ */ /* @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: icmp6.c,v 1.256 2024/02/24 21:41:13 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: icmp6.c,v 1.257 2024/06/29 13:00:44 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -694,9 +694,10 @@ _icmp6_input(struct mbuf *m, int off, in nicmp6->icmp6_type = ICMP6_ECHO_REPLY; nicmp6->icmp6_code = 0; if (n) { - uint64_t *icmp6s = ICMP6_STAT_GETREF(); - icmp6s[ICMP6_STAT_REFLECT]++; - icmp6s[ICMP6_STAT_OUTHIST + ICMP6_ECHO_REPLY]++; + net_stat_ref_t icmp6s = ICMP6_STAT_GETREF(); + _NET_STATINC_REF(icmp6s, ICMP6_STAT_REFLECT); + _NET_STATINC_REF(icmp6s, + ICMP6_STAT_OUTHIST + ICMP6_ECHO_REPLY); ICMP6_STAT_PUTREF(); icmp6_reflect(n, off); } @@ -807,9 +808,10 @@ _icmp6_input(struct mbuf *m, int off, in nicmp6->icmp6_code = 0; } if (n) { - uint64_t *icmp6s = ICMP6_STAT_GETREF(); - icmp6s[ICMP6_STAT_REFLECT]++; - icmp6s[ICMP6_STAT_OUTHIST + ICMP6_WRUREPLY]++; + net_stat_ref_t icmp6s = ICMP6_STAT_GETREF(); + _NET_STATINC_REF(icmp6s, ICMP6_STAT_REFLECT); + _NET_STATINC_REF(icmp6s, + ICMP6_STAT_OUTHIST + ICMP6_WRUREPLY); ICMP6_STAT_PUTREF(); icmp6_reflect(n, sizeof(struct ip6_hdr)); } Index: src/sys/netinet6/ip6_flow.c diff -u src/sys/netinet6/ip6_flow.c:1.42 src/sys/netinet6/ip6_flow.c:1.43 --- src/sys/netinet6/ip6_flow.c:1.42 Fri Feb 19 14:52:00 2021 +++ src/sys/netinet6/ip6_flow.c Sat Jun 29 13:00:44 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: ip6_flow.c,v 1.42 2021/02/19 14:52:00 christos Exp $ */ +/* $NetBSD: ip6_flow.c,v 1.43 2024/06/29 13:00:44 riastradh Exp $ */ /* * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip6_flow.c,v 1.42 2021/02/19 14:52:00 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip6_flow.c,v 1.43 2024/06/29 13:00:44 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_net_mpsafe.h" @@ -379,17 +379,17 @@ out: static void ip6flow_addstats_rt(struct rtentry *rt, struct ip6flow *ip6f) { - uint64_t *ip6s; + net_stat_ref_t ip6s; if (rt != NULL) rt->rt_use += ip6f->ip6f_uses; ip6s = IP6_STAT_GETREF(); - ip6s[IP6_STAT_FASTFORWARDFLOWS] = ip6flow_inuse; - ip6s[IP6_STAT_CANTFORWARD] += ip6f->ip6f_dropped; - ip6s[IP6_STAT_ODROPPED] += ip6f->ip6f_dropped; - ip6s[IP6_STAT_TOTAL] += ip6f->ip6f_uses; - ip6s[IP6_STAT_FORWARD] += ip6f->ip6f_forwarded; - ip6s[IP6_STAT_FASTFORWARD] += ip6f->ip6f_forwarded; + ip6s->nsr_stats[IP6_STAT_FASTFORWARDFLOWS-1] = ip6flow_inuse; /* XXX */ + _NET_STATADD_REF(ip6s, IP6_STAT_CANTFORWARD, ip6f->ip6f_dropped); + _NET_STATADD_REF(ip6s, IP6_STAT_ODROPPED, ip6f->ip6f_dropped); + _NET_STATADD_REF(ip6s, IP6_STAT_TOTAL, ip6f->ip6f_uses); + _NET_STATADD_REF(ip6s, IP6_STAT_FORWARD, ip6f->ip6f_forwarded); + _NET_STATADD_REF(ip6s, IP6_STAT_FASTFORWARD, ip6f->ip6f_forwarded); IP6_STAT_PUTREF(); } Index: src/sys/netinet6/ip6_forward.c diff -u src/sys/netinet6/ip6_forward.c:1.102 src/sys/netinet6/ip6_forward.c:1.103 --- src/sys/netinet6/ip6_forward.c:1.102 Fri Aug 28 06:32:24 2020 +++ src/sys/netinet6/ip6_forward.c Sat Jun 29 13:00:44 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: ip6_forward.c,v 1.102 2020/08/28 06:32:24 ozaki-r Exp $ */ +/* $NetBSD: ip6_forward.c,v 1.103 2024/06/29 13:00:44 riastradh Exp $ */ /* $KAME: ip6_forward.c,v 1.109 2002/09/11 08:10:17 sakane Exp $ */ /* @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip6_forward.c,v 1.102 2020/08/28 06:32:24 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip6_forward.c,v 1.103 2024/06/29 13:00:44 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_gateway.h" @@ -78,13 +78,13 @@ ip6_cantforward(const struct ip6_hdr *ip char sbuf[INET6_ADDRSTRLEN], dbuf[INET6_ADDRSTRLEN]; char reason[256]; va_list ap; - uint64_t *ip6s; + net_stat_ref_t ip6s; /* update statistics */ ip6s = IP6_STAT_GETREF(); - ip6s[IP6_STAT_CANTFORWARD]++; + _NET_STATINC_REF(ip6s, IP6_STAT_CANTFORWARD); if (dstifp) - ip6s[IP6_STAT_BADSCOPE]++; + _NET_STATINC_REF(ip6s, IP6_STAT_BADSCOPE); IP6_STAT_PUTREF(); if (dstifp) Index: src/sys/netinet6/ip6_input.c diff -u src/sys/netinet6/ip6_input.c:1.227 src/sys/netinet6/ip6_input.c:1.228 --- src/sys/netinet6/ip6_input.c:1.227 Fri Oct 28 05:18:39 2022 +++ src/sys/netinet6/ip6_input.c Sat Jun 29 13:00:44 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: ip6_input.c,v 1.227 2022/10/28 05:18:39 ozaki-r Exp $ */ +/* $NetBSD: ip6_input.c,v 1.228 2024/06/29 13:00:44 riastradh 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.227 2022/10/28 05:18:39 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.228 2024/06/29 13:00:44 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_gateway.h" @@ -421,9 +421,9 @@ ip6_input(struct mbuf *m, struct ifnet * if (ingroup) { ours = 1; } else if (!ip6_mrouter) { - uint64_t *ip6s = IP6_STAT_GETREF(); - ip6s[IP6_STAT_NOTMEMBER]++; - ip6s[IP6_STAT_CANTFORWARD]++; + net_stat_ref_t ip6s = IP6_STAT_GETREF(); + _NET_STATINC_REF(ip6s, IP6_STAT_NOTMEMBER); + _NET_STATINC_REF(ip6s, IP6_STAT_CANTFORWARD); IP6_STAT_PUTREF(); in6_ifstat_inc(rcvif, ifs6_in_discard); goto bad_unref;