MulticastSocket.joinGroup(InetAddress) は1度に1つのインターフェースにしかIGMP joinを送らない

MulticastSocketがANYアドレスにバインドしているとき、MulticastSocket.joinGroup(InetAddress)ですべてのインターフェースにjoinするかと思ってたら大間違い。ANYとかワイルドカードとかたいそうな名前だとしてもデフォルトとして選ばれるインターフェースに1回しかIGMP joinを送らない。bge0, nge0, nge1がインターフェースとして使えるとき、

            MulticastSocket socket1 = new MulticastSocket(12345);
            socket1.joinGroup(InetAddress.getByName("239.192.0.1"));

            MulticastSocket socket2 = new MulticastSocket(23456);
            socket2.joinGroup(InetAddress.getByName("239.192.0.2"));

こんなコードを実行すると、joinの状態は

$ netstat -g
Group Memberships: IPv4
Interface Group                RefCnt
--------- -------------------- ------
lo0       224.0.0.1                 1
bge0      239.192.0.2               1
bge0      239.192.0.1               1
bge0      224.0.0.1                 1
nge0      224.0.0.1                 1
nge1      224.0.0.1                 1

となって、すべてデフォルト(上記の場合bge0)にjoinしてしまう。ANYとかワイルドカードとかそういう言葉に惑わされてしまいました。こういうのに出くわすとAPIもネットワークの上っ面しか理解してないことを痛感してしまいます。