Can't assign requested address

Linuxでは動作するIPv4マルチキャストを使うプログラムがSnow Leopardにもってきたら動かなかった。
マルチキャストで受信して、その送信元に送り返すという単純なものなのですが、sendto()をすると、


Can't assign requested address
と言われてしまう。

結局、bind()の仕方に問題があった。

元のソースは、


if ((errcode = getaddrinfo(マルチキャストアドレス, ポート, &hints, &res0)) != 0) {
(void) fprintf(stderr, "getaddrinfo():%s\n", gai_strerror(errcode));
return (-1);
}
として、マルチキャストアドレスにbind()してしまっていた。
何故かLinuxではこれで動くのですが、BSD系のSnow Leopardでは動かなかったということです。

getaddrinfo()の第1引数をNULLにして無事動きました。