Man page - res_query(3)

Packages contains this manual

Available languages:

en fr ja de

Manual

resolver

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
FICHIERS
ATTRIBUTS
STANDARDS
HISTORIQUE
VOIR AUSSI
TRADUCTION

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 ], int long_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).

Image grohtml-3876747-1.png

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 .