1
IPv6 DNSサーバーのリストをプログラムで取得しようとしています。現在、私はlibresolvと、次のコードを使用しています:IPv6 DNSサーバーリストをプログラムでLinuxで取得する
#include <stdio.h>
#include <netinet/in.h>
#include <resolv.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv)
{
res_state res = malloc(sizeof(struct __res_state));
res_ninit(res);
printf("%p\n", res->_u._ext.nsaddrs[0]); // (nil) here
}
resolv.hによると、RES - > _ u._ext.nsaddrsフィールドが必要なアドレスを「構造体SOCKADDR_IN6 *」の配列を含有しなければならないが、それが含まれていますNULLの配列。
IPv4 DNSサーバリストは、res-> nsaddr_listフィールドからアクセスできますが、IPv6リストは常に空です。私はUbuntuとCentOSの両方でこれをチェックしました。 IPv6が正しく設定されています。
4860そのresolv.confは手作業で編集してはならず、役に立たない。サーバーはプロバイダーのDHCPからDNSサーバーの一覧を取得し、システムによって正しく使用されます。 – Vsevolod
このリストはどこに保存されていると思いますか?答えは 'resolv.conf'です。 –