feature/*,net/tstun: add tundev_txq_drops clientmetric on Linux

By polling RTM_GETSTATS via netlink. RTM_GETSTATS is a relatively
efficient and targeted (single device) polling method available since
Linux v4.7.

The tundevstats "feature" can be extended to other platforms in the
future, and it's trivial to add new rtnl_link_stats64 counters on
Linux.

Updates tailscale/corp#38181

Signed-off-by: Jordan Whited <jordan@tailscale.com>
This commit is contained in:
Jordan Whited
2026-03-19 15:23:17 -07:00
committed by Jordan Whited
parent bdcf976477
commit 9c36a71a90
8 changed files with 604 additions and 0 deletions
@@ -0,0 +1,13 @@
// Copyright (c) Tailscale Inc & contributors
// SPDX-License-Identifier: BSD-3-Clause
// Code generated by gen.go; DO NOT EDIT.
//go:build ts_omit_tundevstats
package buildfeatures
// HasTUNDevStats is whether the binary was built with support for modular feature "Poll TUN device statistics (Linux only)".
// Specifically, it's whether the binary was NOT built with the "ts_omit_tundevstats" build tag.
// It's a const so it can be used for dead code elimination.
const HasTUNDevStats = false
@@ -0,0 +1,13 @@
// Copyright (c) Tailscale Inc & contributors
// SPDX-License-Identifier: BSD-3-Clause
// Code generated by gen.go; DO NOT EDIT.
//go:build !ts_omit_tundevstats
package buildfeatures
// HasTUNDevStats is whether the binary was built with support for modular feature "Poll TUN device statistics (Linux only)".
// Specifically, it's whether the binary was NOT built with the "ts_omit_tundevstats" build tag.
// It's a const so it can be used for dead code elimination.
const HasTUNDevStats = true