We have a number of Makefile tests for the presence of various fields in tcp_info. However that only tells us if they're present in the kernel headers against which we're compiling, not whether they're available in the kernel we're running on. For anything outside the earliest forms of TCP_INFO (as described in netinet/tcp.h and shared with BSD), we should verify at runtime if the kernel is returning that information. This was supposed to be leading into improved handling of lazily calling TCP_INFO, but I hit additional complications there, so I've postponed it. Might as well get these bits merged, though. v2: * Previous version removed some #ifdefs that were still needed. Simply putting them back leads to awkward duplication between the "compile time missing" and "run time missing" cases, so take a different approach which allows us to remove all of them. * Some wording changes David Gibson (3): tcp: Remove compile-time dependency on struct tcp_info version tcp: Generalise probing for tcpi_snd_wnd field tcp: Use runtime tests for TCP_INFO fields Makefile | 15 ------- tcp.c | 114 ++++++++++++++++++++++------------------------ tcp_info.h | 120 +++++++++++++++++++++++++++++++++++++++++++++++++ tcp_internal.h | 4 +- 4 files changed, 176 insertions(+), 77 deletions(-) create mode 100644 tcp_info.h -- 2.47.0