Correzioni varie.
authorSimone Piccardi <piccardi@gnulinux.it>
Mon, 5 Dec 2005 15:34:08 +0000 (15:34 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Mon, 5 Dec 2005 15:34:08 +0000 (15:34 +0000)
errors.tex
macro.tex
netlayer.tex
network.tex
signal.tex
sockctrl.tex

index 991a1661c452f6f43a047ac33d8e639ec19bffd7..77bbec83f927c1b8e9a31091acf64c7d48f3621d 100644 (file)
@@ -195,11 +195,12 @@ gestione dei socket e delle connessioni di rete.
   Famiglia di indirizzi non supportata. La famiglia di indirizzi richiesta non
   è supportata, o è inconsistente con il protocollo usato dal socket.
 \item \errcode{EADDRINUSE} \textit{Address already in use}. L'indirizzo del
-  socket richiesto è gia utilizzato (ad esempio si è richiesto il \func{bind}
-  per una porta già in uso).
-\item \errcode{EADDRNOTAVAIL} \textit{Cannot assign requested address}.
-  L'indirizzo richiesto non è disponibile (ad esempio si è cercato di dare al
-  socket un nome che non corrisponde al nome della stazione locale).
+  socket richiesto è gia utilizzato (ad esempio si è eseguita \func{bind}
+  su una porta già in uso).
+\item \errcode{EADDRNOTAVAIL} \textit{Cannot assign requested
+    address}.  L'indirizzo richiesto non è disponibile (ad esempio si
+  è cercato di dare al socket un nome che non corrisponde al nome
+  della stazione locale), o l'interfaccia richesta non esiste.
 \item \errcode{ENETDOWN} \textit{Network is down}. L'operazione sul socket è
   fallita perché la rete è sconnessa.
 \item \errcode{ENETUNREACH} \textit{Network is unreachable}. L'operazione è
index 762ec69f09fb0a0d17ea5cafb8125e6b243c8af7..a34b4ce224ca2b3c1765cbc1183b28a87ffc0efb 100644 (file)
--- a/macro.tex
+++ b/macro.tex
@@ -9,6 +9,15 @@
 %% License".
 %%
 %
+%
+% Defining some special character for use inside typewriter 
+% text without using the verbatim environment
+%
+\def\tild{\char'176}
+\def\bslash{\char'134}
+\def\circonf{\char'136}
+\def\invap{\char'140}
+%
 % Defining some commands to manipulate counter to avoid ude of 
 % \label and \ref commands (and related problem to remeber the 
 % used labels) to refer nearest objects
index 86bb0523bfd41d3fe29483147f04793f2f267dac..2b264d1debbab14e6095c992c89530cd388e94d8 100644 (file)
@@ -1395,7 +1395,7 @@ fino al vettore di inizializzazione, il resto 
   \centering
   \includegraphics[width=10cm]{img/esp_option}
   \caption{Schema di pacchetto crittografato.}
-  \label{tab:ESP_criptopack}
+  \label{fig:ESP_criptopack}
 \end{figure}
 
 
index 788d554a4c3b609e541fd4b9731183a7b61858f6..ceb7f55fb33feeca46d038684372bb18e1c9f288 100644 (file)
@@ -456,10 +456,11 @@ seguenti:
   venire usato direttamente da alcuni programmi come \cmd{ping}. A volte ci
   si riferisce ad esso come ICPMv4 per distinguerlo da ICMPv6.
 \item[\textsl{IGMP}] \textit{Internet Group Management Protocol}. É un
-  protocollo di livello 2 usato per il \textit{multicasting} (vedi
-  sez.~\ref{sec:xxx_multicast}).  Permette alle stazioni remote di notificare
-  ai router che supportano questa comunicazione a quale gruppo esse
-  appartengono.  Come ICMP viene implementato direttamente sopra IP.
+  protocollo di livello 2 usato per il \itindex{multicast}
+  \textit{multicast} (vedi sez.~\ref{sec:xxx_multicast}).  Permette
+  alle stazioni remote di notificare ai router che supportano questa
+  comunicazione a quale gruppo esse appartengono.  Come ICMP viene
+  implementato direttamente sopra IP.
 \item[\textsl{ARP}] \textit{Address Resolution Protocol}. È il protocollo che
   mappa un indirizzo IP in un indirizzo hardware sulla rete locale. È usato in
   reti di tipo broadcast come Ethernet, Token Ring o FDDI che hanno associato
@@ -616,7 +617,7 @@ grande pregio della velocit
 presta bene per le applicazioni in cui la connessione non è necessaria, e
 costituirebbe solo un peso in termini di prestazioni, mentre una perdita di
 pacchetti può essere tollerata, ad esempio le applicazioni di streaming e
-quelle che usano il multicasting.
+quelle che usano il \texttt{multicast}.\itindex{multicast}
 
 \subsection{Transport Control Protocol (TCP)}
 \label{sec:net_tcp}
index dcef54c8b7c6a4fec26afecc8d110beb48b34996..a170ba77d298bc155c78225b5ac3372da3c0dc6a 100644 (file)
@@ -360,49 +360,50 @@ momento della ricezione del segnale.
     \hline
     \hline
     \const{SIGHUP}   &PL & A & Hangup o terminazione del processo di 
-                               controllo                                     \\
-    \const{SIGINT}   &PL & A & Interrupt da tastiera (\cmd{C-c})             \\
-    \const{SIGQUIT}  &PL & C & Quit da tastiera (\cmd{C-y})                  \\
-    \const{SIGILL}   &PL & C & Istruzione illecita                           \\
-    \const{SIGABRT}  &PL & C & Segnale di abort da \func{abort}              \\
-    \const{SIGFPE}   &PL & C & Errore aritmetico                             \\
-    \const{SIGKILL}  &PL &AEF& Segnale di terminazione forzata               \\
-    \const{SIGSEGV}  &PL & C & Errore di accesso in memoria                  \\
-    \const{SIGPIPE}  &PL & A & Pipe spezzata                                 \\
-    \const{SIGALRM}  &PL & A & Segnale del timer da \func{alarm}             \\
-    \const{SIGTERM}  &PL & A & Segnale di terminazione \verb|C-\|            \\
-    \const{SIGUSR1}  &PL & A & Segnale utente numero 1                       \\
-    \const{SIGUSR2}  &PL & A & Segnale utente numero 2                       \\
-    \const{SIGCHLD}  &PL & B & Figlio terminato o fermato                    \\
-    \const{SIGCONT}  &PL &   & Continua se fermato                           \\
-    \const{SIGSTOP}  &PL &DEF& Ferma il processo                             \\
-    \const{SIGTSTP}  &PL & D & Pressione del tasto di stop sul terminale     \\
+                               controllo.                                    \\
+    \const{SIGINT}   &PL & A & Interrupt da tastiera (\cmd{C-c}).            \\
+    \const{SIGQUIT}  &PL & C & Quit da tastiera (\cmd{C-y}).                 \\
+    \const{SIGILL}   &PL & C & Istruzione illecita.                          \\
+    \const{SIGABRT}  &PL & C & Segnale di abort da \func{abort}.             \\
+    \const{SIGFPE}   &PL & C & Errore aritmetico.                            \\
+    \const{SIGKILL}  &PL &AEF& Segnale di terminazione forzata.              \\
+    \const{SIGSEGV}  &PL & C & Errore di accesso in memoria.                 \\
+    \const{SIGPIPE}  &PL & A & Pipe spezzata.                                \\
+    \const{SIGALRM}  &PL & A & Segnale del timer da \func{alarm}.            \\
+    \const{SIGTERM}  &PL & A & Segnale di terminazione \texttt{C-\bslash}.   \\
+    \const{SIGUSR1}  &PL & A & Segnale utente numero 1.                      \\
+    \const{SIGUSR2}  &PL & A & Segnale utente numero 2.                      \\
+    \const{SIGCHLD}  &PL & B & Figlio terminato o fermato.                   \\
+    \const{SIGCONT}  &PL &   & Continua se fermato.                          \\
+    \const{SIGSTOP}  &PL &DEF& Ferma il processo.                            \\
+    \const{SIGTSTP}  &PL & D & Pressione del tasto di stop sul terminale.    \\
     \const{SIGTTIN}  &PL & D & Input sul terminale per un processo 
-                               in background                                 \\
+                               in background.                                \\
     \const{SIGTTOU}  &PL & D & Output sul terminale per un processo          
-                               in background                                 \\
-    \const{SIGBUS}   &SL & C & Errore sul bus (bad memory access)            \\
-    \const{SIGPOLL}  &SL & A & \textit{Pollable event} (Sys V).  
-                               Sinonimo di \const{SIGIO}                     \\
-    \const{SIGPROF}  &SL & A & Timer del profiling scaduto                   \\
-    \const{SIGSYS}   &SL & C & Argomento sbagliato per una subroutine (SVID) \\
-    \const{SIGTRAP}  &SL & C & Trappole per un Trace/breakpoint              \\
+                               in background.                                \\
+    \const{SIGBUS}   &SL & C & Errore sul bus (bad memory access).           \\
+    \const{SIGPOLL}  &SL & A & \textit{Pollable event} (Sys V);  
+                               Sinonimo di \const{SIGIO}.                    \\
+    \const{SIGPROF}  &SL & A & Timer del profiling scaduto.                  \\
+    \const{SIGSYS}   &SL & C & Argomento sbagliato per una subroutine (SVID).\\
+    \const{SIGTRAP}  &SL & C & Trappole per un Trace/breakpoint.             \\
     \const{SIGURG}   &SLB& B & Ricezione di una \textit{urgent condition} su 
-                               un socket\index{socket}\\
-    \const{SIGVTALRM}&SLB& A & Virtual alarm clock                           \\
-    \const{SIGXCPU}  &SLB& C & Ecceduto il limite sul CPU time               \\
-    \const{SIGXFSZ}  &SLB& C & Ecceduto il limite sulla dimensione dei file  \\
-    \const{SIGIOT}   &L  & C & IOT trap. Sinonimo di \const{SIGABRT}         \\
+                               un socket\index{socket}\\
+    \const{SIGVTALRM}&SLB& A & Virtual alarm clock.                          \\
+    \const{SIGXCPU}  &SLB& C & Ecceduto il limite sul tempo di CPU.          \\
+    \const{SIGXFSZ}  &SLB& C & Ecceduto il limite sulla dimensione dei file. \\
+    \const{SIGIOT}   &L  & C & IOT trap. Sinonimo di \const{SIGABRT}.        \\
     \const{SIGEMT}   &L  &   &                                               \\
-    \const{SIGSTKFLT}&L  & A & Errore sullo stack del coprocessore           \\
-    \const{SIGIO}    &LB & A & L'I/O è possibile (4.2 BSD)                   \\
-    \const{SIGCLD}   &L  &   & Sinonimo di \const{SIGCHLD}                   \\
-    \const{SIGPWR}   &L  & A & Fallimento dell'alimentazione                 \\
-    \const{SIGINFO}  &L  &   & Sinonimo di \const{SIGPWR}                    \\
-    \const{SIGLOST}  &L  & A & Perso un lock sul file (per NFS)              \\
-    \const{SIGWINCH} &LB & B & Finestra ridimensionata (4.3 BSD, Sun)        \\
+% TODO che roba e` SIGEMT
+    \const{SIGSTKFLT}&L  & A & Errore sullo stack del coprocessore.          \\
+    \const{SIGIO}    &LB & A & L'I/O è possibile (4.2 BSD).                  \\
+    \const{SIGCLD}   &L  &   & Sinonimo di \const{SIGCHLD}.                  \\
+    \const{SIGPWR}   &L  & A & Fallimento dell'alimentazione.                \\
+    \const{SIGINFO}  &L  &   & Sinonimo di \const{SIGPWR}.                   \\
+    \const{SIGLOST}  &L  & A & Perso un lock sul file (per NFS).             \\
+    \const{SIGWINCH} &LB & B & Finestra ridimensionata (4.3 BSD, Sun).       \\
     \const{SIGUNUSED}&L  & A & Segnale inutilizzato (diventerà 
-                               \const{SIGSYS})                               \\
+                               \const{SIGSYS}).                              \\
     \hline
   \end{tabular}
   \caption{Lista dei segnali in Linux.}
@@ -511,14 +512,17 @@ segnali sono:
   \const{SIGKILL} può essere intercettato, ignorato, bloccato. In genere lo si
   usa per chiedere in maniera ``\textsl{educata}'' ad un processo di
   concludersi.
+
 \item[\const{SIGINT}] Il nome sta per \textit{interrupt}. È il segnale di
   interruzione per il programma. È quello che viene generato di default dal
   comando \cmd{kill} o dall'invio sul terminale del carattere di controllo
   INTR (interrupt, generato dalla sequenza \cmd{C-c}).
-\item[\const{SIGQUIT}] È analogo a \const{SIGINT} con la differenza che è
-  controllato da un altro carattere di controllo, QUIT, corrispondente alla
-  sequenza \verb|C-\|. A differenza del precedente l'azione predefinita, oltre
-  alla terminazione del processo, comporta anche la creazione di un
+
+\item[\const{SIGQUIT}] È analogo a \const{SIGINT} con la differenza
+  che è controllato da un altro carattere di controllo, QUIT,
+  corrispondente alla sequenza \texttt{C-\bslash}. A differenza del
+  precedente l'azione predefinita, oltre alla terminazione del
+  processo, comporta anche la creazione di un
   \itindex{core~dump}\textit{core dump}.
 
   In genere lo si può pensare come corrispondente ad una condizione di
@@ -526,7 +530,8 @@ segnali sono:
   fare eseguire al gestore di questo segnale le operazioni di pulizia
   normalmente previste (tipo la cancellazione di file temporanei), dato che in
   certi casi esse possono eliminare informazioni utili nell'esame dei core
-  dump. 
+  dump.\itindex{core~dump}
+
 \item[\const{SIGKILL}] Il nome è utilizzato per terminare in maniera immediata
   qualunque programma. Questo segnale non può essere né intercettato, né
   ignorato, né bloccato, per cui causa comunque la terminazione del processo.
@@ -541,6 +546,7 @@ segnali sono:
   kernel). Talvolta è il sistema stesso che può generare questo segnale quando
   per condizioni particolari il processo non può più essere eseguito neanche
   per eseguire un gestore.
+
 \item[\const{SIGHUP}] Il nome sta per \textit{hang-up}. Segnala che il
   terminale dell'utente si è disconnesso (ad esempio perché si è interrotta la
   rete). Viene usato anche per riportare la terminazione del processo di
@@ -564,9 +570,11 @@ sempre la necessit
 \item[\const{SIGALRM}] Il nome sta per \textit{alarm}. Segnale la scadenza di
   un timer misurato sul tempo reale o sull'orologio di sistema. È normalmente
   usato dalla funzione \func{alarm}.
+
 \item[\const{SIGVTALRM}] Il nome sta per \textit{virtual alarm}. È analogo al
   precedente ma segnala la scadenza di un timer sul tempo di CPU usato dal
   processo. 
+
 \item[\const{SIGPROF}] Il nome sta per \textit{profiling}. Indica la scadenza
   di un timer che misura sia il tempo di CPU speso direttamente dal processo
   che quello che il sistema ha speso per conto di quest'ultimo. In genere
@@ -588,9 +596,11 @@ segnali sono:
   socket\index{socket} e i terminali possono generare questo segnale, in Linux
   questo può essere usato anche per i file, posto che la \func{fcntl} abbia
   avuto successo.
+
 \item[\const{SIGURG}] Questo segnale è inviato quando arrivano dei dati
   urgenti o \textit{out-of-band} su di un socket\index{socket}; per maggiori
   dettagli al proposito si veda sez.~\ref{sec:TCP_urgent_data}.
+
 \item[\const{SIGPOLL}] Questo segnale è equivalente a \const{SIGIO}, è
   definito solo per compatibilità con i sistemi System V.
 \end{basedescript}
@@ -606,8 +616,10 @@ in cui si trattano gli argomenti relativi.  Questi segnali sono:
 \item[\const{SIGCHLD}] Questo è il segnale mandato al processo padre quando un
   figlio termina o viene fermato. L'azione predefinita è di ignorare il
   segnale, la sua gestione è trattata in sez.~\ref{sec:proc_wait}.
+
 \item[\const{SIGCLD}] Per Linux questo è solo un segnale identico al
   precedente, il nome è obsoleto e andrebbe evitato. 
+
 \item[\const{SIGCONT}] Il nome sta per \textit{continue}. Il segnale viene
   usato per fare ripartire un programma precedentemente fermato da
   \const{SIGSTOP}. Questo segnale ha un comportamento speciale, e fa sempre
@@ -625,6 +637,7 @@ in cui si trattano gli argomenti relativi.  Questi segnali sono:
 \item[\const{SIGSTOP}] Il segnale ferma un processo (lo porta cioè in uno
   stato di sleep, vedi sez.~\ref{sec:proc_sched}); il segnale non può essere né
   intercettato, né ignorato, né bloccato.
+
 \item[\const{SIGTSTP}] Il nome sta per \textit{interactive stop}. Il segnale
   ferma il processo interattivamente, ed è generato dal carattere SUSP
   (prodotto dalla combinazione \cmd{C-z}), ed al contrario di
@@ -633,12 +646,14 @@ in cui si trattano gli argomenti relativi.  Questi segnali sono:
   o il terminale in uno stato definito prima di fermarsi; se per esempio un
   programma ha disabilitato l'eco sul terminale può installare un gestore
   per riabilitarlo prima di fermarsi.
+
 \item[\const{SIGTTIN}] Un processo non può leggere dal terminale se esegue una
   sessione di lavoro in \textit{background}. Quando un processo in background
   tenta di leggere da un terminale viene inviato questo segnale a tutti i
   processi della sessione di lavoro. L'azione predefinita è di fermare il
   processo.  L'argomento è trattato in
   sez.~\ref{sec:sess_job_control_overview}.
+
 \item[\const{SIGTTOU}] Segnale analogo al precedente \const{SIGTTIN}, ma
   generato quando si tenta di scrivere o modificare uno dei modi del
   terminale. L'azione predefinita è di fermare il processo, l'argomento è
index 585e3712e22092777a4b6d4420ef063be881524e..8abb56af36ffc510f5e164a8ae03dcf06364a08c 100644 (file)
@@ -2520,32 +2520,37 @@ si pu
 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
-\textit{completely duplicate binding}, quando cioè si vuole eseguire
-\func{bind} su un indirizzo ed una porta che sono già \textsl{legati} ad un
-altro socket.  Questo ovviamente non ha senso per il normale traffico di rete,
-in cui i pacchetti vengono scambiati direttamente fra due applicazioni; ma
-quando un sistema supporta il traffico in multicast, in cui una applicazione
-invia i pacchetti a molte altre (vedi sez.~\ref{sec:multicast_xxx}), allora ha
-senso che su una macchina i pacchetti provenienti dal traffico in multicast
-possano essere ricevuti da più applicazioni\footnote{l'esempio classico di
-  traffico in multicast è quello di uno streaming di dati (audio, video,
-  ecc.), l'uso del multicast consente in tal caso di trasmettere un solo
-  pacchetto, che potrà essere ricevuto da tutti i possibili destinatari
-  (invece di inviarne un duplicato a ciascuno); in questo caso è perfettamente
-  logico aspettarsi che sulla stessa macchina più utenti possano lanciare un
-  programma che permetta loro di ricevere gli stessi dati.} o da diverse
-istanze della stessa applicazione.
+Infine il quarto caso è quello in cui si vuole effettivamente ottenere
+un \textit{completely duplicate binding}, quando cioè si vuole
+eseguire \func{bind} su un indirizzo ed una porta che sono già
+\textsl{legati} ad un altro socket.  Questo ovviamente non ha senso
+per il normale traffico di rete, in cui i pacchetti vengono scambiati
+direttamente fra due applicazioni; ma quando un sistema supporta il
+traffico in \itindex{multicast}\textit{multicast}, in cui una
+applicazione invia i pacchetti a molte altre (vedi
+sez.~\ref{sec:multicast_xxx}), allora ha senso che su una macchina i
+pacchetti provenienti dal traffico in multicast possano essere
+ricevuti da più applicazioni\footnote{l'esempio classico di traffico
+  in multicast è quello di uno streaming di dati (audio, video, ecc.),
+  l'uso del multicast consente in tal caso di trasmettere un solo
+  pacchetto, che potrà essere ricevuto da tutti i possibili
+  destinatari (invece di inviarne un duplicato a ciascuno); in questo
+  caso è perfettamente logico aspettarsi che sulla stessa macchina più
+  utenti possano lanciare un programma che permetta loro di ricevere
+  gli stessi dati.} o da diverse istanze della stessa applicazione.
+\itindex{multicast}
 
 In questo caso utilizzando \const{SO\_REUSEADDR} si consente ad una
-applicazione eseguire \func{bind} sulla stessa porta ed indirizzo usata da
-un'altra, così che anche essa possa ricevere gli stessi pacchetti (chiaramente
-la cosa non ha alcun senso per i socket TCP, ed infatti in questo tipo di
-applicazione è normale l'uso del protovollo UDP). La regola è che quando si
-hanno più applicazioni che hanno eseguito \func{bind} sulla stessa porta, di
-tutti pacchetti destinati ad un indirizzo di broadcast o di multicast viene
-inviata una copia a ciascuna applicazione. Non è definito invece cosa accade
-qualora il pacchetto sia destinato ad un indirizzo normale (unicast).
+applicazione eseguire \func{bind} sulla stessa porta ed indirizzo
+usata da un'altra, così che anche essa possa ricevere gli stessi
+pacchetti (chiaramente la cosa non ha alcun senso per i socket TCP, ed
+infatti in questo tipo di applicazione è normale l'uso del protovollo
+UDP). La regola è che quando si hanno più applicazioni che hanno
+eseguito \func{bind} sulla stessa porta, di tutti pacchetti destinati
+ad un indirizzo di broadcast o di \itindex{multicast}
+\texttt{multicast} viene inviata una copia a ciascuna applicazione.
+Non è definito invece cosa accade qualora il pacchetto sia destinato
+ad un indirizzo normale (unicast).
 
 Essendo questo un caso particolare in alcuni sistemi (come BSD) è stata
 introdotta una opzione ulteriore, \const{SO\_REUSEPORT} che richiede che detta
@@ -2835,12 +2840,14 @@ ottenibile rispettivamente dai campi \var{ipi\_addr} e \var{ipi\_ifindex} di
   L'opzione richiede per \param{optval} un intero usato come valore logico;
   l'opzione non è applicabile a socket di tipo \const{SOCK\_STREAM}.
 
-\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 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\_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 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} per i socket di tipo \const{SOCK\_STREAM}, mentre è
+  diabilitato per tutti gli altri.
 
 \item[\const{IP\_MTU}] Permette di leggere il valore della \textit{Maximum
     Tranfer Unit} di percorso del socket.  L'opzione richiede per
@@ -2848,8 +2855,12 @@ ottenibile rispettivamente dai campi \var{ipi\_addr} e \var{ipi\_ifindex} di
   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\_ROUTER\_ALERT}] Questa è una opzione introdotta con i
+  kernel della serie 2.2.x, ed è specifica di Linux. Prende per
+  \param{optval} un intero usato come valore logico. Se abilitata
+  passa tutti i pacchetti con l'opzione \textit{IP Router Alert} (vedi
+  sez.\ref{sec:IP_options}) che devono essere inoltrati al socket
+  corrente. Può essere usata soltanto per socket di tipo raw.
 
 \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. È
@@ -2859,10 +2870,11 @@ ottenibile rispettivamente dai campi \var{ipi\_addr} e \var{ipi\_ifindex} di
   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
-  sulla stessa macchina da cui li si stanno inviando.  Prende per
-  \param{optval} un intero usato come valore logico. 
+\item[\const{IP\_MULTICAST\_LOOP}] L'opzione consente di decidere se i
+  dati che si inviano su un socket usato con il \itindex{multicast}
+  \texttt{multicast} vengano ricevuti anche sulla stessa macchina da
+  cui li si stanno inviando.  Prende per \param{optval} un intero
+  usato come valore logico.
 
   In generale se si vuole che eventuali client possano ricevere i dati che si
   inviano occorre che questa funzionalità sia abilitata (come avviene di
@@ -2870,15 +2882,17 @@ 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}] 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).  
+\item[\const{IP\_ADD\_MEMBERSHIP}] L'opzione consente di unirsi ad
+  gruppo di \itindex{multicast} \texttt{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
@@ -2895,11 +2909,15 @@ ottenibile rispettivamente dai campi \var{ipi\_addr} e \var{ipi\_ifindex} di
 \end{figure}
 
 
+\item[\const{IP\_DROP\_MEMBERSHIP}] Lascia un gruppo di
+  \itindex{multicast} \texttt{multicast}, prende per \param{optval} la
+  stessa struttura \struct{ip\_mreqn} (o \struct{ip\_mreq}) usata
+  anche per \const{IP\_ADD\_MEMBERSHIP}.
 
-
-\item[\const{IP\_DROP\_MEMBERSHIP}]
-
-\item[\const{IP\_MULTICAST\_IF}] 
+\item[\const{IP\_MULTICAST\_IF}] Imposta l'interfaccia locale per
+  i'utilizzo del multicast, ed utilizza come \param{optval} le stesse
+  strutture \struct{ip\_mreqn} o \struct{ip\_mreq} delle due
+  precedenti opzioni.
 
 
 \end{basedescript}