+Il primo argomento della funzione, \param{sock}, indica il socket su cui si
+intende operare; il secondo argomento, \param{level} indica invece il livello
+a cui si intende impostare l'opzione. Come abbiamo visto in
+sez.~\ref{sec:net_protocols} infatti i protocolli di rete sono strutturati su
+più livelli; pertanto anche le proprietà e le opzioni disponibili dipendono
+dai protocolli usati dal socket sul quale si va ad agire, e saranno anche esse
+differenziate a seconda del protocollo cui fanno riferimento.
+
+La scelta su quale opzione agire è fatta appunto con l'uso dell'argomento
+\param{level}, per esso esiste il valore speciale \const{SOL\_SOCKET} che
+indica il livello astratto di socket (cioè di opzioni disponibili in generale
+per qualunque tipo di socket), per impostare altre opzioni relative a
+funzionalità disponibili per socket che usano particolari protocolli si usa in
+genere il valore numerico degli stessi in \file{/etc/protocols},\footnote{o
+ quanto si può ottenere da una chiamata a \func{getprotoent}, questo però
+ presenta l'ambiguità dovuta al fatto che su Linux \const{SOL\_SOCKET} è
+ definito uguale ad 1, che corrisponde anche al valore di ICMP, che pertanto
+ non compare nelle varie costanti \texttt{SOL\_*}.} più comunemente però si
+utilizzano le apposite costanti \texttt{SOL\_*} riportate in
+tab.~\ref{tab:sock_option_levels} dove si sono riassunti i possibili valori
+per l'argomento \param{level}.