def test_private_addresses(mock_address): mock_address("wlan0", "10.0.0.1") mock_address("lo", "127.0.0.1") assert get_private_addresses(include_loopback=False) == [ ip_address("10.0.0.1"), ]
async def multicast( loop: asyncio.AbstractEventLoop, services: typing.List[str], address: str = "224.0.0.251", port: int = 5353, timeout: int = 4, end_condition: typing.Optional[typing.Callable[[Response], bool]] = None, ) -> typing.Dict[IPv4Address, Response]: """Send multicast request for services.""" protocol = MulticastDnsSdClientProtocol( loop, services, address, port, end_condition ) # Socket listening on 5353 from anywhere await protocol.add_socket(net.mcast_socket(None, 5353)) # One socket per local IP address for addr in net.get_private_addresses(): try: await protocol.add_socket(net.mcast_socket(str(addr))) except Exception: # pylint: disable=broad-except _LOGGER.exception(f"failed to add listener for {addr}") return await typing.cast(MulticastDnsSdClientProtocol, protocol).get_response( timeout )
def test_private_addresses(mock_address): mock_address("wlan0", "10.0.0.1") mock_address("eth0", "192.168.0.1") mock_address("eth1", "172.16.0.1") assert get_private_addresses() == [ ip_address("10.0.0.1"), ip_address("192.168.0.1"), ip_address("172.16.0.1"), ]
async def multicast( loop: asyncio.AbstractEventLoop, services: List[str], address: str = "224.0.0.251", port: int = 5353, timeout: int = 4, ) -> Dict[IPv4Address, Response]: """Send multicast request for services.""" protocol = MulticastDnsSdClientProtocol(loop, services, address, port) # Socket listening on 5353 from anywhere await protocol.add_socket(net.mcast_socket(None, 5353)) # One socket per local IP address for addr in net.get_private_addresses(): try: await protocol.add_socket(net.mcast_socket(str(addr))) except Exception: _LOGGER.exception(f"failed to add listener for {addr}") return await cast(MulticastDnsSdClientProtocol, protocol).get_response(timeout)
def test_localhost(mock_address): mock_address("eth0", "127.0.0.1") assert get_private_addresses() == [IPv4Address("127.0.0.1")]
def test_public_addresses(mock_address): mock_address("eth0", "1.2.3.4") mock_address("eth1", "8.8.8.8") assert get_private_addresses() == []
def test_no_address(): assert get_private_addresses() == []
def _get_zeroconf_addresses( addresses: Optional[List[str]]) -> List[IPv4Address]: if addresses is None: return list(get_private_addresses(include_loopback=False)) return [IPv4Address(address) for address in addresses]