我有一个qemu-system-aarch64实例,其运行带有busybox的linux-3.10.105。
对于ipv4,我发现此配置行可以仅使用可用的环回设备来启用多播:
ip route add 224.0.0.0/4 dev lo
现在我也想为ipv6启用它,但是将该命令更改为ipv6多播范围的幼稚方法不起作用。
/ # ip route add ff00::/8 dev lo
/ # ip -6 route
unreachable ff00::/8 dev lo metric 1024 error -101
我要调用的函数是:
setsockopt(sockfd_ipv4, IPPROTO_IP, MCAST_JOIN_GROUP, &group_ipv4, sizeof(group_ipv4))
setsockopt(sockfd_ipv6, IPPROTO_IPV6, MCAST_JOIN_GROUP, &group_ipv6, sizeof(group_ipv6))
虽然第一个发出ipv4命令后运行正常,但是第二个返回ENODEV(就像如果我不发出命令,第一个返回ENODEV)。
某些情况:多播并不一定要工作。这个Linux版本在IP多播的初始化代码中有一个错误,我想使用gdb进行研究。因此,我所需要的只是一个设置,认为它可以多播而无需实际到达任何东西。
因此,只要它们使ENODEV错误消失,其他不使用路线的想法就会有所帮助。