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 (voir
resolv.conf(5)) pour obtenir le nom de domaine par défaut, l'ordre de
recherche et l'adresse du (des) serveur(s) de noms. Si aucun serveur n'est
donné, on essaye de contacter l'hôte local. Si aucun domaine n'est
donné, on utilise celui associé à l'hôte local. Ceci 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
spécifié, 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 on
peut également utiliser l'un des types définis dans
<arpa/nameser.h>.
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.
- RES_AAONLY
- N'accepter que les réponses des serveurs autoritatifs
(Ndt : « autoritatif » est un barbarisme, voir
« L'administration réseau sous Linux » chapitre
2.6.4 pour une justification de son emploi). res_send() continue
jusqu'à trouver un serveur autoritatif, 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
nom du domaine, et pas par res_send(). [Active 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. [Active 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). [Active 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.44 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> ».