On Tue, Mar 15, 2016 at 12:15:10AM +0000, Gleb Smirnoff wrote: > Author: glebius > Date: Tue Mar 15 00:15:10 2016 > New Revision: 296881 > URL: https://svnweb.freebsd.org/changeset/base/296881 > > Log: > Redo r294869. The array of counters for TCP states doesn't belong to > struct tcpstat, because the structure can be zeroed out by netstat(1) -z, > and of course running connection counts shouldn't be touched. > > Place running connection counts into separate array, and provide > separate read-only sysctl oid for it. > > Modified: > head/contrib/bsnmp/snmp_mibII/mibII_tcp.c > head/sys/netinet/tcp_input.c > head/sys/netinet/tcp_subr.c > head/sys/netinet/tcp_syncache.c > head/sys/netinet/tcp_timewait.c > head/sys/netinet/tcp_usrreq.c > head/sys/netinet/tcp_var.h >
[snip] > > Modified: head/sys/netinet/tcp_input.c > ============================================================================== > --- head/sys/netinet/tcp_input.c Tue Mar 15 00:05:00 2016 > (r296880) > +++ head/sys/netinet/tcp_input.c Tue Mar 15 00:15:10 2016 > (r296881) > @@ -235,16 +235,39 @@ VNET_DEFINE(struct inpcbhead, tcb); > VNET_DEFINE(struct inpcbinfo, tcbinfo); > > /* > - * TCP statistics are stored in an "array" of counter(9)s. > + * TCP statistics are stored in an array of counter(9)s, which size matches > + * size of struct tcpstat. TCP running connection count is a regular array. > */ > VNET_PCPUSTAT_DEFINE(struct tcpstat, tcpstat); > -VNET_PCPUSTAT_SYSINIT(tcpstat); > SYSCTL_VNET_PCPUSTAT(_net_inet_tcp, TCPCTL_STATS, stats, struct tcpstat, > tcpstat, "TCP statistics (struct tcpstat, netinet/tcp_var.h)"); > +VNET_DEFINE(counter_u64_t, tcps_states[TCP_NSTATES]); > +SYSCTL_COUNTER_U64_ARRAY(_net_inet_tcp, TCPCTL_STATES, states, CTLFLAG_RD | > + CTLFLAG_VNET, &VNET_NAME(tcps_states), TCP_NSTATES, > + "TCP connection counts by TCP state"); This breaks the build on amd64: /usr/src/sys/netinet/tcp_input.c:245:1: error: static_assert failed "compile-time assertion failed" SYSCTL_COUNTER_U64_ARRAY(_net_inet_tcp, TCPCTL_STATES, states, CTLFLAG_RD | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/src/sys/sys/sysctl.h:657:2: note: expanded from macro 'SYSCTL_COUNTER_U64_ARRAY' CTASSERT((((access) & CTLTYPE) == 0 || \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/src/sys/sys/systm.h:103:21: note: expanded from macro 'CTASSERT' #define CTASSERT(x) _Static_assert(x, "compile-time assertion failed") ^ ~ -- Shawn Webb HardenedBSD GPG Key ID: 0x6A84658F52456EEE GPG Key Fingerprint: 2ABA B6BD EF6A F486 BE89 3D9E 6A84 658F 5245 6EEE
signature.asc
Description: PGP signature