mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Expose a link's MTU when dump the link in netlink tests.
It is primarily used to test RTM_[SET|NEW]LINK with IFLA_MTU. PiperOrigin-RevId: 648489368
This commit is contained in:
@@ -162,12 +162,18 @@ void CheckLinkMsg(const struct nlmsghdr* hdr, const Link& link) {
|
||||
reinterpret_cast<const struct ifinfomsg*>(NLMSG_DATA(hdr));
|
||||
EXPECT_EQ(msg->ifi_index, link.index);
|
||||
|
||||
const struct rtattr* rta = FindRtAttr(hdr, msg, IFLA_IFNAME);
|
||||
EXPECT_NE(nullptr, rta) << "IFLA_IFNAME not found in message.";
|
||||
if (rta != nullptr) {
|
||||
std::string name(reinterpret_cast<const char*>(RTA_DATA(rta)));
|
||||
const struct rtattr* rta_name = FindRtAttr(hdr, msg, IFLA_IFNAME);
|
||||
EXPECT_NE(nullptr, rta_name) << "IFLA_IFNAME not found in message.";
|
||||
if (rta_name != nullptr) {
|
||||
std::string name(reinterpret_cast<const char*>(RTA_DATA(rta_name)));
|
||||
EXPECT_EQ(name, link.name);
|
||||
}
|
||||
const struct rtattr* rta_mtu = FindRtAttr(hdr, msg, IFLA_MTU);
|
||||
EXPECT_NE(nullptr, rta_mtu) << "IFLA_MTU not found in message.";
|
||||
if (rta_mtu != nullptr) {
|
||||
const auto mtu = *(reinterpret_cast<uint32_t*>(RTA_DATA(rta_mtu)));
|
||||
EXPECT_EQ(mtu, link.mtu);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(NetlinkRouteTest, GetLinkByIndex) {
|
||||
|
||||
@@ -270,8 +270,8 @@ PosixErrorOr<std::vector<Link>> DumpLinks() {
|
||||
}
|
||||
const struct ifinfomsg* msg =
|
||||
reinterpret_cast<const struct ifinfomsg*>(NLMSG_DATA(hdr));
|
||||
const auto* rta = FindRtAttr(hdr, msg, IFLA_IFNAME);
|
||||
if (rta == nullptr) {
|
||||
const auto* rta_name = FindRtAttr(hdr, msg, IFLA_IFNAME);
|
||||
if (rta_name == nullptr) {
|
||||
// Ignore links that do not have a name.
|
||||
return;
|
||||
}
|
||||
@@ -280,7 +280,11 @@ PosixErrorOr<std::vector<Link>> DumpLinks() {
|
||||
links.back().index = msg->ifi_index;
|
||||
links.back().type = msg->ifi_type;
|
||||
links.back().name =
|
||||
std::string(reinterpret_cast<const char*>(RTA_DATA(rta)));
|
||||
std::string(reinterpret_cast<const char*>(RTA_DATA(rta_name)));
|
||||
const auto* rta_mtu = FindRtAttr(hdr, msg, IFLA_MTU);
|
||||
links.back().mtu = rta_mtu == nullptr
|
||||
? 0
|
||||
: *reinterpret_cast<uint32_t*>(RTA_DATA(rta_mtu));
|
||||
}));
|
||||
return links;
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ struct Link {
|
||||
int index;
|
||||
int16_t type;
|
||||
std::string name;
|
||||
uint32_t mtu;
|
||||
};
|
||||
|
||||
PosixError DumpLinks(const FileDescriptor& fd, uint32_t seq,
|
||||
|
||||
Reference in New Issue
Block a user