msantos/tunctl
57.0
Adequate · 2 October 2026
2.1k
lines of production code
Erlang
primary language
2
measurements over time
What this system is
This system is an Erlang library for managing TUN/TAP network interfaces across multiple operating systems, including Linux, macOS, FreeBSD, and NetBSD. It provides a unified API for creating and controlling virtual network devices, supporting both passive and active I/O modes for packet delivery. The library includes advanced features such as multi-queue support, packet filtering, and platform-specific capabilities like IPv6 configuration and network namespace management. It also provides example applications demonstrating Ethernet bridging and VPN implementations over the Erlang distribution protocol.
Features
New LXC bridging and VPN example applications
Added three new Erlang example applications to the examples directory: br.erl demonstrates a simple Ethernet bridge using tun/tap interfaces, while vpwn.erl and vpwn\_active.erl provide two implementations of a VPN over the Erlang distribution protocol, differing in their network I/O modes (passive vs active).
examples · high confidence
Removals
Removal of tunctl application definition
The application metadata file for tunctl has been deleted, removing the explicit definition of the application's version, modules, and dependencies from the build output.
ebin · high confidence
Behavioural changes
Add active mode support and migrate to rebar3
The library now supports an 'active' mode for TUN/TAP interfaces, allowing packets to be delivered directly as messages to the owning process rather than requiring explicit reads. This change also migrates the build system from the legacy rebar to rebar3, updates the procket dependency to version 0.9.10, and adds dialyzer and xref checks to improve code quality. Documentation has been updated to reflect privilege requirements on Linux, Mac OS X, and FreeBSD, along with examples for both passive and active modes.
(repo-wide) · high confidence
Extended TUN/TAP interface support with multi-queue and protocol headers
The TUN/TAP interface definitions have been expanded to support advanced networking features. Users can now utilize the IFF\_MULTI\_QUEUE flag for multi-queue support and the IFF\_POINTOPOINT flag for IPv4 point-to-point addressing. Additionally, the protocol header record (tun\_pi) now includes the missing 'buf' field, and a new tun\_filter record has been added to support packet filtering via the TUN\_FLT\_ALLMULTI flag. The header also introduces helper macros for unsigned integer definitions and standardizes ifconfig-related flags.
include · high confidence
TUN/TAP interface management refactored into platform-specific modules
The \tunctl\ module has been refactored to use a behavior-based architecture, moving OS-specific implementation details into separate modules (\tunctl\_linux\, \tunctl\_darwin\, \tunctl\_freebsd\, \tunctl\_netbsd\). This change introduces a new \tuncer\ module that manages TUN/TAP devices via \gen\_server\, adding support for active mode, persistent interfaces, and flow control. The API now exposes platform-specific capabilities such as IPv6 address configuration on Linux, namespace support, and MTU manipulation, while standardizing error handling and device lifecycle management across supported operating systems.
src · high confidence
Test coverage
Added Common Test suite for tuncer
Added a new Common Test suite (tuncer\_SUITE) that exercises the tuncer module's core operations, including creating and destroying network interfaces, bringing them up, and performing receive/send and read/write operations. The suite covers both standard and active mode configurations and includes OS-specific test groups for Linux (dstaddr, broadcast) and other platforms.
test · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 53 → 57 (+3.6)
- Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 97 → 97 (+0.0)
- Architecture 100 → 100 (+0.0)
- Maturity 54 → 54 (+0.0)
- Readiness 26 → 33 (+7.7)
- Security 100 → 100 (+0.0)
- Event Sourcing 100 → 100 (+0.0)
Resolved (3)
- Coverage not measured — no coverage collector is wired up
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
msantos/tunctl was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit c273c00a124b97a7bc01399ccc7a60ef35b2783b — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.