bindresvport(3) Library Functions Manual bindresvport(3)

bindresvport - asociază un soclu cu un port IP privilegiat

Biblioteca C standard (libc, -lc)

#include <sys/types.h>
#include <netinet/in.h>
int bindresvport(int sockfd, struct sockaddr_in *sin);

bindresvport() este folosită pentru a asocia soclul la care face referire descriptorul de fișier sockfd cu un port IP anonim privilegiat, adică un număr de port ales în mod arbitrar din intervalul 512-1023.

Dacă bind(2) efectuat de bindresvport() are succes, iar sin nu este NULL, atunci sin->sin_port returnează numărul de port alocat efectiv.

sin poate fi NULL, caz în care sin->sin_famy este considerat implicit ca fiind AF_INET. Cu toate acestea, în acest caz, bindresvport() nu are cum să returneze numărul de port alocat efectiv (această informație poate fi obținută ulterior cu ajutorul getsockname(2)).

bindresvport() returnează 0 în caz de succes; în caz contrar, se returnează -1, iar errno este configurată pentru a indica eroarea.

bindresvport() poate eșua din oricare dintre aceleași motive ca și bind(2). În plus, pot apărea următoarele erori:

Procesul de apelare nu a fost privilegiat (în Linux: procesul de apelare nu a avut capacitatea CAP_NET_BIND_SERVICE în spațiul de nume de utilizator care guvernează spațiul de nume de rețea).
Toate porturile privilegiate sunt în uz.
sin nu este NULL și sin->sin_family nu este AF_INET.

Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

Interfață Atribut Valoare
bindresvport() Siguranța firelor . glibc >= 2.17: MT-Safe; glibc < 2.17: MT-Unsafe

Funcția bindresvport() utilizează o variabilă statică care nu era protejată de un sistem de blocare înainte de glibc 2.17, ceea ce face ca funcția să fie nesigură din punct de vedere tehnic.

Prezentă în BSD, Solaris și în multe alte sisteme.

Spre deosebire de unele implementări bindresvport(), implementarea glibc ignoră orice valoare pe care apelantul o furnizează în sin->sin_port.

BSD.

bind(2), getsockname(2)

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.

31 octombrie 2023 Pagini de manual de Linux 6.06