feat: report listening sockets #1

Merged
christianmanivong merged 1 commits from feat/listening-sockets into main 2026-10-08 07:30:26 +00:00
Owner

get_listening_sockets() for both drivers (NetOrk/netork#798), in the shape of napalm-device-types' ListeningSocketsMixin and with its root/no-root rule.

  • FreeBSD: sockstat -46lq -P tcp,udp.
  • OpenBSD: fstat -n as root, netstat -an without (unnamed, attributed: False).
  • Addresses normalised as ss prints them; one entry per socket.
  • Deliberately no get_kernel_facts: that mixin is about a Linux kernel's modules and CONFIG_*.

Checked live on the FreeBSD 15.1 and OpenBSD 7.9 VMs (with sudo: attributed) and on a FreeBSD host without sudo (fallback). 63 tests.

`get_listening_sockets()` for both drivers (NetOrk/netork#798), in the shape of napalm-device-types' `ListeningSocketsMixin` and with its root/no-root rule. - FreeBSD: `sockstat -46lq -P tcp,udp`. - OpenBSD: `fstat -n` as root, `netstat -an` without (unnamed, `attributed: False`). - Addresses normalised as `ss` prints them; one entry per socket. - Deliberately no `get_kernel_facts`: that mixin is about a Linux kernel's modules and `CONFIG_*`. Checked live on the FreeBSD 15.1 and OpenBSD 7.9 VMs (with sudo: attributed) and on a FreeBSD host without sudo (fallback). 63 tests.
christianmanivong added 1 commit 2026-10-08 07:26:28 +00:00
feat: report listening sockets
CI / test (3.10) (push) Successful in 27s
CI / test (3.11) (push) Successful in 27s
CI / test (3.12) (push) Successful in 37s
CI / test (3.10) (pull_request) Successful in 42s
CI / test (3.11) (pull_request) Successful in 42s
CI / test (3.12) (pull_request) Successful in 38s
5f53de0c25
get_listening_sockets() in the shape of napalm-device-types'
ListeningSocketsMixin, whose ss/cgroup reading is Linux's, and with its
rule: read as root first, and without root when that brings nothing back,
which the reading reports as `attributed: False`.

- FreeBSD: `sockstat -46lq -P tcp,udp`, which sees every socket either way.
- OpenBSD: `fstat -n` as root (the sockets nothing is connected to; port 0
  is unbound), `netstat -an` without root, as fstat shows a user only
  their own processes; those sockets come without a process.
- Addresses as ss prints them: `*` becomes 0.0.0.0 or :: by family, IPv6
  without brackets, a zone (`fe80::1%lo0`) becomes the interface. One entry
  per socket, the first process holding it.

No get_kernel_facts on purpose: KernelFactsMixin reports a Linux kernel's
modules and CONFIG_ options, which a BSD kernel does not have.

Fixtures recorded on the FreeBSD 15.1 and OpenBSD 7.9 VMs with test
listeners on 127.0.0.1 and ::1 (NetOrk/netork#798).
christianmanivong merged commit 045f809602 into main 2026-10-08 07:30:26 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: NAPALM/napalm-bsd#1