プログラムに IPv6 サポートを追加したかったのですが、奇妙なエラーが発生しました。接続を受け入れるソケットを開きたい。これが私のシナリオです:
まず、 getaddrinfo() を使用してソケット構成を見つけます。
struct addrinfo hint, *info = NULL;
memset((void *)&hint, 0, sizeof(hint));
hint.ai_family = AF_INET6;
hint.ai_flags = AI_PASSIVE | AI_NUMERICSERV;
hint.ai_socktype = SOCK_STREAM;
if ((error = getaddrinfo(NULL, "1234", &hint, &info))) {
/* some error handling */
}
I gen non-NULL 結果はinfo
. 次に、ソケットを作成します。
socket(info->ai_family, info->ai_socktype, info->ai_protocol)
ここで私は得る-1
strerror(errno)
戻り値Address family not supported by protocol
getaddrinfo()
バインドできるアドレスのみを返すと思いましたが、この場合は NULL を返すと予想されます。私は何が欠けていますか?
私のeth0には現在IPv6アドレスがないことを付け加えておきます。uClibc 0.9.32 を使用しています