RESOLVER(3)        Manuel du programmeur Linux        RESOLVER(3)


NOM
       resolver,  res_init,  res_query,  res_search, res_querydo­
       main, 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 classe, int t              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);

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+(8))  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  LOCALDO­
       MAIN.  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  buffer  answer  de longueur anslen qui doit être



BSD                      6 Novembre 1996                        1





RESOLVER(3)        Manuel du programmeur Linux        RESOLVER(3)


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

       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 appellera
       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 buffer 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  com­
       pressé  comp_dn  en  un  nom  de  domaine complet, qui est
       ensuite placé dans le buffer 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 configu­
       ration globale et des informations d'etat  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é.





BSD                      6 Novembre 1996                        2





RESOLVER(3)        Manuel du programmeur Linux        RESOLVER(3)


       RES_DEBUG
              Afficher les messages de débugging.

       RES_AAONLY
              N'accepter que les réponses des serveurs autoritat­
              ifs  ([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, par exemple ceux ne contenant pas
              de point.  [Active par defaut].

       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_querydo­
       main(),  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.




BSD                      6 Novembre 1996                        3





RESOLVER(3)        Manuel du programmeur Linux        RESOLVER(3)


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), hostname(7), named(8), resolv+(8)


TRADUCTION
       Christophe Blaess, 1997.












































BSD                      6 Novembre 1996                        4