Rimesse a posto un sacco di referenze, figure, etc.
[gapil.git] / socket.tex
index 32f1c0f5a6adea4e730445b41ac35aafd0e773f3..e72d2100e63e7d129b000d53abdcf38867809f47 100644 (file)
@@ -421,7 +421,7 @@ segue le stesse regole; il campo \texttt{sin6\_flowinfo} 
 in tre parti di cui i 24 bit inferiori indicano l'etichetta di flusso, i
 successivi 4 bit la priorità e gli ultimi 4 sono riservati; questi valori
 fanno riferimento ad alcuni campi specifici dell'header dei pacchetti IPv6
-(vedi \secref{sec:appA_ipv6}) ed il loro uso è sperimentale.
+(vedi \secref{sec:IP_ipv6head}) ed il loro uso è sperimentale.
 
 Il campo \texttt{sin6\_addr} contiene l'indirizzo a 128 bit usato da IPv6,
 infine il campo \texttt{sin6\_scope\_id} è un campo introdotto con il kernel
@@ -615,48 +615,59 @@ indicare la stringa. Dette funzioni sono:
 
 Le tre funzioni precedenti sono limitate solo ad indirizzi IPv4, per questo
 motivo è preferibile usare le due nuove funzioni \texttt{inet\_pton} e
-\texttt{inet\_ntop} che possono convertire anche gli indirizzi IPv6 (secondo
-lo schema in \nfig). Anche in questo caso le lettere $n$ e $p$ sono degli
-mnemonici per ricordare il tipo di conversione effettuata e stanno per
-\textit{presentation} e \textit{numeric}.
+\texttt{inet\_ntop} che possono convertire anche gli indirizzi IPv6. Anche in
+questo caso le lettere $n$ e $p$ sono degli mnemonici per ricordare il tipo di
+conversione effettuata e stanno per \textit{presentation} e \textit{numeric}.
 
-\begin{figure}[htb]
-  \centering  
+\begin{figure}[htb]
+  \centering  
 
-  \caption{Schema della rappresentazioni utilizzate dalle funzioni di 
-    conversione \texttt{inet\_pton} e \texttt{inet\_ntop} }
-  \label{fig:sock_inet_conv_func}
+  \caption{Schema della rappresentazioni utilizzate dalle funzioni di 
+    conversione \texttt{inet\_pton} e \texttt{inet\_ntop} }
+  \label{fig:sock_inet_conv_func}
 
-\end{figure}
+\end{figure}
 
-Entrambe le funzioni accettano l'argomento \texttt{family} che indica il tipo
-di indirizzo e può essere \texttt{AF\_INET} o \texttt{AF\_INET6}. Se la
-famiglia indicata non è valida entrambe le funzioni ritornano un valore
-negativo e settano la variabile \texttt{errno} al valore
-\texttt{EAFNOSUPPORT}. I prototipi delle suddette funzioni sono i seguenti:
+Entrambe le funzioni accettano l'argomento \texttt{af} che indica il tipo di
+indirizzo e può essere \texttt{AF\_INET} o \texttt{AF\_INET6}. Se la famiglia
+indicata non è valida entrambe le funzioni settano la variabile \texttt{errno}
+al valore \texttt{EAFNOSUPPORT}. I prototipi delle suddette funzioni sono i
+seguenti:
 \begin{prototype}{sys/socket.h}
-{int inet\_pton(int family, const char *src, void *dest)}   
-  Converte la stringa puntata da \texttt{src} nell'indirizzo binario da
-  memorizzare all'indirizzo puntato da \texttt{dest}, restituendo 0 in caso di
-  successo e 1 in caso di fallimento. 
+  {int inet\_pton(int af, const char *src, void *addr\_ptr)} Converte la
+  stringa puntata da \texttt{src} nell'indirizzo IP da memorizzare
+  all'indirizzo puntato da \texttt{addr\_ptr}, la funzione restituisce un
+  valore positivo in caso di successo, e zero se la stringa non rappresenta un
+  indirizzo valido, e negativo se \var{af} specifica una famiglia di indirizzi
+  non valida.
 \end{prototype}
 
 \begin{prototype}{sys/socket.h}
-{char *inet\_ntop(int family, const void *src, char *dest, size\_t len)}
-  Converte la struttura dell'indirizzo puntata da \texttt{src} in una stringa
-  che viene copiata nel buffer puntato dall'indirizzo \texttt{dest}; questo
-  deve essere preallocato dall'utente e la lunghezza deve essere almeno
+  {char *inet\_ntop(int af, const void *addr\_ptr, char *dest, size\_t len)}
+  Converte la struttura dell'indirizzo puntata da \texttt{addr\_ptr} in una
+  stringa che viene copiata nel buffer puntato dall'indirizzo \texttt{dest};
+  questo deve essere preallocato dall'utente e la lunghezza deve essere almeno
   \texttt{INET\_ADDRSTRLEN} in caso di indirizzi IPv4 e
   \texttt{INET6\_ADDRSTRLEN} per indirizzi IPv6; la lunghezza del buffer deve
   comunque venire specificata attraverso il parametro \texttt{len}.
-  
   La funzione restituisce un puntatore non nullo a \texttt{dest} in caso di
   successo e un puntatore nullo in caso di fallimento, in quest'ultimo caso
   viene settata la variabile \texttt{errno} con il valore \texttt{ENOSPC} in
   caso le dimensioni dell'indirizzo eccedano la lunghezza specificata da
-  \texttt{len}.
+  \texttt{len} o \macro{ENOAFSUPPORT} in caso \var{af} non sia una famiglia di
+  indirizzi valida.
 \end{prototype}
 
+Gli indirizzi vengono cnovertiti da/alle rispettive strutture di indirizzo
+(\var{struct  in\_addr} per IPv4, e \var{struct  in6\_addr} per IPv6), che
+devono essere precedentemente allocate e passate attraverso il puntatore
+\var{addr\_ptr}; il parametro \var{dest} di \func{inet\_ntop} non può essere
+nullo e deve essere allocato precedentemente.
+
+Il formato usato per gli indirizzi in formato di presentazione è la notazione
+\textit{dotted decimal} per IPv4 e quella descritta in
+\secref{sec:IP_ipv6_notation} per IPv6.
 
 \section{Il comportamento delle funzioni di I/O}
 \label{sec:sock_io_behav}