Path: blob/main/tests/sys/netlink/test_rtnl_neigh.py
39483 views
import socket12import pytest3from atf_python.sys.net.vnet import SingleVnetTestTemplate4from atf_python.sys.netlink.netlink import NetlinkTestTemplate5from atf_python.sys.netlink.netlink_route import NdAttrType6from atf_python.sys.netlink.netlink_route import NetlinkNdMessage7from atf_python.sys.netlink.netlink_route import NlRtMsgType8from atf_python.sys.netlink.utils import NlConst91011class TestRtNlNeigh(NetlinkTestTemplate, SingleVnetTestTemplate):12def setup_method(self, method):13method_name = method.__name__14if "4" in method_name:15self.IPV4_PREFIXES = ["192.0.2.1/24"]16if "6" in method_name:17self.IPV6_PREFIXES = ["2001:db8::1/64"]18super().setup_method(method)19self.setup_netlink(NlConst.NETLINK_ROUTE)2021def filter_iface(self, family, num_items):22epair_ifname = self.vnet.iface_alias_map["if1"].name23epair_ifindex = socket.if_nametoindex(epair_ifname)2425msg = NetlinkNdMessage(self.helper, NlRtMsgType.RTM_GETNEIGH)26msg.set_request()27msg.base_hdr.ndm_family = family28msg.base_hdr.ndm_ifindex = epair_ifindex29self.write_message(msg)3031ret = []32for rx_msg in self.read_msg_list(33msg.nl_hdr.nlmsg_seq, NlRtMsgType.RTM_NEWNEIGH34):35ifname = socket.if_indextoname(rx_msg.base_hdr.ndm_ifindex)36family = rx_msg.base_hdr.ndm_family37assert ifname == epair_ifname38assert family == family39assert rx_msg.get_nla(NdAttrType.NDA_DST) is not None40assert rx_msg.get_nla(NdAttrType.NDA_LLADDR) is not None41ret.append(rx_msg)42assert len(ret) == num_items4344@pytest.mark.timeout(5)45def test_6_filter_iface(self):46"""Tests that listing outputs all nd6 records"""47return self.filter_iface(socket.AF_INET6, 2)4849@pytest.mark.timeout(5)50def test_4_filter_iface(self):51"""Tests that listing outputs all arp records"""52return self.filter_iface(socket.AF_INET, 1)535455