Roba rimasta indietro
[gapil.git] / sockctrl.tex
index f371f92dfc39e017dea8faba069a4b291552137b..a197b90fe8eec86d753363ee8d6b10021e5a2db1 100644 (file)
@@ -251,9 +251,8 @@ informazione che un server DNS fornisce normalmente.
 L'esistenza di vari tipi di informazioni è un altro dei motivi per cui il
 \textit{resolver} prevede, oltre a quelle relative alla semplice risoluzione
 dei nomi, un insieme di funzioni specifiche dedicate all'interrogazione di un
-server DNS, tutte nella forma \texttt{res\_}\textsl{\texttt{nome}}.
-Tradizionalmente la prima di queste funzioni è \funcd{res\_init}, il cui
-prototipo è:
+server DNS, tutte nella forma \texttt{res\_}\textsl{\texttt{nome}}. La prima
+di queste funzioni è \funcd{res\_init}, il cui prototipo è:
 
 \begin{funcproto}{
 \fhead{netinet/in.h} 
@@ -274,32 +273,35 @@ sono specificati server verrà utilizzato l'indirizzo locale, e se non è
 definito un dominio di default sarà usato quello associato con l'indirizzo
 locale (ma questo può essere sovrascritto con l'uso della variabile di
 ambiente \envvar{LOCALDOMAIN}). In genere non è necessario eseguire questa
-funzione direttamente in quanto viene automaticamente chiamata la prima volta
-che si esegue una delle altre.
+funzione esplicitamente, in quanto viene automaticamente chiamata la prima
+volta che si esegue una qualunque delle altre.
 
 Le impostazioni e lo stato del \textit{resolver} inizializzati da
 \func{res\_init} vengono mantenuti in una serie di variabili raggruppate nei
-campi di una apposita struttura \var{\_res} usata da tutte queste
-funzioni. Essa viene definita in \headfiled{resolv.h} ed è utilizzata
-internamente alle funzioni essendo definita come variabile globale; questo
-consente anche di accedervi direttamente all'interno di un qualunque
-programma, una volta che la sia opportunamente dichiarata come:
+campi di una apposita struttura. Questa struttura viene definita in
+\headfiled{resolv.h} e mantenuta nella variabile globale \var{\_res}, che
+viene utilizzata internamente da tutte le funzioni dell'interfaccia. Questo
+consente anche di accedere direttamente al contenuto della variabile
+all'interno di un qualunque programma, una volta che la sia opportunamente
+dichiarata con:
 \includecodesnip{listati/resolv_option.c}
 
-Dato che l'uso di una variabile globale rende tutte le funzioni classiche non
-rientranti, con l'uscita di BIND 8.2 è stata introdotta una nuova interfaccia
-in cui tutte le nuove funzioni (il cui nome è ottenuto apponendo una
-``\texttt{n}'' al nome di quella tradizionale nella forma
-\texttt{res\_n\textsl{nome}}). Tutte le nuove funzioni prendono un primo
-argomento aggiuntivo, \param{statep}, che punti ad una struttura dello stesso
-tipo, che verrà usato per mantenere lo stato del \textit{resolver} e potrà
-essere usata senza problemi anche con programmi \textit{multithread}.  Anche
-in questo caso per poterlo utilizzare occorrerà una opportuna dichiarazione
-del tipo di dato con:
+Dato che l'uso di una variabile globale rende tutte le funzioni
+dell'interfaccia classica non rientranti, queste sono state deprecate in
+favore di una nuova interfaccia in cui esse sono state sostituite da
+altrettante nuove funzioni, il cui nome è ottenuto apponendo una
+``\texttt{n}'' al nome di quella tradizionale (cioè nella forma
+\texttt{res\_n\textsl{nome}}). Tutte le nuove funzioni sono identiche alle
+precedenti, ma hanno un primo argomento aggiuntivo, \param{statep}, puntatore
+ad una struttura dello stesso tipo di \var{\_res}. Questo consente di usare
+una variabile locale per mantenere lo stato del \textit{resolver}, rendendo le
+nuove funzioni rientranti.  In questo caso per poter utilizzare il nuovo
+argomento occorrerà una opportuna dichiarazione del relativo tipo di dato con:
 \includecodesnip{listati/resolv_newoption.c}
-e la nuova funzione che utilizzata per inizializzare il \textit{resolver} (che
-come la precedente viene chiamata automaticamente dalle altre funzioni) è
-\funcd{res\_ninit} il cui prototipo è:
+
+Così la nuova funzione utilizzata per inizializzare il \textit{resolver} (che
+come la precedente viene chiamata automaticamente da tutte altre funzioni) è
+\funcd{res\_ninit}, ed il suo prototipo è:
 
 \begin{funcproto}{
 \fhead{netinet/in.h} 
@@ -313,12 +315,14 @@ come la precedente viene chiamata automaticamente dalle altre funzioni) è
 \end{funcproto}
 
 Indipendentemente da quale versione delle funzioni si usino, tutti i campi
-della struttura sono ad uso interno, e vengono usualmente inizializzate da
-\func{res\_init} o \func{res\_ninit} in base al contenuto dei file di
-configurazione e ad una serie di valori di default. L'unico campo che può
-essere utile modificare è \var{\_res.options}, una maschera binaria che
-contiene una serie di bit di opzione che permettono di controllare il
-comportamento del \textit{resolver}.
+della struttura (\var{\_res} o la variabile puntata da \param{statep}) sono ad
+uso interno, e vengono usualmente inizializzate da \func{res\_init} o
+\func{res\_ninit} in base al contenuto dei file di configurazione e ad una
+serie di valori di default. L'unico campo che può essere utile modificare è
+\var{\_res.options} (o l'equivalente della variabile puntata
+da\param{statep}), una maschera binaria che contiene una serie di bit che
+esprimono le opzioni che permettono di controllare il comportamento del
+\textit{resolver}.
 
 \begin{table}[htb]
   \centering
@@ -334,8 +338,7 @@ comportamento del \textit{resolver}.
     \constd{RES\_AAONLY}     & Accetta solo risposte autoritative.\\
     \constd{RES\_USEVC}      & Usa connessioni TCP per contattare i server 
                                invece che l'usuale UDP.\\
-    \constd{RES\_PRIMARY}    & Interroga soltanto server DNS primari.
-    \\
+    \constd{RES\_PRIMARY}    & Interroga soltanto server DNS primari.\\
     \constd{RES\_IGNTC}      & Ignora gli errori di troncamento, non ritenta la
                                richiesta con una connessione TCP.\\
     \constd{RES\_RECURSE}    & Imposta il bit che indica che si desidera
@@ -345,7 +348,7 @@ comportamento del \textit{resolver}.
                                contengono cioè un ``\texttt{.}'').\\
     \constd{RES\_STAYOPEN}   & Usato con \const{RES\_USEVC} per mantenere
                                aperte le connessioni TCP fra interrogazioni
-                               diverse. \\
+                               diverse.\\
     \constd{RES\_DNSRCH}     & Se attivo \func{res\_search} esegue le ricerche
                                di nomi di macchine nel dominio corrente o nei
                                domini ad esso sovrastanti.\\
@@ -373,9 +376,9 @@ comportamento del \textit{resolver}.
 
 Per utilizzare questa funzionalità per modificare le impostazioni direttamente
 da programma occorrerà impostare un opportuno valore per questo campo ed
-invocare esplicitamente \func{res\_init}, dopo di che le altre funzioni
-prenderanno le nuove impostazioni. Le costanti che definiscono i vari bit di
-questo campo, ed il relativo significato sono illustrate in
+invocare esplicitamente \func{res\_init} o \func{res\_ninit}, dopo di che le
+altre funzioni prenderanno le nuove impostazioni. Le costanti che definiscono
+i vari bit di questo campo, ed il relativo significato sono illustrate in
 tab.~\ref{tab:resolver_option}; trattandosi di una maschera binaria un valore
 deve essere espresso con un opportuno OR aritmetico di dette costanti; ad
 esempio il valore di default delle opzioni, espresso dalla costante
@@ -466,8 +469,8 @@ Le classi di indirizzi supportate da un server DNS sono tre, ma di queste in
 pratica oggi viene utilizzata soltanto quella degli indirizzi internet; le
 costanti che identificano dette classi, da usare come valore per l'argomento
 \param{class} delle precedenti funzioni, sono riportate in
-tab.~\ref{tab:DNS_address_class}.\footnote{esisteva in realtà anche una classe
-  \constd{C\_CSNET} per la omonima rete, ma è stata dichiarata obsoleta.}
+tab.~\ref{tab:DNS_address_class} (esisteva in realtà anche una classe
+\constd{C\_CSNET} per la omonima rete, ma è stata dichiarata obsoleta).
 
 \begin{table}[htb]
   \centering
@@ -493,7 +496,7 @@ tab.~\ref{tab:DNS_address_class}.\footnote{esisteva in realtà anche una classe
 Come accennato le tipologie di dati che sono mantenibili su un server DNS sono
 diverse, ed a ciascuna di essa corrisponde un diverso tipo di \textit{resource
   record}. L'elenco delle costanti, ripreso dai file di dichiarazione
-  \headfiled{arpa/nameser.h} e \headfiled{arpa/nameser\_compat.h}, che
+\headfiled{arpa/nameser.h} e \headfiled{arpa/nameser\_compat.h}, che
 definiscono i valori che si possono usare per l'argomento \param{type} per
 specificare il tipo di \textit{resource record} da richiedere è riportato in
 tab.~\ref{tab:DNS_record_type}; le costanti (tolto il \texttt{T\_} iniziale)
@@ -504,7 +507,7 @@ BIND,\footnote{BIND, acronimo di \textit{Berkley Internet Name Domain}, è una
   (cioè i suoi \textit{resource record} vengono mantenuti in quelli che sono
   usualmente chiamati \textsl{file di zona}, e in essi ciascun tipo di dominio
   è identificato da un nome che è appunto identico a quello delle costanti di
-  tab.~\ref{tab:DNS_record_type} senza il \texttt{T\_} iniziale.}  e che
+  tab.~\ref{tab:DNS_record_type} senza il \texttt{T\_} iniziale.} e che
 normalmente sono anche usati come nomi per indicare i record.
 
 \begin{table}[!htb]
@@ -594,7 +597,7 @@ indicarli si è usata la notazione dei file di zona di BIND):
 
 Come accennato in caso di successo le due funzioni di richiesta restituiscono
 il risultato della interrogazione al server, in caso di insuccesso l'errore
-invece viene segnalato da un valore di ritorno pari a -1, ma in questo caso,
+invece viene segnalato da un valore di ritorno pari a $-1$, ma in questo caso,
 non può essere utilizzata la variabile \var{errno} per riportare un codice di
 errore, in quanto questo viene impostato per ciascuna delle chiamate al
 sistema utilizzate dalle funzioni del \textit{resolver}, non avrà alcun