usualmente utilizzata per ricevere il codice di errore, come accennato in
sez.~\ref{sec:TCP_sock_select}, quando si sta osservando il socket con una
\func{select} che ritorna a causa dello stesso.
-\end{basedescript}
+
+\item[\const{SO\_ATTACH\_FILTER}] questa opzione permette di agganciare ad un
+ socket un filtro di pacchetti che consente di selezionare quali pacchetti,
+ fra tutti quelli ricevuti, verranno letti. Viene usato pincipalmente con i
+ socket di tipo \const{PF\_PACKET} con la libreria \texttt{libpcap} per
+ implementare programmi di cattura dei pacchetti, torneremo su questo in
+ sez.~\ref{sec:packet_socket}.
+
+\item[\const{SO\_DETACH\_FILTER}] consente di distaccare un filtro
+ precedentemente aggiunto ad un socket.
% TODO documentare SO_ATTACH_FILTER e SO_DETACH_FILTER
+% riferimenti http://www.rcpt.to/lsfcc/lsf.html
+% Documentation/networking/filter.txt
+
+
+\end{basedescript}
\subsection{L'uso delle principali opzioni dei socket}
ricerca è disabilitata ed è responsabilità del programma creare pacchetti di
dimensioni appropriate e ritrasmettere eventuali pacchetti persi. Se
l'opzione viene abilitata, il kernel si incaricherà di tenere traccia
- automaticamente della \textit{Path MTU} verso ciascuna destinazione, e
- rifiuterà immediatamente la trasmissione di pacchetti di dimensioni maggiori
- della MTU con un errore di \errval{EMSGSIZE}.\footnote{in caso contrario la
- trasmissione del pacchetto sarebbe effettuata, ottenendo o un fallimento
- successivo della trasmissione, o la frammentazione dello stesso.}
+ automaticamente della \itindex{Maximum~Transfer~Unit} \textit{Path MTU}
+ verso ciascuna destinazione, e rifiuterà immediatamente la trasmissione di
+ pacchetti di dimensioni maggiori della MTU con un errore di
+ \errval{EMSGSIZE}.\footnote{in caso contrario la trasmissione del pacchetto
+ sarebbe effettuata, ottenendo o un fallimento successivo della
+ trasmissione, o la frammentazione dello stesso.}
\item[\const{IP\_MTU}] Permette di leggere il valore della \textit{Path MTU}
di percorso del socket. L'opzione richiede per \param{optval} un intero che
quanto in caso di problemi di routing si allunga inutilmente il numero di
ritrasmissioni.
-
\item[\procrelfile{/proc/sys/net/ipv4}{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
automatica degli indirizzi associati ad un socket quando una interfaccia
cambia indirizzo. Viene usato per le interfacce usate nei collegamenti in
dial-up, il cui indirizzo IP viene assegnato dinamicamente dal provider, e
- può essere modificato. Un valore nullo disabilita la funzionalità, con 1 la
- si abilita, con 2 (o con qualunque altro valore diverso dai precedenti) la
- si abilità in modalità \textsl{prolissa}; di default la funzionalità è
- disabilitata.
+ può essere modificato. Prende un valore intero, con 0 si disabilita la
+ funzionalità, con 1 la si abilita, con 2 (o con qualunque altro valore
+ diverso dai precedenti) la si abilità in modalità \textsl{prolissa}; di
+ default la funzionalità è disabilitata.
\item[\procrelfile{/proc/sys/net/ipv4}{ip\_autoconfig}] specifica se
l'indirizzo IP è stato configurato automaticamente dal kernel all'avvio
- attraverso DHCP, BOOTP o RARP; è un valore logico (0 falso, 1 vero)
- accessibile in lettura, è inutilizzato nei kernel recenti ed eliminato a
- partire dal 2.6.18.
+ attraverso DHCP, BOOTP o RARP. Riporta un valore logico (0 falso, 1 vero)
+ accessibile solo in lettura, è inutilizzato nei kernel recenti ed eliminato
+ a partire dal kernel 2.6.18.
\item[\procrelfile{/proc/sys/net/ipv4}{ip\_local\_port\_range}] imposta
l'intervallo dei valori usati per l'assegnazione delle porte effimere,
1024 (o meglio ancora di 4096) per evitare conflitti con le porte usate dai
servizi noti.
-\item[\procrelfile{/proc/sys/net/ipv4}{ip\_no\_pmtu\_disc}] imposta la
- disciplina di ricerca della \itindex{Maximum~Transfer~Unit} \textit{Path
- MTU} (vedi sez.~\ref{sec:net_lim_dim} e sez.~\ref{sec:sock_ipv4_options}).
-
-\item[\procrelfile{/proc/sys/net/ipv4}{ipfrag\_high\_thresh}] limite massimo
- (espresso in numero di byte) sui pacchetti IP frammentati presenti in coda;
- quando questo valore viene raggiunta la coda viene ripulita fino al valore
- \texttt{ipfrag\_low\_thresh}.
+\item[\procrelfile{/proc/sys/net/ipv4}{ip\_no\_pmtu\_disc}] permette di
+ disabilitare per i socket \const{SOCK\_STREAM} la ricerca automatica della
+ \itindex{Maximum~Transfer~Unit} \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} \textit{Path MTU discovery}
+ fallisce; dato che questo può avveniera a causa di router\footnote{ad
+ esempio se si scartano tutti i pacchetti ICMP, il problema è affrontato
+ anche in sez.~1.4.4 di \cite{FwGL}.} o interfacce\footnote{ad esempio se i
+ due capi di un collegamento \textit{point-to-point} non si accordano sulla
+ stessa MTU.} mal configurate è opportuno correggere le configurazioni,
+ perché disabilitare globalmente il procedimento con questo parametro ha
+ pesanti ripercussioni in termini di prestazioni di rete.
+
+\item[\procrelfile{/proc/sys/net/ipv4}{ip\_always\_defrag}] fa si che tutti i
+ pacchetti IP frammentati siano riassemblati, anche in caso in successivo
+ immediato inoltro;\footnote{introdotto con il kernel 2.2.13, nelle versioni
+ precedenti questo comportamento poteva essere solo stabilito un volta per
+ tutte in fase di compilazione del kernel con l'opzione
+ \texttt{CONFIG\_IP\_ALWAYS\_DEFRAG}.} prende un valore logico e di default
+ è disabilitato. Con i kernel dalla serie 2.4 in poi la deframmentazione viene
+ attivata automaticamente quando si utilizza il sistema del netfilter, e
+ questo parametro non è più presente.
+
+\item[\procrelfile{/proc/sys/net/ipv4}{ipfrag\_high\_thresh}] indica il limite
+ massimo (espresso in numero di byte) sui pacchetti IP frammentati presenti
+ in coda; quando questo valore viene raggiunta la coda viene ripulita fino al
+ valore \texttt{ipfrag\_low\_thresh}.
\item[\procrelfile{/proc/sys/net/ipv4}{ipfrag\_low\_thresh}] soglia bassa
(specificata in byte) cui viene riportata la coda dei pacchetti IP
frammentati quando si raggiunge il valore \texttt{ipfrag\_high\_thresh}.
-\item[\procrelfile{/proc/sys/net/ipv4}{ip\_always\_defrag}] se abilitato
- (prende un intero come valore logico) tutti i pacchetti IP frammentati
- saranno riassemblati, anche in caso in successivo immediato
- inoltro.\footnote{introdotto con il kernel 2.2.13, nelle versioni precedenti
- questo comportamento poteva essere solo in fase di compilazione del kernel
- con l'opzione \texttt{CONFIG\_IP\_ALWAYS\_DEFRAG}.}
-
\item[\procrelfile{/proc/sys/net/ipv4}{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