.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" and (C) Copyright 2015 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" 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 "2 mai 2024" "Pages du manuel de Linux 6.9.1" .SH 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 .SH BIBLIOTHÈQUE Bibliothèque resolver (\fIlibresolv\fP, \fI\-lresolv\fP) .SH SYNOPSIS .nf \fB#include \fP \fB#include \fP \fB#include \fP .P \fBstruct __res_state;\fP \fBtypedef struct __res_state *res_state;\fP .P \fBint res_ninit(res_state \fP\fIstatep\fP\fB);\fP .P \fBvoid res_nclose(res_state \fP\fIstatep\fP\fB);\fP .P \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[.\fP\fIlong_réponse\fP\fB], int \fP\fIlong_réponse\fP\fB);\fP .P \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[.\fP\fIlong_réponse\fP\fB], int \fP\fIlong_réponse\fP\fB);\fP .P \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\fIlong_réponse\fP\fB],\fP \fB int \fP\fIlong_réponse\fP\fB);\fP .P \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[.|\fP\fIlong_donné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[.\fP\fIlong_tampon\fP\fB], int \fP\fIlong_tampon\fP\fB,\fP .P \fBint res_nsend(res_state \fP\fIstatep\fP\fB,\fP \fB const unsigned char \fP\fImsg\fP\fB[.\fP\fIlong_msg\fP\fB], int \fP\fIlong_msg\fP\fB,\fP \fB unsigned char \fP\fIréponse\fP\fB[.\fP\fIlong_réponse\fP\fB], int \fP\fIlong_réponse\fP\fB);\fP .P \fBint dn_comp(const char *\fP\fIdom_exp\fP\fB, unsigned char \fP\fIdom_comp\fP\fB[.\fP\fItaille\fP\fB],\fP \fB int \fP\fItaille\fP\fB, unsigned char **\fP\fIdnptrs\fP\fB,\fP \fB unsigned char **\fP\fIlastdnptr\fP\fB);\fP .P \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\fItaille\fP\fB],\fP \fB int \fP\fItaille\fP\fB);\fP .P \fB[[obsolète]] extern struct __res_state _res;\fP .P \fB[[obsolète]] int res_init(void);\fP .P \fB[[obsolète]]\fP \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[.\fP\fIlong_réponse\fP\fB], int \fP\fIlong_réponse\fP\fB);\fP .P \fB[[obsolète]]\fP \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[.\fP\fIlong_réponse\fP\fB], int \fP\fIlong_réponse\fP\fB);\fP .P \fB[[obsolète]]\fP \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\fIlong_réponse\fP\fB],\fP \fB int \fP\fIlong_réponse\fP\fB);\fP .P \fB[[obsolète]]\fP \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[.\fP\fIlong_donné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[.\fP\fIlong_tampon\fP\fB], int \fP\fIlong_tampon\fP\fB);\fP .P \fB[[obsolète]]\fP \fBint res_send(const unsigned char \fP\fImsg\fP\fB[.\fP\fIlong_msg\fP\fB], int \fP\fIlong_msg\fP\fB,\fP \fB unsigned char \fP\fIréponse\fP\fB[.\fP\fIlong_msg\fP\fB], int \fP\fIlong_réponse\fP\fB);\fP .fi .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é. .P Les fonctions ci\-dessous interrogent et interprètent les réponses de serveurs de noms Internet. .P 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. .P 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(). .P 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. .P 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). .P 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. .P Les fonctions suivantes sont des routines bas niveau utilisées par \fBres_nquery\fP() et \fBres_query\fP(). .P 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). .P \fInewrr\fP est actuellement inutilisé. .P 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. .P 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. .P 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. .P 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 S'il est 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 jusqu'à la glibc 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 (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. .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 glibc 2.24 incluse, où elle est activée par défaut. Cette option a été supprimée dans la glibc 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 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). .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. .P 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. .P Les fonctions \fBdn_comp\fP() et \fBdn_expand\fP() renvoient la longueur du nom compressé ou \fB\-1\fP si une erreur se produit. .P 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; lbx lb lb l l l. Interface Attribut Valeur T{ .na .nh \fBres_ninit\fP(), \fBres_nclose\fP(), \fBres_nquery\fP(), \fBres_nsearch\fP(), \fBres_nquerydomain\fP(), \fBres_nsend\fP() T} Sécurité des threads MT\-Safe locale T{ .na .nh \fBres_nmkquery\fP(), \fBdn_comp\fP(), \fBdn_expand\fP() T} Sécurité des threads MT\-Safe .TE .SH STANDARDS Aucun. .SH HISTORIQUE 4.3BSD. .SH "VOIR AUSSI" \fBgethostbyname\fP(3), \fBresolv.conf\fP(5), \fBresolver\fP(5), \fBhostname\fP(7), \fBnamed\fP(8) .P Le fichier source \fIresolv/README\fP de la bibliothèque GNU C. .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 .