16#ifndef ALLOCD_NET_NETLINK_REQUEST_H_
17#define ALLOCD_NET_NETLINK_REQUEST_H_
20#include <netinet/in.h>
51 static_assert(std::is_integral<T>::value,
52 "AddInt must be used on integer types.");
59 void AddIfInfo(int32_t if_index,
bool is_operational);
62 void AddAddrInfo(int32_t if_index,
int prefix_len = 24);
65 void AddMacAddress(
const std::array<unsigned char, 6>& address);
86 uint32_t
SeqNo()
const;
104 template <
typename T>
106 return static_cast<T*
>(
ReserveRaw(
sizeof(T)));
112 std::vector<std::pair<nlattr*, int32_t>>
lists_;
Definition: netlink_request.h:34
~NetlinkRequest()=default
void * AppendRaw(const void *data, size_t length)
Definition: netlink_request.cc:44
void AddIfInfo(int32_t if_index, bool is_operational)
Definition: netlink_request.cc:87
std::vector< std::pair< nlattr *, int32_t > > lists_
Definition: netlink_request.h:112
size_t RequestLength() const
Definition: netlink_request.cc:136
void PopList()
Definition: netlink_request.cc:119
nlmsghdr * header_
Definition: netlink_request.h:114
NetlinkRequest(const NetlinkRequest &)=delete
std::vector< char > request_
Definition: netlink_request.h:113
uint32_t SeqNo() const
Definition: netlink_request.cc:42
void * ReserveRaw(size_t length)
Definition: netlink_request.cc:51
nlattr * AppendTag(uint16_t type, const void *data, uint16_t length)
Definition: netlink_request.cc:57
void * RequestData() const
Definition: netlink_request.cc:130
void AddInt(uint16_t type, T value)
Definition: netlink_request.h:50
T * Append(const T &data)
Definition: netlink_request.h:99
void AddString(uint16_t type, const std::string &value)
Definition: netlink_request.cc:83
NetlinkRequest(int32_t type, int32_t flags)
Definition: netlink_request.cc:66
void AddInAddr(uint16_t type, in_addr_t *addr)
Definition: netlink_request.cc:109
void AddAddrInfo(int32_t if_index, int prefix_len=24)
Definition: netlink_request.cc:95
void AddMacAddress(const std::array< unsigned char, 6 > &address)
Definition: netlink_request.cc:104
NetlinkRequest & operator=(const NetlinkRequest &)=delete
T * Reserve()
Definition: netlink_request.h:105
void PushList(uint16_t type)
Definition: netlink_request.cc:113
#define data
Definition: dict.c:56
Definition: alloc_driver.h:20
uint8_t type
Definition: pairing_connection.h:0
Definition: netlink.h:229