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
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