def enumerate_interfaces()

in selftest/selftest.py [0:0]


    def enumerate_interfaces(cls) -> Dict[str, NetworkInterface]:
        """Retrieve all Ethernet interfaces on the system."""
        interfaces: Dict[str, NetworkInterface] = {}
        interface_names = [
            interface
            for interface in os.listdir(SYS_CLASS_NET)
            if os.path.exists(os.path.join(SYS_CLASS_NET, interface, "device"))
        ]

        for interface_name in interface_names:
            sys_path = Path(SYS_CLASS_NET, interface_name)
            udev_properties = cls.query_udev_properties(interface_name)
            driver_path = Path(sys_path, "device", "driver")
            if not driver_path.is_symlink():
                logger.debug(
                    "ignoring interface %s without driver symlink", interface_name
                )
                continue

            link = os.readlink(driver_path)
            driver = os.path.basename(link)
            mac = (sys_path / "address").read_text().strip()
            ipv4_addrs = cls.get_ipv4_addresses(interface_name)
            interfaces[interface_name] = NetworkInterface(
                name=interface_name,
                driver=driver,
                mac=mac,
                ipv4_addrs=ipv4_addrs,
                udev_properties=udev_properties,
            )

        return interfaces