\item[\const{SO\_DEBUG}] questa opzione abilita il debugging delle operazioni
dei socket; l'opzione utilizza per \param{optval} un intero usato come
valore logico, e può essere utilizzata solo da un processo con i privilegi
- di amministratore (in particolare con la \itindex{capabilities}
- \textit{capability} \const{CAP\_NET\_ADMIN}). L'opzione necessita inoltre
- dell'opportuno supporto nel kernel;\footnote{deve cioè essere definita la
- macro di preprocessore \macro{SOCK\_DEBUGGING} nel file
- \file{include/net/sock.h} dei sorgenti del kernel, questo è sempre vero
- nei kernel delle serie superiori alla 2.3, per i kernel delle serie
- precedenti invece è necessario aggiungere a mano detta definizione; è
- inoltre possibile abilitare anche il tracciamento degli stati del TCP
- definendo la macro \macro{STATE\_TRACE} in \file{include/net/tcp.h}.}
- quando viene abilitata una serie di messaggi con le informazioni di debug
- vengono inviati direttamente al sistema del kernel log.\footnote{si tenga
- presente che il comportamento è diverso da quanto avviene con BSD, dove
- l'opzione opera solo sui socket TCP, causando la scrittura di tutti i
- pacchetti inviati sulla rete su un buffer circolare che viene letto da un
- apposito programma, \cmd{trpt}.}
+ di amministratore (in particolare con la \textit{capability}
+ \const{CAP\_NET\_ADMIN}). L'opzione necessita inoltre dell'opportuno
+ supporto nel kernel;\footnote{deve cioè essere definita la macro di
+ preprocessore \macro{SOCK\_DEBUGGING} nel file \file{include/net/sock.h}
+ dei sorgenti del kernel, questo è sempre vero nei kernel delle serie
+ superiori alla 2.3, per i kernel delle serie precedenti invece è
+ necessario aggiungere a mano detta definizione; è inoltre possibile
+ abilitare anche il tracciamento degli stati del TCP definendo la macro
+ \macro{STATE\_TRACE} in \file{include/net/tcp.h}.} quando viene abilitata
+ una serie di messaggi con le informazioni di debug vengono inviati
+ direttamente al sistema del kernel log.\footnote{si tenga presente che il
+ comportamento è diverso da quanto avviene con BSD, dove l'opzione opera
+ solo sui socket TCP, causando la scrittura di tutti i pacchetti inviati
+ sulla rete su un buffer circolare che viene letto da un apposito
+ programma, \cmd{trpt}.}
\item[\const{SO\_REUSEADDR}] questa opzione permette di eseguire la funzione
\func{bind} su indirizzi locali che siano già in uso da altri socket;
valori del campo \textit{type of service} (noto come TOS, vedi
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 \itindex{capabilities} capability
- \const{CAP\_NET\_ADMIN}.
+ 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
\const{IP\_RECVERR} &$\bullet$&$\bullet$&$\bullet$&\texttt{int}&
Abilita la gestione degli errori.\\
\const{IP\_MTU\_DISCOVER} &$\bullet$&$\bullet$& &\texttt{int}&
- Imposta il Path MTU \itindex{Maximum~Transfer~Unit~(MTU)} Discovery.\\
+ Imposta il \textit{Path MTU Discovery}.\\
\const{IP\_MTU} &$\bullet$& & &\texttt{int}&
Legge il valore attuale della \itindex{Maximum~Transfer~Unit~(MTU)} MTU.\\
\const{IP\_ROUTER\_ALERT} &$\bullet$&$\bullet$&$\bullet$&\texttt{int}&
definizione si veda sez.~\ref{sec:IP_header}) che permette di indicare le
priorità dei pacchetti. Se impostato il valore verrà mantenuto per tutti i
pacchetti del socket; alcuni valori (quelli che aumentano la priorità)
- richiedono i privilegi di amministrazione con la \itindex{capabilities}
- capability \const{CAP\_NET\_ADMIN}.
+ richiedono i privilegi di amministrazione con la capability
+ \const{CAP\_NET\_ADMIN}.
Il campo TOS è di 8 bit e l'opzione richiede per \param{optval} un intero
che ne contenga il valore. Sono definite anche alcune costanti che
come valore logico e non è applicabile a socket di tipo
\const{SOCK\_STREAM}.
-\itindbeg{Maximum~Transfer~Unit~(MTU)}
+\itindbeg{Path~MTU}
\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 della modalità usata per la determinazione della
- \textit{Path Maximum Transfer Unit} (vedi sez.~\ref{sec:net_lim_dim}) del
+ \textit{Path MTU} (vedi sez.~\ref{sec:net_lim_dim}) del
socket. L'opzione prende per \param{optval} un valore intero che indica la
modalità usata, da specificare con una delle costanti riportate in
tab.~\ref{tab:sock_ip_mtu_discover}.
essere perduti, ed è compito dell'applicazione gestirne una eventuale
ritrasmissione.
-\itindend{Maximum~Transfer~Unit~(MTU)}
+\itindend{Path~MTU}
\item[\const{IP\_ROUTER\_ALERT}] Questa è una opzione introdotta con i
kernel della serie 2.2.x, ed è specifica di Linux. Prende per
Si tenga inoltre presente che alcune di queste operazioni (in particolare
quelle che modificano le caratteristiche dell'interfaccia) sono privilegiate e
-richiedono i privilegi di amministratore o la \itindex{capabilities}
-\textit{capability} \const{CAP\_NET\_ADMIN}, altrimenti si otterrà un errore
-di \errval{EPERM}. Le costanti che identificano le operazioni disponibili
-sono le seguenti:
+richiedono i privilegi di amministratore o la \textit{capability}
+\const{CAP\_NET\_ADMIN}, altrimenti si otterrà un errore di \errval{EPERM}.
+Le costanti che identificano le operazioni disponibili sono le seguenti:
\begin{basedescript}{\desclabelwidth{2.7cm}\desclabelstyle{\nextlinelabel}}
\item[\const{SIOCGIFNAME}] questa è l'unica operazione che usa il campo
\var{ifr\_name} per restituire un risultato, tutte le altre lo utilizzano
valore iniziale maggiore di 1024 (o meglio ancora di 4096) per evitare
conflitti con le porte usate dai servizi noti.
-\item[\sysctlrelfile{net/ipv4}{ip\_no\_pmtu\_disc}] permette di
- disabilitare per i socket \const{SOCK\_STREAM} la ricerca automatica della
- \itindex{Maximum~Transfer~Unit~(MTU)} \textit{Path MTU} (vedi
- sez.~\ref{sec:net_lim_dim} e sez.~\ref{sec:sock_ipv4_options}). Prende un
- valore logico, e di default è disabilitato (cioè la ricerca viene eseguita).
+\item[\sysctlrelfile{net/ipv4}{ip\_no\_pmtu\_disc}] permette di disabilitare
+ per i socket \const{SOCK\_STREAM} la ricerca automatica della \textit{Path
+ MTU} (vedi sez.~\ref{sec:net_lim_dim} e
+ sez.~\ref{sec:sock_ipv4_options}). Prende un valore logico, e di default è
+ disabilitato (cioè la ricerca viene eseguita).
In genere si abilita questo parametro quando per qualche motivo il
- procedimento del \itindex{Maximum~Transfer~Unit~(MTU)} \textit{Path MTU
- discovery} fallisce; dato che questo può avvenire a causa di
- router\footnote{ad esempio se si scartano tutti i pacchetti ICMP, il
- problema è affrontato anche in sez.~3.4.4 di \cite{SGL}.} o
- interfacce\footnote{ad esempio se i due capi di un collegamento
- \textit{point-to-point} non si accordano sulla stessa MTU.} mal
- configurati è opportuno correggere le configurazioni, perché disabilitare
- globalmente il procedimento con questo parametro ha pesanti ripercussioni in
- termini di prestazioni di rete.
+ procedimento del \textit{Path MTU discovery} fallisce; dato che questo può
+ avvenire a causa di router\footnote{ad esempio se si scartano tutti i
+ pacchetti ICMP, il problema è affrontato anche in sez.~3.4.4 di
+ \cite{SGL}.} o interfacce\footnote{ad esempio se i due capi di un
+ collegamento \textit{point-to-point} non si accordano sulla stessa MTU.}
+ mal configurati è opportuno correggere le configurazioni, perché
+ disabilitare globalmente il procedimento con questo parametro ha pesanti
+ ripercussioni in termini di prestazioni di rete.
\item[\sysctlrelfile{net/ipv4}{ip\_always\_defrag}] fa si che tutti i
pacchetti IP frammentati siano riassemblati, anche in caso in successivo