AutoFreeBuffer -> std::vector<char> for netlink
Test: atest cuttlefish_net_tests
Bug: 144387776
Change-Id: I7263e59910a785ec2115c03b1f6e36e659df6b0d
diff --git a/common/libs/net/netlink_request.cpp b/common/libs/net/netlink_request.cpp
index 28690a4..ebd84bb 100644
--- a/common/libs/net/netlink_request.cpp
+++ b/common/libs/net/netlink_request.cpp
@@ -35,21 +35,17 @@
}
void* NetlinkRequest::AppendRaw(const void* data, size_t length) {
- void* out = request_.end();
+ size_t original_size = request_.size();
+ request_.resize(original_size + RTA_ALIGN(length), '\0');
+ memcpy(request_.data() + original_size, data, length);
- request_.Append(data, length);
- int pad = RTA_ALIGN(length) - length;
- if (pad > 0) {
- request_.Resize(request_.size() + pad);
- }
-
- return out;
+ return reinterpret_cast<void*>(request_.data() + original_size);
}
void* NetlinkRequest::ReserveRaw(size_t length) {
- void* out = request_.end();
- request_.Resize(request_.size() + RTA_ALIGN(length));
- return out;
+ size_t original_size = request_.size();
+ request_.resize(original_size + RTA_ALIGN(length), '\0');
+ return reinterpret_cast<void*>(request_.data() + original_size);
}
nlattr* NetlinkRequest::AppendTag(
@@ -61,9 +57,9 @@
return attr;
}
-NetlinkRequest::NetlinkRequest(int32_t command, int32_t flags)
- : request_(512),
- header_(Reserve<nlmsghdr>()) {
+NetlinkRequest::NetlinkRequest(int32_t command, int32_t flags) {
+ request_.reserve(512);
+ header_ = Reserve<nlmsghdr>();
flags |= NLM_F_ACK | NLM_F_REQUEST;
header_->nlmsg_flags = flags;
header_->nlmsg_type = command;
@@ -75,7 +71,7 @@
using std::swap;
swap(lists_, other.lists_);
swap(header_, other.header_);
- request_.Swap(other.request_);
+ swap(request_, other.request_);
}
void NetlinkRequest::AddString(uint16_t type, const std::string& value) {
diff --git a/common/libs/net/netlink_request.h b/common/libs/net/netlink_request.h
index e0f8753..5e5b355 100644
--- a/common/libs/net/netlink_request.h
+++ b/common/libs/net/netlink_request.h
@@ -23,8 +23,6 @@
#include <string>
#include <vector>
-#include "common/libs/auto_resources/auto_resources.h"
-
namespace cvd {
// Abstraction of Network link request.
// Used to supply kernel with information about which interface needs to be
@@ -100,7 +98,7 @@
nlattr* AppendTag(uint16_t type, const void* data, uint16_t length);
std::vector<std::pair<nlattr*, int32_t>> lists_;
- AutoFreeBuffer request_;
+ std::vector<char> request_;
nlmsghdr* header_;
NetlinkRequest(const NetlinkRequest&) = delete;