formato degli indirizzi usati in quel dominio per identificare i capi della
comunicazione.
-\begin{table}[htb]
+\begin{table}[!htb]
\footnotesize
\centering
\begin{tabular}[c]{|l|l|l|l|}
\constd{AF\_ASH} &18& Ash & \\
\constd{AF\_ECONET} &19& Acorn Econet & \\
\constd{AF\_ATMSVC} &20& ATM SVCs & \\
+ \constd{AF\_RDS} &21& RDS Sockets & \\
\constd{AF\_SNA} &22& Linux SNA Project & \\
- \constd{AF\_IRDA} &23& IRDA socket (infrarossi) & \\
+ \constd{AF\_IRDA} &23& IRDA socket (infrarossi) & irda(7) \\
\constd{AF\_PPPOX} &24& PPPoX socket & \\
\constd{AF\_WANPIPE} &25& Wanpipe API socket & \\
\constd{AF\_LLC} &26& Linux LLC & \\
+ \constd{AF\_IB} &27& Native InfiniBand address & \\
+ \constd{AF\_MPLS} &28& MPSL & \\
\constd{AF\_CAN} &29& Controller Are Network & \\
+ \constd{AF\_TIPC} &30& TIPC sockets & \\
\constd{AF\_BLUETOOTH}&31& Bluetooth socket & \\
+ \constd{AF\_IUCV} &32& IUCV sockets & \\
+ \constd{AF\_RXRPC} &33& RxRPC sockets & \\
+ \constd{AF\_ISDN} &34& mISDN sockets & \\
+ \constd{AF\_PHONET} &35& Phonet sockets & \\
+ \constd{AF\_IEEE802154}&36& IEEE802154 sockets & \\
+ \constd{AF\_CAIF} &37& CAIF sockets & \\
+ \constd{AF\_ALG} &38& Algorithm sockets & \\
+ \constd{AF\_NFC} &39& NFC sockets & \\
+ \constd{AF\_VSOCK} &40& vSockets & \\
+ \constd{AF\_KCM} &41& Kernel Connection Multiplexor & \\
+ \constd{AF\_QIPCRTR} &42& Qualcomm IPC Router & \\
+ \constd{AF\_SMC} &43& smc sockets & \\
\hline
\end{tabular}
\caption{Famiglie di protocolli definiti in Linux.}
I domini (e i relativi nomi simbolici), così come i nomi delle famiglie di
indirizzi, sono definiti dall'\textit{header file} \headfiled{socket.h}. Un
-elenco delle famiglie di protocolli disponibili in Linux è riportato in
-tab.~\ref{tab:net_pf_names}. 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), viene definita
-anche una costante \constd{AF\_MAX} che indica il valore massimo associabile
-ad un dominio.
+elenco, aggiornato alla versione 4.15, delle famiglie di protocolli
+disponibili in Linux è riportato in tab.~\ref{tab:net_pf_names}. 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), viene definita anche una costante \constd{AF\_MAX} che
+indica il valore massimo associabile ad un dominio.
Si tenga presente che non tutte le famiglie di protocolli sono utilizzabili
dall'utente generico, ad esempio in generale tutti i socket di tipo
tre tipi, Linux supporta anche gli altri, come si può verificare nel file
\texttt{include/linux/net.h} dei sorgenti del kernel.}
-\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
+\begin{basedescript}{\desclabelwidth{2.0cm}\desclabelstyle{\nextlinelabel}}
\item[\constd{SOCK\_STREAM}] Provvede un canale di trasmissione dati
bidirezionale, sequenziale e affidabile. Opera su una connessione con un
altro socket. I dati vengono ricevuti e trasmessi come un flusso continuo di
non strettamente attinenti all'indicazione del tipo secondo i valori appena
illustrati. Essi infatti possono essere combinati con un OR aritmetico delle
ulteriori costanti:
-\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
+\begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}}
\item[\constd{SOCK\_CLOEXEC}] imposta il flag di \textit{close-on-exec} sul
file descriptor del socket, ottenendo lo stesso effetto del flag
\const{O\_CLOEXEC} di \func{open} (vedi tab.~\ref{tab:open_operation_flag}),
tab.~\ref{tab:open_operation_flag}).
\end{basedescript}
-
Si tenga presente inoltre che non tutte le combinazioni fra una famiglia di
protocolli e un tipo di socket sono valide, in quanto non è detto che in una
famiglia esista un protocollo per ciascuno dei diversi stili di comunicazione
\hline
\const{AF\_INET6} & TCP & UDP & IPv6 & -- & -- \\
\hline
- \const{AF\_IPX} & -- & -- & -- & -- & -- \\
+ \const{AF\_IPX} & -- & si & -- & -- & -- \\
\hline
\const{AF\_NETLINK} & -- & si & si & -- & -- \\
\hline
\const{AF\_X25} & -- & -- & -- & -- & si \\
\hline
- \const{AF\_AX25} & -- & -- & -- & -- & -- \\
- \hline
- \const{AF\_ATMPVC} & -- & -- & -- & -- & -- \\
+ \const{AF\_AX25} & -- & si & si & -- & si \\
\hline
+% \const{AF\_ATMPVC} & -- & -- & -- & -- & -- \\
+% \hline
\const{AF\_APPLETALK} & -- & si & si & -- & -- \\
\hline
\const{AF\_PACKET} & -- & si & si & -- & -- \\
\hline
+ \const{AF\_KEY} & -- & -- & si & -- & -- \\
+ \hline
+ \const{AF\_IRDA} & si & si & si & -- & si \\
+ \hline
+ \const{AF\_NETROM} & -- & -- & -- & -- & si \\
+ \hline
+ \const{AF\_ROSE} & -- & -- & -- & -- & si \\
+ \hline
+ \const{AF\_RDS} & -- & -- & -- & -- & si \\
+ \hline
+ \const{AF\_ECONET} & -- & si & -- & -- & -- \\
+ \hline
\end{tabular}
\caption{Combinazioni valide di dominio e tipo di protocollo per la
funzione \func{socket}.}
non è richiesto dallo standard POSIX.1g, in Linux pertanto non esiste. Il
campo \type{sa\_family\_t} era storicamente un \ctyp{unsigned short}.
-\begin{figure}[!htb]
- \footnotesize \centering
- \begin{minipage}[c]{0.80\textwidth}
- \includestruct{listati/sockaddr.h}
- \end{minipage}
- \caption{La struttura generica degli indirizzi dei socket
- \structd{sockaddr}.}
- \label{fig:sock_sa_gen_struct}
-\end{figure}
-
Dal punto di vista del programmatore l'unico uso di questa struttura è quello
di fare da riferimento per il casting, per il kernel le cose sono un po'
diverse, in quanto esso usa il puntatore per recuperare il campo