llmx-rtaco 0.0.1
RTNL-only netlink control-plane library for Linux (C++23).
Loading...
Searching...
No Matches
nl_route_task.hxx
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <cstdint>
5#include <optional>
6#include <span>
7
8#include <linux/rtnetlink.h>
9
11
12namespace llmx {
13namespace rtaco {
14
16 nlmsghdr header;
17 rtmsg message;
18};
19
26template<typename Derived, typename Result>
27class RouteTask : public RequestTask<Derived, Result> {
28protected:
30
31public:
32 using RequestTask<Derived, Result>::RequestTask;
33
35 auto request_payload() const -> std::span<const uint8_t> {
36 return {reinterpret_cast<const uint8_t*>(&request_), request_.header.nlmsg_len};
37 }
38
39protected:
40 void build_request(uint16_t msg_flags, uint8_t address_family, uint8_t route_table,
41 uint8_t scope, uint8_t protocol) {
42 request_.header.nlmsg_len = NLMSG_LENGTH(sizeof(rtmsg));
43 request_.header.nlmsg_type = RTM_GETROUTE;
44 request_.header.nlmsg_flags = msg_flags;
45 request_.header.nlmsg_seq = this->sequence();
46 request_.header.nlmsg_pid = 0;
47
48 request_.message.rtm_family = address_family;
49 request_.message.rtm_table = route_table;
50 request_.message.rtm_scope = scope;
51 request_.message.rtm_protocol = protocol;
52 request_.message.rtm_type = RTN_UNSPEC;
53 }
54};
55
56} // namespace rtaco
57} // namespace llmx
Base template for single-request netlink tasks.
Definition nl_request_task.hxx:46
RequestTask(SocketGuard &socket_guard, uint16_t ifindex, uint32_t sequence) noexcept
Construct a RequestTask.
Definition nl_request_task.hxx:61
auto sequence() const noexcept -> uint32_t
Definition nl_request_task.hxx:89
Base task type for route-related netlink operations.
Definition nl_route_task.hxx:27
RouteRequest request_
Definition nl_route_task.hxx:29
auto request_payload() const -> std::span< const uint8_t >
Get the serialized request payload for the route request.
Definition nl_route_task.hxx:35
void build_request(uint16_t msg_flags, uint8_t address_family, uint8_t route_table, uint8_t scope, uint8_t protocol)
Definition nl_route_task.hxx:40
Definition nl_common.hxx:21
Definition nl_common.hxx:20
Definition nl_route_task.hxx:15
rtmsg message
Definition nl_route_task.hxx:17
nlmsghdr header
Definition nl_route_task.hxx:16