Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       inet_pton - convertește adresele IPv4 și IPv6 din format text în format binar

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <arpa/inet.h>

       int inet_pton(int af, const char *restrict src, void *restrict dst);

DESCRIERE

       Această  funcție  convertește  șirul  de caractere src într-o structură de adrese de rețea din familia de
       adrese af, apoi copiază structura de adrese de rețea în dst. Argumentul af trebuie să fie fie AF_INET sau
       AF_INET6. dst este scris în ordinea octeților rețelei.

       În prezent, sunt acceptate următoarele familii de adrese:

       AF_INET
              src indică un șir de caractere care conține o adresă de rețea  IPv4  în  format  zecimal  punctat,
              "ddd.ddd.ddd.ddd.ddd",  unde  ddd este un număr zecimal de până la trei cifre în intervalul 0-255.
              Adresa este convertită într-o structură struct in_addr și copiată în dst, care trebuie să  aibă  o
              lungime de sizeof(struct in_addr) (4) octeți (32 de biți).

       AF_INET6
              src indică un șir de caractere care conține o adresă de rețea IPv6.  Adresa este convertită într-o
              structură  struct  in6_addr  și  copiată  în  dst, care trebuie să aibă o lungime de sizeof(struct
              in6_addr) (16) octeți (128 de biți).  Formatele permise pentru adresele IPv6 respectă  următoarele
              reguli:

              •  Formatul  preferat  este x:x:x:x:x:x:x:x. Acest format este format din opt numere hexazecimale,
                 fiecare dintre acestea exprimând o valoare pe 16 biți (adică fiecare x poate  avea  până  la  4
                 cifre hexazecimale).

              •  O  serie de valori zero contigue în formatul preferat poate fi prescurtată ::. Într-o adresă nu
                 poate apărea decât un singur element ::. De exemplu, adresa loopback 0:0:0:0:0:0:0:1  poate  fi
                 abreviată ca ::1.  Adresa „joker”, formată toată din zerouri, poate fi scrisă ca ::.

              •  Un format alternativ este util pentru exprimarea adreselor IPv4 transpuse în adrese IPv6. Acest
                 format se scrie ca x:x:x:x:x:x:d.d.d.d, unde cele șase x din față sunt valori hexazecimale care
                 definesc  cele  mai  semnificative  șase părți de 16 biți ale adresei (adică 96 de biți), iar d
                 exprimă o valoare în notație zecimală punctată care definește cei mai puțin semnificativi 32 de
                 biți ai adresei. Un exemplu de astfel de adresă este ::FFFF:204.152.189.116.

              A se vedea RFC 2373 pentru detalii suplimentare privind reprezentarea adreselor IPv6.

VALOAREA RETURNATĂ

       inet_pton() returnează 1 în caz de succes (adresa de rețea a fost convertită cu succes). Se returnează  0
       dacă  src nu conține un șir de caractere care să reprezinte o adresă de rețea validă în familia de adrese
       specificată. Dacă af nu conține o familie de adrese validă, se returnează -1, iar errno este  configurată
       la EAFNOSUPPORT.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌──────────────────────────────────────────────────────────────────┬───────────────────┬────────────────┐
       │ InterfațăAtributValoare        │
       ├──────────────────────────────────────────────────────────────────┼───────────────────┼────────────────┤
       │ inet_pton()                                                      │ Siguranța firelor │ MT-Safe locale │
       └──────────────────────────────────────────────────────────────────┴───────────────────┴────────────────┘

VERSIUNI

       Spre  deosebire  de  inet_aton(3)  și  inet_addr(3),  inet_pton()  acceptă adrese IPv6. Pe de altă parte,
       inet_pton() acceptă numai  adrese  IPv4  în  notație  zecimală  punctată,  în  timp  ce  inet_aton(3)  și
       inet_addr(3)  acceptă  notația mai generală numere și puncte (formate de numere hexazecimale și octale și
       formate care nu necesită scrierea explicită a tuturor  celor  patru  octeți).  Pentru  o  interfață  care
       gestionează atât adrese IPv6, cât și adrese IPv4 în notație numere și puncte, a se vedea getaddrinfo(3).

STANDARDE

       POSIX.1-2008.

ISTORIC

       POSIX.1-2001.

ERORI

       AF_INET6  nu  recunoaște adresele IPv4. În schimb, în src trebuie furnizată o adresă IPv4 explicită, care
       să fie transpusă într-o adresă IPv6.

EXEMPLE

       Programul de mai jos  demonstrează  utilizarea  inet_pton()  și  inet_ntop(3).  Iată  câteva  exemple  de
       execuție:

           $ ./a.out i6 0:0:0:0:0:0:0:0
           ::
           $ ./a.out i6 1:0:0:0:0:0:0:8
           1::8
           $ ./a.out i6 0:0:0:0:0:FFFF:204.152.189.116
           ::ffff:204.152.189.116

   Sursa programului

       #include <arpa/inet.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       int
       main(int argc, char *argv[])
       {
           unsigned char buf[sizeof(struct in6_addr)];
           int domain, s;
           char str[INET6_ADDRSTRLEN];

           if (argc != 3) {
               fprintf(stderr, "Utilizare: %s {i4|i6|<num>} șir\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           domain = (strcmp(argv[1], "i4") == 0) ? AF_INET :
                    (strcmp(argv[1], "i6") == 0) ? AF_INET6 : atoi(argv[1]);

           s = inet_pton(domain, argv[2], buf);
           if (s <= 0) {
               if (s == 0)
                   fprintf(stderr, "Nu este în format de prezentare");
               else
                   perror("inet_pton");
               exit(EXIT_FAILURE);
           }

           if (inet_ntop(domain, buf, str, INET6_ADDRSTRLEN) == NULL) {
               perror("inet_ntop");
               exit(EXIT_FAILURE);
           }

           printf("%s\n", str);

           exit(EXIT_SUCCESS);
       }

CONSULTAȚI ȘI

       getaddrinfo(3), inet(3), inet_ntop(3)

TRADUCERE

       Traducerea    în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel   Chelu
       <remusgabriel.chelu@disroot.org>

       Această traducere este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3  sau  o
       versiune   ulterioară   cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se  asumă  NICIO
       RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui manual, vă rugăm să  trimiteți  un  e-mail  la  translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                     inet_pton(3)