Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]
RESOLVER
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- FICHIERS
- CONFORMITÉ
- VOIR AUSSI
- TRADUCTION
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 anslen);
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);
Ajouter -lresolv à l'édition des liens.
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
-
Fixer 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].
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.
CONFORMITÉ
BSD 4.3
VOIR AUSSI
gethostbyname(3), resolver(5), hostname(7),
named(8)
TRADUCTION
Cette page de manuel a été traduite et mise à jour par
Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003,
puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».
|