連載中(?)のsendmsg(),recvmsg()を使ったUDP送受信プログラムですが、いよいよIPv6です。IPv6ではIPV6_PKTINFOがどの処理系でも使えるので簡単、と思ったのですが、やってみると意外と苦労しました。。 まず、setsockopt()で指定するのは、IPV6_PKTINFOではなく、IPV6_RECVPKTINFOでないと駄目、というのが、SolarisとLinuxで、そもそもIPV6_RECVPKTINFOが無いのがBSD(MacOSX)というところで苦労しました。RECVPKTINFOと言っているのにsendmsg()にも効果があるのでなぜ?と思ったら、送信するときにはsetsockopt()しなくても、指定すれば有効になるみたいです。同じソケットで送信も受信もするならセットすることになるので、まあ、しておくことにしておけばいい感じです。 つづいて、str