oracular (3) res_query.3.gz

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(), 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  ⟨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⟩.