diff --git a/test/syscalls/linux/socket_netlink_route.cc b/test/syscalls/linux/socket_netlink_route.cc index dac631741..e958ca556 100644 --- a/test/syscalls/linux/socket_netlink_route.cc +++ b/test/syscalls/linux/socket_netlink_route.cc @@ -162,12 +162,18 @@ void CheckLinkMsg(const struct nlmsghdr* hdr, const Link& link) { reinterpret_cast(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(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(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(RTA_DATA(rta_mtu))); + EXPECT_EQ(mtu, link.mtu); + } } TEST(NetlinkRouteTest, GetLinkByIndex) { diff --git a/test/syscalls/linux/socket_netlink_route_util.cc b/test/syscalls/linux/socket_netlink_route_util.cc index 13fd7d789..5289e83d9 100644 --- a/test/syscalls/linux/socket_netlink_route_util.cc +++ b/test/syscalls/linux/socket_netlink_route_util.cc @@ -270,8 +270,8 @@ PosixErrorOr> DumpLinks() { } const struct ifinfomsg* msg = reinterpret_cast(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> DumpLinks() { links.back().index = msg->ifi_index; links.back().type = msg->ifi_type; links.back().name = - std::string(reinterpret_cast(RTA_DATA(rta))); + std::string(reinterpret_cast(RTA_DATA(rta_name))); + const auto* rta_mtu = FindRtAttr(hdr, msg, IFLA_MTU); + links.back().mtu = rta_mtu == nullptr + ? 0 + : *reinterpret_cast(RTA_DATA(rta_mtu)); })); return links; } diff --git a/test/syscalls/linux/socket_netlink_route_util.h b/test/syscalls/linux/socket_netlink_route_util.h index 2c4d6071f..a8f5e8efd 100644 --- a/test/syscalls/linux/socket_netlink_route_util.h +++ b/test/syscalls/linux/socket_netlink_route_util.h @@ -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,