通过DHCP获取DNS详细信息的glibc库调用resu ninit的替代方案

通过DHCP获取DNS详细信息的glibc库调用resu ninit的替代方案,dns,glibc,resolve,Dns,Glibc,Resolve,是否有一个好的API替代res\ninit? 此调用存在问题,因为res->\u.ext.nscount6和res->nscount没有反映正确的数字。将IPv6地址添加到/etc/resolv.conf仍然会导致nscount的增加,而您原本预计nscount6会增加 对于/etc/resolv.conf中的IPv6地址,较旧的glibc版本似乎会同时增加nscount和nscount6 我目前正在直接解析resolv.conf,因为我无法依赖res\ninit调用。但是这对于手动DNS来说是

是否有一个好的API替代
res\ninit
? 此调用存在问题,因为
res->\u.ext.nscount6
res->nscount
没有反映正确的数字。将IPv6地址添加到
/etc/resolv.conf
仍然会导致
nscount
的增加,而您原本预计
nscount6
会增加

对于
/etc/resolv.conf
中的IPv6地址,较旧的glibc版本似乎会同时增加
nscount
nscount6

我目前正在直接解析
resolv.conf
,因为我无法依赖
res\ninit
调用。但是这对于手动DNS来说是很好的

当涉及到DHCP DNS时,我需要一个API来给出结果。没有其他方法(我能想到)通过DHCP确定DNS IP地址

尝试在董事会内的其他地方张贴,但迄今为止没有任何帮助。例如


resu ninit
resu init
只能从
/etc/resolv.conf
读取名称服务器信息。通过自己解析
/etc/resolv.conf
并检查
nameserver
行,始终可以获得相同的数据名服务器。如果没有
nameserver
行,将使用默认的
127.0.0.1

我认为没有必要为此提供API,因为文件格式非常简单,使用API可能比读取文件更困难

如果计算机上没有运行本地缓存解析程序,则通过重写
/etc/resolv.conf
来实现DHCP上的名称服务器分配。用于此目的的确切机制是特定于发行版的,例如,如果安装了Debian,则使用Debian

如果系统上正在运行本地缓存解析程序(如dnsmasq或Unbound),则可以直接在该缓存解析程序中配置DHCP上的名称服务器。在这种情况下,
/etc/resolv.conf
将始终指向同一个名称服务器,通常通过列出
名称服务器127.0.0.1
或根本没有名称服务器信息(这是默认设置)