--- /dev/null
+struct sock_extended_err {
+ u_int32_t ee_errno; /* error number */
+ u_int8_t ee_origin; /* where the error originated */
+ u_int8_t ee_type; /* type */
+ u_int8_t ee_code; /* code */
+ u_int8_t ee_pad;
+ u_int32_t ee_info; /* additional information */
+ u_int32_t ee_data; /* other data */
+ /* More data may follow */
+};
+Quanto è stata attivata l'opzione \const{IP\_RECVERR} il kernel attiva per il
+socket una speciale coda su cui vengono inviati tutti gli errori riscontrati.
+Questi possono essere riletti usando il flag \const{MSG\_ERRQUEUE}, nel qual
+caso sarà passato come messaggio ancillare una struttura di tipo
+\struct{sock\_extended\_err} illustrata in
+fig.~\ref{fig:sock_extended_err_struct}.
+
+
+\begin{figure}[!htb]
+ \footnotesize \centering
+ \begin{minipage}[c]{15cm}
+ \includestruct{listati/sock_extended_err.h}
+ \end{minipage}
+ \caption{La struttura \structd{sock_extended_err} usata dall'opzione
+ \const{IP\_RECVERR} per ottenere le informazioni relative agli errori su
+ un socket.}
+ \label{fig:sock_extended_err_struct}
+\end{figure}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\subsection{I dati \textit{out-of-band}}
\label{sec:TCP_urgent_data}
\item[\const{IP\_MTU\_DISCOVER}] Questa è una opzione introdotta con i kernel
della serie 2.2.x, ed è specifica di Linux. L'opzione permette di scrivere
- o leggere le impostazioni usante nella determinazione della \textit{Maximum
- Tranfer Unit} (vedi sez.~\ref{sec:net_lim_dim}) per il socket.
+ o leggere le impostazioni usate nella determinazione della \textit{Maximum
+ Tranfer Unit} (vedi sez.~\ref{sec:net_lim_dim}) per il socket. Il valore
+ di default è determinato dal parametro \texttt{ip\_no\_pmtu\_disc} di
+ \func{sysctl}.
\item[\const{IP\_MTU}] Permette di leggere il valore della \textit{Maximum
Tranfer Unit} di percorso del socket. L'opzione richiede per
disponibili in locale l'uso di questa opzione permette di disabilitare
questo tipo di traffico.
-\item[\const{IP\_ADD\_MEMBERSHIP}]
+\item[\const{IP\_ADD\_MEMBERSHIP}] L'opzione consente di unirsi ad gruppo di
+ multicast, e può essere usata solo con \func{setsockopt}. L'argomento
+ \param{optval} in questo caso deve essere una struttura di tipo
+ \struct{ip\_mreqn}, illustrata in fig.~\ref{fig:ip_mreqn_struct}, che
+ permette di indicare, con il campo \var{imr\_multiaddr} l'indirizzo del
+ gruppo di multicast a cui ci si vuole unire, con il campo \var{imr\_address}
+ l'indirizzo dell'interfaccia locale con cui unirsi al gruppo di multicast e
+ con \var{imr\_ifindex} l'indice dell'interfaccia da utilizzare (un valore
+ nullo indica una interfaccia qualunque).
+
+ Per compatibilità è possibile utilizzare anche un argomento di tipo
+ \struct{ip\_mreq}, una precedente versione di \struct{ip\_mreqn}, che
+ differisce da essa soltanto per l'assenza del campo \var{imr\_ifindex}.
+
+\begin{figure}[!htb]
+ \footnotesize \centering
+ \begin{minipage}[c]{15cm}
+ \includestruct{listati/ip_mreqn.h}
+ \end{minipage}
+ \caption{La struttura \structd{ip\_mreqn} utilizzata dalle opzioni dei socket
+ per le operazioni concernenti l'appartenenza ai gruppi di multicast.}
+ \label{fig:ip_mreqn_struct}
+\end{figure}
+
+
+
\item[\const{IP\_DROP\_MEMBERSHIP}]