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
   \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
   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
   \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
   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.
 
 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|}
   \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\_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\_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\_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\_CAN}      &29& Controller Are Network        &    \\
+       \constd{AF\_TIPC}     &30& TIPC sockets                  &    \\
        \constd{AF\_BLUETOOTH}&31& Bluetooth socket              &    \\
        \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.} 
        \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
 
 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
 
 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.}
 
   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
 \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:
 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}),
 \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}
 
   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
 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
      \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
      \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
      \hline
+%    \const{AF\_ATMPVC}    & --  & --  &  --  & --  & -- \\
+%     \hline
     \const{AF\_APPLETALK} & --  & si  &  si  & --  & -- \\
      \hline
     \const{AF\_PACKET}    & --  & si  &  si  & --  & -- \\
      \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}.}
   \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}.
 
 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
 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