GETIPNODEBYNAME
Section : Manuel du programmeur Linux (
3)
Mise à jour de la version anglaise : 15 novembre 2007
Index
Menu principal
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)
à leur 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.
Arguments de getipnodebyname
La fonction
getipnodebyname()
recherche l'adresse
réseau de l'hôte indiqué
dans son
argument
name.
L'argument
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.
L'argument
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).
Arguments de getipnodebyaddr
La fonction
getipnodebyaddr()
recherche le nom d'un hôte dont
l'adresse réseau
est indiquée
par
l'argument
addr.
L'argument
af
prend l'une des valeurs suivantes :
- AF_INET
-
L'argument
addr
pointe vers une structure
struct in_addr
et
len
doit valoir
sizeof(struct in_addr).
- AF_INET6
-
L'argument
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 de l'argument
af
de
getipnodebyname()
ou
getipnodebyaddr().
h_addrtype
sera toujours
AF_INET
si l'argument
af
était
AF_INET.
h_addrtype
sera toujours
AF_INET6
si l'argument
af
était
AF_INET6.
- h_length
-
Ce champ contiendra la longueur
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)
TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess
<http://www.blaess.fr/christophe/> le 31 août 2000
et révisée le 17 juillet 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité. La version anglaise la plus à jour de ce document est
toujours consultable via la commande : « LANG=C man 3 getipnodebyname ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- Arguments de getipnodebyname
-
- Arguments de getipnodebyaddr
-
- VALEUR RENVOYÉE
-
- CONFORMITÉ
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 17 juillet 2008