NOM¶
getipnodebyname, getipnodebyaddr, freehostent - Obtenir les adresses réseau
et noms d'hôte
SYNOPSIS¶
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
struct hostent *getipnodebyname(const char *name, int af,
int flags, int *error_num);
struct hostent *getipnodebyaddr(const void *addr, size_t len,
int af, int *error_num);
void freehostent(struct hostent *ip);
DESCRIPTION¶
Ces fonctions sont déconseillées (et ne sont pas disponibles dans la
glibc). Utilisez
getaddrinfo(3) et
getnameinfo(3) à la
place.
Les fonctions
getipnodebyname() et
getipnodebyaddr() renvoient le
nom et l'adresse réseau d'un hôte. Ces fonctions renvoient un
pointeur sur une structure définie comme suit :
struct hostent {
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
};
Ces fonctions remplacent les fonctions
gethostbyname(3) et
gethostbyaddr(3) qui ne pouvaient qu'accéder aux adresses
réseau de la famille IPv4. Les fonctions
getipnodebyname() et
getipnodebyaddr() peuvent fonctionner avec diverses familles d'adresses
réseau.
Contrairement aux fonctions du type
gethostby, ces routines renvoient des
pointeurs sur des zones de mémoires allouées dynamiquement. La
fonction
freehostent() sert à libérer la zone de mémoire
allouée dynamiquement une fois que l'on n'a plus besoin des informations
se trouvant dans la structure
hostent.
Paramètres de getipnodebyname()¶
La fonction
getipnodebyname() recherche l'adresse réseau de
l'hôte indiqué dans son argument
name. Le paramètre
af prend l'une des valeurs suivantes :
- AF_INET
- Le paramètre name représente une adresse
décimale pointée IPv4, ou le nom d'un hôte sur un
réseau IPv4.
- AF_INET6
- Le paramètre name représente une adresse
hexadécimale IPv6, ou le nom d'un hôte sur un réseau
IPv6.
Le paramètre
flags indique des options supplémentaires.
Plusieurs options peuvent être indiquées en les groupant avec un OU
binaire.
flags doit être mis à 0 si aucune option n'est
souhaitée.
- AI_V4MAPPED
- Cet attribut est utilisé avec AF_INET6 pour
demander de rechercher une adresse IPv4 plutôt qu'une IPv6. L'adresse
IPv4 devra toutefois être projetée dans l'espace IPv6.
- AI_ALL
- Cet attribut est utilisé avec AI_V4MAPPED pour
demander une recherche simultanée d'adresses IPv4 et IPv6. Toute
adresse IPv4 trouvée sera projetée dans l'espace IPv6.
- AI_ADDRCONFIG
- Cet attribut est utilisé avec AF_INET6 pour
indiquer que les requêtes ultérieures d'adresses IPv6 n'auront
pas lieu à moins que le système n'ait au moins une adresse IPv6
affectée à une interface réseau. Symétriquement, les
requêtes d'adresses IPv4 n'auront lieu que si le système dispose
au moins d'une adresse IPv4 affectée à une interface
réseau. Cet attribut peut être utilisé seul ou avec
AI_V4MAPPED.
- AI_DEFAULT
- Cet attribut est équivalent à (AI_ADDRCONFIG |
AI_V4MAPPED).
Paramètres de getipnodebyaddr()¶
La fonction
getipnodebyaddr() recherche le nom d'un hôte dont
l'adresse réseau est indiquée par l'argument
addr. Le
paramètre
af prend l'une des valeurs suivantes :
- AF_INET
- Le paramètre addr pointe vers une structure
struct in_addr et len doit valoir sizeof(struct
in_addr).
- AF_INET6
- Le paramètre addr pointe vers une structure
struct in6_addr et len doit valoir sizeof(struct
in6_addr).
VALEUR RENVOYÉE¶
En cas d'erreur, un pointeur NULL est renvoyé, et
error_num
contiendra un code d'erreur parmi les suivants :
- HOST_NOT_FOUND
- Le nom d'hôte ou l'adresse réseau n'ont pas
été trouvés.
- NO_ADDRESS
- Le serveur de noms reconnaît l'adresse réseau ou
le nom, mais n'a pas fourni de réponse. Ceci peut se produire si
l'hôte n'a que des adresses IPv4, et qu'on a demandé uniquement
des informations IPv6, ou l'inverse.
- NO_RECOVERY
- Le serveur de noms a renvoyé une erreur
définitive.
- TRY_AGAIN
- Le serveur de noms a renvoyé une erreur temporaire.
Réessayez plus tard.
Une recherche couronnée de succès renvoie un pointeur sur une
structure
hostent contenant les champs suivants :
- h_name
- Nom officiel de l'hôte.
- h_aliases
- Table de pointeurs vers des alias non officiels du
même hôte. La table est terminée par un pointeur NULL.
- h_addrtype
- Il s'agit d'une copie du paramètre af de
getipnodebyname() ou getipnodebyaddr(). h_addrtype
sera toujours AF_INET si le paramètre af était
AF_INET. h_addrtype sera toujours AF_INET6 si le
paramètre af était AF_INET6.
- h_length
- Ce champ sera défini à sizeof(struct
in_addr) si h_addrtype est AF_INET, et sizeof(struct
in6_addr) si h_addrtype vaut AF_INET6.
- h_addr_list
- Il s'agit d'une table de pointeurs vers les structures
d'adresse de l'hôte. La table est terminée par un pointeur
NULL.
RFC 2553
NOTES¶
Ces fonctions étaient présentes dans la glibc 2.1.91-95, mais en ont
été retirées. Plusieurs systèmes de type UNIX les
supportent, mais tous les considèrent comme déconseillées.
VOIR AUSSI¶
getaddrinfo(3),
getnameinfo(3),
inet_ntop(3),
inet_pton(3)
COLOPHON¶
Cette page fait partie de la publication 3.44 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/>.
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). Florentin Duneau et
l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».