llmx-rtaco 0.0.1
RTNL-only netlink control-plane library for Linux (C++23).
Loading...
Searching...
No Matches
llmx::rtaco::AddressDumpTask Class Reference

Task that performs a full address dump from the kernel. More...

#include <nl_address_dump_task.hxx>

Inheritance diagram for llmx::rtaco::AddressDumpTask:
llmx::rtaco::AddressTask< AddressDumpTask, AddressEventList > llmx::rtaco::RequestTask< AddressDumpTask, AddressEventList >

Public Member Functions

 AddressDumpTask (SocketGuard &socket_guard, std::pmr::memory_resource *pmr, uint16_t ifindex, uint32_t sequence) noexcept
 Construct an AddressDumpTask.
void prepare_request ()
 Prepare the netlink request to perform an address dump.
auto process_message (const nlmsghdr &header) -> std::optional< std::expected< AddressEventList, std::error_code > >
 Process a received netlink message for address dump responses.
Public Member Functions inherited from llmx::rtaco::AddressTask< AddressDumpTask, AddressEventList >
auto request_payload () const -> std::span< const uint8_t >
 Get the serialized request payload for sending.
Public Member Functions inherited from llmx::rtaco::RequestTask< AddressDumpTask, AddressEventList >
 RequestTask (SocketGuard &socket_guard, uint16_t ifindex, uint32_t sequence) noexcept
 Construct a RequestTask.
virtual ~RequestTask ()=default
 Virtual destructor.
auto async_run () -> boost::asio::awaitable< std::expected< AddressEventList, std::error_code > >
 Run the request asynchronously and return the result.

Private Member Functions

auto handle_done () -> std::expected< AddressEventList, std::error_code >
auto handle_error (const nlmsghdr &header) -> std::expected< AddressEventList, std::error_code >
auto dispatch_address (const nlmsghdr &header) -> std::optional< std::expected< AddressEventList, std::error_code > >

Private Attributes

AddressEventList learned_

Additional Inherited Members

Protected Member Functions inherited from llmx::rtaco::AddressTask< AddressDumpTask, AddressEventList >
void build_request (uint16_t msg_flags=NLM_F_REQUEST|NLM_F_DUMP, uint8_t address_family=RTN_UNSPEC, uint8_t prefixlen=0, uint8_t ifa_flags=0, uint8_t scope=RT_SCOPE_UNIVERSE)
Protected Member Functions inherited from llmx::rtaco::RequestTask< AddressDumpTask, AddressEventList >
auto socket () noexcept -> Socket &
auto sequence () const noexcept -> uint32_t
auto ifindex () const noexcept -> uint16_t
Protected Attributes inherited from llmx::rtaco::AddressTask< AddressDumpTask, AddressEventList >
AddressRequest request_

Detailed Description

Task that performs a full address dump from the kernel.

Sends an RTM_GETADDR dump request and accumulates AddressEvents as responses are received. The task completes when an NLMSG_DONE message is encountered and returns the collected AddressEventList or an error.

Constructor & Destructor Documentation

◆ AddressDumpTask()

llmx::rtaco::AddressDumpTask::AddressDumpTask ( SocketGuard & socket_guard,
std::pmr::memory_resource * pmr,
uint16_t ifindex,
uint32_t sequence )
noexcept

Construct an AddressDumpTask.

Parameters
socket_guardReference to the socket guard used for sending and receiving netlink requests.
pmrMemory resource used for allocations of the returned event list.
ifindexInterface index to target (0 = all interfaces).
sequenceNetlink message sequence number for requests.

Member Function Documentation

◆ dispatch_address()

auto llmx::rtaco::AddressDumpTask::dispatch_address ( const nlmsghdr & header) -> std::optional< std::expected< AddressEventList, std::error_code > >
private

◆ handle_done()

auto llmx::rtaco::AddressDumpTask::handle_done ( ) -> std::expected< AddressEventList, std::error_code >
private

◆ handle_error()

auto llmx::rtaco::AddressDumpTask::handle_error ( const nlmsghdr & header) -> std::expected< AddressEventList, std::error_code >
private

◆ prepare_request()

void llmx::rtaco::AddressDumpTask::prepare_request ( )

Prepare the netlink request to perform an address dump.

◆ process_message()

auto llmx::rtaco::AddressDumpTask::process_message ( const nlmsghdr & header) -> std::optional< std::expected< AddressEventList, std::error_code > >

Process a received netlink message for address dump responses.

Parameters
headerReference to the received netlink message header.
Returns
Optional expected containing the accumulated AddressEventList on completion, or an error_code on failure.

Member Data Documentation

◆ learned_

AddressEventList llmx::rtaco::AddressDumpTask::learned_
private

The documentation for this class was generated from the following files: