+Il quarto argomento, \param{optval} è un puntatore ad una zona di memoria che
+contiene i dati che specificano il valore dell'opzione che si vuole passare al
+socket (e il tipo di dati varia a seconda dell'opzione), mentre l'ultimo
+argomento \param{optlen},\footnote{questo argomento è in realtà sempre di tipo
+ \ctyp{int}, come era nelle \acr{libc4} e \acr{libc5}; l'uso di
+ \ctyp{socklen\_t} è stato introdotto da POSIX (valgono le stesse
+ considerazioni per l'uso di questo tipo di dato fatte in
+ sez.~\ref{sec:TCP_func_accept}) ed adottato dalle \acr{glibc}.} è la
+dimensione in byte dei dati presenti all'indirizzo indicato da \param{optval}.
+
+La gran parte delle opzioni utilizzano per \param{optval} un valore intero, se
+poi l'opzione esprime una condizione logica si deve usare particolare un
+valore non nullo per abilitarla ed un valore nullo per disabilitarla. Se
+invece l'opzione non prevede di dover ricevere nessun tipo di valore si deve
+impostare \param{optval} a \const{NULL}.
+
+La seconda funzione usata per controllare le proprietà dei socket è
+\func{getsockopt}, che serve a leggere i valori delle opzioni dd a farsi
+restituire i dati relativi al loro funzionamento; il suo prototipo è:
+\begin{functions}
+ \headdecl{sys/socket.h}
+ \headdecl{sys/types.h}
+
+ \funcdecl{int getsockopt(int s, int level, int optname, void *optval,
+ socklen\_t *optlen)} Legge le opzioni di un socket.
+
+ \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
+ errore, nel qual caso \var{errno} assumerà i valori:
+ \begin{errlist}
+ \item[\errcode{EBADF}] il file descriptor \param{sock} non è valido.
+ \item[\errcode{EFAULT}] l'indirizzo \param{optval} o quello di
+ \param{optlen} non è valido.
+ \item[\errcode{ENOPROTOOPT}] l'opzione scelta non esiste per il livello
+ indicato.
+ \item[\errcode{ENOTSOCK}] il file descriptor \param{sock} non corrisponde ad
+ un socket.
+ \end{errlist}
+}
+\end{functions}
+
+I primi tre argomenti sono identici ed hanno lo stesso significato di quelli
+di \func{setsockopt}, mentre \param{optval} in questo caso indica l'indirizzo
+a cui andranno scritti i dati letti dal socket, e \param{optlen} è usata come
+\textit{value result argument} per indicare la lunghezza del buffer allocato
+per \param{optval} e per ricevere indietro la dimensione effettiva dei dati
+scritti su di esso.