Correzioni ortografiche e vocabolario.
[gapil.git] / sockctrl.tex
index a307c197b5f32b11ac4b459e7427d4e1938e9a76..2d5a2c99c1e0017a7c08f943714540a04803994c 100644 (file)
@@ -1,6 +1,6 @@
 %% sockctrl.tex
 %%
-%% Copyright (C) 2004-2005 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2004-2006 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Prefazione",
@@ -2013,7 +2013,8 @@ tab.~\ref{tab:sock_opt_socklevel}.
     \const{SO\_KEEPALIVE}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
                           controlla l'attività della connessione.\\
     \const{SO\_OOBINLINE}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-                          lascia in linea i dati \textit{out-of-band}.\\
+                          lascia in linea i dati \itindex{out-of-band}
+                          \textit{out-of-band}.\\
     \const{SO\_RCVLOWAT} &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
                           basso livello sul buffer di ricezione.\\
     \const{SO\_SNDLOWAT} &$\bullet$&$\bullet$&         &\texttt{int}&
@@ -2085,13 +2086,14 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni:
   forniti in sez.~\ref{sec:sock_options_main}.
 
 \item[\const{SO\_OOBINLINE}] se questa opzione viene abilitata i dati
-  \textit{out-of-band} vengono inviati direttamente nel flusso di dati del
-  socket (e sono quindi letti con una normale \func{read}) invece che restare
-  disponibili solo per l'accesso con l'uso del flag \const{MSG\_OOB} di
-  \func{recvmsg}. L'argomento è trattato in dettaglio in
+  \itindex{out-of-band} \textit{out-of-band} vengono inviati direttamente nel
+  flusso di dati del socket (e sono quindi letti con una normale \func{read})
+  invece che restare disponibili solo per l'accesso con l'uso del flag
+  \const{MSG\_OOB} di \func{recvmsg}. L'argomento è trattato in dettaglio in
   sez.~\ref{sec:TCP_urgent_data}. L'opzione funziona soltanto con socket che
-  supportino i dati \textit{out-of-band} (non ha senso per socket UDP ad
-  esempio), ed utilizza per \param{optval} un intero usato come valore logico.
+  supportino i dati \itindex{out-of-band} \textit{out-of-band} (non ha senso
+  per socket UDP ad esempio), ed utilizza per \param{optval} un intero usato
+  come valore logico.
 
 \item[\const{SO\_RCVLOWAT}] questa opzione imposta il valore che indica il
   numero minimo di byte che devono essere presenti nel buffer di ricezione
@@ -2659,8 +2661,6 @@ specificato in \var{l\_linger}.
 
 
 
-
-
 \subsection{Le opzioni per il protocollo IPv4}
 \label{sec:sock_ipv4_options}
 
@@ -2669,11 +2669,10 @@ socket che usano il protocollo IPv4.\footnote{come per le precedenti opzioni
   generiche una descrizione di esse è disponibile nella settima sezione delle
   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}. 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.
-
+livello da utilizzare è \const{SOL\_IP} (o l'equivalente \const{IPPROTO\_IP});
+si è riportato un elenco di queste 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]
   \centering
@@ -2728,9 +2727,9 @@ tutte le altre costanti ad esse collegate sono definite in
   \label{tab:sock_opt_iplevel}
 \end{table}
 
-Le descrizioni di tab.~\ref{tab:sock_opt_iplevel} sono estremamente succinte,
-una maggiore quantità di dettagli su queste opzioni è fornito nel seguente
-elenco:
+Le descrizioni riportate in tab.~\ref{tab:sock_opt_iplevel} sono estremamente
+succinte, una maggiore quantità di dettagli sulle varie opzioni è fornita nel
+seguente elenco:
 \begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}}
 
 
@@ -2988,6 +2987,152 @@ sez.~\ref{sec:net_sendmsg}).
 
 
 
+\subsection{Le opzioni per i protocolli TCP e UDP}
+\label{sec:sock_tcp_udp_options}
+
+In questa sezione tratteremo le varie opzioni disponibili per i socket che
+usano i due principali protocolli di comunicazione del livello di trasporto;
+UDP e TCP.\footnote{come per le precedenti, una descrizione di queste opzioni
+  è disponibile nella settima sezione delle pagine di manuale, che si può
+  consultare rispettivamente con \texttt{man 7 tcp} e \texttt{man 7 udp}; le
+  pagine di manuale però, alla stesura di questa sezione (Agosto 2006) sono
+  alquanto incomplete.}  Dato che questi protocolli sono entrambi trasportati
+su IP, oltre alle opzioni generiche di sez.~\ref{sec:sock_generic_options}
+saranno comunque disponibili anche le precedenti opzioni di
+sez.~\ref{sec:sock_ipv4_options}.\footnote{in realtà in
+  sez.~\ref{sec:sock_ipv4_options} si sono riportate le opzioni per IPv4, ma
+  quelle per TCP e UDP sono le stesse anche quando si usa IPv6.}
+
+
+Il protocollo che supporta il maggior numero di opzioni è TCP; per poterle
+utilizzare occorre specificare \const{SOL\_TCP} (o l'equivalente
+\const{IPPROTO\_TCP}) come valore per l'argomento \param{level}. Si è
+riportato un elenco di queste opzioni in tab.~\ref{tab:sock_opt_tcp}.  Le
+costanti indicanti le opzioni del protocollo TCP e tutte le altre costanti ad
+esse collegate sono definite in \file{netinet/tcp.h}, ed accessibili
+includendo detto file.\footnote{in realtà questo è il file usato dalle
+  librerie; la definizione delle opzioni effettivamente supportate da Linux si
+  trova nel file \texttt{linux/tcp.h}, dal quale si sono estratte le costanti
+  di tab.~\ref{tab:sock_opt_tcplevel}.}
+
+\begin{table}[!htb]
+  \centering
+  \footnotesize
+  \begin{tabular}[c]{|l|c|c|c|l|l|}
+    \hline
+    \textbf{Opzione}&\texttt{get}&\texttt{set}&\textbf{flag}&\textbf{Tipo}&
+                    \textbf{Descrizione}\\
+    \hline
+    \hline
+    \const{TCP\_NODELAY}      &$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+    \const{TCP\_MAXSEG}       &$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+    \const{TCP\_CORK}         &$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+    \const{TCP\_KEEPIDLE}     &$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+    \const{TCP\_KEEPINTVL}    &$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+    \const{TCP\_KEEPCNT}      &$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+    \const{TCP\_SYNCNT}       &$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+    \const{TCP\_LINGER2}      &$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+    \const{TCP\_DEFER\_ACCEPT}&$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+    \const{TCP\_WINDOW\_CLAMP}&$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+    \const{TCP\_INFO}         &$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+    \const{TCP\_QUICKACK}     &$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+    \const{TCP\_CONGESTION}   &$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+   \hline
+  \end{tabular}
+  \caption{Le opzioni per i socket TCP disponibili al livello
+    \const{SOL\_TCP}.}
+  \label{tab:sock_opt_tcplevel}
+\end{table}
+
+Le descrizioni di tab.~\ref{tab:sock_opt_tcplevel} sono estremamente
+sintetiche, una maggiore quantità di dettagli su queste opzioni è fornita nel
+seguente elenco:
+\begin{basedescript}{\desclabelwidth{3.0cm}\desclabelstyle{\nextlinelabel}}
+
+\item[\const{TCP\_NODELAY}] 
+
+\item[\const{TCP\_MAXSEG}] 
+
+\item[\const{TCP\_CORK}] 
+
+\item[\const{TCP\_KEEPINTVL}] 
+
+\item[\const{TCP\_KEEPCNT}] 
+
+\item[\const{TCP\_SYNCNT}] 
+
+\item[\const{TCP\_LINGER2}] 
+
+\item[\const{TCP\_DEFER\_ACCEPT}] 
+
+\item[\const{TCP\_WINDOW\_CLAMP}] 
+
+\item[\const{TCP\_INFO}] 
+
+\item[\const{TCP\_QUICKACK}] 
+
+\item[\const{TCP\_CONGESTION}] Introdotta con il kernel 2.6.13.
+
+\end{basedescript}
+
+
+Il protocollo UDP, anche per la sua maggiore semplicità, supporta un numero
+ridotto di opzioni, riportate in tab.~\ref{tab:sock_opt_udp}; anche in questo
+caso per poterle utilizzare occorrerà impostare l'opportuno valore per
+l'argomento \param{level}, che è \const{SOL\_UDP} (o l'equivalente
+\const{IPPROTO\_UDP}).  Le costanti che identificano dette opzioni sono
+definite in \file{netinet/udp.h}, ed accessibili includendo detto
+file.\footnote{come per TCP, la definizione delle opzioni effettivamente
+  supportate dal kernel si trova in realtà nel file \texttt{linux/udp.h}, dal
+  quale si sono estratte le costanti di tab.~\ref{tab:sock_opt_udplevel}.}
+
+\begin{table}[!htb]
+  \centering
+  \footnotesize
+  \begin{tabular}[c]{|l|c|c|c|l|l|}
+    \hline
+    \textbf{Opzione}&\texttt{get}&\texttt{set}&\textbf{flag}&\textbf{Tipo}&
+                    \textbf{Descrizione}\\
+    \hline
+    \hline
+    \const{UDP\_CORK}  &$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+    \const{UDP\_ENCAP} &$\bullet$&$\bullet$&&\texttt{}& %??? 
+      .\\
+   \hline
+  \end{tabular}
+  \caption{Le opzioni per i socket UDP disponibili al livello
+    \const{SOL\_UDP}.}
+  \label{tab:sock_opt_udplevel}
+\end{table}
+
+Ancora una volta le descrizioni contenute tab.~\ref{tab:sock_opt_udplevel}
+sono un semplice riferimento, una maggiore quantità di dettagli sulle
+caratteristiche delle opzioni citate è quello dell'elenco seguente:
+\begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}}
+
+\item[\const{UDP\_CORK}] Introdotta con il kernel 2.5.44
+
+\item[\const{UDP\_ENCAP}] Introdotta con il kernel 2.5.67.
+
+\end{basedescript}
+
+
+
+
 \section{La gestione attraverso le funzioni di controllo}
 \label{sec:sock_ctrl_func}
 
@@ -3032,11 +3177,12 @@ identificano le operazioni sono le seguenti:
 \item[\const{SIOCSPGRP}] imposta il processo o il \itindex{process~group}
   \textit{process group} a cui inviare i segnali \const{SIGIO} e
   \const{SIGURG} quando viene completata una operazione di I/O asincrono o
-  arrivano dei dati urgenti. Il terzo argomento deve essere un puntatore ad una
-  variabile di tipo \type{pid\_t}; un valore positivo indica direttamente il
-  \acr{pid} del processo, mentre un valore negativo indica (col valore
-  assoluto) il \textit{process group}. Senza privilegi di amministratore o la
-  capability \const{CAP\_KILL} si può impostare solo se stessi o il proprio
+  arrivano dei dati urgenti \itindex{out-of-band} (\texttt{out-of-band}). Il
+  terzo argomento deve essere un puntatore ad una variabile di tipo
+  \type{pid\_t}; un valore positivo indica direttamente il \acr{pid} del
+  processo, mentre un valore negativo indica (col valore assoluto) il
+  \textit{process group}. Senza privilegi di amministratore o la capability
+  \const{CAP\_KILL} si può impostare solo se stessi o il proprio
   \textit{process group}.
 
 \item[\const{SIOCGPGRP}] legge le impostazioni presenti sul socket
@@ -3064,20 +3210,63 @@ processo che riceve i segnali) che si effettuano chiamando \func{ioctl} con
 \const{SIOCGPGRP} e \const{SIOCSPGRP}.
 
 
-
-
-\subsection{L'uso di \func{ioctl} per i socket IP}
+\subsection{L'uso di \func{ioctl} per i socket TCP e UDP}
 \label{sec:sock_ioctl_IP}
 
-Oltre alle caratteristiche che si possono impostare per i socket generici, ci
-sono operazioni specifiche valide per i socket IP, e per gli altri
-protocolli. 
-
-
-\subsection{L'uso di \func{ioctl} per i socket TCP e UDP}
-\label{sec:sock_ioctl_TCP_UDP}
+Oltre alle caratteristiche che si possono impostare per i socket generici, la
+funzione \func{ioctl} consente di effettuare alcune operazioni specifiche per
+i socket UDP e TCP. Non esistono operazioni specifiche per i socket IP
+generici, mentre per i pacchetti di altri protocolli trasportati su IP,
+qualora li si gestisca attraverso dei socket, si dovrà fare riferimento
+direttamente all'eventuale supporto presente per il tipo di socket usato (ad
+esempio si possono ricevere pacchetti ICMP con socket di tipo \texttt{raw},
+nel qual caso si dovrà fare riferimento alle operazioni di quest'ultimo).
+
+Le operazioni di controllo disponibili per i socket TCP, come illustrate dalla
+relativa pagina di manuale, accessibile con \texttt{man 7 tcp}, prevedono come
+possibile valore per il secondo argomento della funzione le costanti
+illustrate nell'elenco seguente; il terzo argomento della funzione, gestito
+come \itindex{value~result~argument} \textit{value result argument}, deve
+essere sempre il puntatore ad una variabile di tipo \ctyp{int}:
+\begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}}
+\item[\const{SIOCINQ}] restituisce la quantità di dati non ancora letti
+  presenti nel buffer di ricezione; il socket non deve essere in stato
+  \texttt{LISTEN}, altrimenti si avrà un errore di \errval{EINVAL}.
+\item[\const{SIOCATMARK}] ritorna un intero non nullo, da intendere come
+  valore logico, se il flusso di dati letti sul socket è arrivato sulla
+  posizione (detta anche \textit{urgent mark}) in cui sono stati ricevuti
+  \itindex{out-of-band} dati urgenti (vedi sez.~\ref{sec:TCP_urgent_data}).
+  Una operazione di lettura da un socket non attraversa mai questa posizione,
+  per cui è possibile controllare se la si è raggiunta o meno con questa
+  operazione.
+
+  Questo è utile quando si attiva l'opzione \const{SO\_OOBINLINE} (vedi
+  sez.~\ref{sec:sock_generic_options}) per ricevere i dati urgenti all'interno
+  del flusso dei dati ordinari del socket;\footnote{vedremo in
+    sez.~\ref{sec:TCP_urgent_data} che in genere i dati urgenti presenti su un
+    socket si leggono \textit{out-of-band} usando un opportuno flag per
+    \func{recvmsg}.}  in tal caso quando \const{SIOCATMARK} restituisce un
+  valore non nullo si saprà che la successiva lettura dal socket restituirà i
+  dati urgenti e non il normale traffico; torneremo su questo in maggior
+  dettaglio in sez.~\ref{sec:TCP_urgent_data}.
+
+\item[\const{SIOCOUTQ}] restituisce la quantità di dati non ancora inviati
+  presenti nel buffer di spedizione; come per \const{SIOCINQ} il socket non
+  deve essere in stato \texttt{LISTEN}, altrimenti si avrà un errore di
+  \errval{EINVAL}.
+\end{basedescript}
 
 
+Le operazioni di controllo disponibili per i socket UDP, come illustrate dalla
+relativa pagina di manuale, accessibile con \texttt{man 7 udp}, sono quelle
+indicate nelle costanti del seguente elenco; come per i socket TCP il terzo
+argomento viene gestito come \itindex{value~result~argument} \textit{value
+  result argument} e deve essere un puntatore ad una variabile di tipo
+\ctyp{int}:
+\begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}}
+\item[\const{FIONREAD}] 
+\item[\const{TIOCOUTQ}] 
+\end{basedescript}
 
 
 
@@ -3092,7 +3281,6 @@ funzionalit
 \texttt{/proc}, le tratteremo attraverso i file presenti in quest'ultimo.
 
 
-
 \subsection{L'uso di \func{sysctl} e \texttt{/proc} per le proprietà della
   rete}
 \label{sec:sock_sysctl}
@@ -3133,7 +3321,7 @@ sottonodi di quest'ultima sono mappati come file e directory sotto
 \texttt{/proc/sys/}, non è vero il contrario, ed in particolare Linux consente
 di impostare alcuni parametri o leggere lo stato della rete a livello di
 sistema sotto \texttt{/proc/net}, dove sono presenti dei file che non
-corrispondono a nessun nodi di \func{sysctl}.
+corrispondono a nessun nodo di \func{sysctl}.
 
 
 
@@ -3145,7 +3333,7 @@ corrispondenti ai parametri generici validi per tutti i socket. Quelli
 descritti anche nella pagina di manuale, accessibile con \texttt{man 7 socket}
 sono i seguenti:
 
-\begin{basedescript}{\desclabelwidth{3.2cm}\desclabelstyle{\nextlinelabel}}
+\begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}}
 \item[\texttt{rmem\_default}] imposta la dimensione di default del buffer di
   lettura (cioè per i dati in ingresso) dei socket.
 \item[\texttt{rmem\_max}] imposta la dimensione massima che si può assegnare al
@@ -3156,46 +3344,82 @@ sono i seguenti:
 \item[\texttt{wmem\_max}] imposta la dimensione massima che si può assegnare al
   buffer di uscita dei socket attraverso l'uso dell'opzione
   \const{SO\_SNDBUF}.
-\item[\texttt{message\_cost}, \texttt{message\_burst}] impostano i valori
-  delle impostazioni del \itindex{bucket~filter} \textit{bucket filter}
-  (rispettivamente flusso a regime e dimensione di picchi di emissione) che
-  limita l'ammontare dei messaggi di avvertimento inviati dal kernel a causa
-  di eventi esterni sulla rete.
-% TODO: spiegare il bucket filter e questa opzione
+\item[\texttt{message\_cost}, \texttt{message\_burst}] contengono le
+  impostazioni del \itindex{bucket~filter} \textit{bucket filter} che
+  controlla l'emissione di messaggi di avviso da parte kernel per eventi
+  relativi a problemi sulla rete, imponendo un limite che consente di
+  prevenire eventuali attacchi di \itindex{Denial~of~Service~(DoS)}
+  \textit{Denial of Service} usando i log.\footnote{senza questo limite un
+    attaccante potrebbe inviare ad arte un traffico che generi
+    intenzionalmente messaggi di errore, per saturare il sistema dei log.}
+
+  Il \itindex{bucket~filter} \textit{bucket filter} è un algoritmo generico
+  che permette di impostare dei limiti di flusso su una quantità\footnote{uno
+    analogo viene usato nel \index{netfilter} \textit{netfilter} per imporre
+    dei limiti sul flusso dei pacchetti.}  senza dovere eseguire medie
+  temporali, che verrebbero a dipendere in misura non controllabile dalla
+  dimensione dell'intervallo su cui si media e dalla distribuzione degli
+  eventi;\footnote{in caso di un picco di flusso (il cosiddetto
+    \textit{burst}) il flusso medio verrebbe a dipendere in maniera esclusiva
+    dalla dimensione dell'intervallo di tempo su cui calcola la media.} in
+  questo caso si definisce la dimensione di un ``\textsl{bidone}'' (il
+  \textit{bucket}) e del flusso che da esso può uscire, la presenza di una
+  dimensione iniziale consente di assorbire eventuali picchi di emissione,
+  l'aver fissato un flusso di uscita garantisce che a regime questo sarà il
+  valore medio del flusso ottenibile dal \textit{bucket}.
+
+  I due valori indicano rispettivamente il flusso a regime (non sarà inviato
+  più di un messaggio per il numero di secondi specificato da
+  \texttt{message\_cost}) e la dimensione iniziale per in caso di picco di
+  emissione (verranno accettati inizialmente fino ad un massimo di
+  \texttt{message\_cost/message\_burst} messaggi).
+
 \item[\texttt{netdev\_max\_backlog}] numero massimo di pacchetti che possono
   essere contenuti nella coda di ingresso generale.
+
 \item[\texttt{optmem\_max}] lunghezza massima dei dati ancillari e di
   controllo (vedi sez.~\ref{sec:net_ancillary_data}).
 \end{basedescript}
 
-Oltre a questi si trovano alcuni ulteriori file, la cui documentazione si
-trova nel file ...
+Oltre a questi nella directory \texttt{/proc/sys/net/core} si trovano altri
+file, la cui documentazione dovrebbe essere mantenuta nei sorgenti del kernel,
+nel file \texttt{Documentation/networking/ip-sysctl.txt}; la maggior parte di
+questi però non è documentato:
+\begin{basedescript}{\desclabelwidth{3.0cm}\desclabelstyle{\nextlinelabel}}
+\item[\texttt{dev\_weight}] blocco di lavoro (\textit{work quantum}) dello
+  scheduler di processo dei pacchetti. % TODO da documentare meglio
 
-\begin{basedescript}{\desclabelwidth{3.2cm}\desclabelstyle{\nextlinelabel}}
-\item[\texttt{dev\_weight}]
+\item[\texttt{lo\_cong}] valore per l'occupazione della coda di ricezione
+  sotto la quale si considera di avere una bassa congestione.
 
-\item[\texttt{lo\_cong}]
+\item[\texttt{mod\_cong}] valore per l'occupazione della coda di ricezione
+  sotto la quale si considera di avere una congestione moderata.
 
-\item[\texttt{mod\_cong}]
+\item[\texttt{no\_cong}] valore per l'occupazione della coda di ricezione
+  sotto la quale si si considera di non avere congestione.
 
-\item[\texttt{no\_cong}]
+\item[\texttt{no\_cong\_thresh}] valore minimo (\textit{low water mark}) per
+  il riavvio dei dispositivi congestionati.
 
-\item[\texttt{no\_cong\_thresh}]
+%\item[\texttt{netdev\_fastroute}] è presente soltanto quando si è compilato il
+%  kernel con l'apposita opzione di ottimizzazione per l'uso come router (.
 
-\item[\texttt{somaxconn}]
+\item[\texttt{somaxconn}] imposta la dimensione massima del \textit{backlog}
+  della funzione \func{listen} (vedi sez.~\ref{sec:TCP_func_listen}), e
+  corrisponde al valore della costante \const{SOMAXCONN}; il suo valore di
+  default è 128.
 
 \end{basedescript}
 
 
 \subsection{I valori di controllo per il protocollo IPv4}
-\label{sec:sock_gen_sysctl}
+\label{sec:sock_ipv4_sysctl}
 
 Nella directory \texttt{/proc/sys/net/ipv4} sono presenti i file che
 corrispondono ai parametri dei socket che usano il protocollo IPv4, relativi
 quindi sia alle caratteristiche di IP, che a quelle degli altri protocolli che
-vengono usati all'interno di quest'ultimo (come ICMP, TCP e UDP).  Nella
-stessa directory sono presenti altri file che consentono anche di gestire le
-altre funzionalità generiche dei vari protocolli.
+vengono usati all'interno di quest'ultimo (come ICMP, TCP e UDP) o a fianco
+dello stesso (come ARP).
 
 I file che consentono di controllare le caratteristiche specifiche del
 protocollo IP in quanto tale, descritti anche nella pagina di manuale
@@ -3204,12 +3428,12 @@ accessibile con \texttt{man 7 ip}, sono i seguenti:
 
 \item[\texttt{ip\_default\_ttl}] imposta il valore di default per il campo TTL
   (vedi sez.~\ref{sec:IP_header}) di tutti i pacchetti uscenti. Il valore può
-  essere modificato per il singolo socket con l'opzione
-  \const{IP\_TTL}. Prende un valore intero.
+  essere modificato per il singolo socket con l'opzione \const{IP\_TTL}.
+  Prende un valore intero.
 
 \item[\texttt{ip\_forward}] abilita l'inoltro dei pacchetti da una interfaccia
-  ad un altra, e può essere impostato anche per la singola
-  interfaccia. Prende un valore logico (0 disabilita, diverso da zero abilita).
+  ad un altra, e può essere impostato anche per la singola interfaccia. Prende
+  un valore logico (0 disabilita, diverso da zero abilita).
 
 \item[\texttt{ip\_dynaddr}] Abilita la riscrittura automatica degli indirizzi
   associati ad un socket quando una interfaccia cambia indirizzo. Viene usato
@@ -3218,7 +3442,8 @@ accessibile con \texttt{man 7 ip}, sono i seguenti:
   valore nullo disabilita la funzionalità, con 1 la si abilita, con 2 la si
   abilità in modalità \textsl{prolissa}.
 
-\item[\texttt{ip\_autoconfig}] non documentato
+\item[\texttt{ip\_autoconfig}] Specifica se l'indirizzo IP è stato configurato
+  automaticamente via DHCP, BOOTP o RARP.
 
 \item[\texttt{ip\_local\_port\_range}] imposta l'intervallo dei valori usati
   per l'assegnazione delle porte effimere, permette cioè di modificare i
@@ -3250,15 +3475,21 @@ accessibile con \texttt{man 7 ip}, sono i seguenti:
     di compilazione del kernel con l'opzione
     \texttt{CONFIG\_IP\_ALWAYS\_DEFRAG}.}
 
-\item[\texttt{neigh/*}] La directory contiene i valori 
+\item[\texttt{ip\_nonlocal\_bind}] se abilitato (prende un intero come valore
+  logico) è possibile che una applicazione possa collegarsi (con \func{bind}
+  su un indirizzo non locale. Questo può risultare utile per applicazioni
+  particolari (come gli \textit{sniffer}) che hanno la necessità di ricevere
+  pacchetti anche non diretti agli indirizzi presenti sulla macchina, ad
+  esempio per intercettare il traffico per uno specifico indirizzo che si
+  vuole tenere sotto controllo.
 
+% \item[\texttt{neigh/*}] La directory contiene i valori 
+% TODO trattare neigh/* nella parte su arp, da capire dove sarà.
 
 \end{basedescript}
 
 
 
-I parametri specifici 
-
 
 % LocalWords:  socket sez dotted decimal resolver Domain Name Service cap DNS
 % LocalWords:  client fig LDAP Lightweight Access Protocol NIS Information Sun
@@ -3319,4 +3550,8 @@ I parametri specifici
 %%% mode: latex
 %%% TeX-master: "gapil"
 %%% End: 
-% LocalWords:  quest'ultime neigh dev weight cong mod somaxconn
+% LocalWords:  quest'ultime neigh dev weight cong mod somaxconn Di SIOCINQ DoS
+% LocalWords:  Documentation SIOCATMARK SIOCOUTQ FIONREAD TIOCOUTQ Denial work
+% LocalWords:  netfilter scheduler mark ARP DHCP BOOTP RARP nonlocal sniffer
+% LocalWords:  linux NODELAY MAXSEG CORK KEEPIDLE KEEPINTVL KEEPCNT SYNCNT INFO
+% LocalWords:  DEFER ACCEPT WINDOW CLAMP QUICKACK CONGESTION ENCAP urgent