Loading

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, char *exp_dn,
              int length);

       Effectuez l’édition des liens avec l’option -lresolv.

       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), resolv.conf(5), resolver(5), hostname(7), named(8)

COLOPHON

       Cette page fait partie de  la  publication  3.23  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

       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, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>   et   l’équipe    francophone    de
       traduction de Debian.

       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> ».