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? 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,