indirizzi generiche, questo sia ancora di tipo \texttt{char **} e si possa
riutilizzare lo stesso puntatore usato per i nomi.
-Per ciascun indirizzo valido si provvederà (\texttt{\small 41}) ad una
+Per ciascun indirizzo valido si provvederà (\texttt{\small 41}) a una
conversione con la funzione \func{inet\_ntop} (vedi
sez.~\ref{sec:sock_addr_func}) passandole gli opportuni argomenti, questa
restituirà la stringa da stampare (\texttt{\small 42}) con il valore
\func{setsockopt} ed utilizza per \param{optval} un puntatore ad una
struttura \struct{sock\_fprog} (definita in
\headfile{linux/filter.h}). Questa opzione viene usata principalmente con i
- socket di tipo \const{PF\_PACKET} (torneremo su questo in
+ socket di tipo \const{AF\_PACKET} (torneremo su questo in
sez.~\ref{sec:packet_socket}) dalla libreria \texttt{libpcap} per
implementare programmi di cattura dei pacchetti, e per questo tipo di
applicazione è opportuno usare sempre quest'ultima.\footnote{la trattazione
\const{SOCK\_STREAM}.
\item[\constd{SO\_BSDCOMPAT}] questa opzione abilita la compatibilità con il
- comportamento di BSD (in particolare ne riproduce alcuni bug). Attualmente è una
- opzione usata solo per il protocollo UDP e ne è prevista la rimozione.
+ comportamento di BSD (in particolare ne riproduce alcuni bug). Attualmente
+ è una opzione usata solo per il protocollo UDP e ne è prevista la rimozione.
L'opzione utilizza per \param{optval} un intero usato come valore logico.
Quando viene abilitata gli errori riportati da messaggi ICMP per un socket
specificare come argomento per questa opzione sono impostabili tramiti gli
opportuni valori di \func{sysctl} (vedi sez.~\ref{sec:sock_sysctl}).
- Si tenga presente che nel caso di socket TCP, per entrambe le opzioni
- \const{SO\_RCVBUF} e \const{SO\_SNDBUF}, il kernel alloca effettivamente una
- quantità di memoria doppia rispetto a quanto richiesto con
- \func{setsockopt}. Questo comporta che una successiva lettura con
+ Si tenga presente che nel caso di socket TCP il kernel alloca effettivamente
+ una quantità di memoria doppia rispetto a quanto richiesto con
+ \func{setsockopt} per entrambe le opzioni \const{SO\_RCVBUF} e
+ \const{SO\_SNDBUF}. Questo comporta che una successiva lettura con
\func{getsockopt} riporterà un valore diverso da quello impostato con
\func{setsockopt}. Questo avviene perché TCP necessita dello spazio in più
per mantenere dati amministrativi e strutture interne, e solo una parte
\item[\constd{SO\_RCVBUFFORCE}] questa opzione, presente dal kernel 2.6.14, è
identica a \const{SO\_RCVBUF} ma consente ad un processo con i privilegi di
- amministratore (con la \textit{capability} \const{CAP\_NET\_ADMIN}) di
- impostare in valore maggiore del limite di
+ amministratore (per la precisione con la \textit{capability}
+ \const{CAP\_NET\_ADMIN}) di impostare in valore maggiore del limite di
\sysctlrelfile{net/core}{rmem\_max}.
\item[\constd{SO\_RCVLOWAT}] questa opzione imposta il valore che indica il
\item[\constd{SO\_SNDBUFFORCE}] questa opzione, presente dal kernel 2.6.14, è
identica a \const{SO\_SNDBUF} ma consente ad un processo con i privilegi di
- amministratore (con la \textit{capability} \const{CAP\_NET\_ADMIN}) di
- impostare in valore maggiore del limite di
+ amministratore (per la precisione con la \textit{capability}
+ \const{CAP\_NET\_ADMIN}) di impostare in valore maggiore del limite di
\sysctlrelfile{net/core}{wmem\_max}.
% TODO verificare il timeout con un programma di test
\begin{table}[!htb]
\centering
\footnotesize
- \begin{tabular}[c]{|l|c|c|c|l|p{5.cm}|}
+ \begin{tabular}[c]{|l|c|c|c|l|p{4.8cm}|}
\hline
\textbf{Opzione}&\texttt{get}&\texttt{set}&\textbf{flag}&\textbf{Tipo}&
\textbf{Descrizione}\\
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{0.70\textwidth}
+ \begin{minipage}[c]{0.90\textwidth}
\includestruct{listati/ip_mreqn.h}
\end{minipage}
\caption{La struttura \structd{ip\_mreqn} utilizzata per unirsi a un gruppo di
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{0.70\textwidth}
+ \begin{minipage}[c]{0.90\textwidth}
\includestruct{listati/ip_mreq_source.h}
\end{minipage}
\caption{La struttura \structd{ip\_mreqn} utilizzata per unirsi a un gruppo di
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{0.70\textwidth}
+ \begin{minipage}[c]{0.90\textwidth}
\includestruct{listati/ip_msfilter.h}
\end{minipage}
\caption{La struttura \structd{ip\_msfilter} utilizzata per il
\label{fig:ip_msfilter_struct}
\end{figure}
-L'argomento \param{optval} è una struttura \struct{ip\_msfilter} illustrata in
-fig.~\ref{fig:ip_msfilter_struct}, il campo \var{imsf\_multiaddr} è
-l'indirizzo del gruppo di \textit{multicast}, il campo \var{imsf\_interface}
-l'indirizzo dell'interfaccia locale, il campo \var{imsf\_mode} indica la
-modalità di filtraggio e con i campi \var{imsf\_numsrc} e \var{imsf\_slist}
+L'argomento \param{optval} deve essere una struttura di tipo
+\struct{ip\_msfilter} (illustrata in fig.~\ref{fig:ip_msfilter_struct}); il
+campo \var{imsf\_multiaddr} indica l'indirizzo del gruppo di
+\textit{multicast}, il campo \var{imsf\_interface} l'indirizzo
+dell'interfaccia locale, il campo \var{imsf\_mode} indica la modalità di
+filtraggio e con i campi \var{imsf\_numsrc} e \var{imsf\_slist}
rispettivamente la lunghezza della lista, e la lista stessa, degli indirizzi
-sorgente.
+sorgente.
Come ausilio all'uso di questa opzione sono disponibili le macro
\macro{MCAST\_INCLUDE} e \macro{MCAST\_EXCLUDE} che si possono usare per
\itindbeg{Path~MTU}
\item[\constd{IP\_MTU}] Permette di leggere il valore della \textit{Path MTU}
- di percorso del socket. L'opzione richiede per \param{optval} un intero che
- conterrà il valore della \textit{Path MTU} in byte. Questa è una opzione
- introdotta con i kernel della serie 2.2.x, ed è specifica di Linux.
+ del socket. L'opzione richiede per \param{optval} un intero che conterrà il
+ valore della \textit{Path MTU} in byte. Questa è una opzione introdotta con
+ i kernel della serie 2.2.x, ed è specifica di Linux.
È tramite questa opzione che un programma può leggere, quando si è avuto un
errore di \errval{EMSGSIZE}, il valore della MTU corrente del socket. Si
la scoperta della \textit{Path MTU}, occorre che il socket sia stato
esplicitamente connesso con \func{connect}.
- Ad esempio con i socket UDP si potrà ottenere una stima iniziale della
+ Ad esempio con i socket UDP si può ottenere una stima iniziale della
\textit{Path MTU} eseguendo prima una \func{connect} verso la destinazione,
e poi usando \func{getsockopt} con questa opzione. Si può anche avviare
esplicitamente il procedimento di scoperta inviando un pacchetto di grosse
dati ancillari e di controllo (vedi sez.~\ref{sec:net_ancillary_data}).
\end{basedescript}
-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:
+Oltre a questi, nella directory \texttt{/proc/sys/net/core} si trovano diversi
+altri file, la cui documentazione, come per gli altri, 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{2.2cm}\desclabelstyle{\nextlinelabel}}
\item[\sysctlrelfiled{net/core}{dev\_weight}] blocco di lavoro (\textit{work
quantum}) dello \textit{scheduler} di processo dei pacchetti.
\item[\sysctlrelfiled{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
+ in coda; quando questo valore viene raggiunto la coda viene ripulita fino al
valore \texttt{ipfrag\_low\_thresh}. Prende un valore intero.
-\item[\sysctlrelfiled{net/ipv4}{ipfrag\_low\_thresh}] soglia bassa
- (specificata in byte) a cui viene riportata la coda dei pacchetti IP
- frammentati quando si raggiunge il valore massimo dato da
+\item[\sysctlrelfiled{net/ipv4}{ipfrag\_low\_thresh}] indica la dimensione
+ (specificata in byte) della soglia inferiore a cui viene riportata la coda
+ dei pacchetti IP frammentati quando si raggiunge il valore massimo dato da
\texttt{ipfrag\_high\_thresh}. Prende un valore intero.
\item[\sysctlrelfiled{net/ipv4}{ip\_nonlocal\_bind}] se abilitato rende
\item il secondo valore, denominato \textit{default}, indica la dimensione
di default in byte del buffer di spedizione di un socket TCP. Questo
valore sovrascrive il default iniziale impostato per tutti i tipi di
- socket con \sysctlfile{net/core/wmem\_default}. Il default è 87380 byte,
- ridotto a 43689 per sistemi con poca memoria. Si può aumentare questo
- valore quando si desiderano dimensioni più ampie del buffer di
+ socket sul file \sysctlfile{net/core/wmem\_default}. Il default è 87380
+ byte, ridotto a 43689 per sistemi con poca memoria. Si può aumentare
+ questo valore quando si desiderano dimensioni più ampie del buffer di
trasmissione per i socket TCP, ma come per il precedente
\sysctlrelfile{net/ipv4}{tcp\_rmem}) se si vuole che in corrispondenza
aumentino anche le dimensioni usate per la finestra TCP si deve abilitare