Multicastのルーティング情報またはgatewayが設定されてない時に起こるようです。
Multicastグループにjoinする時、imr_interface.s_addrに特定のインターフェースのipアドレスを指定せず、INADDR_ANYを指定するとsetsockoptがENODEVエラーを返すようです。
200シリーズで採用している avahiというツールでは multicastを使っていますが、インターフェースのIPアドレスを指定しているために、この問題は起きません。
Multicastでエラーになった場合は、
- gatewayを設定
- multicastのルーティング情報を設定
- アプリケーションを開発している場合は、avahiと同じようにインターフェースのipアドレスを指定
のどれかを試してください。
multicastのルーティング情報を設定するには
[armadillo ~]# route add -net 224.0.0.0 netmask 240.0.0.0 eth0
などとしてください。