Fix counter reads on platforms where sizeof(uint64_t) != sizeof(uint64_t *).
authormarkj <markj@FreeBSD.org>
Tue, 21 Jul 2015 23:57:38 +0000 (23:57 +0000)
committermarkj <markj@FreeBSD.org>
Tue, 21 Jul 2015 23:57:38 +0000 (23:57 +0000)
commite613eb38bc54adf38d672271e83e53ba9d3f7231
tree5ee03892f8f94e59fdcdf8fc9b48ee1c7a8e21e3
parentaad6d5bfac90bc3a0d1cf4e357eafed28692f80e
Fix counter reads on platforms where sizeof(uint64_t) != sizeof(uint64_t *).

In the kernel, structs such as tcpstat are manipulated as an array of
counter_u64_t (uint64_t *), but made visible to userland as an array of
uint64_t. kread_counters() was previously copying the counter array into
user space and sequentially overwriting each counter with its value. This
mostly affects IPsec counters, as other counters are exported via sysctl.

PR: 201700
Tested by: Jason Unovitch
MFC after: 1 week
usr.bin/netstat/main.c