dall'utente generico, ad esempio in generale tutti i socket di tipo
\const{SOCK\_RAW} possono essere creati solo da processi che hanno i privilegi
di amministratore (cioè con user-ID effettivo uguale a zero) o dotati della
-capability \texttt{CAP\_NET\_RAW}.
+capability \const{CAP\_NET\_RAW}.
\subsection{Il tipo, o stile}
specifica il \textsl{numero di porta}. I numeri di porta sotto il 1024 sono
chiamati \textsl{riservati} in quanto utilizzati da servizi standard e
soltanto processi con i privilegi di amministratore (con user-ID effettivo
-uguale a zero) o con la capability \texttt{CAP\_NET\_BIND\_SERVICE} possono
+uguale a zero) o con la capability \const{CAP\_NET\_BIND\_SERVICE} possono
usare la funzione \func{bind} (che vedremo in sez.~\ref{sec:TCP_func_bind}) su
queste porte.
può essere un file (di tipo socket) nel filesystem o una stringa univoca
(mantenuta in uno spazio di nomi astratto). Nel primo caso l'indirizzo viene
specificato come una stringa (terminata da uno zero) corrispondente al
-\index{\textit{pathname}}\textit{pathname} del file; nel secondo invece
+\itindex{pathname}\textit{pathname} del file; nel secondo invece
\var{sun\_path} inizia con uno zero e vengono usati come nome i restanti byte
come stringa, senza terminazione.
a pacchetto, di tipo \const{SOCK\_DGRAM}; l'argomento \param{protocol} di
\func{socket} deve essere nullo. È altresì possibile usare i socket raw
specificando un tipo \const{SOCK\_RAW}, nel qual caso l'unico valore valido
-per \param{protocol} è \func{ATPROTO\_DDP}.
+per \param{protocol} è \const{ATPROTO\_DDP}.
Gli indirizzi AppleTalk devono essere specificati tramite una struttura
\struct{sockaddr\_atalk}, la cui definizione è riportata in
% passaggio dipende dalla direzione del medesimo, dal processo al kernel o
% viceversa.
-% In particolare le tre funzioni \texttt{bind}, \texttt{connect} e
-% \texttt{sendto} passano la struttura al kernel, in questo caso è passata
+% In particolare le tre funzioni \func{bind}, \func{connect} e
+% \func{sendto} passano la struttura al kernel, in questo caso è passata
% \textsl{per valore} anche la dimensione della medesima
-% Le funzioni \texttt{accept}, \texttt{recvfrom}, \texttt{getsockname} e
-% \texttt{getpeername} invece ricevono i valori del kernel
+% Le funzioni \func{accept}, \func{recvfrom}, \func{getsockname} e
+% \func{getpeername} invece ricevono i valori del kernel
\subsection{La \textit{endianess}}
\label{sec:sock_endianess}
-\index{\textit{endianess}|(}
+\itindbeg{endianess}
La rappresentazione di un numero binario in un computer può essere fatta in
due modi, chiamati rispettivamente \textit{big endian} e \textit{little
endian} a seconda di come i singoli bit vengono aggregati per formare le
significativo (cioè, per quanto visto in fig.~\ref{fig:sock_endianess}, che sia
\textit{little endian}). Infine la funzione restituisce (\texttt{\small 12})
il valore del confonto delle due variabili.
-
-\index{\textit{endianess}|)}
+\itindend{endianess}
\subsection{Le funzioni per il riordinamento}
\label{sec:sock_func_ord}
-Il problema connesso all'endianess\index{\textit{endianess}} è che quando si
-passano dei dati da un tipo di architettura all'altra i dati vengono
-interpretati in maniera diversa, e ad esempio nel caso dell'intero a 16 bit ci
-si ritroverà con i due byte in cui è suddiviso scambiati di posto. Per questo
-motivo si usano delle funzioni di conversione che servono a tener conto
-automaticamente della possibile differenza fra l'ordinamento usato sul
-computer e quello che viene usato nelle trasmissione sulla rete; queste
-funzioni sono \funcd{htonl}, \funcd{htons}, \funcd{ntohl} e \funcd{ntohs} ed i
-rispettivi prototipi sono:
+Il problema connesso all'endianess\itindex{endianess} è che quando si passano
+dei dati da un tipo di architettura all'altra i dati vengono interpretati in
+maniera diversa, e ad esempio nel caso dell'intero a 16 bit ci si ritroverà
+con i due byte in cui è suddiviso scambiati di posto. Per questo motivo si
+usano delle funzioni di conversione che servono a tener conto automaticamente
+della possibile differenza fra l'ordinamento usato sul computer e quello che
+viene usato nelle trasmissione sulla rete; queste funzioni sono \funcd{htonl},
+\funcd{htons}, \funcd{ntohl} e \funcd{ntohs} ed i rispettivi prototipi sono:
\begin{functions}
\headdecl{netinet/in.h}
\funcdecl{unsigned long int htonl(unsigned long int hostlong)}
% \centering
% \caption{Schema della rappresentazioni utilizzate dalle funzioni di
-% conversione \texttt{inet\_pton} e \texttt{inet\_ntop} }
+% conversione \func{inet\_pton} e \func{inet\_ntop} }
% \label{fig:sock_inet_conv_func}
% \end{figure}