> On 4 Sep 2023, at 16:19, Alexander Bluhm <[email protected]> wrote:
>
> Hi,
>
> Variable scs_use is basically counting packet insertions to syn
> cache, so I would prefer type long to exclude overflow on fast
> machines. With the current limits int should be enough, but long
> does not hurt.
>
> It can be negative as it starts at a positive limit and counts
> backwards. After all entries in the current syn cache have been
> timed out, it is reset to positive limit. If timeout takes a while,
> it may get well below zero.
>
> To prevent netstat output like this
> 18446744073709531826 uses of current SYN cache left
> make tcps_sc_uses_left signed and print it as long long integer.
>
> ok?
>
Does the negative value output makes sense? If not, could you
prevent negative value output too?
> bluhm
>
> Index: sys/netinet/tcp_var.h
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/tcp_var.h,v
> retrieving revision 1.170
> diff -u -p -r1.170 tcp_var.h
> --- sys/netinet/tcp_var.h 28 Aug 2023 14:50:02 -0000 1.170
> +++ sys/netinet/tcp_var.h 4 Sep 2023 13:02:40 -0000
> @@ -288,9 +288,9 @@ struct syn_cache_head {
>
> struct syn_cache_set {
> struct syn_cache_head *scs_buckethead;
> + long scs_use;
> int scs_size;
> int scs_count;
> - int scs_use;
> u_int32_t scs_random[5];
> };
>
> @@ -430,7 +430,7 @@ struct tcpstat {
> u_int64_t tcps_sc_entry_limit; /* limit of syn cache entries */
> u_int64_t tcps_sc_bucket_maxlen;/* maximum # of entries in any bucket */
> u_int64_t tcps_sc_bucket_limit; /* limit of syn cache bucket list */
> - u_int64_t tcps_sc_uses_left; /* use counter of current syn cache */
> + int64_t tcps_sc_uses_left; /* use counter of current syn cache */
>
> u_int64_t tcps_conndrained; /* # of connections drained */
>
> Index: usr.bin/netstat/inet.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/usr.bin/netstat/inet.c,v
> retrieving revision 1.178
> diff -u -p -r1.178 inet.c
> --- usr.bin/netstat/inet.c 7 Jul 2023 09:15:13 -0000 1.178
> +++ usr.bin/netstat/inet.c 4 Sep 2023 12:51:01 -0000
> @@ -498,7 +498,7 @@ tcp_stats(char *name)
> "\t%llu entr%s in current SYN cache, limit is %llu\n");
> p2b(tcps_sc_bucket_maxlen, tcps_sc_bucket_limit,
> "\t%llu longest bucket length in current SYN cache, limit is
> %llu\n");
> - p(tcps_sc_uses_left, "\t%llu use%s of current SYN cache left\n");
> + p(tcps_sc_uses_left, "\t%lld use%s of current SYN cache left\n");
>
> p(tcps_sack_recovery_episode, "\t%llu SACK recovery episode%s\n");
> p(tcps_sack_rexmits,
>