.\" -*- coding: UTF-8 -*- .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" and (C) Copyright 2015 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" Modified 1993-07-25 by Rik Faith (faith@cs.unc.edu) .\" Modified 2004-10-31 by aeb .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH RESOLVER 3 "21 décembre 2020" GNU "Manuel du programmeur Linux" .SH NOM res_ninit, res_nclose, res_nquery, res_nsearch, res_nquerydomain, res_nmkquery, res_nsend, res_init, res_query, res_search, res_querydomain, res_mkquery, res_send, dn_comp, dn_expand \-\ Routines de résolution de noms .SH SYNOPSIS .nf \fB#include \fP \fB#include \fP \fB#include \fP .PP \fBstruct __res_state;\fP \fBtypedef struct __res_state *res_state;\fP .PP \fBint res_ninit(res_state \fP\fIstatep\fP\fB);\fP .PP \fBvoid res_nclose(res_state \fP\fIstatep\fP\fB);\fP .PP \fBint res_nquery(res_state \fP\fIstatep\fP\fB,\fP \fB const char *\fP\fInom_dom\fP\fB, int \fP\fIclasse\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char *\fP\fIréponse\fP\fB, int \fP\fIlong_réponse\fP\fB);\fP .PP \fBint res_nsearch(res_state \fP\fIstatep\fP\fB,\fP \fB const char *\fP\fInom_dom\fP\fB, int \fP\fIclasse\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char *\fP\fIréponse\fP\fB, int \fP\fIlong_réponse\fP\fB);\fP .PP \fBint res_nquerydomain(res_state \fP\fIstatep\fP\fB,\fP \fB const char *\fP\fInom\fP\fB, const char *\fP\fIdomaine\fP\fB,\fP \fB int \fP\fIclasse\fP\fB, int \fP\fItype\fP\fB, unsigned char *\fP\fIréponse\fP\fB,\fP \fB int \fP\fIlong_réponse\fP\fB);\fP .PP \fBint res_nmkquery(res_state \fP\fIstatep\fP\fB,\fP \fB int \fP\fIop\fP\fB, const char *\fP\fInom_dom\fP\fB, int \fP\fIclasse\fP\fB,\fP \fB int \fP\fItype\fP\fB, const unsigned char *\fP\fIdonnées\fP\fB, int \fP\fIlong_données\fP\fB,\fP \fB const unsigned char *\fP\fInewrr\fP\fB,\fP \fB unsigned char *\fP\fItampon\fP\fB, int \fP\fIlong_tampon\fP\fB);\fP .PP \fBint res_nsend(res_state \fP\fIstatep\fP\fB,\fP \fB const unsigned char *\fP\fImsg\fP\fB, int \fP\fIlong_msg\fP\fB,\fP \fB unsigned char *\fP\fIréponse\fP\fB, int \fP\fIlong_réponse\fP\fB);\fP .PP \fBint dn_comp(const char *\fP\fIdom_exp\fP\fB, unsigned char *\fP\fIdom_comp\fP\fB,\fP \fB int \fP\fItaille\fP\fB, unsigned char **\fP\fIdnptrs\fP\fB,\fP \fB unsigned char **\fP\fIlastdnptr\fP\fB);\fP .PP \fBint dn_expand(const unsigned char *\fP\fImsg\fP\fB,\fP \fB const unsigned char *\fP\fIeomorig\fP\fB,\fP \fB const unsigned char *\fP\fIdom_comp\fP\fB, char *\fP\fIdom_exp\fP\fB,\fP \fB int \fP\fItaille\fP\fB);\fP .fi .\" .SS Obsolète .nf \fBextern struct __res_state _res;\fP .PP \fBint res_init(void);\fP .PP \fBint res_query(const char *\fP\fInom_dom\fP\fB, int \fP\fIclasse\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char *\fP\fIréponse\fP\fB, int \fP\fIlong_réponse\fP\fB);\fP .PP \fBint res_search(const char *\fP\fInom_dom\fP\fB, int \fP\fIclasse\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char *\fP\fIréponse\fP\fB, int \fP\fIlong_réponse\fP\fB);\fP .PP \fBint res_querydomain(const char *\fP\fInom\fP\fB, const char *\fP\fIdomaine\fP\fB,\fP \fB int \fP\fIclasse\fP\fB, int \fP\fItype\fP\fB, unsigned char *\fP\fIréponse\fP\fB,\fP \fB int \fP\fIlong_réponse\fP\fB);\fP .PP \fBint res_mkquery(int \fP\fIop\fP\fB, const char *\fP\fInom_dom\fP\fB, int \fP\fIclasse\fP\fB,\fP \fB int \fP\fItype\fP\fB, const unsigned char *\fP\fIdonnées\fP\fB, int \fP\fIlong_données\fP\fB,\fP \fB const unsigned char *\fP\fInewrr\fP\fB,\fP \fB unsigned char *\fP\fItampon\fP\fB, int \fP\fIlong_tampon\fP\fB);\fP .PP \fBint res_send(const unsigned char *\fP\fImsg\fP\fB, int \fP\fIlong_msg\fP\fB,\fP \fB unsigned char *\fP\fIréponse\fP\fB, int \fP\fIlong_réponse\fP\fB);\fP .fi .PP Effectuez l'édition des liens avec l'option \fI\-lresolv\fP. .SH DESCRIPTION \fBNote\ :\fP Cette page est incomplète (diverses fonctions resolver fournies par la glibc n'y sont pas décrites) et probablement plus d'actualité. .PP Les fonctions ci\-dessous interrogent et interprètent les réponses de serveurs de noms Internet. .PP 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 \fBres_init\fP() et \fBres_query\fP utilisent des états statiques (globaux) stockés dans la structure \fB_res\fP, rendant ces fonctions «\ non\-thread\-safe\ ». BIND\ 8.2 introduit un ensemble de nouvelles interfaces \fBres_ninit\fP(), \fBres_nquery\fP, et ainsi de suite, qui prennent un \fIres_state\fP comme premier argument, afin de pouvoir utiliser un état de résolution par thread. .PP Les fonctions \fBres_init\fP() et \fBres_init\fP lisent les fichiers de configuration (consultez \fBresolv.conf\fP(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 \fBLOCALDOMAIN\fP. \fBres_init\fP() ou \fBres_ninit\fP est normalement exécutée lors du premier appel à l'une des autres fonctions. Tout appel à \fBres_ninit\fP() nécessite un appel correspondant à \fBres_nclose\fP pour libérer la mémoire allouée à \fBres_ninit\fP() et les appels suivants à \fBres_nquery\fP(). .PP Les fonctions \fBres_nquery\fP() et \fBres_query\fP() interrogent le serveur de noms pour le nom de domaine pleinement qualifié \fInom\fP du \fItype\fP indiqué, et de la \fIclasse\fP donnée. La réponse est placée dans le tampon \fIréponse\fP de longueur \fIlong_réponse\fP qui doit être fourni par l'appelant. .PP Les fonctions \fBres_nsearch\fP() et \fBres_search\fP() interrogent un serveur et attendent la réponse, comme \fBres_nquery\fP() et \fBres_query\fP(), mais implémentent en plus les règles de recherche et de valeurs par défaut contrôlées par \fBRES_DEFNAMES\fP et \fBRES_DNSRCH\fP (voir les options de \fI_res\fP plus bas). .PP La fonction \fBres_querydomain\fP() ou \fBres_nquerydomain\fP interroge le serveur en appelant \fBres_nquery\fP() ou \fBres_query\fP() avec la concaténation de \fInom\fP et \fIdomaine\fP. .PP Les fonctions suivantes sont des routines bas niveau utilisées par \fBres_nquery\fP() et \fBres_query\fP(). .PP Les fonctions \fBres_mkquery\fP() et \fBres_nmkquery\fP construisent une requête dans \fItampon\fP de longueur \fIlong_tampon\fP concernant le nom de domaine \fInom_dom\fP. Le type \fIop\fP de requête est l'un des suivants (généralement \fBQUERY\fP)\ : .TP \fBQUERY\fP Requête standard. .TP \fBIQUERY\fP .\" commit e4e794841e3140875f2aa86b90e2ada3d61e1244 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. .TP \fBNS_NOTIFY_OP\fP Notifier au serveur secondaire le changement de SOA (Start of Authority). .PP \fInewrr\fP est actuellement inutilisé. .PP Les fonctions \fBres_nsend\fP() et \fBres_send\fP() envoient une requête préformatée, située dans \fImsg\fP de longueur \fIlong_msg\fP et renvoient la réponse dans \fIréponse\fP qui est de longueur \fIlong_réponse\fP. Elles appellent \fBres_ninit\fP() ou \fBres_init\fP(), si ça n'a pas encore été fait. .PP La fonction \fBdn_comp\fP() compresse le nom de domaine \fIdom_exp\fP et le stocke dans le tampon \fIdom_comp\fP de longueur \fItaille\fP. La compression utilise une table de pointeurs \fIdnptrs\fP 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 \fIlastdnptr\fP. Si \fIdnptr\fP est NULL, les noms de domaines ne sont pas compressés. Si \fIlastdnptr\fP est NULL, la liste d'étiquettes n'est pas mise à jour. .PP La fonction \fBdn_expand\fP() développe le nom de domaine compressé \fIdom_comp\fP en un nom de domaine complet qui est ensuite placé dans le tampon \fIdom_exp\fP de taille \fItaille\fP. Le nom compressé est contenu dans une requête ou dans un message de réponse, et \fImsg\fP pointe sur le début du message. .PP Les routines de résolution de noms utilisent une configuration globale et des informations d'état contenues dans la structure \fI_res_state\fP (soit transmis en tant qu'argument \fIstatep\fP, soit dans la variable globale \fI_res\fP, dans le cas des anciennes fonctions non réentrantes). Le seul champ de cette structure habituellement manipulé par l'utilisateur est le champ \fIoptions\fP. Il contient un \fIOU binaire\fP entre les options suivantes\ : .TP \fBRES_INIT\fP Vrai si \fBres_init\fP() ou \fBres_ninit\fP() a été appelée. .TP \fBRES_DEBUG\fP .\" See resolv/README. .\" Support for RES_DEBUG was made conditional in glibc 2.2. 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. .TP \fBRES_AAONLY\fP (non implémenté\ ; obsolète depuis la glibc 2.25) N'accepter que les réponses des serveurs faisant autorité. \fBres_send\fP() 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. .TP \fBRES_USEVC\fP Utiliser des connexions TCP pour les interrogations plutôt que des datagrammes UDP. .TP \fBRES_PRIMARY\fP (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. .TP \fBRES_IGNTC\fP Ignorer les erreurs de troncature. Ne pas réessayer avec TCP. .TP \fBRES_RECURSE\fP 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 \fBres_send\fP() [activé par défaut]. .TP \fBRES_DEFNAMES\fP Si défini, \fBres_search\fP() ajoutera le nom de domaine par défaut aux noms simples, c'est\-à\-dire ceux ne contenant pas de point [activé par défaut]. .TP \fBRES_STAYOPEN\fP Utilisée avec \fBRES_USEVC\fP pour garder ouverte une connexion TCP entre des interrogations successives. .TP \fBRES_DNSRCH\fP \fBres_search\fP() recherchera les noms d'hôtes dans le domaine courant et dans les domaines parents. Cette option est utilisée par \fBgethostbyname\fP(3) [activé par défaut]. .TP \fBRES_INSECURE1\fP 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 \fBRES_DEBUG\fP (aux fins de débogage uniquement). .TP \fBRES_INSECURE2\fP 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 \fBRES_DEBUG\fP (aux fins de débogage uniquement). .TP \fBRES_NOALIASES\fP Désactiver l'utilisation de la variable d'environnement \fBHOSTALIASES\fP. .TP \fBRES_USE_INET6\fP Essayer une requête AAAA avant une requête\ A dans la fonction \fBgethostbyname\fP(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 \fBgetaddrinfo\fP(3) à la place de \fBgesthostbyname\fP(3). .TP \fBRES_ROTATE\fP 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é. .TP \fBRES_NOCHECKNAME\fP (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. .TP \fBRES_KEEPTSIG\fP (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, dans la glibc jusqu'à la version\ 2.24\ ; depuis glibc\ 2.25 cette option est obsolète et son utilisation provoque un avertissement. .TP \fBRES_BLAST\fP (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. .TP \fBRES_USEBSTRING\fP (versions de la glibc\ 2.3.4\ à\ 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. .TP \fBRES_NOIP6DOTINT\fP (glibc\ 2.24 et précédentes) Utiliser la zone \fIip6.arpa\fP dans une recherche inversée IPv6 au lieu de \fIip6.int\fP qui est obsolète depuis la glibc\ 2.3.4. Cette option est présente dans la glibc jusqu'à la version\ 2.24 incluse, où elle est activée par défaut. Cette option a été supprimée dans la glibc version\ 2.25. .TP \fBRES_USE_EDNS0\fP (depuis la glibc 2.6) Activer la prise en charge des extensions DNS (EDNS0) décrites dans la RFC\ 2671. .TP \fBRES_SNGLKUP\fP (depuis la glibc 2.10) Par défaut, la glibc réalise des résolutions IPv4 et IPv6 en parallèle depuis la version\ 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). .TP \fBRES_SNGLKUPREOP\fP Ouvrir un nouveau socket à chaque requête quand l'option \fBRES_SNGLKUP\fP est activée. .TP \fBRES_USE_DNSSEC\fP Utiliser DNSSEC avec un bit OK dans l'enregistrement OPT. Cette option implique \fBRES_USE_ENDS0\fP. .TP \fBRES_NOTLDQUERY\fP Ne pas rechercher un nom non qualifié comme domaine de premier niveau (top\-level domain (TLD)). .TP \fBRES_DEFAULT\fP .\" Option par défaut qui implique\ : \fBRES_RECURSE\fP, \fBRES_DEFNAMES\fP, \fBRES_DNSRCH\fP et \fBRES_NOIP6DOTINT\fP. .SH "VALEUR RENVOYÉE" Les fonctions \fBres_ninit\fP() et \fBres_init\fP() renvoient \fB0\fP si elles réussissent ou \fB\-1\fP si une erreur se produit. .PP Les fonctions \fBres_nquery\fP(), \fBres_query\fP(), \fBres_nsearch\fP(), \fBres_search\fP(), \fBres_nquerydomain\fP(), \fBres_querydomain\fP(), \fBres_nmkquery\fP(), \fBres_mkquery\fP(), \fBres_nsend\fP() et \fBres_send\fP() renvoient la longueur de la réponse ou \fB\-1\fP si une erreur se produit. .PP Les fonctions \fBdn_comp\fP() et \fBdn_expand\fP() renvoient la longueur du nom compressé ou \fB\-1\fP si une erreur se produit. .PP Dans le cas d'une erreur renvoyée par \fBres_nquery\fP(), \fBres_query\fP(), \fBres_nsearch\fP(), \fBres_search\fP(), \fBres_nquerydomain\fP() ou \fBres_querydomain\fP(), la variable globale \fIh_erno\fP (voir \fBgethostbyname\fP(3)) peut être consultée pour déterminer la cause de l'erreur. .SH FICHIERS .TP \fI/etc/resolv.conf\fP fichier de configuration de resolver (résolution de noms) .TP \fI/etc/host.conf\fP fichier de configuration de resolver (résolution de noms) .SH ATTRIBUTS Pour une explication des termes utilisés dans cette section, consulter \fBattributes\fP(7). .TS allbox; lbw34 lb lb l l l. Interface Attribut Valeur T{ \fBres_ninit\fP(), \fBres_nclose\fP(), \fBres_nquery\fP(), .br \fBres_nsearch\fP(), \fBres_nquerydomain\fP(), \fBres_nsend\fP() T} Sécurité des threads MT\-Safe locale T{ \fBres_nmkquery\fP(), \fBdn_comp\fP(), .br \fBdn_expand\fP() T} Sécurité des threads MT\-Safe .TE .sp 1 .SH CONFORMITÉ 4.3BSD. .SH "VOIR AUSSI" \fBgethostbyname\fP(3), \fBresolv.conf\fP(5), \fBresolver\fP(5), \fBhostname\fP(7), \fBnamed\fP(8) .PP Le fichier source \fIresolv/README\fP de la bibliothèque GNU\ C. .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man\-pages/. .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et bubu . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .