Re: struct ipipstat: use 64 bits counters
On Mon, Feb 20, 2017 at 04:30:31PM +0100, Jeremie Courreges-Anglas wrote: > Jeremie Courreges-Anglas writes: > > > Using a mix of 32 and 64 bits counters leads to an ugly conversion to > > percpu counters. Why not move to 64 bits counters? struct ipipstat is > > afaik only used by netstat and ports/shells/nsh (I can cook a fix for > > the latter). > > > > ok? > > ping OK bluhm@ > > > Index: sys/netinet/ip_ipip.h > > === > > RCS file: /d/cvs/src/sys/netinet/ip_ipip.h,v > > retrieving revision 1.6 > > diff -u -p -r1.6 ip_ipip.h > > --- sys/netinet/ip_ipip.h 14 Dec 2007 18:33:41 - 1.6 > > +++ sys/netinet/ip_ipip.h 10 Feb 2017 15:48:13 - > > @@ -43,18 +43,17 @@ > > * Not quite all the functionality of RFC-1853, but the main idea is there. > > */ > > > > -struct ipipstat > > -{ > > -u_int32_t ipips_ipackets; /* total input packets */ > > -u_int32_t ipips_opackets; /* total output packets */ > > -u_int32_t ipips_hdrops; /* packet shorter than header > > shows */ > > -u_int32_t ipips_qfull; > > -u_int64_t ipips_ibytes; > > -u_int64_t ipips_obytes; > > -u_int32_t ipips_pdrops; /* packet dropped due to policy > > */ > > -u_int32_t ipips_spoof;/* IP spoofing attempts */ > > -u_int32_t ipips_family; /* Protocol family mismatch */ > > -u_int32_t ipips_unspec;/* Missing tunnel endpoint > > address */ > > +struct ipipstat { > > +u_int64_t ipips_ipackets; /* total input packets */ > > +u_int64_t ipips_opackets; /* total output packets */ > > +u_int64_t ipips_hdrops; /* packet shorter than header > > shows */ > > +u_int64_t ipips_qfull; > > +u_int64_t ipips_ibytes; > > +u_int64_t ipips_obytes; > > +u_int64_t ipips_pdrops; /* packet dropped due to policy > > */ > > +u_int64_t ipips_spoof;/* IP spoofing attempts */ > > +u_int64_t ipips_family; /* Protocol family mismatch */ > > +u_int64_t ipips_unspec;/* Missing tunnel endpoint > > address */ > > }; > > > > #define IP4_DEFAULT_TTL0 > > Index: usr.bin/netstat/inet.c > > === > > RCS file: /d/cvs/src/usr.bin/netstat/inet.c,v > > retrieving revision 1.154 > > diff -u -p -r1.154 inet.c > > --- usr.bin/netstat/inet.c 7 Feb 2017 18:18:16 - 1.154 > > +++ usr.bin/netstat/inet.c 10 Feb 2017 15:39:13 - > > @@ -1065,16 +1065,16 @@ ipip_stats(char *name) > > #define p(f, m) if (ipipstat.f || sflag <= 1) \ > > printf(m, ipipstat.f, plural(ipipstat.f)) > > > > - p(ipips_ipackets, "\t%u total input packet%s\n"); > > - p(ipips_opackets, "\t%u total output packet%s\n"); > > - p(ipips_hdrops, "\t%u packet%s shorter than header shows\n"); > > - p(ipips_pdrops, "\t%u packet%s dropped due to policy\n"); > > - p(ipips_spoof, "\t%u packet%s with possibly spoofed local addresses\n"); > > - p(ipips_qfull, "\t%u packet%s were dropped due to full output queue\n"); > > + p(ipips_ipackets, "\t%llu total input packet%s\n"); > > + p(ipips_opackets, "\t%llu total output packet%s\n"); > > + p(ipips_hdrops, "\t%llu packet%s shorter than header shows\n"); > > + p(ipips_pdrops, "\t%llu packet%s dropped due to policy\n"); > > + p(ipips_spoof, "\t%llu packet%s with possibly spoofed local > > addresses\n"); > > + p(ipips_qfull, "\t%llu packet%s were dropped due to full output > > queue\n"); > > p(ipips_ibytes, "\t%llu input byte%s\n"); > > p(ipips_obytes, "\t%llu output byte%s\n"); > > - p(ipips_family, "\t%u protocol family mismatche%s\n"); > > - p(ipips_unspec, "\t%u attempt%s to use tunnel with unspecified > > endpoint(s)\n"); > > + p(ipips_family, "\t%llu protocol family mismatche%s\n"); > > + p(ipips_unspec, "\t%llu attempt%s to use tunnel with unspecified > > endpoint(s)\n"); > > #undef p > > } > > > -- > jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
Re: struct ipipstat: use 64 bits counters
Jeremie Courreges-Anglas writes: > Using a mix of 32 and 64 bits counters leads to an ugly conversion to > percpu counters. Why not move to 64 bits counters? struct ipipstat is > afaik only used by netstat and ports/shells/nsh (I can cook a fix for > the latter). > > ok? ping > Index: sys/netinet/ip_ipip.h > === > RCS file: /d/cvs/src/sys/netinet/ip_ipip.h,v > retrieving revision 1.6 > diff -u -p -r1.6 ip_ipip.h > --- sys/netinet/ip_ipip.h 14 Dec 2007 18:33:41 - 1.6 > +++ sys/netinet/ip_ipip.h 10 Feb 2017 15:48:13 - > @@ -43,18 +43,17 @@ > * Not quite all the functionality of RFC-1853, but the main idea is there. > */ > > -struct ipipstat > -{ > -u_int32_tipips_ipackets; /* total input packets */ > -u_int32_tipips_opackets; /* total output packets */ > -u_int32_tipips_hdrops; /* packet shorter than header > shows */ > -u_int32_tipips_qfull; > -u_int64_t ipips_ibytes; > -u_int64_t ipips_obytes; > -u_int32_tipips_pdrops; /* packet dropped due to policy > */ > -u_int32_tipips_spoof;/* IP spoofing attempts */ > -u_int32_t ipips_family;/* Protocol family mismatch */ > -u_int32_t ipips_unspec;/* Missing tunnel endpoint address > */ > +struct ipipstat { > +u_int64_tipips_ipackets; /* total input packets */ > +u_int64_tipips_opackets; /* total output packets */ > +u_int64_tipips_hdrops; /* packet shorter than header > shows */ > +u_int64_tipips_qfull; > +u_int64_tipips_ibytes; > +u_int64_tipips_obytes; > +u_int64_tipips_pdrops; /* packet dropped due to policy > */ > +u_int64_tipips_spoof;/* IP spoofing attempts */ > +u_int64_tipips_family; /* Protocol family mismatch */ > +u_int64_tipips_unspec;/* Missing tunnel endpoint > address */ > }; > > #define IP4_DEFAULT_TTL0 > Index: usr.bin/netstat/inet.c > === > RCS file: /d/cvs/src/usr.bin/netstat/inet.c,v > retrieving revision 1.154 > diff -u -p -r1.154 inet.c > --- usr.bin/netstat/inet.c7 Feb 2017 18:18:16 - 1.154 > +++ usr.bin/netstat/inet.c10 Feb 2017 15:39:13 - > @@ -1065,16 +1065,16 @@ ipip_stats(char *name) > #define p(f, m) if (ipipstat.f || sflag <= 1) \ > printf(m, ipipstat.f, plural(ipipstat.f)) > > - p(ipips_ipackets, "\t%u total input packet%s\n"); > - p(ipips_opackets, "\t%u total output packet%s\n"); > - p(ipips_hdrops, "\t%u packet%s shorter than header shows\n"); > - p(ipips_pdrops, "\t%u packet%s dropped due to policy\n"); > - p(ipips_spoof, "\t%u packet%s with possibly spoofed local addresses\n"); > - p(ipips_qfull, "\t%u packet%s were dropped due to full output queue\n"); > + p(ipips_ipackets, "\t%llu total input packet%s\n"); > + p(ipips_opackets, "\t%llu total output packet%s\n"); > + p(ipips_hdrops, "\t%llu packet%s shorter than header shows\n"); > + p(ipips_pdrops, "\t%llu packet%s dropped due to policy\n"); > + p(ipips_spoof, "\t%llu packet%s with possibly spoofed local > addresses\n"); > + p(ipips_qfull, "\t%llu packet%s were dropped due to full output > queue\n"); > p(ipips_ibytes, "\t%llu input byte%s\n"); > p(ipips_obytes, "\t%llu output byte%s\n"); > - p(ipips_family, "\t%u protocol family mismatche%s\n"); > - p(ipips_unspec, "\t%u attempt%s to use tunnel with unspecified > endpoint(s)\n"); > + p(ipips_family, "\t%llu protocol family mismatche%s\n"); > + p(ipips_unspec, "\t%llu attempt%s to use tunnel with unspecified > endpoint(s)\n"); > #undef p > } -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
struct ipipstat: use 64 bits counters
Using a mix of 32 and 64 bits counters leads to an ugly conversion to percpu counters. Why not move to 64 bits counters? struct ipipstat is afaik only used by netstat and ports/shells/nsh (I can cook a fix for the latter). ok? Index: sys/netinet/ip_ipip.h === RCS file: /d/cvs/src/sys/netinet/ip_ipip.h,v retrieving revision 1.6 diff -u -p -r1.6 ip_ipip.h --- sys/netinet/ip_ipip.h 14 Dec 2007 18:33:41 - 1.6 +++ sys/netinet/ip_ipip.h 10 Feb 2017 15:48:13 - @@ -43,18 +43,17 @@ * Not quite all the functionality of RFC-1853, but the main idea is there. */ -struct ipipstat -{ -u_int32_t ipips_ipackets; /* total input packets */ -u_int32_t ipips_opackets; /* total output packets */ -u_int32_t ipips_hdrops; /* packet shorter than header shows */ -u_int32_t ipips_qfull; -u_int64_t ipips_ibytes; -u_int64_t ipips_obytes; -u_int32_t ipips_pdrops; /* packet dropped due to policy */ -u_int32_t ipips_spoof;/* IP spoofing attempts */ -u_int32_t ipips_family; /* Protocol family mismatch */ -u_int32_t ipips_unspec;/* Missing tunnel endpoint address */ +struct ipipstat { +u_int64_t ipips_ipackets; /* total input packets */ +u_int64_t ipips_opackets; /* total output packets */ +u_int64_t ipips_hdrops; /* packet shorter than header shows */ +u_int64_t ipips_qfull; +u_int64_t ipips_ibytes; +u_int64_t ipips_obytes; +u_int64_t ipips_pdrops; /* packet dropped due to policy */ +u_int64_t ipips_spoof;/* IP spoofing attempts */ +u_int64_t ipips_family; /* Protocol family mismatch */ +u_int64_t ipips_unspec;/* Missing tunnel endpoint address */ }; #define IP4_DEFAULT_TTL0 Index: usr.bin/netstat/inet.c === RCS file: /d/cvs/src/usr.bin/netstat/inet.c,v retrieving revision 1.154 diff -u -p -r1.154 inet.c --- usr.bin/netstat/inet.c 7 Feb 2017 18:18:16 - 1.154 +++ usr.bin/netstat/inet.c 10 Feb 2017 15:39:13 - @@ -1065,16 +1065,16 @@ ipip_stats(char *name) #define p(f, m) if (ipipstat.f || sflag <= 1) \ printf(m, ipipstat.f, plural(ipipstat.f)) - p(ipips_ipackets, "\t%u total input packet%s\n"); - p(ipips_opackets, "\t%u total output packet%s\n"); - p(ipips_hdrops, "\t%u packet%s shorter than header shows\n"); - p(ipips_pdrops, "\t%u packet%s dropped due to policy\n"); - p(ipips_spoof, "\t%u packet%s with possibly spoofed local addresses\n"); - p(ipips_qfull, "\t%u packet%s were dropped due to full output queue\n"); + p(ipips_ipackets, "\t%llu total input packet%s\n"); + p(ipips_opackets, "\t%llu total output packet%s\n"); + p(ipips_hdrops, "\t%llu packet%s shorter than header shows\n"); + p(ipips_pdrops, "\t%llu packet%s dropped due to policy\n"); + p(ipips_spoof, "\t%llu packet%s with possibly spoofed local addresses\n"); + p(ipips_qfull, "\t%llu packet%s were dropped due to full output queue\n"); p(ipips_ibytes, "\t%llu input byte%s\n"); p(ipips_obytes, "\t%llu output byte%s\n"); - p(ipips_family, "\t%u protocol family mismatche%s\n"); - p(ipips_unspec, "\t%u attempt%s to use tunnel with unspecified endpoint(s)\n"); + p(ipips_family, "\t%llu protocol family mismatche%s\n"); + p(ipips_unspec, "\t%llu attempt%s to use tunnel with unspecified endpoint(s)\n"); #undef p } -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE