Ancora revisione degli indici, aggiunto CLONE_VM e paragrafo su
[gapil.git] / sockctrl.tex
index 196c410f98fee1a413be763fa9b0355f75557eb5..5906b98aee79993b55d3e311b8823044b9bedfb9 100644 (file)
@@ -828,10 +828,10 @@ lunghezza di questo buffer devono essere indicati con gli argomenti
 \param{buf} e \param{buflen}.
 
 Gli ultimi due argomenti vengono utilizzati per avere indietro i risultati
-come \itindex{value~result~argument} \textit{value result argument}, si deve
-specificare l'indirizzo della variabile su cui la funzione dovrà salvare il
-codice di errore con \param{h\_errnop} e quello su cui dovrà salvare il
-puntatore che si userà per accedere i dati con \param{result}.
+come \textit{value result argument}, si deve specificare l'indirizzo della
+variabile su cui la funzione dovrà salvare il codice di errore
+con \param{h\_errnop} e quello su cui dovrà salvare il puntatore che si userà
+per accedere i dati con \param{result}.
 
 In caso di successo entrambe le funzioni restituiscono un valore nullo,
 altrimenti restituiscono un codice di errore negativo e all'indirizzo puntato
@@ -1263,13 +1263,12 @@ TCP o UDP) che questi possono utilizzare.
 
 Come ultimo argomento in \param{res} deve essere passato un puntatore ad una
 variabile (di tipo puntatore ad una struttura \struct{addrinfo}) che verrà
-utilizzata dalla funzione per riportare (come \itindex{value~result~argument}
-\textit{value result argument}) i propri risultati. La funzione infatti è
-rientrante, ed alloca autonomamente tutta la memoria necessaria in cui
-verranno riportati i risultati della risoluzione.  La funzione scriverà
-all'indirizzo puntato da \param{res} il puntatore iniziale ad una
-\itindex{linked~list} \textit{linked list} di strutture di tipo
-\struct{addrinfo} contenenti tutte le informazioni ottenute.
+utilizzata dalla funzione per riportare (come \textit{value result argument})
+i propri risultati. La funzione infatti è rientrante, ed alloca autonomamente
+tutta la memoria necessaria in cui verranno riportati i risultati della
+risoluzione.  La funzione scriverà all'indirizzo puntato da \param{res} il
+puntatore iniziale ad una \itindex{linked~list} \textit{linked list} di
+strutture di tipo \struct{addrinfo} contenenti tutte le informazioni ottenute.
 
 \begin{figure}[!htb]
   \footnotesize \centering
@@ -1753,7 +1752,7 @@ valore del relativo puntatore precedentemente (\texttt{\small 17}) salvato.
 Si noti come per la funzione sia del tutto irrilevante se la struttura
 ritornata contiene indirizzi IPv6 o IPv4, in quanto si fa uso direttamente dei
 dati relativi alle strutture degli indirizzi di \struct{addrinfo} che sono
-\index{tipo!opaco} opachi rispetto all'uso della funzione \func{connect}.
+opachi rispetto all'uso della funzione \func{connect}.
 
 \begin{figure}[!htbp]
   \footnotesize \centering
@@ -1993,12 +1992,11 @@ di \func{setsockopt}, anche se non è detto che tutte le opzioni siano definite
 per entrambe le funzioni. In questo caso \param{optval} viene usato per
 ricevere le informazioni ed indica l'indirizzo a cui andranno scritti i dati
 letti dal socket, infine \param{optlen} diventa un puntatore ad una variabile
-che viene usata come \itindex{value~result~argument} \textit{value result
-  argument} per indicare, prima della chiamata della funzione, la lunghezza
-del buffer allocato per \param{optval} e per ricevere indietro, dopo la
-chiamata della funzione, la dimensione effettiva dei dati scritti su di esso.
-Se la dimensione del buffer allocato per \param{optval} non è sufficiente si
-avrà un errore.
+che viene usata come \textit{value result argument} per indicare, prima della
+chiamata della funzione, la lunghezza del buffer allocato per \param{optval} e
+per ricevere indietro, dopo la chiamata della funzione, la dimensione
+effettiva dei dati scritti su di esso.  Se la dimensione del buffer allocato
+per \param{optval} non è sufficiente si avrà un errore.
 
 
 
@@ -2601,10 +2599,8 @@ Infine il quarto caso è quello in cui si vuole effettivamente ottenere un
 \func{bind} su un indirizzo ed una porta che sono già \textsl{legati} ad un
 altro socket.  Questo ovviamente non ha senso per il normale traffico di rete,
 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:xxx_multicast}), allora ha senso che su una macchina i
-pacchetti provenienti dal traffico in \itindex{multicast} \textit{multicast}
+quando un sistema supporta il traffico in \textit{multicast}, allora ha senso
+che su una macchina i pacchetti provenienti dal traffico in \textit{multicast}
 possano essere ricevuti da più applicazioni\footnote{l'esempio classico di
   traffico in \textit{multicast} è quello di uno streaming di dati (audio,
   video, ecc.), l'uso del \textit{multicast} consente in tal caso di
@@ -2613,7 +2609,6 @@ possano essere ricevuti da più applicazioni\footnote{l'esempio classico di
   questo caso è perfettamente logico aspettarsi che sulla stessa macchina più
   utenti possano lanciare un programma che permetta loro di ricevere gli
   stessi dati.} o da diverse istanze della stessa applicazione.
-\itindex{multicast}
 
 In questo caso utilizzando \const{SO\_REUSEADDR} si consente ad una
 applicazione eseguire \func{bind} sulla stessa porta ed indirizzo usata da
@@ -2621,10 +2616,10 @@ un'altra, così che anche essa possa ricevere gli stessi pacchetti (chiaramente
 la cosa non ha alcun senso per i socket TCP, ed infatti in questo tipo di
 applicazione è normale l'uso del protocollo UDP). La regola è che quando si
 hanno più applicazioni che hanno eseguito \func{bind} sulla stessa porta, di
-tutti pacchetti destinati ad un indirizzo di \itindex{broadcast}
-\textit{broadcast} o di \itindex{multicast} \textit{multicast} viene inviata
-una copia a ciascuna applicazione.  Non è definito invece cosa accade qualora
-il pacchetto sia destinato ad un indirizzo normale (unicast).
+tutti pacchetti destinati ad un indirizzo di \textit{broadcast} o di
+\textit{multicast} viene inviata una copia a ciascuna applicazione.  Non è
+definito invece cosa accade qualora il pacchetto sia destinato ad un indirizzo
+normale (unicast).
 
 Essendo questo un caso particolare in alcuni sistemi (come BSD) è stata
 introdotta una opzione ulteriore, \const{SO\_REUSEPORT} che richiede che detta
@@ -2789,17 +2784,15 @@ file.
     \const{IP\_ROUTER\_ALERT}   &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
       Imposta l'opzione \textit{IP router alert} sui pacchetti.\\
     \const{IP\_MULTICAST\_TTL}  &$\bullet$&$\bullet$&         &\texttt{int}& 
-      Imposta il TTL per i pacchetti \itindex{multicast} \textit{multicast}.\\
+      Imposta il TTL per i pacchetti \textit{multicast}.\\
     \const{IP\_MULTICAST\_LOOP} &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-      Controlla il reinvio a se stessi dei dati di \itindex{multicast} 
-      \textit{multicast}.\\ 
+      Controlla il reinvio a se stessi dei dati di \textit{multicast}.\\ 
     \const{IP\_ADD\_MEMBERSHIP} &         &$\bullet$&   &\struct{ip\_mreqn}& 
-      Si unisce a un gruppo di \itindex{multicast} \textit{multicast}.\\
+      Si unisce a un gruppo di \textit{multicast}.\\
     \const{IP\_DROP\_MEMBERSHIP}&         &$\bullet$&   &\struct{ip\_mreqn}& 
       Si sgancia da un gruppo di \textit{multicast}.\\
     \const{IP\_MULTICAST\_IF}   &         &$\bullet$&   &\struct{ip\_mreqn}& 
-      Imposta l'interfaccia locale di un socket \itindex{multicast} 
-      \textit{multicast}.\\ 
+      Imposta l'interfaccia locale di un socket \textit{multicast}.\\ 
    \hline
   \end{tabular}
   \caption{Le opzioni disponibili al livello \const{SOL\_IP}.} 
@@ -3030,7 +3023,6 @@ sez.~\ref{sec:net_sendmsg}).
   sez.~\ref{sec:IP_options}) che devono essere inoltrati al socket
   corrente. Può essere usata soltanto per socket di tipo raw.
 
-\itindbeg{multicast}
 \item[\const{IP\_MULTICAST\_TTL}] L'opzione permette di impostare o leggere il
   valore del campo TTL per i pacchetti \textit{multicast} in uscita associati
   al socket. È importante che questo valore sia il più basso possibile, ed il
@@ -3087,7 +3079,6 @@ sez.~\ref{sec:net_sendmsg}).
 % TODO chiarire quale è la struttura \struct{ip\_mreq}
 
 
-\itindend{multicast}
 \end{basedescript}
 
 
@@ -3577,10 +3568,10 @@ tipo di operazione da effettuare) quando essa viene applicata ad un socket
 generico. Nell'elenco si illustrerà anche, per ciascuna operazione, il tipo di
 dato usato come terzo argomento della funzione ed il significato che esso
 viene ad assumere.  Dato che in caso di lettura questi dati vengono restituiti
-come \itindex{value~result~argument} \textit{value result argument}, con
-queste operazioni il terzo argomento deve sempre essere passato come puntatore
-ad una variabile (o struttura) precedentemente allocata. Le costanti che
-identificano le operazioni sono le seguenti:
+come \textit{value result argument}, con queste operazioni il terzo argomento
+deve sempre essere passato come puntatore ad una variabile (o struttura)
+precedentemente allocata. Le costanti che identificano le operazioni sono le
+seguenti:
 \begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}}
 \item[\const{SIOCGSTAMP}] restituisce il contenuto di una struttura
   \struct{timeval} con la marca temporale dell'ultimo pacchetto ricevuto sul
@@ -3711,14 +3702,13 @@ Le costanti che identificano le operazioni disponibili sono le seguenti:
                              pacchetti che vede passare, compresi quelli non
                              direttamente indirizzati a lei).\\
     \const{IFF\_NOTRAILERS}& Evita l'uso di \textit{trailer} nei pacchetti.\\
-    \const{IFF\_ALLMULTI}  & Riceve tutti i pacchetti di  \itindex{multicast}
-                             \textit{multicast}.\\
+    \const{IFF\_ALLMULTI}  & Riceve tutti i pacchetti di \textit{multicast}.\\
     \const{IFF\_MASTER}    & L'interfaccia è il master di un bundle per il
                              bilanciamento di carico.\\
     \const{IFF\_SLAVE}     & L'interfaccia è uno slave di un bundle per il
                              bilanciamento di carico.\\
     \const{IFF\_MULTICAST} & L'interfaccia ha il supporto per il
-                             \textit{multicast} \itindex{multicast} attivo.\\
+                             \textit{multicast} attivo.\\
     \const{IFF\_PORTSEL}   & L'interfaccia può impostare i suoi parametri
                              hardware (con l'uso di \struct{ifmap}).\\
     \const{IFF\_AUTOMEDIA} & L'interfaccia è in grado di selezionare
@@ -3799,19 +3789,19 @@ Le costanti che identificano le operazioni disponibili sono le seguenti:
   struttura \struct{ifmap}, secondo la definizione di
   fig.~\ref{fig:netdevice_ifmap_struct}.
 
-\item[\const{SIOCADDMULTI}] aggiunge un indirizzo di \itindex{multicast}
-  \textit{multicast} ai filtri del livello di collegamento associati
-  dell'interfaccia. Si deve usare un indirizzo hardware da specificare
-  attraverso il campo \var{ifr\_hwaddr}, che conterrà l'opportuna struttura
-  \struct{sockaddr}; l'operazione è privilegiata. Per una modalità alternativa
-  per eseguire la stessa operazione si possono usare i \textit{packet socket},
-  vedi sez.~\ref{sec:packet_socket}.
+\item[\const{SIOCADDMULTI}] aggiunge un indirizzo di \textit{multicast} ai
+  filtri del livello di collegamento associati dell'interfaccia. Si deve usare
+  un indirizzo hardware da specificare attraverso il campo \var{ifr\_hwaddr},
+  che conterrà l'opportuna struttura \struct{sockaddr}; l'operazione è
+  privilegiata. Per una modalità alternativa per eseguire la stessa operazione
+  si possono usare i \textit{packet socket}, vedi
+  sez.~\ref{sec:packet_socket}.
 
-\item[\const{SIOCDELMULTI}] rimuove un indirizzo di \itindex{multicast}
-  \textit{multicast} ai filtri del livello di collegamento dell'interfaccia,
-  vuole un indirizzo hardware specificato come per \const{SIOCADDMULTI}. Anche
-  questa operazione è privilegiata e può essere eseguita in forma alternativa
-  con i \textit{packet socket}.
+\item[\const{SIOCDELMULTI}] rimuove un indirizzo di \textit{multicast} ai
+  filtri del livello di collegamento dell'interfaccia, vuole un indirizzo
+  hardware specificato come per \const{SIOCADDMULTI}. Anche questa operazione
+  è privilegiata e può essere eseguita in forma alternativa con i
+  \textit{packet socket}.
 
 \item[\const{SIOCGIFTXQLEN}] permette di leggere la lunghezza della coda di
   trasmissione del dispositivo associato all'interfaccia specificata nel campo
@@ -3939,8 +3929,8 @@ Le operazioni di controllo disponibili per i socket TCP sono illustrate dalla
 relativa pagina di manuale, accessibile con \texttt{man 7 tcp}, e prevedono
 come possibile valore per il secondo argomento della funzione le costanti
 illustrate nell'elenco seguente; il terzo argomento della funzione, gestito
-come \itindex{value~result~argument} \textit{value result argument}, deve
-essere sempre il puntatore ad una variabile di tipo \ctyp{int}:
+come \textit{value result argument}, deve essere sempre il puntatore ad una
+variabile di tipo \ctyp{int}:
 \begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}}
 \item[\const{SIOCINQ}] restituisce la quantità di dati non ancora letti
   presenti nel buffer di ricezione; il socket non deve essere in stato
@@ -3972,9 +3962,8 @@ essere sempre il puntatore ad una variabile di tipo \ctyp{int}:
 Le operazioni di controllo disponibili per i socket UDP, anch'esse illustrate
 dalla relativa pagina di manuale accessibile con \texttt{man 7 udp}, sono
 quelle indicate dalle costanti del seguente elenco; come per i socket TCP il
-terzo argomento viene gestito come \itindex{value~result~argument}
-\textit{value result argument} e deve essere un puntatore ad una variabile di
-tipo \ctyp{int}:
+terzo argomento viene gestito come \textit{value result argument} e deve
+essere un puntatore ad una variabile di tipo \ctyp{int}:
 \begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}}
 \item[\const{FIONREAD}] restituisce la dimensione in byte del primo pacchetto
   in attesa di ricezione, o 0 qualora non ci sia nessun pacchetto.