NOME¶
res_init, res_query, res_search, res_querydomain, res_mkquery, res_send,
dn_comp, dn_expand - rotinas resolvedoras
SINOPSE¶
#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,
unsigned char *answer, int anslen);
int res_search(const char *dname, int class, int type,
unsigned char *answer, int anslen);
int res_querydomain(const char *name, const char *domain,
int class, int type, unsigned char *answer,
int anslen);
int res_mkquery(int op, const char *dname, int class,
int type, char *data, int datalen, struct rrec *newrr,
char *buf, int buflen);
int res_send(const char *msg, int msglen, char *answer,
int dn_comp(unsigned char *exp_dn, unsigned char *comp_dn,
int length, unsigned char **dnptrs, unsigned char *exp_dn,
unsigned char **lastdnptr);
int dn_expand(unsigned char *msg, unsigned char *eomorig,
unsigned char *comp_dn, unsigned char *exp_dn,
int length);
DESCRIÇÃO¶
Estas funções fazem pesquisas e interpretam as respostas de
servidores de nomes de domínio da Internet.
A função
res_init() lê os arquivos de
configuração (veja resolv+(8)) para obter o nome de
domínio padrão, a ordem de buscas e o(s) endereço(s)
do(s) servidor(es) de nome. Se nenhum servidor é dado, o host local
é tentado. Se nenhum domínio é dado, é usado
aquele domínio associado ao host local. Ele pode ser sobreposto pela
variável de ambiente LOCALDOMAIN.
res_init() é executado
normalmente pela primeira chamada a uma das outras funções.
A função
res_query() pesquisa o servidor de nome para o
nome de domínio totalmente qualificado
name do
tipo e da
classe especificada. O que for retornado é deixado no buffer
answer de comprimento
anslen fornecido pelo chamador.
A função
res_search() faz uma pesquisa e espera pela
resposta como
res_query(), mas além disso implementa as regras
padrão e de busca controladas por RES_DEFNAMES e RES_DNSRCH (veja a
descrição das opções
_res abaixo).
A função
res_querydomain() faz uma pesquisa usando
res_query() sobre a conecatenação de
nome e
domínio.
As seguintes funções são rotinas de nível mais
baixo, usadas por
res_query().
A função
res_mkquery() constrói uma mensagem de
pesquisa em
buf de comprimento
buflen para o nome de
domínio
dname. O tipo de pesquisa
op é geralmente
QUERY, mas pode ser qualquer um dos tipos definidos em
<arpa/nameser.h>.
newrr não é usado
correntemente.
A função
res_send() envia uma pesquisa pré-formatada
dada em
msg de comprimento
msglen e retorna a resposta em
answer que tem comprimento
anslen. Ela chamará a
função
res_init(), se ela já não tiver sido
chamada.
A função
dn_comp() comprime o nome de domínio
exp_dn e o armazena no buffer
comp_dn de comprimento
length. A compressão usa uma matriz de ponteiros
dnptrs
para nomes previamente comprimidos na mensagem corrente. O primeiro ponteiro
aponta para o início da mensagem, e a lista termina com NULL. O limite
da matriz é especificada por
lastdnptr. Se
dnptr é
NULL, os nomes de domínio não são comprimidos. Se
lastdnptr é NULL, a lista de títulos não é
atualizada.
A função
dn_expand() expande o nome de domínio
comprimido
comp_dn para um nome de domínio completo, que
é colocado no buffer
exp_dn de tamanho
length. O nome
comprimido está contido em uma pesquisa ou mensagem de resposta, e
msg aponta para o início da mensagem.
As rotinas de resolução usam configurações globais e
informações de estado contidas na estrutura
_res, que
está definida em
<resolv.h>. O único campo que
normalmente é manipulado pelo usuário é
_res.options. Este campo pode conter um 'OU' bit-a-bit das seguintes
opções:
- RES_INIT
- Verdadeiro se res_init() foi chamado.
- RES_DEBUG
- Imprime mensagens de eliminação de erros.
- RES_AAONLY
- Aceita somente respostas autoritativas. res_send() continua
até encontrar uma resposta autoritativas ou retorna um erro.
[Não implementado correntemente].
- RES_USEVC
- Usa conexões TCP para pesquisas em vez de datagramas UDP.
- RES_PRIMARY
- Somente servidor primário de nome de domínio de
pesquisa.
- RES_IGNTC
- Ignora erros de truncamento. Não tenta novamente com TCP.
[Não implementado correntemente].
- RES_RECURSE
- Seta o bit de recursão desejado em pesquisas. A recursão
é realizada pelo servidor de nome de domínio, e não
por res_send(). [Habilitado por padrão].
- RES_DEFNAMES
- Se setado, res_search() acrescentará o nome de
domínio padrão a nomes de componentes simples, isto
é, aqueles que não contêm um ponto. [Habilitado por
padrão].
- RES_STAYOPEN
- Usado com RES_USEVC para manter a conexão TCP aberta entre
pesquisas.
- RES_DNSRCH
- Se setado, res_search() buscará nomes de hosts no
domínio corrente e em domínios pais. Esta
opção é usada por gethostbyname(3).
[Habilitado por padrão].
VALOR DE RETORNO¶
A função
res_init() retorna 0 em caso de sucesso, ou -1 se
ocorrer um erro.
As funções
res_query(),
res_search(),
res_querydomain(),
res_mkquery() e
res_send() retornam o
comprimento da resposta, ou -1 se ocorre um erro.
The
dn_comp() and
dn_expand() functions return the length of the
compressed name, or -1 if an error occurs.
FILES¶
/etc/resolv.conf arquivo de configuração do resolvedor
/etc/host.conf arquivo de configuração do resolvedor
BSD 4.3
VEJA TAMBÉM¶
gethostbyname(3),
hostname(7),
named(8),
resolv+(8)
TRADUZIDO PELO LDP-BR EM dd/MM/AAAA¶
RUBENS DE JESUS NOGUEIRA <darkseid99@usa.net> (tradução)
XXXXXX XX XXXXX XXXXXXXX <xxxxxxxxxx@xxx.xxx> (revisão)