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);
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 regroupant par un OU binaire.
flags doit être mis à 0 si aucune option n’est désiré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 adresse 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.
CONFORMITÉ
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.23 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
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
francophone de traduction de Debian.
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> ».