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 netmask 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.