1. NOM▲
resolver, res_init, res_query, res_search, res_querydomain, res_mkquery, res_send, dn_comp, dn_expand - Routines de résolution de noms
2. SYNOPSIS ▲
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>
extern
struct
state _res;
int
res_init
(
void
);
int
res_query
(
const
char
*
dname, int
classe, int
type,
unsigned
char
*
answer, int
anslen);
int
res_search
(
const
char
*
dname, int
classe, int
type,
unsigned
char
*
answer, int
anslen);
int
res_querydomain
(
const
char
*
name, const
char
*
domain,
int
classe, int
type, unsigned
char
*
answer, int
anslen);
int
res_mkquery
(
int
op, const
char
*
dname, int
class,
int
type, char
*
data, int
datalen, struct
rrec *
newrr,
char
*
buf, int
buflen);
int
res_send
(
const
char
*
msg, int
msglen, char
*
answer,
int
anslen);
int
dn_comp
(
unsigned
char
*
exp_dn, unsigned
char
*
comp_dn,
int
length, unsigned
char
**
dnptrs, unsigned
char
**
lastdnptr);
int
dn_expand
(
unsigned
char
*
msg, unsigned
char
*
eomorig,
unsigned
char
*
comp_dn, char
*
exp_dn,
int
length);
Effectuez l'édition des liens avec l'option -lresolv.
3. DESCRIPTION ▲
Ces fonctions interrogent et interprètent les réponses de serveurs de noms Internet.
La fonction res_init() lit les fichiers de configuration (consultez resolv.conf(5)) pour obtenir le nom de domaine par défaut, l'ordre de recherche et l'adresse du ou des serveurs de noms. Si aucun serveur n'est donné, on essaye de contacter l'hôte local. Si aucun domaine n'est donné, on utilise celui associé à l'hôte local. Ceci peut être surchargé par la variable d'environnement LOCALDOMAIN. res_init() est normalement exécutée lors du premier appel à l'une des autres fonctions.
La fonction res_query() interroge le serveur de noms pour le nom de domaine pleinement qualifié name du type spécifié, et de la classe donnée. La réponse est placée dans le tampon answer de longueur anslen qui doit être fourni par l'appelant.
La fonction res_search() interroge un serveur, et attend la réponse, comme res_query(), mais implémente de 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() interroge le serveur en appelant res_query() avec la concaténation de name et domain.
Les fonctions suivantes sont des routines bas niveau utilisées par res_query().
La fonction res_mkquery() construit une requête dans buf de longueur buflen concernant le nom de domaine dname. Le type op de requête est généralement QUERY, mais on peut également utiliser l'un des types définis dans <arpa/nameser.h>. newrr ne sert à rien actuellement.
La fonction res_send() envoie une requête préformatée, située dans msg de longueur msglen et renvoie la réponse dans answer qui est de longueur anslen. Elle appelle res_init(), si ça n'a pas encore été fait.
La fonction dn_comp() compresse le nom de domaine exp_dn et le stocke dans le tampon comp_dn de longueur length. 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é comp_dn en un nom de domaine complet, qui est ensuite placé dans le tampon exp_dn de taille length. 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, définie dans <resolv.h>. Le seul champ habituellement manipulé par l'utilisateur est _res.options. Il contient un OU binaire entre les options suivantes :
- RES_INIT
Vrai si res_init() 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 la gblic, ce qui n'est pas le cas par défaut.
- RES_AAONLY
N'accepter que les réponses des serveurs faisant autorité. res_send() continue jusqu'à trouver un serveur faisant autorité, ou renvoie une erreur. Pas encore implémenté. - RES_USEVC
Utiliser des connexions TCP pour les interrogations plutôt que des datagrammes UDP. - RES_PRIMARY
N'interroger que le serveur de domaines primaire. - RES_IGNTC
Ignorer les erreurs de troncature. Ne pas réessayer avec TCP [pas encore implémenté]. - RES_RECURSE
Définir dans les requêtes le bit de récursion. La récursion est prise en charge par le serveur de noms du domaine, et pas par res_send() [activé par défaut]. - RES_DEFNAMES
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 les 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].
Cette liste n'est pas exhaustive. D'autres attributs sont décrits dans resolv.conf(5).
4. VALEUR RENVOYÉE ▲
La fonction res_init() renvoie 0 si elle réussit, ou -1 si une erreur se produit.
Les fonctions res_query(), res_search(), res_querydomain(), res_mkquery() 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.
5. FICHIERS ▲
/
etc/
resolv.conf Configuration de la résolution de noms.
/
etc/
host.conf Configuration de la résolution de noms.
6. CONFORMITÉ ▲
BSD 4.3.
7. VOIR AUSSI ▲
gethostbyname(3), resolv.conf(5), resolver(5), hostname(7), named(8)
8. COLOPHON ▲
Cette page fait partie de la publication 3.52 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.
9. TRADUCTION ▲
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.
Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Nicolas François et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».