【发布时间】:2023-03-17 22:38:01
【问题描述】:
我编写或修改执行名称解析并需要
良好的过程控制。所以我不使用getaddrinfo(),我去
更深入并在resolv.h 中使用res_query() / res_send() / etc,记录在案
在解析器(3)中。
虽然没有记录,但设置使用的解析器的常用方法是
更新_res.nsaddr_list。但是这个在 resolv.h 中定义的数组存储
struct sockaddr_in,即仅 IPv4 地址。 (IPv6 地址
是struct sockaddr_in6,家庭独立系统将使用struct sockaddr。)
我正在寻找一种方法(最好是便携的,至少在
各种Unix)告诉_res我也想要IPv6地址。
显然,很久以前,在 FreeBSD 中有一个 _res_ext 与这个
能力,但我在最近的 FreeBSD 7 中找不到它了(grep
_res_ext /usr/include/resolv.h 什么也没找到)。你仍然可以找到
code which uses it(自己试试with Google Codesearch)。
感谢 Alnitak,我注意到它现在显然是 _res._ext 而不是 .res_ext。我想知道这些事情是在哪里记录或宣布的……我不知道_res._ext 的便携性如何。我可以在 Debian 和 FreeBSD 上找到它。似乎很少有程序使用它。
【问题讨论】: