UDPマルチキャストの受信処理を記述する際、マルチキャストアドレスをbindすると、リンクローカルの場合にエラーとなりました。Argument)UDPマルチキャスト受信では、当初アドレスは0でポート番号のみ指定してbindした後に、setsockoptでIPV6_JOIN_GROUPを指定すればいいと思っていましたし、それで受信はできたのですが、Linuxではなぜか他のアドレス宛でポート番号が一致するとそれもソケットから受信できてしまうという現象が発生しました。そこで、受信するマルチキャストアドレスをbindしてみたのですが、サイトローカル他のマルチキャストはbindに成功しました。リンクローカルなマルチキャストアドレスはエラーとなるので、Linuxのカーネル内でリンクローカルなマルチキャストアドレスはじいている処理があるのではないかとソースを調べ、対処方法を見つけました。sockaddr_in6のsin6_scope_id属性に0以外の使用するインタフェースのインデックス番号をセットしてからbindする。setsockoptでSO_BINDTODEVICEを指定してインタフェース名をソケットに設定してからbindする。permitted")となり、root特権が必要なようです。2.6.25.4まずはbindに対応する処理のあたりを付けてみると、以下が該当しそうな部分です。:bindしようとするアドレスが、リンクローカルアドレスのときは、インタフェース・インデックスが0以外の具体的なインタフェースを指す値でないとEINVALなエラーが発生するようになっています。sock構造体)のsk_bound_dev_ifが0以外の値でないとエラーとなります。socketは、include/linux/net.hで定義された構造です。representation"とコメント記述があります。sockは、include/net/sock.hで定義された構造です。コメントを書くスパム対策のためのダミーです。