Varie correzioni da Fabio Rossi, e relative aggiunte nei ringrazimenti per
[gapil.git] / sockctrl.tex
index 87dca619d0fa1875bae7456e23ff12a493c834eb..88804386e2fa9daddd6a4d80a249308011330076 100644 (file)
@@ -40,7 +40,7 @@ La risoluzione dei nomi 
 internet invece che per numero IP attraverso il relativo \textsl{nome a
   dominio}.\footnote{non staremo ad entrare nei dettagli della definizione di
   cosa è un nome a dominio, dandolo per noto, una introduzione alla
 internet invece che per numero IP attraverso il relativo \textsl{nome a
   dominio}.\footnote{non staremo ad entrare nei dettagli della definizione di
   cosa è un nome a dominio, dandolo per noto, una introduzione alla
-  problematica si trova in \cite{AGL} (cap. 9) mentre per una trattazione
+  problematica si trova in \cite{AGL} (cap.~9) mentre per una trattazione
   approfondita di tutte le problematiche relative al DNS si può fare
   riferimento a \cite{DNSbind}.} In realtà per DNS si intendono spesso i
 server che forniscono su internet questo servizio, mentre nel nostro caso
   approfondita di tutte le problematiche relative al DNS si può fare
   riferimento a \cite{DNSbind}.} In realtà per DNS si intendono spesso i
 server che forniscono su internet questo servizio, mentre nel nostro caso
@@ -147,7 +147,7 @@ tab.~\ref{tab:sys_NSS_classes}.
                        (\acr{uid}, ecc.).\\  
     \texttt{group}    & corrispondenze fra nome del gruppo e proprietà dello 
                         stesso.\\  
                        (\acr{uid}, ecc.).\\  
     \texttt{group}    & corrispondenze fra nome del gruppo e proprietà dello 
                         stesso.\\  
-    \texttt{aliases}  & alias per la posta elettronica\\ 
+    \texttt{aliases}  & alias per la posta elettronica.\\ 
     \texttt{ethers}   & corrispondenze fra numero IP e MAC address della
                         scheda di rete.\\ 
     \texttt{hosts}    & corrispondenze fra nome a dominio e numero IP.\\ 
     \texttt{ethers}   & corrispondenze fra numero IP e MAC address della
                         scheda di rete.\\ 
     \texttt{hosts}    & corrispondenze fra nome a dominio e numero IP.\\ 
@@ -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,131 @@ 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}, il valore di default usato da
+  Linux è \const{IPTOS\_LOWDELAY}, ma esso può essere modificato con le
+  funzionalità del cosiddetto \textit{Advanced Routing}. 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. Essa permette di usufruire di un
+  meccanismo affidabile per ottenere un maggior numero di informazioni in caso
+  di errori. Se l'opzione è abilitata tutti gli errori generati su un socket
+  vengono memorizzati su una coda, dalla quale poi possono essere letti con
+  \func{recvmsg} (torneremo su questo in sez.~\ref{sec:TCP_ancillary_data}).
+  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 usante nella determinazione della \textit{Maximum
+    Tranfer Unit} (vedi sez.~\ref{sec:net_lim_dim}) per il socket.
+
+\item[\const{IP\_MTU}] Permette di leggere il valore della \textit{Maximum
+    Tranfer Unit} di percorso 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 +2866,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}
@@ -2827,10 +2916,11 @@ specifico quando la si impiega su file descriptor associati a dei socket.
 Come ultimo argomento di questa sezione tratteremo l'uso della funzione
 \func{sysctl} (che è stata introdotta nelle sue funzionalità generiche in
 sez.~\ref{sec:sys_sysctl}) per quanto riguarda le sue capacità di effettuare
 Come ultimo argomento di questa sezione tratteremo l'uso della funzione
 \func{sysctl} (che è stata introdotta nelle sue funzionalità generiche in
 sez.~\ref{sec:sys_sysctl}) per quanto riguarda le sue capacità di effettuare
-impostazioni relative a proprietà generali dei socket (di tutti quelli di un
-certo tipo o di tutti quelli che usano un certo protocollo) rispetto alle
-funzioni viste finora che consentono di controllare quelle di un singolo
-socket. 
+impostazioni relative alle proprietà dei socket. La differenza nell'uso di
+\func{sysctl} rispetto alle funzioni viste finora è che esse consentono di
+controllare le proprietà di un singolo socket, mentre con \func{sysctl} si
+impostano proprietà (o valori di default) validi a livello dell'intero
+sistema.
 
 Le opzioni disponibili per le proprietà della rete sono riportate nella
 gerarchia dei valori impostabili con \func{sysctl}, sotto il nodo
 
 Le opzioni disponibili per le proprietà della rete sono riportate nella
 gerarchia dei valori impostabili con \func{sysctl}, sotto il nodo
@@ -2838,7 +2928,8 @@ gerarchia dei valori impostabili con \func{sysctl}, sotto il nodo
 \texttt{/proc}, sotto \texttt{/proc/sys/net}. In genere sotto questa directory
 compaiono le sottodirectory (corrispondenti ad altrettanti sottonodi per
 \func{sysctl}) relative ai vari protocolli e tipi di interfacce su cui è
 \texttt{/proc}, sotto \texttt{/proc/sys/net}. In genere sotto questa directory
 compaiono le sottodirectory (corrispondenti ad altrettanti sottonodi per
 \func{sysctl}) relative ai vari protocolli e tipi di interfacce su cui è
-possibile intervenire; un contenuto tipico è il seguente:
+possibile intervenire per effettuare impostazioni; un contenuto tipico di
+questa directory è il seguente:
 \begin{verbatim}
 /proc/sys/net/
 |-- core
 \begin{verbatim}
 /proc/sys/net/
 |-- core
@@ -2849,11 +2940,13 @@ possibile intervenire; un contenuto tipico 
 |-- token-ring
 `-- unix
 \end{verbatim}
 |-- token-ring
 `-- unix
 \end{verbatim}
+e sono presenti varie centinaia di diversi parametri; nel nostro caso ci
+limiteremo a vedere quelli più significativi.
 
 
-
-Nella directory \texttt{/proc/sys/net/core} sono disponibili le opzioni
-generiche dei socket, descritte anche nella rispettiva pagina di
-manuale.\footnote{quella accessibile con \texttt{man 7 socket}.} Queste sono:
+Nella directory \texttt{/proc/sys/net/core} sono disponibili i parametri
+generici validi per tutti i socket, quelli descritti anche nella rispettiva
+pagina di manuale.\footnote{quella accessibile con \texttt{man 7 socket}.}
+I principali sono:
 
 \begin{basedescript}{\desclabelwidth{3cm}\desclabelstyle{\nextlinelabel}}
 \item[\texttt{rmem\_default}] imposta la dimensione di default del buffer di
 
 \begin{basedescript}{\desclabelwidth{3cm}\desclabelstyle{\nextlinelabel}}
 \item[\texttt{rmem\_default}] imposta la dimensione di default del buffer di
@@ -2872,6 +2965,17 @@ manuale.\footnote{quella accessibile con \texttt{man 7 socket}.} Queste sono:
 \item[\texttt{optmem\_max}] 
 \end{basedescript}
 
 \item[\texttt{optmem\_max}] 
 \end{basedescript}
 
+Nella directory \texttt{/proc/sys/net/ipv4} sono disponibili i parametri per i
+socket IPv4, descritti anche nella rispettiva pagina di
+manuale.\footnote{quella accessibile con \texttt{man 7 ip}.} I principali
+sono:
+\begin{basedescript}{\desclabelwidth{3cm}\desclabelstyle{\nextlinelabel}}
+\item[\texttt{ip\_no\_pmtu\_disc}] imposta la discliplina di ricerca della
+  \textit{Path MTU} (vedi sez.~\ref{sec:net_lim_dim} e
+  sez.~\ref{sec:sock_ipv4_options}).
+\end{basedescript}
+
+
 
 %%% Local Variables: 
 %%% mode: latex
 
 %%% Local Variables: 
 %%% mode: latex