core: guard TCP stats on availability of linux/tcp.h
Detect availability of linux/tcp.h at configure time and build TCP statistics code conditionally based on that.
This replaces platform-specific conditionals with proper feature checks and avoids build failures on systems lacking Linux TCP headers or types (e.g. non-Linux or cross-build environments).
When TCP_INFO support is unavailable, the public API remains unchanged, but all related functions return -ENOTSUP.
No functional changes on systems where linux/tcp.h are available.
core: always build tun.c and gate TUN support by headers
Always build tun.c and move platform-specific checks into the implementation.
Guard the TUN-specific code paths based on the availability of linux/if_tun.h detected at configure time. If TUN support is not available, osmo_tundev_open() returns -ENOTSUP.
This keeps the public TUN API available while disabling unsupported functionality in a capability-based way.
Only include Linux-specific netlink headers when the libmnl backend is enabled.
The code paths requiring <linux/if_link.h> and <linux/rtnetlink.h> are entirely guarded by ENABLE_LIBMNL conditionals, so the headers should not be included unconditionally.
This avoids pulling in Linux-only headers when the corresponding backend is not built.