From 11104c8d675ecba73629f62f29b38a33c64b14a1 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Fri, 25 Mar 2005 17:51:03 +0000 Subject: [PATCH] Aggiunto materiale sulle opzioni SO_SNDBUF, SO_RCVBUF, SO_BROADCAST, SO_PRIORITY e SO_ERROR. Inotrodotte un po' delle sysctl per la rete. --- sockctrl.tex | 102 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 83 insertions(+), 19 deletions(-) diff --git a/sockctrl.tex b/sockctrl.tex index 479533c..90e922b 100644 --- a/sockctrl.tex +++ b/sockctrl.tex @@ -2216,8 +2216,8 @@ allora il seguente: sez.~\ref{sec:unix_socket_xxx}). \item[\const{SO\_BINDTODEVICE}] questa opzione permette di \textsl{legare} il - socket ad una particolare interfaccia interfaccia, in modo che esso possa - ricevere ed inviare pacchetti solo su quella. L'opzione richiede per + socket ad una particolare interfaccia, in modo che esso possa ricevere ed + inviare pacchetti solo su quella. L'opzione richiede per \param{optval} il puntatore ad una stringa contenente il nome dell'interfaccia (ad esempio \texttt{eth0}); se si utilizza una stringa nulla o un valore nullo per \param{optlen} si rimuove un precedente @@ -2319,23 +2319,49 @@ allora il seguente: \item[\const{SO\_DONTROUTE}] questa opzione forza l'invio diretto dei pacchetti del socket, saltando ogni processo relativo all'uso della tabella - di routing del kernel. Prende come \param{optval} un intero usato come - valore logico. - -\item[\const{SO\_BROADCAST}] - - -\item[\const{SO\_SNDBUF}] - - -\item[\const{SO\_RCVBUF}] - - -\item[\const{SO\_LINGER}] -\item[\const{SO\_PRIORITY}] - -\item[\const{SO\_ERROR}] - + di routing del kernel. Prende per \param{optval} un intero usato come valore + logico. + +\item[\const{SO\_BROADCAST}] questa opzione abilita il \textit{broadcast}; + quanto abilitata i socket di tipo \const{SOCK\_DGRAM} riceveranno i + pacchetti inviati all'indirizzo di broadcast, e potranno scrivere pacchetti + su tale indirizzo. Prende per \param{optval} un intero usato come valore + logico. L'opzione non ha effetti su un socket di tipo \const{SOCK\_STREAM}. + + +\item[\const{SO\_SNDBUF}] questa opzione imposta la dimenzione del buffer di + uscita del socket. Prende per \param{optval} un intero indicante il numero + di byte. Il valore di default ed il valore massimo che si può specificare + come argomento per questa opzione sono impostabili tramiti gli opportuni + valori di \func{sysctl} (vedi sez.~\ref{sec:sock_sysctl}). + + +\item[\const{SO\_RCVBUF}] questa opzione imposta la dimenzione del buffer di + ingresso del socket. Prende per \param{optval} un intero indicante il numero + di byte. Il valore di default ed il valore massimo che si può specificare + come argomento per questa opzione sono impostabili tramiti gli opportuni + valori di \func{sysctl} (vedi sez.~\ref{sec:sock_sysctl}). + + +\item[\const{SO\_LINGER}] + +\item[\const{SO\_PRIORITY}] questa opzione permette di impostare le priorità + per tutti i pacchetti che sono inviati sul socket, prende per \param{optval} + un valore intero. Con questa opzione il kernel usa il valore per ordinare le + priorità sulle code di rete,\foonote{questo richiede che sia abilitato il + sistema di \textit{Quality of Service} disponibile con le opzioni di + routing avanzato.} i pacchetti con priorità più alta vengono processati + per primi, in modalità che dipendono dalla disciplina di gestione della + coda. Nel caso di protocollo IP questa opzione permette anche di impostare i + valori del campo \textit{type of service} (TOF, vedi + sez.~\ref{sec:IP_intro}) per i pacchetti uscenti. Per impostare una priorità + al di fuori dell'intervallo di valori fra 0 e 6 sono richiesti i privilegi + di amministratore con la capability \const{CAP\_NET\_ADMIN}. + +\item[\const{SO\_ERROR}] questa opzione riceve un errore presente sul socket; + può essere utilizzata soltanto con \func{getsockopt} e prende per + \param{optval} un valore intero. + \end{basedescript} @@ -2380,7 +2406,45 @@ certo tipo o di tutti quelli che usano un certo protocollo) rispetto alle funzioni viste finora che consentono di controllare quelle di un singolo socket. +Le opzioni disponibili per le proprietà della rete sono riportate nella +gerarchia dei valori impostabili con \func{sysctl}, sotto il nodo +\texttt{net}, o, se acceduti tramite l'interfaccia del filesystem +\texttt{/proc}, sotto \texttt{/proc/sys/net}. In genere sotto questa directory +compaiono le sottodirectory (corrispondenti ad altrettanti sottonodi per +\func{sysctl}) relative ai vari protocolli e tipi di interfacce su cui è +possibile intervenire; un contenuto tipico è il seguente: +\begin{verbatim} +/proc/sys/net/ +|-- core +|-- ethernet +|-- ipv4 +|-- ipv6 +|-- irda +|-- token-ring +`-- unix +\end{verbatim} + + +Nella directory \texttt{/proc/sys/net/core} sono disponibili le opzioni +generiche dei socket, descritte anche nella rispettiva pagina di +manuale.\foonote{quella accessibile con \texttt{man 7 socket}.} Queste sono: +\begin{basedescript}{\desclabelwidth{3cm}\desclabelstyle{\nextlinelabel}} +\item[\texttt{rmem\_default}] imposta la dimensione di default del buffer di + lettura (cioè per i dati in ingresso) dei socket. +\item[\texttt{rmem\_max}] imposta la dimensione massima che si può assegnare al + buffer di ingresso dei socket attraverso l'uso dell'opzione + \const{SO\_RCVBUF}. +\item[\texttt{wmem\_default}] imposta la dimensione di default del buffer di + scrittura (cioè per i dati in uscita) dei socket. +\item[\texttt{wmem\_max}] imposta la dimensione massima che si può assegnare al + buffer di uscita dei socket attraverso l'uso dell'opzione + \const{SO\_SNDBUF}. +\item[\texttt{message\_cost}] +\item[\texttt{message\_burst}] +\item[\texttt{netdev\_max\_backlog}] +\item[\texttt{optmem\_max}] +\end{basedescript} %%% Local Variables: -- 2.30.2