lo stesso nome.}
I domini (e i relativi nomi simbolici), così come i nomi delle famiglie di
-indirizzi, sono definiti dall'header \texttt{socket.h}. Un elenco delle
-famiglie di protocolli disponibili in Linux è riportato in
+indirizzi, sono definiti dall'\textit{header file} \headfile{socket.h}. Un
+elenco delle famiglie di protocolli disponibili in Linux è riportato in
tab.~\ref{tab:net_pf_names}.\footnote{l'elenco indica tutti i protocolli
definiti; fra questi però saranno utilizzabili solo quelli per i quali si è
compilato il supporto nel kernel (o si sono caricati gli opportuni moduli),
socket permette di scegliere lo stile di comunicazione indicando il tipo di
socket con l'argomento \param{type} di \func{socket}. Linux mette a
disposizione vari tipi di socket (che corrispondono a quelli che il manuale
-della \acr{glibc} \cite{glibc} chiama \textit{styles}) identificati dalle
+della \acr{glibc} \cite{GlibcMan} chiama \textit{styles}) identificati dalle
seguenti costanti:\footnote{le pagine di manuale POSIX riportano solo i primi
tre tipi, Linux supporta anche gli altri, come si può verificare nel file
\texttt{include/linux/net.h} dei sorgenti del kernel.}
I tipi di dati che compongono la struttura sono stabiliti dallo standard
POSIX.1g e li abbiamo riassunti in tab.~\ref{tab:sock_data_types} con i
rispettivi file di include in cui sono definiti; la struttura è invece
-definita nell'include file \file{sys/socket.h}.
+definita nell'include file \headfile{sys/socket.h}.
\begin{table}[!htb]
\centering
\multicolumn{1}{|c|}{\textbf{Header}} \\
\hline
\hline
- \type{int8\_t} & intero a 8 bit con segno & \file{sys/types.h}\\
- \type{uint8\_t} & intero a 8 bit senza segno & \file{sys/types.h}\\
- \type{int16\_t} & intero a 16 bit con segno & \file{sys/types.h}\\
- \type{uint16\_t} & intero a 16 bit senza segno& \file{sys/types.h}\\
- \type{int32\_t} & intero a 32 bit con segno & \file{sys/types.h}\\
- \type{uint32\_t} & intero a 32 bit senza segno& \file{sys/types.h}\\
+ \type{int8\_t} & intero a 8 bit con segno & \headfile{sys/types.h}\\
+ \type{uint8\_t} & intero a 8 bit senza segno & \headfile{sys/types.h}\\
+ \type{int16\_t} & intero a 16 bit con segno & \headfile{sys/types.h}\\
+ \type{uint16\_t} & intero a 16 bit senza segno& \headfile{sys/types.h}\\
+ \type{int32\_t} & intero a 32 bit con segno & \headfile{sys/types.h}\\
+ \type{uint32\_t} & intero a 32 bit senza segno& \headfile{sys/types.h}\\
\hline
- \type{sa\_family\_t} & famiglia degli indirizzi& \file{sys/socket.h}\\
+ \type{sa\_family\_t} & famiglia degli indirizzi&\headfile{sys/socket.h}\\
\type{socklen\_t} & lunghezza (\type{uint32\_t}) dell'indirizzo di
- un socket& \file{sys/socket.h}\\
+ un socket& \headfile{sys/socket.h}\\
\hline
\type{in\_addr\_t} & indirizzo IPv4 (\type{uint32\_t}) &
- \file{netinet/in.h}\\
+ \headfile{netinet/in.h}\\
\type{in\_port\_t} & porta TCP o UDP (\type{uint16\_t})&
- \file{netinet/in.h}\\
+ \headfile{netinet/in.h}\\
\hline
\end{tabular}
\caption{Tipi di dati usati nelle strutture degli indirizzi, secondo quanto
I socket di tipo \const{PF\_INET} vengono usati per la comunicazione
attraverso internet; la struttura per gli indirizzi per un socket internet (se
si usa IPv4) è definita come \struct{sockaddr\_in} nell'header file
-\file{netinet/in.h} ed ha la forma mostrata in
+\headfile{netinet/in.h} ed ha la forma mostrata in
fig.~\ref{fig:sock_sa_ipv4_struct}, conforme allo standard POSIX.1g.
\begin{figure}[!htb]
Il membro \var{sin\_addr} contiene un indirizzo internet, e viene acceduto sia
come struttura (un resto di una implementazione precedente in cui questa era
una \direct{union} usata per accedere alle diverse classi di indirizzi) che
-direttamente come intero. In \file{netinet/in.h} vengono definite anche alcune
-costanti che identificano alcuni indirizzi speciali, riportati in
+direttamente come intero. In \headfile{netinet/in.h} vengono definite anche
+alcune costanti che identificano alcuni indirizzi speciali, riportati in
tab.~\ref{tab:TCP_ipv4_addr}, che rincontreremo più avanti.
Infine occorre sottolineare che sia gli indirizzi che i numeri di porta devono
Essendo IPv6 un'estensione di IPv4, i socket di tipo \const{PF\_INET6} sono
sostanzialmente identici ai precedenti; la parte in cui si trovano
praticamente tutte le differenze fra i due socket è quella della struttura
-degli indirizzi; la sua definizione, presa da \file{netinet/in.h}, è riportata
-in fig.~\ref{fig:sock_sa_ipv6_struct}.
+degli indirizzi; la sua definizione, presa da \headfile{netinet/in.h}, è
+riportata in fig.~\ref{fig:sock_sa_ipv6_struct}.
\begin{figure}[!htb]
\footnotesize \centering
\includestruct{listati/sockaddr_un.h}
\end{minipage}
\caption{La struttura \structd{sockaddr\_un} degli indirizzi dei socket
- locali (detti anche \textit{unix domain}) definita in \file{sys/un.h}.}
+ locali (detti anche \textit{unix domain}) definita in
+ \headfile{sys/un.h}.}
\label{fig:sock_sa_local_struct}
\end{figure}
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
-\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.
+\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.
\subsection{La struttura degli indirizzi AppleTalk}
Gli indirizzi AppleTalk devono essere specificati tramite una struttura
\struct{sockaddr\_atalk}, la cui definizione è riportata in
fig.~\ref{fig:sock_sa_atalk_struct}; la struttura viene dichiarata includendo
-il file \file{netatalk/at.h}.
+il file \headfile{netatalk/at.h}.
\begin{figure}[!htb]
\footnotesize \centering