| #!/usr/bin/env python3 | |
| # SPDX-License-Identifier: GPL-2.0 | |
| from lib.py import ksft_exit, ksft_run, ksft_ge, RtnlAddrFamily | |
| import socket | |
| IPV4_ALL_HOSTS_MULTICAST = b'\xe0\x00\x00\x01' | |
| def dump_mcaddr_check(rtnl: RtnlAddrFamily) -> None: | |
| """ | |
| Verify that at least one interface has the IPv4 all-hosts multicast address. | |
| At least the loopback interface should have this address. | |
| """ | |
| addresses = rtnl.getmulticast({"ifa-family": socket.AF_INET}, dump=True) | |
| all_host_multicasts = [ | |
| addr for addr in addresses if addr['multicast'] == IPV4_ALL_HOSTS_MULTICAST | |
| ] | |
| ksft_ge(len(all_host_multicasts), 1, | |
| "No interface found with the IPv4 all-hosts multicast address") | |
| def main() -> None: | |
| rtnl = RtnlAddrFamily() | |
| ksft_run([dump_mcaddr_check], args=(rtnl, )) | |
| ksft_exit() | |
| if __name__ == "__main__": | |
| main() |