Provided by: manpages-fr-dev_4.27.0-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(), res_nsearch(),       │ Sécurité des threads │ MT-Safe locale │
       │ 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 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.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                        resolver(3)