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:
Jing Chen
2024-07-01 14:39:37 -07:00
committed by gVisor bot
parent d59375d82e
commit 090d9a33d4
3 changed files with 18 additions and 7 deletions
+10 -4
View File
@@ -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,