Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

       res_ninit, res_nquery, res_nsearch, res_nquerydomain, res_nmkquery, res_nsend, res_nclose,
       res_init,  res_query,  res_search,  res_querydomain,   res_mkquery,   res_send,   dn_comp,
       dn_expand - Routines de résolution de noms

BIBLIOTHÈQUE

       Bibliothèque resolver (libresolv, -lresolv)

SYNOPSIS

       #include <netinet/in.h>
       #include <arpa/nameser.h>
       #include <resolv.h>

       struct __res_state;
       typedef struct __res_state *res_state;

       int res_ninit(res_state statep);

       void res_nclose(res_state statep);

       int res_nquery(res_state statep,
                  const char *nom_dom, int classe, int type,
                  unsigned char réponse[.long_réponse], int long_réponse);

       int res_nsearch(res_state statep,
                  const char *nom_dom, int classe, int type,
                  unsigned char réponse[.long_réponse], int long_réponse);

       int res_nquerydomain(res_state statep,
                  const char *nom, const char *domaine,
                  int classe, int type, unsigned char réponse[.long_réponse],
                  int long_réponse);

       int res_nmkquery(res_state statep,
                  int op, const char *nom_dom, int classe,
                  int type, const unsigned char données[.|long_données], intlong_données,
                  const unsigned char *newrr,
                  unsigned char tampon[.long_tampon], int long_tampon,

       int res_nsend(res_state statep,
                  const unsigned char msg[.long_msg], int long_msg,
                  unsigned char réponse[.long_réponse], int long_réponse);

       int dn_comp(const char *dom_exp, unsigned char dom_comp[.taille],
                  int taille, unsigned char **dnptrs,
                  unsigned char **lastdnptr);

       int dn_expand(const unsigned char *msg,
                  const unsigned char *eomorig,
                  const unsigned char *dom_comp, char dom_exp[.taille],
                  int taille);

       [[obsolète]] extern struct __res_state _res;

       [[obsolète]] int res_init(void);

       [[obsolète]]
       int res_query(const char *nom_dom, int classe, int type,
                  unsigned char réponse[.long_réponse], int long_réponse);

       [[obsolète]]
       int res_search(const char *nom_dom, int classe, int type,
                  unsigned char réponse[.long_réponse], int long_réponse);

       [[obsolète]]
       int res_querydomain(const char *nom, const char *domaine,
                  int classe, int type, unsigned char réponse[.long_réponse],
                  int long_réponse);

       [[obsolète]]
       int res_mkquery(int op, const char *nom_dom, int classe,
                  int type, const unsigned char données[.long_données], int long_données,
                  const unsigned char *newrr,
                  unsigned char tampon[.long_tampon], int long_tampon);

       [[obsolète]]
       int res_send(const unsigned char msg[.long_msg], int long_msg,
                  unsigned char réponse[.long_msg], int long_réponse);

DESCRIPTION

       Note :  Cette  page  est incomplète (diverses fonctions resolver fournies par la glibc n'y
       sont pas décrites) et probablement plus d'actualité.

       Les fonctions ci-dessous interrogent et interprètent les  réponses  de  serveurs  de  noms
       Internet.

       L'API  consiste  en  un  jeu  de  fonctions réentrantes plus moderne et d'un ancien jeu de
       fonctions non réentrantes qui ont  été  supplantées.  Les  interfaces  traditionnelles  de
       resolver  telles  que  res_init()  et  res_query  utilisent  des états statiques (globaux)
       stockés dans la  structure  _res,  rendant  ces  fonctions  « non-thread-safe ».  BIND 8.2
       introduit  un ensemble de nouvelles interfaces res_ninit(), res_nquery, et ainsi de suite,
       qui prennent un res_state comme premier argument, afin de  pouvoir  utiliser  un  état  de
       résolution par thread.

       Les  fonctions  res_init()  et  res_init  lisent  les fichiers de configuration (consultez
       resolv.conf(5)) pour obtenir le nom de domaine par défaut 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()  ou  res_ninit  est normalement exécutée lors du
       premier appel à l'une des autres fonctions. Tout appel à res_ninit()  nécessite  un  appel
       correspondant  à  res_nclose  pour  libérer la mémoire allouée à res_ninit() et les appels
       suivants à res_nquery().

       Les fonctions res_nquery() et res_query() interrogent le serveur de noms pour  le  nom  de
       domaine  pleinement  qualifié  nom du type indiqué, et de la classe donnée. La réponse est
       placée dans  le  tampon  réponse  de  longueur  long_réponse  qui  doit  être  fourni  par
       l'appelant.

       Les  fonctions  res_nsearch()  et  res_search()  interrogent  un  serveur  et attendent la
       réponse, comme res_nquery() et res_query(),  mais  implémentent  en  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()  ou  res_nquerydomain  interroge  le  serveur  en  appelant
       res_nquery() ou res_query() avec la concaténation de nom et domaine.

       Les  fonctions  suivantes  sont  des  routines  bas  niveau  utilisées par res_nquery() et
       res_query().

       Les fonctions res_mkquery() et  res_nmkquery  construisent  une  requête  dans  tampon  de
       longueur  long_tampon concernant le nom de domaine nom_dom. Le type op de requête est l'un
       des suivants (généralement QUERY) :

       QUERY  Requête standard.

       IQUERY Requête inverse. Cette option a été supprimée dans la glibc 2.26,  car  elle  n'est
              plus prise en charge par les serveurs DNS depuis très longtemps.

       NS_NOTIFY_OP
              Notifier au serveur secondaire le changement de SOA (Start of Authority).

       newrr est actuellement inutilisé.

       Les  fonctions res_nsend() et res_send() envoient une requête préformatée, située dans msg
       de  longueur  long_msg  et  renvoient  la  réponse  dans  réponse  qui  est  de   longueur
       long_réponse. Elles appellent res_ninit() ou res_init(), si ça n'a pas encore été fait.

       La  fonction  dn_comp()  compresse  le  nom de domaine dom_exp et le stocke dans le tampon
       dom_comp de longueur taille. 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é  dom_comp  en  un  nom  de
       domaine  complet  qui  est  ensuite  placé dans le tampon dom_exp de taille taille. 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_state (soit transmis en tant  qu'argument  statep,
       soit  dans la variable globale _res, dans le cas des anciennes fonctions non réentrantes).
       Le seul champ de cette structure habituellement manipulé par l'utilisateur  est  le  champ
       options. Il contient un OU binaire entre les options suivantes :

       RES_INIT
              Vrai si res_init() ou res_ninit() 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 de la glibc, ce  qui  n'est  pas  le  cas  par
              défaut.

       RES_AAONLY (non implémenté ; obsolète depuis la glibc 2.25)
              N'accepter  que  les  réponses  des  serveurs faisant autorité. res_send() continue
              jusqu'à trouver un serveur faisant autorité ou renvoie  une  erreur.  Cette  option
              était  présente, mais non implémentée, dans la glibc jusqu'à la version 2.24 ; elle
              est obsolète depuis  la  glibc 2.25  et  provoque  un  avertissement  si  elle  est
              utilisée.

       RES_USEVC
              Utiliser des connexions TCP pour les interrogations plutôt que des datagrammes UDP.

       RES_PRIMARY (non implémenté ; obsolète depuis la glibc 2.25)
              Interroger  uniquement  le  serveur primaire de noms de domaine. Cette option était
              présente, mais non implémentée, dans la glibc jusqu'à  la  version 2.24 ;mais  elle
              est obsolète depuis la glibc 2.25 et son usage provoque un avertissement.

       RES_IGNTC
              Ignorer les erreurs de troncature. Ne pas réessayer avec TCP.

       RES_RECURSE
              Définir le bit de récursion dans les requêtes. La récursion est prise en charge par
              le serveur de noms du domaine et non par res_send() [activé par défaut].

       RES_DEFNAMES
              S'il est défini, 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  des
              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].

       RES_INSECURE1
              Accepter une réponse d'un mauvais serveur. Cela peut être utilisé pour détecter  de
              potentiels  risques de sécurité, mais vous devez compiler la glibc avec le débogage
              activé et utiliser l'option RES_DEBUG (aux fins de débogage uniquement).

       RES_INSECURE2
              Accepter les réponses contenant une mauvaise requête. Cela peut-être  utilisé  pour
              détecter  des  failles de sécurité, mais vous devez compiler glibc avec le débogage
              activé et utiliser l'option RES_DEBUG (aux fins de débogage uniquement).

       RES_NOALIASES
              Désactiver l'utilisation de la variable d'environnement HOSTALIASES.

       RES_USE_INET6
              Essayer une requête AAAA avant une requête A dans la fonction  gethostbyname(3)  et
              mapper   les  réponses  IPv4  dans  la  « forme  tunnellisée »  de  IPv6  si  aucun
              enregistrement AAAA n'est trouvé alors qu'un enregistrement A existe. Cette  option
              est  obsolète  depuis  la glibc 2.25 et son utilisation provoque un avertissement ;
              les applications doivent utiliser getaddrinfo(3) à la place de gesthostbyname(3).

       RES_ROTATE
              Provoquer une sélection en tourniquet (« round-robin ») des serveurs de noms  parmi
              ceux  qui  sont  listés.  Cela  a  pour  effet de diffuser la requête vers tous les
              serveurs listés et d'éviter ainsi que les clients essaient chaque fois  le  premier
              serveur listé.

       RES_NOCHECKNAME (non implémenté ; obsolète depuis la glibc 2.25)
              Désactiver  la  vérification BIND moderne des noms d'hôtes et de courriers entrants
              pour les caractères incorrects comme le caractère souligné  « _ »,  les  caractères
              non  ASCII  ou  les  caractères de contrôle. Cette option était présente jusqu'à la
              glibc 2.24, mais est obsolète  depuis  la  glibc 2.25  et  son  usage  provoque  un
              avertissement.

       RES_KEEPTSIG (non implémenté ; obsolète dans la glibc 2.25)
              Ne  pas  dépouiller les enregistrements TSIG. Cette option était présente, mais non
              implémentée jusqu'à la glibc 2.24 ; depuis glibc 2.25 cette option est obsolète  et
              son utilisation provoque un avertissement.

       RES_BLAST (non implémenté ; obsolète depuis la glibc 2.25)
              Envoyer  chaque  requête  simultanément et récursivement à tous les serveurs. Cette
              option était présente, mais non implémentée dans la glibc jusqu'à sa version 2.24 ;
              depuis  la  glibc 2.25  cette  option  est  obsolète et son utilisation provoque un
              avertissement.

       RES_USEBSTRING (de la glibc 2.3.4 à la glibc 2.24)
              Effectuer des recherches inversées sur IPv6 en utilisant le format bit-label décrit
              dans  la  RFC  2673 ;  si  cette  option  n'est pas présente (ce qui est le cas par
              défaut), alors le format nibble est utilisé. Cette option a été supprimée  dans  la
              glibc 2.25,  car  elle  faisait  appel  à une extension DNS non rétrocompatible qui
              n'était jamais employée sur Internet.

       RES_NOIP6DOTINT (glibc 2.24 et précédentes)
              Utiliser la zone ip6.arpa dans une recherche inversée IPv6 au lieu de  ip6.int  qui
              est obsolète depuis la glibc 2.3.4. Cette option est présente dans la glibc jusqu'à
              la glibc 2.24 incluse, où elle est activée par défaut. Cette option a été supprimée
              dans la glibc 2.25.

       RES_USE_EDNS0 (depuis la glibc 2.6)
              Activer la prise en charge des extensions DNS (EDNS0) décrites dans la RFC 2671.

       RES_SNGLKUP (depuis la glibc 2.10)
              Par  défaut,  la  glibc réalise des résolutions IPv4 et IPv6 en parallèle depuis la
              glibc 2.9. Certains serveurs d'application DNS ne peuvent pas traiter  correctement
              ces  demandes  et font expirer les requêtes. Cette option désactive ce comportement
              et force la glibc à réaliser les requêtes IPv4 et IPv6 de  façon  séquentielle  (au
              prix d'un certain ralentissement du processus de résolution).

       RES_SNGLKUPREOP
              Ouvrir un nouveau socket à chaque requête quand l'option RES_SNGLKUP est activée.

       RES_USE_DNSSEC
              Utiliser  DNSSEC  avec  un  bit OK dans l'enregistrement OPT. Cette option implique
              RES_USE_ENDS0.

       RES_NOTLDQUERY
              Ne pas rechercher un nom non qualifié comme domaine de  premier  niveau  (top-level
              domain (TLD)).

       RES_DEFAULT
              Option   par   défaut  qui  implique :  RES_RECURSE,  RES_DEFNAMES,  RES_DNSRCH  et
              RES_NOIP6DOTINT.

VALEUR RENVOYÉE

       Les fonctions res_ninit() et res_init() renvoient 0 si elles  réussissent  ou  -1  si  une
       erreur se produit.

       Les  fonctions res_nquery(), res_query(), res_nsearch(), res_search(), res_nquerydomain(),
       res_querydomain(), res_nmkquery(), res_mkquery(), res_nsend() 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.

       Dans  le  cas  d'une  erreur  renvoyée  par  res_nquery(),   res_query(),   res_nsearch(),
       res_search(),  res_nquerydomain()  ou  res_querydomain(), la variable globale h_erno (voir
       gethostbyname(3)) peut être consultée pour déterminer la cause de l'erreur.

FICHIERS

       /etc/resolv.conf
              fichier de configuration de resolver (résolution de noms)

       /etc/host.conf
              fichier de configuration de resolver (résolution de noms)

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌─────────────────────────────────────────────────┬──────────────────────┬────────────────┐
       │InterfaceAttributValeur         │
       ├─────────────────────────────────────────────────┼──────────────────────┼────────────────┤
       │res_ninit(), res_nclose(), res_nquery(),         │ Sécurité des threads │ MT-Safe locale │
       │res_nsearch(), res_nquerydomain(), res_nsend()   │                      │                │
       ├─────────────────────────────────────────────────┼──────────────────────┼────────────────┤
       │res_nmkquery(), dn_comp(), dn_expand()           │ Sécurité des threads │ MT-Safe        │
       └─────────────────────────────────────────────────┴──────────────────────┴────────────────┘

STANDARDS

       Aucun.

HISTORIQUE

       4.3BSD.

VOIR AUSSI

       gethostbyname(3), resolv.conf(5), resolver(5), hostname(7), named(8)

       Le fichier source resolv/README de la bibliothèque GNU C.

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et bubu <bubub@no-log.org>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.