%% sockctrl.tex
%%
-%% Copyright (C) 2004-2009 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2004-2010 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",
in cui i pacchetti vengono scambiati direttamente fra due applicazioni; ma
quando un sistema supporta il traffico in \itindex{multicast}
\textit{multicast}, in cui una applicazione invia i pacchetti a molte altre
-(vedi sez.~\ref{sec:multicast_xxx}), allora ha senso che su una macchina i
+(vedi sez.~\ref{sec:xxx_multicast}), allora ha senso che su una macchina i
pacchetti provenienti dal traffico in \itindex{multicast} \textit{multicast}
possano essere ricevuti da più applicazioni\footnote{l'esempio classico di
traffico in \textit{multicast} è quello di uno streaming di dati (audio,
Imposta il valore del campo TOS.\\
\const{IP\_TTL} &$\bullet$&$\bullet$& &\texttt{int}&
Imposta il valore del campo TTL.\\
+ \const{IP\_MINTTL} &$\bullet$&$\bullet$& &\texttt{int}&
+ Imposta il valore minimo del TTL per i pacchetti accettati.\\
\const{IP\_HDRINCL} &$\bullet$&$\bullet$&$\bullet$&\texttt{int}&
Passa l'intestazione di IP nei dati.\\
\const{IP\_RECVERR} &$\bullet$&$\bullet$&$\bullet$&\texttt{int}&
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. 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}.
+ \textit{Type of Service} dell'intestazione IP (per una trattazione più
+ dettagliata, che riporta anche i valori possibili e le relative costanti di
+ 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}.
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
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})
- per tutti i pacchetti associati al socket. Il campo TTL è di 8 bit e
+\item[\const{IP\_TTL}] L'opzione consente di leggere o impostare per tutti i
+ pacchetti associati al socket il campo \textit{Time to Live}
+ dell'intestazione IP che indica il numero massimo di \textit{hop} (passaggi
+ da un router ad un altro) restanti al paccheto (per una trattazione più
+ estesa si veda 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\_MINTTL}] L'opzione, introdotta con il kernel 2.6.34, imposta
+ un valore minimo per il campo \textit{Time to Live} dei pacchetti associati
+ al socket su cui è attivata, che se non rispettato ne causa lo scarto
+ automatico. L'opzione è nata per implementare
+ l'\href{http://www.ietf.org/rfc/rfc5082.txt}{RFC~5082} che la prevede come
+ forma di protezione per i router che usano il protocollo BGP poiché questi,
+ essendo in genere adiacenti, possono, impostando un valore di 255, scartare
+ automaticamente tutti gli eventuali pacchetti falsi creati da un attacco a
+ questo protocollo, senza doversi curare di verificarne la
+ validità.\footnote{l'attacco viene in genere portato per causare un
+ \textit{Denial of Service} aumentando il consumo di CPU del router nella
+ verifica dell'autenticità di un gran numero di pacchetti di pacchetti
+ falsi; questi, arrivando da sorgenti diverse da un router adiacente, non
+ potrebbero più avere un TTL di 255 anche qualora questo fosse stato il
+ valore di partenza, e l'impostazione dell'opzione consente di scartarli
+ senza carico aggiuntivo sulla CPU (che altrimenti dovrebbe calcolare una
+ checksum).}
+
\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