Materiale sulle opzioni dei socket IP, con aggiunte di un po' di riferimenti
authorSimone Piccardi <piccardi@gnulinux.it>
Sun, 5 Jun 2005 16:59:09 +0000 (16:59 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sun, 5 Jun 2005 16:59:09 +0000 (16:59 +0000)
e placeholder in altre sezioni.

listati/pktinfo.h [new file with mode: 0644]
netlayer.tex
othersock.tex
sockadv.tex
sockctrl.tex

diff --git a/listati/pktinfo.h b/listati/pktinfo.h
new file mode 100644 (file)
index 0000000..8862d62
--- /dev/null
@@ -0,0 +1,6 @@
+struct in_pktinfo {
+    unsigned int   ipi_ifindex;  /* Interface index */
+    struct in_addr ipi_spec_dst; /* Local address */
+    struct in_addr ipi_addr;     /* Header Destination address */
+};
+
index 75815b188b5da86a2b49719c4278dda8a96f5d3a..8926bfc3a4e635d8937f18f8a4ee13492b715ab3 100644 (file)
@@ -203,6 +203,40 @@ indirizzi di rete da inserire nelle tabelle di instradamento dei router.
 
 
 
 
 
 
+\subsection{L'intestazione di IP}
+\label{sec:IP_header}
+
+
+Il campo TOS definisce il cosiddetto \textit{Type of Service}; questo permette
+di definire il tipo di traffico contenuto nei pacchetti, e può essere
+utilizzato dai router per dare diverse priorità in base al valore assunto da
+questo campo. 
+
+\begin{table}[!htb]
+  \centering
+  \footnotesize
+  \begin{tabular}[c]{|l|l|}
+    \hline
+    \textbf{Costante} & \textbf{Significato} \\
+    \hline
+    \hline
+    \const{IPTOS\_LOWDELAY}   & minimizza i ritardi per il traffico
+                                interattivo. \\
+    \const{IPTOS\_THROUGHPUT} & ottimizza la trasmissione per il massimo
+                                flusso di dati.\\
+    \const{IPTOS\_RELIABILITY}& ottimizza per l'affidabilità della
+                                trasmissione. \\
+    \const{IPTOS\_MINCOST}    & usato per dati di riempimento, dove non
+                                interessa se c'è una bassa velocità di
+                                trasmissione.\\
+    \hline
+  \end{tabular}
+  \caption{Le costanti che definiscono alcuni valori standard per il campo TOS
+    da usare come argomento \param{optval} per l'opzione \const{IP\_TOS}.} 
+  \label{tab:IP_TOS_values}
+\end{table}
+
+
 
 \subsection{Le opzioni di IP}
 \label{sec:IP_options}
 
 \subsection{Le opzioni di IP}
 \label{sec:IP_options}
@@ -210,6 +244,8 @@ indirizzi di rete da inserire nelle tabelle di instradamento dei router.
 
 
 
 
 
 
+
+
 \section{Il protocollo IPv6}
 \label{sec:ipv6_protocol}
 
 \section{Il protocollo IPv6}
 \label{sec:ipv6_protocol}
 
index 4be71fbca6a76f114757960092ab1f7420398234..7231bf27f2b5cd9d65c83fd102a63f0d6dccfc84 100644 (file)
@@ -747,13 +747,19 @@ l'interfaccia di programmazione che serve ad utilizzarli resta sempre quella
 dei socket.
 
 
 dei socket.
 
 
+\section{I socket \textit{raw}}
+\label{sec:socket_raw}
+
+Tratteremo in questa sezione i cosiddetti \textit{raw socket}, con i quali si
+possono \textsl{forgiare} direttamente i pacchetti a tutti i livelli dello
+stack dei protocolli. 
+
 
 \section{Altri socket}
 \label{sec:socket_other}
 
 Tratteremo in questa sezione gli altri tipi particolari di socket supportati
 
 \section{Altri socket}
 \label{sec:socket_other}
 
 Tratteremo in questa sezione gli altri tipi particolari di socket supportati
-da Linux, come i \textit{raw socket}, con i quali si possono \textsl{forgiare}
-direttamente i pacchetti a tutti i livelli dello stack dei protocolli, o i
+da Linux, come quelli relativi a particolare protocolli di trasmissione ed i
 socket \textit{netlink} che definiscono una interfaccia di comunicazione con
 il kernel.
 
 socket \textit{netlink} che definiscono una interfaccia di comunicazione con
 il kernel.
 
index 32249297ca0f8fd5064ffd7faaa28a7079860127..2abcb65540dc2a5495a352b494ca76d1095e833d 100644 (file)
@@ -26,6 +26,12 @@ controllare le funzionalit
 disponibili con i vari tipi di socket.
 
 
 disponibili con i vari tipi di socket.
 
 
+\subsection{I messaggi ancillari}
+\label{sec:TCP_ancillary_data}
+
+
+
+
 \subsection{I dati \textit{out-of-band}}
 \label{sec:TCP_urgent_data}
 
 \subsection{I dati \textit{out-of-band}}
 \label{sec:TCP_urgent_data}
 
index 87dca619d0fa1875bae7456e23ff12a493c834eb..fe1a12c099dac0486cfac3bededeef6147e6ca82 100644 (file)
@@ -2262,9 +2262,9 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni:
   per primi, in modalità che dipendono dalla disciplina di gestione della
   coda. Nel caso di protocollo IP questa opzione permette anche di impostare i
   valori del campo \textit{type of service} (noto come TOS, vedi
   per primi, in modalità che dipendono dalla disciplina di gestione della
   coda. Nel caso di protocollo IP questa opzione permette anche di impostare i
   valori del campo \textit{type of service} (noto come TOS, vedi
-  sez.~\ref{sec:IP_xxx}) per i pacchetti uscenti. Per impostare una priorità
-  al di fuori dell'intervallo di valori fra 0 e 6 sono richiesti i privilegi
-  di amministratore con la capability \const{CAP\_NET\_ADMIN}.
+  sez.~\ref{sec:IP_header}) per i pacchetti uscenti. Per impostare una
+  priorità al di fuori dell'intervallo di valori fra 0 e 6 sono richiesti i
+  privilegi di amministratore con la capability \const{CAP\_NET\_ADMIN}.
 
 \item[\const{SO\_ERROR}] questa opzione riceve un errore presente sul socket;
   può essere utilizzata soltanto con \func{getsockopt} e prende per
 
 \item[\const{SO\_ERROR}] questa opzione riceve un errore presente sul socket;
   può essere utilizzata soltanto con \func{getsockopt} e prende per
@@ -2515,7 +2515,7 @@ il sistema non supporta l'opzione \const{IP\_RECVDSTADDR};\footnote{nel caso
   sviluppo del kernel 2.1.x, ma è in seguito stata soppiantata dall'uso di
   \const{IP\_PKTINFO} (vedi sez.~\ref{sec:sock_ipv4_options}).} in tale modo
 si può sapere a quale socket corrisponde un certo indirizzo.  Non ha senso
   sviluppo del kernel 2.1.x, ma è in seguito stata soppiantata dall'uso di
   \const{IP\_PKTINFO} (vedi sez.~\ref{sec:sock_ipv4_options}).} in tale modo
 si può sapere a quale socket corrisponde un certo indirizzo.  Non ha senso
-fare questa operazionie per socket TCP dato che su di essi si può sempre
+fare questa operazione per un socket TCP dato che su di essi si può sempre
 invocare \func{getsockname} una volta che si è completata la connessione.
 
 Infine il quarto caso è quello in cui si vuole effettivamente ottenere un
 invocare \func{getsockname} una volta che si è completata la connessione.
 
 Infine il quarto caso è quello in cui si vuole effettivamente ottenere un
@@ -2666,7 +2666,9 @@ socket che usano il protocollo IPv4.\footnote{come per le precedenti opzioni
   pagine di manuale, nel caso specifico la documentazione si può consultare
   con \texttt{man 7 ip}.}  Se si vuole operare su queste opzioni generiche il
 livello da utilizzare è \const{SOL\_IP}; si è riportato un elenco di queste
   pagine di manuale, nel caso specifico la documentazione si può consultare
   con \texttt{man 7 ip}.}  Se si vuole operare su queste opzioni generiche il
 livello da utilizzare è \const{SOL\_IP}; si è riportato un elenco di queste
-opzioni in tab.~\ref{tab:sock_opt_iplevel}.
+opzioni in tab.~\ref{tab:sock_opt_iplevel}. Le costanti indicanti le opzioni e
+tutte le altre costanti ad esse collegate sono definite in
+\file{netinet/ip.h}, ed accessibili includendo detto file.
 
 
 \begin{table}[!htb]
 
 
 \begin{table}[!htb]
@@ -2678,46 +2680,42 @@ opzioni in tab.~\ref{tab:sock_opt_iplevel}.
                     \textbf{Descrizione}\\
     \hline
     \hline
                     \textbf{Descrizione}\\
     \hline
     \hline
-    \const{IP\_OPTIONS}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Imposta o riceve le opzioni di IP.\\
-    \const{IP\_PKTINFO}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Passa un messaggio di informazione.\\
-    \const{IP\_RECVTOS}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Passa un messaggio col campo TOS.\\
-    \const{IP\_RECVTTL}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Passa un messaggio col campo TTL.\\
-    \const{IP\_RECVOPTS}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Passa un messaggio con le opzioni IP.\\
-    \const{IP\_RETOPTS}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Passa un messaggio con le opzioni IP non
-                          trattate.\\
-    \const{IP\_TOS}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Imposta il valore del campo TOS.\\
-    \const{IP\_TTL}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Imposta il valore del campo TTL.\\
-    \const{IP\_HDRINCL}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Passa l'intestazione di IP nei dati.\\
-    \const{IP\_RECVERR}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Abilita la gestione degli errori.\\
-    \const{IP\_MTU\_DISCOVER}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Imposta il Path MTU Discovery.\\
-    \const{IP\_MTU}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Legge il valore attuale della MTU.\\
-    \const{IP\_ROUTER\_ALERT}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Imposta l'opzione \textit{IP router alert} sui
-                          pacchetti.\\
-    \const{IP\_MULTICAST\_TTL}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Imposta il TTL per i pacchetti multicast.\\
-    \const{IP\_MULTICAST\_LOOP}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Controlla il reinvio a se
-                          stessi dei dati di multicast.\\ 
-    \const{IP\_ADD\_MEMBERSHIP}&         &$\bullet$&$\bullet$&\texttt{int}& 
-                          Si unisce a un gruppo di multicast.\\
+    \const{IP\_OPTIONS}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Imposta o riceve le opzioni di IP.\\
+    \const{IP\_PKTINFO}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Passa un messaggio di informazione.\\
+    \const{IP\_RECVTOS}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Passa un messaggio col campo TOS.\\
+    \const{IP\_RECVTTL}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Passa un messaggio col campo TTL.\\
+    \const{IP\_RECVOPTS}        &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Passa un messaggio con le opzioni IP.\\
+    \const{IP\_RETOPTS}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Passa un messaggio con le opzioni IP non trattate.\\
+    \const{IP\_TOS}             &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Imposta il valore del campo TOS.\\
+    \const{IP\_TTL}             &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Imposta il valore del campo TTL.\\
+    \const{IP\_HDRINCL}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Passa l'intestazione di IP nei dati.\\
+    \const{IP\_RECVERR}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Abilita la gestione degli errori.\\
+    \const{IP\_MTU\_DISCOVER}   &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Imposta il Path MTU Discovery.\\
+    \const{IP\_MTU}             &$\bullet$&       &$\bullet$&\texttt{int}& 
+      Legge il valore attuale della MTU.\\
+    \const{IP\_ROUTER\_ALERT}   &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Imposta l'opzione \textit{IP router alert} sui pacchetti.\\
+    \const{IP\_MULTICAST\_TTL}  &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Imposta il TTL per i pacchetti multicast.\\
+    \const{IP\_MULTICAST\_LOOP} &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Controlla il reinvio a se stessi dei dati di multicast.\\ 
+    \const{IP\_ADD\_MEMBERSHIP} &         &$\bullet$&$\bullet$&\texttt{int}& 
+      Si unisce a un gruppo di multicast.\\
     \const{IP\_DROP\_MEMBERSHIP}&        &$\bullet$&$\bullet$&\texttt{int}& 
     \const{IP\_DROP\_MEMBERSHIP}&        &$\bullet$&$\bullet$&\texttt{int}& 
-                          Si sgancia da un gruppo di multicast.\\
-    \const{IP\_MULTICAST\_IF}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          Imposta l'interfaccia locale di un socket
-                          multicast.\\ 
+      Si sgancia da un gruppo di multicast.\\
+    \const{IP\_MULTICAST\_IF}   &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      Imposta l'interfaccia locale di un socket multicast.\\ 
    \hline
   \end{tabular}
   \caption{Le opzioni disponibili al livello \const{SOL\_IP}.} 
    \hline
   \end{tabular}
   \caption{Le opzioni disponibili al livello \const{SOL\_IP}.} 
@@ -2734,40 +2732,121 @@ elenco:
   opzioni del protocollo IP (si veda sez.~\ref{sec:IP_options}). L'opzione
   prende come valore dell'argomento \param{optval} un puntatore ad un buffer
   dove sono mantenute le opzioni, mentre \param{optlen} indica la dimensione
   opzioni del protocollo IP (si veda sez.~\ref{sec:IP_options}). L'opzione
   prende come valore dell'argomento \param{optval} un puntatore ad un buffer
   dove sono mantenute le opzioni, mentre \param{optlen} indica la dimensione
-  di quest'ultimo. Quando la si usa con \func{setsockopt} 
-
-\item[\const{IP\_PKTINFO}]
-
-\item[\const{IP\_RECVTOS}]
-
-\item[\const{IP\_RECVTTL}]
-
-\item[\const{IP\_RECVOPTS}]
-
-\item[\const{IP\_RETOPTS}]
-
-
-\item[\const{IP\_TOS}]
-
-
-\item[\const{IP\_TTL}]
-
-
-\item[\const{IP\_HDRINCL}]
-
-
-\item[\const{IP\_RECVERR}]
-
-\item[\const{IP\_MTU\_DISCOVER}]
-
-\item[\const{IP\_MTU}]
-
-\item[\const{IP\_ROUTER\_ALERT}]
-
-\item[\const{IP\_MULTICAST\_TTL}]
+  di quest'ultimo. Quando la si usa con \func{getsockopt} vengono lette le
+  opzioni IP utilizzate per la spedizione, quando la si usa con
+  \func{setsockopt} vengono impostate le opzioni specificate. L'uso di questa
+  opzione richiede una profonda conoscenza del funzionamento del protocollo,
+  torneremo in parte sull'argomento in sez.~\ref{sec:sock_advanced_xxx}.
+
+
+\item[\const{IP\_PKTINFO}] Quando abilitata l'opzione permette di ricevere
+  insieme ai pacchetti un messaggio ancillare (vedi
+  sez.~\ref{sec:TCP_ancillary_data}) di tipo \const{IP\_PKTINFO} contenente
+  una struttura \struct{pktinfo} (vedi fig.~\ref{fig:sock_pktinfo_struct}) che
+  mantiene una serie di informazioni riguardo i pacchetti in arrivo. In
+  particolare è possibile conoscere l'interfaccia su cui è stato ricevuto un
+  pacchetto (nel campo \var{ipi\_ifindex}), l'indirizzo locale da esso
+  utilizzato (nel campo \var{ipi\_spec\_dst}) e l'indirizzo remoto dello
+  stesso (nel campo \var{ipi\_addr}).
 
 
+\begin{figure}[!htb]
+  \footnotesize \centering
+  \begin{minipage}[c]{15cm}
+    \includestruct{listati/pktinfo.h}
+  \end{minipage}
+  \caption{La struttura \structd{pktinfo} usata dall'opzione
+    \const{IP\_PKTINFO} per ricavare informazioni sui pacchetti di un socket
+    di tipo \const{SOCK\_DGRAM}.}
+  \label{fig:sock_pktinfo_struct}
+\end{figure}
 
 
 
 
+L'opzione è utilizzabile solo per socket di tipo \const{SOCK\_DGRAM}. Questa è
+una opzione introdotta con i kernel della serie 2.2.x, ed è specifica di
+Linux;\footnote{non dovrebbe pertanto essere utilizzata se si ha a cuore la
+  portabilità.} essa permette di sostituire le opzioni \const{IP\_RECVDSTADDR}
+e \const{IP\_RECVIF} presenti in altri Unix (la relativa informazione è quella
+ottenibile rispettivamente dai campi \var{ipi\_addr} e \var{ipi\_ifindex} di
+\struct{pktinfo}). 
+
+
+\item[\const{IP\_RECVTOS}] Quando abilitata l'opzione permette di ricevere
+  insieme ai pacchetti un messaggio ancillare di tipo \const{IP\_TOS}, che
+  contiene un byte con il valore del campo \textit{Type of Service}
+  dell'intestazione IP del pacchetto stesso (vedi sez.~\ref{sec:IP_header}).
+  Prende per \param{optval} un intero usato come valore logico. 
+
+\item[\const{IP\_RECVTTL}] Quando abilitata l'opzione permette di ricevere
+  insieme ai pacchetti un messaggio ancillare di tipo \const{IP\_RECVTTL},
+  contenente un byte con il valore del campo \textit{Time to Live}
+  dell'intestazione IP (vedi sez.~\ref{sec:IP_header}).  L'opzione richiede
+  per \param{optval} un intero usato come valore logico. L'opzione non è
+  supportata per socket di tipo \const{SOCK\_STREAM}.
+
+\item[\const{IP\_RECVOPTS}] Quando abilitata l'opzione permette di ricevere
+  insieme ai pacchetti un messaggio ancillare di tipo \const{IP\_OPTIONS},
+  contenente le opzioni IP del protocollo (vedi sez.~\ref{sec:IP_options}). Le
+  intestazioni di instradamento e le altre opzioni sono già riempite con i
+  dati locali. L'opzione richiede per \param{optval} un intero usato come
+  valore logico.  L'opzione non è supportata per socket di tipo
+  \const{SOCK\_STREAM}.
+
+\item[\const{IP\_RETOPTS}] Identica alla precedente \const{IP\_RECVOPTS}, ma
+  in questo caso restituisce i dati grezzi delle opzioni, senza che siano
+  riempiti i capi di instradamento e le marche temporali.  L'opzione richiede
+  per \param{optval} un intero usato come valore logico.  L'opzione non è
+  supportata per socket di tipo \const{SOCK\_STREAM}.
+
+
+\item[\const{IP\_TOS}] L'opzione consente di leggere o impostare il campo
+  \textit{Type of Service} dell'intestazione IP (vedi
+  sez.~\ref{sec:IP_header}) che permette di indicare le priorità dei
+  pacchetti.  Il campo TOS è di 8 bit e l'opzione richiede per \param{optval}
+  un intero che ne contiene il valore. Sono definite anche alcune costanti che
+  definiscono alcuni valori standardizzati per il \textit{Type of Service},
+  riportate in tab.~\ref{tab:IP_TOS_values}. Si ricordi che la priorità dei
+  pacchetti può essere impostata anche in maniera indipendente dal protocollo
+  utilizzando l'opzione \const{SO\_PRIORITY} illustrata in
+  sez.~\ref{sec:sock_generic_options}. 
+
+
+\item[\const{IP\_TTL}] L'opzione consente di leggere o impostare il campo
+  \textit{Time to Live} dell'intestazione IP (vedi sez.~\ref{sec:IP_header}).
+  Il campo TTL è di 8 bit e l'opzione richiede che \param{optval} sia un
+  intero, che ne conterrà il valore.
+
+
+\item[\const{IP\_HDRINCL}] Se abilitata l'utente deve fornire lui stesso
+  l'intestazione IP in cima ai propri dati. L'opzione è valida soltanto per
+  socket di tipo \const{SOCK\_RAW}, e quando utilizzata eventuali valori
+  impostati con \const{IP\_OPTIONS}, \const{IP\_TOS} o \const{IP\_TTL} sono
+  ignorati. In ogni caso prima della spedizione alcuni campi
+  dell'instestazione vengono comunque modificati dal kernel, torneremo
+  sull'argomento in sez.~\ref{sec:socket_raw_xxx}
+
+
+\item[\const{IP\_RECVERR}] Questa è una opzione introdotta con i kernel della
+  serie 2.2.x, ed è specifica di Linux.
+
+\item[\const{IP\_MTU\_DISCOVER}] Questa è una opzione introdotta con i kernel
+  della serie 2.2.x, ed è specifica di Linux.
+
+\item[\const{IP\_MTU}] Permette di leggere il valore della \textit{Maximum
+    Tranfer Unit} di percorso (vedi sez.~\ref{sec:net_lim_dim}) del socket.
+  L'opzione richiede per \param{optval} un intero che conterrà il valore della
+  MTU in byte.  Questa è una opzione introdotta con i kernel della serie
+  2.2.x, ed è specifica di Linux.
+
+\item[\const{IP\_ROUTER\_ALERT}] Questa è una opzione introdotta con i kernel
+  della serie 2.2.x, ed è specifica di Linux.
+
+\item[\const{IP\_MULTICAST\_TTL}] L'opzione permette di impostare o leggere il
+  valore del campo TTL per i pacchetti in uscita associati al socket. È
+  importante che questo valore sia il più basso possibile, ed il default è 1,
+  che significa che i pacchetti non potranno uscire dalla rete locale. Questa
+  opzione consente ai programmi che lo richiedono di superare questo limite.
+  L'opzione richiede per \param{optval} un intero che conterrà il valore del
+  TTL.
 
 \item[\const{IP\_MULTICAST\_LOOP}] L'opzione consente di decidere se i dati
   che si inviano su un socket usato con il multicast vengano ricevuti anche
 
 \item[\const{IP\_MULTICAST\_LOOP}] L'opzione consente di decidere se i dati
   che si inviano su un socket usato con il multicast vengano ricevuti anche
@@ -2777,14 +2856,14 @@ elenco:
   In generale se si vuole che eventuali client possano ricevere i dati che si
   inviano occorre che questa funzionalità sia abilitata (come avviene di
   default). Qualora però non si voglia generare traffico per dati che già sono
   In generale se si vuole che eventuali client possano ricevere i dati che si
   inviano occorre che questa funzionalità sia abilitata (come avviene di
   default). Qualora però non si voglia generare traffico per dati che già sono
-  disponibili l'uso di questa opzione permette di disabilitare questo tipo di
-  traffico. 
+  disponibili in locale l'uso di questa opzione permette di disabilitare
+  questo tipo di traffico.
 
 \item[\const{IP\_ADD\_MEMBERSHIP}]
 
 \item[\const{IP\_DROP\_MEMBERSHIP}]
 
 
 \item[\const{IP\_ADD\_MEMBERSHIP}]
 
 \item[\const{IP\_DROP\_MEMBERSHIP}]
 
-\item[\const{IP\_MULTICAST\_IF}]
+\item[\const{IP\_MULTICAST\_IF}] 
 
 
 \end{basedescript}
 
 
 \end{basedescript}