NOM¶
resolver, res_init, res_query, res_search, res_querydomain, res_mkquery,
res_send, dn_comp, dn_expand - Routines de résolution de noms
SYNOPSIS¶
#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 classe, int type,
unsigned char *answer, int anslen);
int res_search(const char *dname, int classe, int type,
unsigned char *answer, int anslen);
int res_querydomain(const char *name, const char *domain,
int classe, 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 **lastdnptr);
int dn_expand(unsigned char *msg, unsigned char *eomorig,
unsigned char *comp_dn, char *exp_dn,
int length);
Effectuez l'édition des liens avec l'option
-lresolv.
DESCRIPTION¶
Ces fonctions interrogent et interprètent les réponses de serveurs
de noms Internet.
La fonction
res_init() lit les fichiers de configuration (consultez
resolv.conf(5)) pour obtenir le nom de domaine par défaut,
l'ordre de recherche et l'adresse du ou des serveurs de noms. Si aucun serveur
n'est donné, l'hôte local est essayé. Si aucun domaine
n'est donné, celui associé à l'hôte local est
utilisé. Cela peut être surchargé par la variable
d'environnement
LOCALDOMAIN.
res_init() est normalement
exécutée lors du premier appel à l'une des autres
fonctions.
La fonction
res_query() interroge le serveur de noms pour le nom de
domaine pleinement qualifié
name du
type indiqué,
et de la
classe donnée. La réponse est placée dans
le tampon
answer de longueur
anslen qui doit être fourni
par l'appelant.
La fonction
res_search() interroge un serveur, et attend la
réponse, comme
res_query(), mais implémente de plus les
règles de recherche et de valeurs par défaut
contrôlées par
RES_DEFNAMES et
RES_DNSRCH (voir
les options de
_res plus bas).
La fonction
res_querydomain() interroge le serveur en appelant
res_query() avec la concaténation de
name et
domain.
Les fonctions suivantes sont des routines bas niveau utilisées par
res_query().
La fonction
res_mkquery() construit une requête dans
buf de
longueur
buflen concernant le nom de domaine
dname. Le type
op de requête est généralement
QUERY, mais
l'un des types définis dans
<arpa/nameser.h> peut
également être utilisé.
newrr ne sert à
rien actuellement.
La fonction
res_send() envoie une requête
préformatée, située dans
msg de longueur
msglen et renvoie la réponse dans
answer qui est de
longueur
anslen. Elle appelle
res_init(), si ça n'a pas
encore été fait.
La fonction
dn_comp() compresse le nom de domaine
exp_dn et le
stocke dans le tampon
comp_dn de longueur
length. La compression
utilise une table de pointeurs
dnptrs vers les noms
précédemment compressés du message en cours. Le premier
pointeur vise le début du message, et la table se termine par NULL. La
limite de la table est indiquée par
lastdnptr. Si
dnptr
est NULL, les noms de domaines ne sont pas compressés. Si
lastdnptr est NULL, la liste d'étiquettes n'est pas mise
à jour.
La fonction
dn_expand() développe le nom de domaine
compressé
comp_dn en un nom de domaine complet, qui est ensuite
placé dans le tampon
exp_dn de taille
length. Le nom
compressé est contenu dans une requête, ou dans un message de
réponse, et
msg pointe sur le début du message.
Les routines de résolution de noms utilisent une configuration globale et
des informations d'état contenues dans la structure
_res,
définie dans
<resolv.h>. Le seul champ habituellement
manipulé par l'utilisateur est
_res.options. Il contient un
OU binaire entre les options suivantes :
- RES_INIT
- Vrai si res_init() a été appelée.
- RES_DEBUG
- Afficher les messages de débogage. Cette option n'est disponible
que si le débogage a été activé lors de la
construction la gblic, ce qui n'est pas le cas par défaut.
- RES_AAONLY
- N'accepter que les réponses des serveurs faisant autorité.
res_send() continue jusqu'à trouver un serveur faisant
autorité, ou renvoie une erreur. Pas encore
implémenté.
- RES_USEVC
- Utiliser des connexions TCP pour les interrogations plutôt que des
datagrammes UDP.
- RES_PRIMARY
- N'interroger que le serveur de domaines primaire.
- RES_IGNTC
- Ignorer les erreurs de troncature. Ne pas réessayer avec TCP [pas
encore implémenté].
- RES_RECURSE
- Définir dans les requêtes le bit de récursion. La
récursion est prise en charge par le serveur de noms du domaine, et
pas par res_send() [activé par défaut].
- RES_DEFNAMES
- res_search() ajoutera le nom de domaine par défaut aux noms
simples, c'est-à-dire ceux ne contenant pas de point [activé
par défaut].
- RES_STAYOPEN
- Utilisée avec RES_USEVC pour garder ouverte une connexion
TCP entre les interrogations successives.
- RES_DNSRCH
- res_search() recherchera les noms d'hôtes dans le domaine
courant, et dans les domaines parents. Cette option est utilisée
par gethostbyname(3) [activé par défaut].
Cette liste n'est pas exhaustive. D'autres attributs sont décrits dans
resolv.conf(5).
VALEUR RENVOYÉE¶
La fonction
res_init() renvoie 0 si elle réussit, ou -1 si une
erreur se produit.
Les fonctions
res_query(),
res_search(),
res_querydomain(),
res_mkquery() et
res_send() renvoient la longueur de la
réponse, ou -1 si une erreur se produit.
Les fonctions
dn_comp() et
dn_expand() renvoient la longueur du
nom compressé, ou -1 si une erreur se produit.
FICHIERS¶
/etc/resolv.conf Configuration de la résolution de noms.
/etc/host.conf Configuration de la résolution de noms.
BSD 4.3.
VOIR AUSSI¶
gethostbyname(3),
resolv.conf(5),
resolver(5),
hostname(7),
named(8)
COLOPHON¶
Cette page fait partie de la publication 3.65 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Nicolas François
et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce
document en utilisant la commande «
man -L C
<section>
<page_de_man> ».