Altro materiale sulle opzioni dei socket.
authorSimone Piccardi <piccardi@gnulinux.it>
Sun, 12 Jun 2005 20:53:57 +0000 (20:53 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sun, 12 Jun 2005 20:53:57 +0000 (20:53 +0000)
listati/ip_mreqn.h [new file with mode: 0644]
listati/sock_extended_err.h [new file with mode: 0644]
sockadv.tex
sockctrl.tex

diff --git a/listati/ip_mreqn.h b/listati/ip_mreqn.h
new file mode 100644 (file)
index 0000000..5447e64
--- /dev/null
@@ -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 (file)
index 0000000..2a3bc08
--- /dev/null
@@ -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 */
+};
index 2abcb65540dc2a5495a352b494ca76d1095e833d..b033b6faa9f104329e9267f67b6e36cfc9b1fbb5 100644 (file)
@@ -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}
 
index 88804386e2fa9daddd6a4d80a249308011330076..815ceb18e35a1e6f3bb62a6f1621003604a4a148 100644 (file)
@@ -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}]