Linux |
CentOS 5.3 |
|
freehostent(3) |
getipnodebyname, getipnodebyaddr, freehostent − Obtenir les adresses réseau et noms d’hôte. |
#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 * igetipnodebyaddr (const void * addr, size_t len, int af, int flags, int * error_num); void freehostent (struct hostent * ip); |
Ces fonctions sont déconseillées. Utilisez getaddrinfo(3) et getnameinfo(2) à leur place. Les fonctions getipnodebyname(3) et getipnodebyaddr(3) 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(3) et getipnodebyaddr(3) 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(3) 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(3) 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_DEFAULT |
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 mons d’une adresse IPv4 affectée à une interface réseau. Cet attribut peut être utilisé seul ou avec AI_V4MAPPED. |
AI_ALL |
Cet attribut est équivalent à (AI_ADDRCONFIG | AI_V4MAPPED). |
Arguments de getipnodebyaddr |
La fonction getipnodebyaddr(3) 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). |
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 reconnait 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(3) ou getipnodebyaddr(3). 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. |
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. |
RFC 2553. |
getaddrinfo(3), getnameinfo(3), inet_ntop(3), inet_pton(3) |
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 14 août 2006. 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. |
freehostent(3) |