==> src/host_nics.c <==1/* @ajax/mesh-abi-host-nics: its tables and functions. */
2#include "mesh/abi/host_nics.h"
3
4const char *const MESH_NET_VIRTUAL[16] = {"lo", "docker", "br-", "bridge", "virbr", "lxdbr", "veth", "cni", "flannel", "vmenet", "tailscale", "utun", "tun", "wg", "gif", "stf"};
5
6const mesh_field MESH_NIC_FIELDS[11] = {
7 {MESH_NI_NAME, 16},
8 {MESH_NI_RX_BYTES, 8},
9 {MESH_NI_TX_BYTES, 8},
10 {MESH_NI_RX_PACKETS, 8},
11 {MESH_NI_TX_PACKETS, 8},
12 {MESH_NI_RX_ERRS, 8},
13 {MESH_NI_TX_ERRS, 8},
14 {MESH_NI_RX_DROP, 8},
15 {MESH_NI_TX_DROP, 8},
16 {MESH_NI_LINKS, 4},
17 {MESH_NI_COUNT, 4},
18};
19
20bool mesh_nic_virtual(const uint8_t *name, size_t len) {
21 for (size_t i = 0; i < MESH_NET_VIRTUAL_LEN; i++) {
22 const char *p = MESH_NET_VIRTUAL[i];
23 size_t n = 0;
24 while (p[n]) n++;
25 if (len < n) continue;
26 size_t j = 0;
27 while (j < n && name[j] == (uint8_t)p[j]) j++;
28 if (j == n) return true;
29 }
30 return false;
31}