Aggiornata lista famiglie degli indirizzi e relativa tabella dei tipi
authorSimone Piccardi <piccardi@gnulinux.it>
Sun, 5 Aug 2018 10:03:47 +0000 (10:03 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sun, 5 Aug 2018 10:03:47 +0000 (10:03 +0000)
di socket.

sockctrl.tex
socket.tex

index d8667d2da8c13b3776b3f41ae3ae35ed47f0f442..fcfa257d1e10d6687034310b70e0536c537c1edf 100644 (file)
@@ -2318,7 +2318,7 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni:
   \func{setsockopt} ed utilizza per \param{optval} un puntatore ad una
   struttura \struct{sock\_fprog} (definita in
   \headfile{linux/filter.h}). Questa opzione viene usata principalmente con i
-  socket di tipo \const{PF\_PACKET} (torneremo su questo in
+  socket di tipo \const{AF\_PACKET} (torneremo su questo in
   sez.~\ref{sec:packet_socket}) dalla libreria \texttt{libpcap} per
   implementare programmi di cattura dei pacchetti, e per questo tipo di
   applicazione è opportuno usare sempre quest'ultima.\footnote{la trattazione
@@ -2347,8 +2347,8 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni:
   \const{SOCK\_STREAM}.
 
 \item[\constd{SO\_BSDCOMPAT}] questa opzione abilita la compatibilità con il
-  comportamento di BSD (in particolare ne riproduce alcuni bug).  Attualmente è una
-  opzione usata solo per il protocollo UDP e ne è prevista la rimozione.
+  comportamento di BSD (in particolare ne riproduce alcuni bug).  Attualmente
+  è una opzione usata solo per il protocollo UDP e ne è prevista la rimozione.
   L'opzione utilizza per \param{optval} un intero usato come valore logico.
 
   Quando viene abilitata gli errori riportati da messaggi ICMP per un socket
index dc9f501a51abfda4d49dcda5cb0afc9ebbc8a403..6cd3468e8dd62356a2c54bda644928ec7f23d435 100644 (file)
@@ -191,7 +191,7 @@ riserva a quello che noi abbiamo chiamato domini) dato che identificano il
 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|}
@@ -222,13 +222,29 @@ comunicazione.
        \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.} 
@@ -250,12 +266,12 @@ seguendo la convenzione usata nelle pagine di manuale.
 
 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
@@ -278,7 +294,7 @@ 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.}
 
-\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
@@ -309,7 +325,7 @@ impostare dei flag relativi alle caratteristiche generali del \textit{socket}
 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}),
@@ -322,7 +338,6 @@ ulteriori costanti:
   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
@@ -348,20 +363,32 @@ appena elencati.
      \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}.}
@@ -467,16 +494,6 @@ aggiuntivo \code{uint8\_t sin\_len} (come riportato da R. Stevens in
 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