what test rapidos prueba opendns google brokers c dns ipv6

c - test - prueba ipv6



Usando el nombre del resolver de resolv.h con IPv6 (2)

Stéphane: si su resolv.h no incluye ningún soporte para sockaddr_in6 , eso sugiere que en sus O / S particulares, el resolutor no admite el transporte de IPv6.

Revisé algunos de mis sistemas aquí:

  • MacOS X 10.5.6: admite la biblioteca BIND 9, que tiene una función res_setservers() que puede tomar direcciones IPv6, sin la extensión _res._ext .

  • CentOS 5.2 - tiene la extensión _res._ext , aunque no hay mención de IPv6 en la página man para resolv.conf excepto que hay una configuración para decirle al resolver que devuelva registros AAAA antes de buscar registros A para gethostbyname() .

EDITAR - también, el repositorio de CVS para FreeBSD sugiere que FreeBSD 7.0 (vea la etiqueta FREEBSD_7_0_0_RELEASE ) también admite res_setservers() desde Bind 9.

Escribo o modifico programas que realizan resolución de nombres y necesitan un buen control del proceso. Entonces no uso getaddrinfo() , profundizo y uso res_query() / res_send() / etc en resolv.h , documentado en resolver (3).

Aunque no está documentado, la forma más común de establecer el resolver utilizado es actualizar _res.nsaddr_list . Pero esta matriz, definida en resolv.h, almacena struct sockaddr_in , que es solo direcciones IPv4. (Las direcciones IPv6 son struct sockaddr_in6 , un sistema independiente de la familia usaría struct sockaddr .)

Estoy buscando una forma (preferiblemente portátil, al menos entre varios Unix) para decirles _res que también quiero direcciones IPv6.

Aparentemente, hace mucho tiempo, en FreeBSD había un _res_ext con esta capacidad, pero no puedo encontrarlo más en un FreeBSD 7 reciente ( grep _res_ext /usr/include/resolv.h no encuentra nada). Todavía puede encontrar el código que lo usa (pruébelo con Google Codesearch ).

Gracias a Alnitak, noté que aparentemente ahora es _res._ext y no .res_ext . Me pregunto dónde se documentan o anuncian este tipo de cosas ... No tengo idea de qué tan portátil es _res._ext . Puedo encontrarlo en Debian y FreeBSD. Parece que hay pocos programas que lo usan.


glibc:

res_setservers: no __res_state._u._ext.nsaddrs __res_state._u._ext.nsmap

establezca el último en MAXNS + 1 de acuerdo con:

http://sourceware.org/ml/libc-hacker/2002-05/msg00035.html

BSD-libc:

res_setservers: yes __res_state._u._ext.__res_state_ext

Me parece desordenado y probablemente necesites autoconf.