Man page - inet(3)

Packages contains this manual

Available languages:

en fr ja ru

Manual

inet

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
ATTRIBUTS
STANDARDS
STANDARDS
NOTES
EXEMPLES
Source du programme
VOIR AUSSI
TRADUCTION

NOM

inet_aton, inet_addr, inet_network, inet_ntoa, inet_makeaddr, inet_lnaof, inet_netof - Routines de manipulation d’adresses Internet

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int inet_aton(const char * cp , struct in_addr * inp );

in_addr_t inet_addr(const char * cp );
in_addr_t inet_network(const char *
cp );

[[deprecated]] char *inet_ntoa(struct in_addr in );

[[obsolĂšte]] struct in_addr inet_makeaddr(in_addr_t net ,
in_addr_t
host );

[[obsolĂšte]] in_addr_t inet_lnaof(struct in_addr in );
[[obsolĂšte]] in_addr_t inet_netof(struct in_addr
in );

Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros (7)) :

inet_aton (), inet_ntoa () :
Depuis la glibc 2.19 :
_DEFAULT_SOURCE
Dans les glibc antérieures et égale à 2.19 :
_BSD_SOURCE || _BSD_SOURCE

DESCRIPTION

inet_aton () convertit l’adresse Internet de l’hĂŽte cp depuis la notation IPv4 avec nombres et points vers une forme binaire (dans l’ordre d’octet du rĂ©seau), et la stocke dans la structure pointĂ©e par inp . inet_aton () renvoie une valeur non nulle si l’adresse est valable, et zĂ©ro sinon. L’adresse fournie Ă  cp peut avoir l’une des formes suivantes :

a.b.c.d

Chacune des quatre parties numĂ©riques reprĂ©sente un octet de l’adresse ; ces octets sont assignĂ©s de gauche Ă  droite pour produire l’adresse binaire.

a.b.c

Les parties a et b reprĂ©sentent les deux premiers octets de l’adresse binaire. La partie c est interprĂ©tĂ©e comme une valeur 16 bits dĂ©finissant les deux octets les plus Ă  droite de l’adresse binaire. Cette notation est pertinente pour indiquer (dĂ©modĂ©) des adresses de rĂ©seaux de classe B.

a.b

La partie a reprĂ©sente le premier octet de l’adresse binaire. La partie b est interprĂ©tĂ©e comme une valeur 24 bits dĂ©finissant les trois octets les plus Ă  droite de l’adresse binaire. Cette notation est pertinente pour indiquer (dĂ©modĂ©) des adresses de rĂ©seaux de classe A.

a

La valeur a est interprĂ©tĂ©e comme une valeur 32 bits directement enregistrĂ©e dans l’adresse binaire, sans aucun rĂ©ajustement d’octet.

Dans toutes les formes prĂ©cĂ©dentes, les Ă©lĂ©ments d’une adresse en notation pointĂ©e peuvent ĂȘtre indiquĂ©s sous forme dĂ©cimale, octale (avec un 0 devant) ou hexadĂ©cimale (avec un 0X devant). La terminologie des adresses sous ces formes est appelĂ©e notation numĂ©rique pointĂ©e IPv4 . La forme qui utilise exactement quatre nombres dĂ©cimaux est appelĂ©e notation dĂ©cimale pointĂ©e IPV4 (ou quelques fois : notation quadruplĂ©e pointĂ©e IPv4 ).

inet_aton () renvoie 1 si la chaĂźne fournie a Ă©tĂ© interprĂ©tĂ©e correctement ou 0 si la chaĂźne n’est pas valable ( errno n’est pas dĂ©fini en cas d’erreur).

La fonction inet_addr () convertit l’adresse Internet de l’hĂŽte cp depuis la notation IPv4 avec nombres et points en une donnĂ©e binaire dans l’ordre des octets du rĂ©seau. Si l’adresse est incorrecte, INADDR_NONE (gĂ©nĂ©ralement -1) est renvoyĂ©. L’utilisation de cette fonction pose problĂšme car -1 est une adresse valable (255.255.255.255). Évitez-la au profit de inet_aton (), inet_pton (3) ou getaddrinfo (3), qui fournissent un renvoi d’erreur plus propre.

La fonction inet_network () convertit cp , une chaĂźne en notation numĂ©rique pointĂ©e IPv4, en un nombre dans l’ordre des octets de l’hĂŽte qui pourra ĂȘtre utilisĂ© comme adresse de rĂ©seau Internet. Si elle rĂ©ussit, cette fonction renvoie l’adresse convertie. Si l’adresse n’est pas valable, -1 est renvoyĂ©.

La fonction inet_ntoa () convertit l’adresse Internet de l’hĂŽte in donnĂ©e dans l’ordre des octets du rĂ©seau en une chaĂźne de caractĂšres dans la notation numĂ©rique pointĂ©e. La chaĂźne est renvoyĂ©e dans un tampon allouĂ© statiquement, qui est donc Ă©crasĂ© Ă  chaque appel.

La fonction inet_lnaof () renvoie la partie correspondant Ă  l’adresse du rĂ©seau local d’une adresse Internet in . La valeur est renvoyĂ©e dans l’ordre des octets de l’hĂŽte.

La fonction inet_netof () renvoie la partie adresse rĂ©seau extraite d’une adresse Internet in . La valeur est renvoyĂ©e dans l’ordre des octets de l’hĂŽte.

La fonction inet_makeaddr () est la rĂ©ciproque des fonctions inet_netof () et inet_lnaof (). Elle renvoie une adresse d’hĂŽte Internet dans l’ordre des octets du rĂ©seau, en combinant le numĂ©ro du rĂ©seau net et l’adresse locale host , chacun d’eux Ă©tant donnĂ© dans l’ordre des octets de l’hĂŽte.

La structure in_addr utilisée dans inet_ntoa (), inet_makeaddr (), inet_lnaof () et inet_netof () est définie ainsi dans <netinet/in.h> :

typedef uint32_t in_addr_t;
struct in_addr {
in_addr_t s_addr;
};

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3887691-1.png

STANDARDS

inet_addr ()
inet_ntoa
()

POSIX.1-2008.

inet_aton ()

Aucune.

STANDARDS

inet_addr ()
inet_ntoa
()

POSIX.1-2001, 4.3BSD.

inet_lnaof (), inet_netof () et inet_makeaddr () sont des fonctions hĂ©ritĂ©es qui supposent qu’elles traitent des adresses de classes canoniques . Les sous-rĂ©seaux de classes canoniques divisent la partie rĂ©seau et la partie hĂŽte des adresses IPv4 sur des limites d’octets comme suit :

Classe A

Ce type d’adresse est indiquĂ© par la valeur 0 du bit de poids fort (dans l’ordre des octets du rĂ©seau) de l’adresse. L’adresse du rĂ©seau est contenue dans l’octet de poids fort et l’adresse de l’hĂŽte dans les trois octets restants.

Classe B

Ce type d’adresse est indiquĂ© par la valeur binaire 10 dans les deux bits de poids fort de l’adresse. L’adresse du rĂ©seau est contenue dans les deux octets de poids fort et l’adresse de l’hĂŽte dans les deux octets restants.

Classe C

Ce type d’adresse est indiquĂ© par la valeur binaire 110 dans les trois bits de poids fort de l’adresse. L’adresse du rĂ©seau est contenue dans les trois octets de poids fort et l’adresse de l’hĂŽte dans l’octet restant.

La classification des adresses rĂ©seaux est aujourd’hui obsolĂšte, supplantĂ©e par le « Classless Inter-Domain Routing (CIDR) », qui scinde les adresses en Ă©lĂ©ments rĂ©seau et hĂŽte sur une frontiĂšre arbitraire en bit (plutĂŽt qu’en octet).

NOTES

L’ordre des octets des machines i386 est « LSB » (poids faible en premier, « little endian »), alors que l’ordre des octets sur internet est « MSB » (poids fort en premier ou « big endian »).

EXEMPLES

Ci-dessous, un exemple de l’utilisation de inet_aton () et de inet_ntoa (). Voici des exemples d’exĂ©cution :

$ ./a.out 226.000.000.037 # Last byte is in octal
226.0.0.31
$ ./a.out 0x7f.1 # First byte is in hex
127.0.0.1

Source du programme

#define _DEFAULT_SOURCE
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char *argv[])
{
struct in_addr addr;
if (argc != 2) {
fprintf(stderr, "%s <dotted-address>\n", argv[0]);
exit(EXIT_FAILURE);
}
if (inet_aton(argv[1], &addr) == 0) {
fprintf(stderr, "Adresse non valable\n");
exit(EXIT_FAILURE);
}
printf("%s\n", inet_ntoa(addr));
exit(EXIT_SUCCESS);
}

VOIR AUSSI

byteorder (3), getaddrinfo (3), gethostbyname (3), getnameinfo (3), getnetent (3), inet_net_pton (3), inet_ntop (3), inet_pton (3), hosts (5), networks (5)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Philippe MENGUAL <jpmengual@debian.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .