dwww Home | Manual pages | Find package

resolver(3)                Library Functions Manual                resolver(3)

NOM
       res_ninit,  res_nquery,  res_nsearch,  res_nquerydomain,  res_nmkquery,
       res_nsend, res_nclose, res_init,  res_query,  res_search,  res_querydo-
       main,  res_mkquery,  res_send, dn_comp, dn_expand - Routines de résolu-
       tion 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 in-
       troduit 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 configura-
       tion (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 as-
       socié  à  l'hôte local est utilisé. Cela peut être surchargé par la va-
       riable d'environnement LOCALDOMAIN. res_init() ou res_ninit est  norma-
       lement  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éforma-
       té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 mes-
       sage 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 compres-
       sé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  sui-
       vantes :

       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 im-
              plémentée, dans la glibc jusqu'à la version 2.24 ; elle est  ob-
              solè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 cou-
              rant 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 uti-
              lisé 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 HOSTA-
              LIASES.

       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  avertisse-
              ment ;  les  applications  doivent  utiliser getaddrinfo(3) à la
              place de gesthostbyname(3).

       RES_ROTATE
              Provoquer une sélection en tourniquet (« round-robin ») des ser-
              veurs  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 ca-
              ractère souligné « _ », les caractères non ASCII ou  les  carac-
              tè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 avertisse-
              ment.

       RES_USEBSTRING (de la glibc 2.3.4 à la glibc 2.24)
              Effectuer des recherches inversées sur IPv6 en utilisant le for-
              mat  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 pa-
              rallè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ésolu-
              tion).

       RES_SNGLKUPREOP
              Ouvrir un nouveau socket à chaque requête quand l'option RES_SN-
              GLKUP 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éus-
       sissent 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(),    │ Sécurité des threads │ MT-Safe locale │
       │res_nquery(), res_nsearch(),  │                      │                │
       │res_nquerydomain(),           │                      │                │
       │res_nsend()                   │                      │                │
       ├──────────────────────────────┼──────────────────────┼────────────────┤
       │res_nmkquery(), dn_comp(),    │ Sécurité des threads │ MT-Safe        │
       │dn_expand()                   │                      │                │
       └──────────────────────────────┴──────────────────────┴────────────────┘

STANDARDS
       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 Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.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.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.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⟩.

Pages du manuel de Linux 6.03   5 février 2023                     resolver(3)

Generated by dwww version 1.15 on Sat Jun 29 00:26:38 CEST 2024.