+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.
+
+
+
+
+Il valore di \param{level} seleziona allora il livello sul quale si va ad
+intervenire e permette di usare le opzioni definite su quel livello. Esiste
+poi il valore \const{SOL\_SOCKET} che indica un livello generico e cioè le
+opzioni disponibili per qualunque tipo di socket. Per impostare le opzioni
+relative alle funzionalità disponibili per socket che usano particolari
+protocolli può utilizzare il valore numerico che identifica questi ultimi in
+\file{/etc/protocols}, ma più comunemente si suano 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}.\footnote{la
+ notazione in questo caso è, purtroppo, abbastanza confusa: infatti in Linux
+ il valore si può impostare sia usando le costanti \texttt{SOL\_*}, che delle
+ analoghe \texttt{IPPROTO\_*} (citate anche da Stevens in \cite{UNP1}) che di
+ nuovo sono equivalenti ai numeri di protocollo di \file{/etc/protocols}; con
+ una eccesione specifica, che è quella del protocollo ICMP, per la quale non
+ esista una costante, dato poi che il suo valore, 1, è anche quello che viene
+ assegnato a \const{SOL\_SOCKET}.}