Section: Manual del Programador de Linux (3)
Updated: 21 May 1993
Index Return to Main
Contents
res_init, res_query, res_search, res_querydomain, res_mkquery, res_send, dn_comp, dn_expand - rutinas "resolver" (de resolución)
#include <netinet/in.h> #include <arpa/nameser.h> #include <resolv.h> extern struct state _res; int res_init(void); int res_query(const char *dname, int class, int type, <dl><dt><dd>unsigned char *answer, int anslen); </dl> int res_search(const char *dname, int class, int type, <dl><dt><dd>unsigned char *answer, int anslen); </dl> int res_querydomain(const char *name, const char *domain, <dl><dt><dd>int class, int type, unsigned char *answer, int anslen); </dl> int res_mkquery(int op, const char *dname, int class, int type, <dl><dt><dd>char *data, int datalen, struct rrec *newrr, char *buf, int buflen); </dl> int res_send(const char *msg, int msglen, char *answer, <dl><dt><dd>int anslen); </dl> int dn_comp(unsigned char *exp_dn, unsigned char *comp_dn, <dl><dt><dd>int length, unsigned char **dnptrs, unsigned char *exp_dn, unsigned char **lastdnptr); </dl> int dn_expand(unsigned char *msg, unsigned char *eomorig, <dl><dt><dd>unsigned char *comp_dn, unsigned char *exp_dn, int length); </dl>
Estas funciones hacen peticiones e interpretan las respuestas de los servidores de nombres de dominio de Internet.
La función res_init() lee los ficheros de configuración (ver resolv+(8)) para conseguir el nombre del dominio por defecto, orden de búsqueda y la dirección(es) del servidor(es) de nombres. Si no se proporciona servidor, se intenta con el host local. Si no se proporciona dominio, se usa el asociado al host local. Este puede sobreescribirse con la variable de entorno LOCALDOMAIN. Normalmente res_init() es ejecutado por la primera llamada a una de las otras funciones.
La función res_query() pide al servidor de nombres el nombre de dominio completamente cualificado name de type y class especificados. La respuesta se deja en el buffer answer de longitud anslen proporcionado por quien realiza la llamada.
La función res_search() hace una petición y espera la respuesta como res_query(), pero además implementa las reglas por defecto y las de búsqueda controladas por RES_DEFNAMES y RES_DNSRCH (ver más abajo la descripción de las opciones de _res).
La función res_querydomain() hace una petición utilizando res_query() en la concatenación de name y domain.
Las siguientes son funciones de un nivel más bajo utilizadas por res_query().
La función res_mkquery() construye un mensaje de petición en buf de longitud buflen para el nombre de dominio dname. El tipo de petición op normalmente es QUERY, pero puede ser cualquiera de los tipos definidos en <arpa/nameser.h>. newrr actualmente no se usa.
La función res_send() envía una petición preformateada, dada en msg de longitud msglen y devuelve la respuesta en answer que tiene longitud anslen. Este llamará a res_init(), si aún no ha sido llamado.
La función dn_comp() comprime el nombre de dominio exp_dn y lo guarda en el buffer comp_dn de longitud length. La compresión usa una matriz de punteros dnptrs a nombres previamente comprimidos en el mensaje actual. El primero de los punteros apunta al principio del mensaje y la lista termina con NULL. El límite de la matriz está especificado por lastdnptr. Si dnptr es NULL, los nombres de dominio no se comprimen. Si lastdnptr es NULL, la lista de etiquetas no se actualiza.
La función dn_expand() expande el nombre de dominio comprimido comp_dn a un nombre de dominio completo, y es puesto en el buffer exp_dn de tamaño length. El nombre comprimido está contenido en una petición o mensaje de respuesta, y msg apunta al principio del mensaje.
Las rutinas del "resolver" usan la configuración global e información del estado contenida en la estructura _res, definida en <resolv.h>. El único campo que puede manipular normalmente el usuario es _res.options. Este campo puede contener un "o (OR) lógico" bit a bit de las siguientes opciones:
La función res_init() devuelve 0 si hay éxito, o -1 si hubo un error.
Las funciones res_query(), res_search(), res_querydomain(), res_mkquery() y res_send() devuelven la longitud de la respuesta, o -1 si hubo un error.
Las funciones dn_comp() y dn_expand() devuelven la longitud del nombre comprimido, o -1 si hubo un error.
/etc/resolv.conf fichero de configuración de resolver /etc/host.conf fichero de configuración de resolver
(3), hostname(7), named(8), resolv+(8)
This document was created by man2html, using
the manual pages.
Time: 06:16:25 GMT, January 22, 2005