Error "No such device" in call setsockopt when joining multicast group
If it works for one IP but not for another, maybe this can help.
What does "IP_ADD_MEMBERSHIP: No such device" mean?
It means that the tool is trying to use multicast but the network interface doesn't support it There are two likely causes:
Your machine doesn't have multicast support enabled. For example, on Linux and FreeBSD it is possible to compile a kernel which doesn't support multicast.
You don't have a route for multicast traffic. Some systems don't add this by default, and you need to run.
route add -net 224.0.0.0 netmask 224.0.0.0 eth0
(or similar). If you wish to use RAT in unicast mode only, it is possible to add the multicast route on the loopback interface.
IP_ADD_MEMBERSHIP
and bind()
are only required for receiving multicast, use IP_MULTICAST_IF
instead for effectively a "send-only membership" of a multicast group.
IP_MULTICAST_IF
sets the kernel to send multicast packets for a given group on a given interface, it is effectively "send-only" as you will not be able to receive traffic on that group after setting. This varies by platform: Posix platforms generally function this way as an optimisation, whilst Win32 will perform software level routing to propagate locally generated packets.