v0.1 — control plane only

Coroutine-first
RTNETLINK for
modern C++.

RTACO (RTnetlink Asio COroutines) is a small, focused control-plane library for Linux. Boost.Asio awaitable APIs for NETLINK_ROUTE transactions and kernel notifications — links, addresses, routes, neighbors.

rtaco / minimal usage
// dump kernel routes
boost::asio::io_context io;
llmx::rtaco::Control ctl{io};

// std::expected<...,
// std::error_code>
auto routes = ctl.dump_routes();

llmx::rtaco::Listener ls{io};
ls.connect_to_event(
  [](const RouteEvent& ev) { ... });
ls.start();
io.run();
LANG
C++23
PLATFORM
Linux
SOCKET
NETLINK_ROUTE
ASYNC
Boost.Asio
Core surface

Built for the control plane.

Every component is shaped around the constraints of netlink — strict typing, predictable lifetimes, and zero hidden allocations on hot paths.

01
RTNETLINK only

Tight scope — NETLINK_ROUTE transactions and notifications. No dataplane, no abstractions.

02
Boost.Asio awaitables

Every operation has an async_* awaitable variant. Compose with co_await in your io_context.

03
Typed event signals

Subscribe to LinkEvent, AddressEvent, RouteEvent, NeighborEvent through Listener::connect_to_event.

04
std::expected results

Errors flow as std::error_code. No exceptions across API boundaries.

05
Sync or async dispatch

ExecPolicy::Sync runs handlers inline; ExecPolicy::Async posts onto the executor.

06
CMake package

find_package(llmx-rtaco CONFIG REQUIRED) and link llmx::rtaco. Done.

Getting started

Build, link, run.

Configure with CMake + Ninja, install, and consume from your own CMake target. The full quickstart lives in the docs.

Open quickstart →
build
$ cmake -S . -B build -G Ninja \
    -DCMAKE_BUILD_TYPE=Release \
    -DRTACO_BUILD_EXAMPLES=ON
$ cmake --build build
$ cmake --install build