|
llmx-rtaco 0.0.1
RTNL-only netlink control-plane library for Linux (C++23).
|
High-level control interface for kernel netlink operations. More...
#include <nl_control.hxx>
Public Member Functions | |
| Control (boost::asio::io_context &io) noexcept | |
| Construct a Control instance attached to an io_context. | |
| ~Control () | |
| Destroy the Control object and release resources. | |
| Control (const Control &)=delete | |
| Control & | operator= (const Control &)=delete |
| Control (Control &&)=delete | |
| Control & | operator= (Control &&)=delete |
| auto | dump_routes () -> route_list_result_t |
| Synchronously dump routes from the kernel. | |
| auto | dump_addresses () -> address_list_result_t |
| Synchronously dump addresses from the kernel. | |
| auto | dump_links () -> link_list_result_t |
| Synchronously dump links from the kernel. | |
| auto | dump_neighbors () -> neighbor_list_result |
| Synchronously dump neighbor entries from the kernel. | |
| auto | async_dump_routes () -> boost::asio::awaitable< route_list_result_t > |
| Asynchronously dump routes. | |
| auto | async_dump_addresses () -> boost::asio::awaitable< address_list_result_t > |
| Asynchronously dump addresses. | |
| auto | async_dump_links () -> boost::asio::awaitable< link_list_result_t > |
| Asynchronously dump links. | |
| auto | async_dump_neighbors () -> boost::asio::awaitable< neighbor_list_result > |
| Asynchronously dump neighbors. | |
| auto | probe_neighbor (uint16_t ifindex, std::span< uint8_t, 16 > address) -> void_result_t |
| Probe a neighbor entry (synchronous). | |
| auto | flush_neighbor (uint16_t ifindex, std::span< uint8_t, 16 > address) -> void_result_t |
| Flush a neighbour entry (synchronous). | |
| auto | get_neighbor (uint16_t ifindex, std::span< uint8_t, 16 > address) -> neighbor_result_t |
| Get a neighbor entry synchronously. | |
| auto | async_probe_neighbor (uint16_t ifindex, std::span< uint8_t, 16 > address) -> boost::asio::awaitable< void_result_t > |
| Asynchronously probe a neighbor. | |
| auto | async_flush_neighbor (uint16_t ifindex, std::span< uint8_t, 16 > address) -> boost::asio::awaitable< void_result_t > |
| Asynchronously flush a neighbor. | |
| auto | async_get_neighbor (uint16_t ifindex, std::span< uint8_t, 16 > address) -> boost::asio::awaitable< neighbor_result_t > |
| Asynchronously get a neighbor. | |
| void | stop () |
| Stop ongoing operations and release control resources. | |
Private Types | |
| using | route_list_result_t = std::expected<RouteEventList, std::error_code> |
| using | address_list_result_t = std::expected<AddressEventList, std::error_code> |
| using | link_list_result_t = std::expected<LinkEventList, std::error_code> |
| using | neighbor_result_t = std::expected<NeighborEvent, std::error_code> |
| using | neighbor_list_result = std::expected<NeighborEventList, std::error_code> |
| using | void_result_t = std::expected<void, std::error_code> |
Private Member Functions | |
| auto | acquire_socket_token () -> boost::asio::awaitable< void > |
| auto | async_dump_routes_impl () -> boost::asio::awaitable< route_list_result_t > |
| auto | async_dump_addresses_impl () -> boost::asio::awaitable< address_list_result_t > |
| auto | async_dump_links_impl () -> boost::asio::awaitable< link_list_result_t > |
| auto | async_dump_neighbors_impl () -> boost::asio::awaitable< neighbor_list_result > |
| auto | async_probe_neighbor_impl (uint16_t ifindex, std::span< uint8_t, 16 > address) -> boost::asio::awaitable< void_result_t > |
| auto | async_flush_neighbor_impl (uint16_t ifindex, std::span< uint8_t, 16 > address) -> boost::asio::awaitable< void_result_t > |
| auto | async_get_neighbor_impl (uint16_t ifindex, std::span< uint8_t, 16 > address) -> boost::asio::awaitable< neighbor_result_t > |
Private Attributes | |
| boost::asio::io_context & | io_ |
| boost::asio::strand< boost::asio::io_context::executor_type > | strand_ |
| boost::asio::steady_timer | gate_ |
| SocketGuard | socket_guard_ |
| std::atomic_uint32_t | sequence_ {1U} |
High-level control interface for kernel netlink operations.
The Control class provides synchronous and asynchronous methods to query kernel networking state (routes, addresses, links, neighbors) and to perform neighbor-related operations such as probe, flush, and get. It owns a SocketGuard, manages sequencing for netlink requests, and exposes both blocking and awaitable APIs to callers.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
noexcept |
Construct a Control instance attached to an io_context.
| io | The Boost.Asio io_context used for async operations. |
|
default |
Destroy the Control object and release resources.
|
delete |
|
delete |
|
private |
| auto llmx::rtaco::Control::async_dump_addresses | ( | ) | -> boost::asio::awaitable< address_list_result_t > |
Asynchronously dump addresses.
|
private |
| auto llmx::rtaco::Control::async_dump_links | ( | ) | -> boost::asio::awaitable< link_list_result_t > |
Asynchronously dump links.
|
private |
| auto llmx::rtaco::Control::async_dump_neighbors | ( | ) | -> boost::asio::awaitable< neighbor_list_result > |
Asynchronously dump neighbors.
|
private |
| auto llmx::rtaco::Control::async_dump_routes | ( | ) | -> boost::asio::awaitable< route_list_result_t > |
Asynchronously dump routes.
|
private |
| auto llmx::rtaco::Control::async_flush_neighbor | ( | uint16_t | ifindex, |
| std::span< uint8_t, 16 > | address ) -> boost::asio::awaitable< void_result_t > |
Asynchronously flush a neighbor.
|
private |
| auto llmx::rtaco::Control::async_get_neighbor | ( | uint16_t | ifindex, |
| std::span< uint8_t, 16 > | address ) -> boost::asio::awaitable< neighbor_result_t > |
Asynchronously get a neighbor.
|
private |
| auto llmx::rtaco::Control::async_probe_neighbor | ( | uint16_t | ifindex, |
| std::span< uint8_t, 16 > | address ) -> boost::asio::awaitable< void_result_t > |
Asynchronously probe a neighbor.
|
private |
| auto llmx::rtaco::Control::dump_addresses | ( | ) | -> address_list_result_t |
Synchronously dump addresses from the kernel.
| auto llmx::rtaco::Control::dump_links | ( | ) | -> link_list_result_t |
Synchronously dump links from the kernel.
| auto llmx::rtaco::Control::dump_neighbors | ( | ) | -> neighbor_list_result |
Synchronously dump neighbor entries from the kernel.
| auto llmx::rtaco::Control::dump_routes | ( | ) | -> route_list_result_t |
Synchronously dump routes from the kernel.
| auto llmx::rtaco::Control::flush_neighbor | ( | uint16_t | ifindex, |
| std::span< uint8_t, 16 > | address ) -> void_result_t |
Flush a neighbour entry (synchronous).
| auto llmx::rtaco::Control::get_neighbor | ( | uint16_t | ifindex, |
| std::span< uint8_t, 16 > | address ) -> neighbor_result_t |
Get a neighbor entry synchronously.
| auto llmx::rtaco::Control::probe_neighbor | ( | uint16_t | ifindex, |
| std::span< uint8_t, 16 > | address ) -> void_result_t |
Probe a neighbor entry (synchronous).
| ifindex | Interface index to probe on. |
| address | IPv6/IPv4 address bytes (16-byte span). |
| void llmx::rtaco::Control::stop | ( | ) |
Stop ongoing operations and release control resources.
|
private |
|
private |
|
private |
|
private |
|
private |