From: Simone Piccardi Date: Sun, 12 Jun 2005 20:53:57 +0000 (+0000) Subject: Altro materiale sulle opzioni dei socket. X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=997a10619163980437d438ba7a4d8dda3fc56d98;hp=9a6d19e384fe9b1afbe4d9124ac34eaf7aa57562 Altro materiale sulle opzioni dei socket. --- diff --git a/listati/ip_mreqn.h b/listati/ip_mreqn.h new file mode 100644 index 0000000..5447e64 --- /dev/null +++ b/listati/ip_mreqn.h @@ -0,0 +1,5 @@ +struct ip_mreqn { + struct in_addr imr_multiaddr; /* IP multicast group address */ + struct in_addr imr_address; /* IP address of local interface */ + int imr_ifindex; /* interface index */ +}; diff --git a/listati/sock_extended_err.h b/listati/sock_extended_err.h new file mode 100644 index 0000000..2a3bc08 --- /dev/null +++ b/listati/sock_extended_err.h @@ -0,0 +1,10 @@ +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 */ +}; diff --git a/sockadv.tex b/sockadv.tex index 2abcb65..b033b6f 100644 --- a/sockadv.tex +++ b/sockadv.tex @@ -32,6 +32,38 @@ disponibili con i vari tipi di socket. +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} diff --git a/sockctrl.tex b/sockctrl.tex index 8880438..815ceb1 100644 --- a/sockctrl.tex +++ b/sockctrl.tex @@ -2838,8 +2838,10 @@ ottenibile rispettivamente dai campi \var{ipi\_addr} e \var{ipi\_ifindex} di \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 @@ -2869,7 +2871,32 @@ ottenibile rispettivamente dai campi \var{ipi\_addr} e \var{ipi\_ifindex} di 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}]