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}
possibile effettuare un \textit{completely duplicate binding} ed ottenere il
successo di \func{bind} su un socket legato allo stesso indirizzo e porta solo
se il programma che ha eseguito per primo \func{bind} su di essi ha impostato
-questa opzione.\footnote{Questa restrizione permette di evitare il cosiddetto
+questa opzione.\footnote{questa restrizione permette di evitare il cosiddetto
\textit{port stealing}, in cui un programma, usando \const{SO\_REUSEADDR},
può collegarsi ad una porta già in uso e ricevere i pacchetti destinati ad
un altro programma; con questa caratteristica ciò è possibile soltanto se il
% ottimizzazione per l'uso come router.
\item[\procrelfile{/proc/sys/net/core}{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.
+ massima utilizzabile per il \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}
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
-accessibile con \texttt{man 7 ip}, sono i seguenti:
+protocollo IP in quanto tale, che sono descritti anche nella relativa pagina
+di manuale accessibile con \texttt{man 7 ip}, sono i seguenti:
\begin{basedescript}{\desclabelwidth{3.5cm}\desclabelstyle{\nextlinelabel}}
\item[\procrelfile{/proc/sys/net/ipv4}{ip\_default\_ttl}] imposta il valore di
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 kernel 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,
permette cioè di modificare i valori illustrati in
- fig.~\ref{fig:TCP_port_alloc}; prende due valori numerici, che indicano gli
- estremi dell'intervallo. Si abbia cura di non definire un intervallo che si
- sovrappone a quello delle porte usate per il \itindex{masquerading}
- \textit{masquerading}, il kernel può gestire la sovrapposizione, ma si avrà
- una perdita di prestazioni. Si imposti sempre un valore iniziale maggiore di
- 1024 (o meglio ancora di 4096) per evitare conflitti con le porte usate dai
- servizi noti.
+ fig.~\ref{fig:TCP_port_alloc}; prende due valori interi separati da spazi,
+ che indicano gli estremi dell'intervallo. Si abbia cura di non definire un
+ intervallo che si sovrappone a quello delle porte usate per il
+ \itindex{masquerading} \textit{masquerading}, il kernel può gestire la
+ sovrapposizione, ma si avrà una perdita di prestazioni. Si imposti sempre un
+ valore iniziale maggiore di 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}] 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).
+ 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}
\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 in fase di compilazione
- del kernel con l'opzione \texttt{CONFIG\_IP\_ALWAYS\_DEFRAG}.} prende un
- valore logico e di default è disabilitato.
-
-\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}.
+ 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
nell'\href{http://www.ietf.org/rfc/rfc1323.txt}{RFC~1323}. Di default è
abilitato.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_tw\_recycle}]
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_tw\_recycle}] un valore logico,
+ disattivo di default, che abilita un rapido riutilizzo dei socket in stato
+ \texttt{TIME\_WAIT}. Non è opportuno abilitare questa opzione che può
+ causare problemi con il NAT.
\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_tw\_reuse}]
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_window\_scaling}]
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_window\_scaling}] un valore
+ logico, attivo di default, che abilita la funzionalità del \textit{TCP
+ window scaling} definita
+ dall'\href{http://www.ietf.org/rfc/rfc1323.txt}{RFC~1323}
\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_vegas\_cong\_avoid}]