getsockopt(2)

NUME
getsockopt, setsockopt - obține și definește opțiunile pe socluri

BIBLIOTECA
Biblioteca C standard (libc, -lc)

REZUMAT
#include <sys/socket.h>

int getsockopt(int sockfd, int nivel, int optname,
               void optval[restrict *.optlen],
               socklen_t *restrict optlen);
int setsockopt(int sockfd, int nivel, int optname,
               const void optval[.optlen],
               socklen_t optlen);

DESCRIERE
getsockopt() și setsockopt() manipulează opțiunile pentru soclul la care face referire descriptorul de fișier sockfd. Opțiunile pot exista la mai multe niveluri de protocol; ele sunt întotdeauna prezente la nivelul de soclu cel mai înalt.

Atunci când se manipulează opțiunile de soclu, trebuie să se precizeze nivelul la care se află opțiunea și numele acesteia. Pentru a manipula opțiunile de la nivelul API pentru socluri, nivel este specificat ca SOL_SOCKET. Pentru a manipula opțiunile la orice alt nivel, se furnizează numărul protocolului corespunzător care controlează opțiunea. De exemplu, pentru a indica faptul că o opțiune trebuie interpretată de protocolul TCP, nivel trebuie să fie definit la numărul de protocol al TCP; a se vedea getprotoent(3).

Argumentele optval și optlen sunt utilizate pentru a accesa valorile opțiunilor pentru setsockopt(). Pentru getsockopt(), acestea identifică o memorie tampon în care trebuie returnată valoarea opțiunii (opțiunilor) solicitate. Pentru getsockopt(), optlen este un argument valoare-rezultat, care conține inițial dimensiunea memoriei tampon indicată de optval și care este modificată la returnare pentru a indica dimensiunea reală a valorii returnate. Dacă nu trebuie furnizată sau returnată nicio valoare de opțiune, optval poate fi NULL.

Optname și orice opțiuni specificate sunt transmise neinterpretate modulului de protocol corespunzător pentru interpretare. Fișierul de includere <sys/socket.h> conține definiții pentru opțiunile la nivel de soclu, descrise mai jos. Opțiunile de la alte niveluri de protocol variază în ceea ce privește formatul și numele; consultați intrările corespunzătoare din secțiunea 4 a manualului.

Majoritatea opțiunilor la nivel de soclu utilizează un argument int pentru optval. Pentru setsockopt(), argumentul trebuie să fie diferit de zero pentru a activa o opțiune booleană, sau zero dacă opțiunea trebuie dezactivată.

Pentru o descriere a opțiunilor de soclu disponibile, consultați socket(7) și paginile de manual ale protocolului corespunzător.

VALOAREA RETURNATĂ
În caz de succes, se returnează zero pentru opțiunile standard. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

Netfilter permite programatorului să definească opțiuni de soclu personalizate cu gestionari asociați; pentru astfel de opțiuni, valoarea de returnare în caz de succes este valoarea returnată de gestionarul respectiv.

ERORI

EBADF
    Argumentul sockfd nu este un descriptor de fișier valid.

EFAULT
    Adresa indicată de optval nu se află într-o parte validă a spațiului de adrese al procesului. Pentru getsockopt(), această eroare poate fi returnată, de asemenea, dacă optlen nu se află într-o parte validă a spațiului de adrese al procesului.

EINVAL
    optlen nevalidă în setsockopt(). În unele cazuri, această eroare poate apărea, de asemenea, pentru o valoare nevalidă în optval (de exemplu, pentru opțiunea IP_ADD_MEMBERSHIP descrisă în ip(7)).

ENOPROTOOPT
    Opțiunea este necunoscută la nivelul indicat.

ENOTSOCK
    Descriptorul de fișier sockfd nu se referă la un soclu.

STANDARDE
POSIX.1-2008.

ISTORIC
POSIX.1-2001, SVr4, 4.4BSD (a apărut pentru prima dată în 4.2BSD).

ERORI
Mai multe dintre opțiunile de soclu ar trebui să fie gestionate la niveluri inferioare ale sistemului.

CONSULTAȚI ȘI
ioctl(2), socket(2), getprotoent(3), protocols(5), ip(7), packet(7), socket(7), tcp(7), udp(7), unix(7)

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

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) 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.