Le impostazioni e lo stato del \textit{resolver} 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 \headfile{resolv.h} ed
+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:
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\footnote{ripreso dai file di dichiarazione
- \headfile{arpa/nameser.h} e \headfile{arpa/nameser\_compat.h}.} che
+ record}. L'elenco delle costanti, ripreso dai file di dichiarazione
+ \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)
i propri risultati. La funzione infatti è rientrante, ed alloca autonomamente
tutta la memoria necessaria in cui verranno riportati i risultati della
risoluzione. La funzione scriverà all'indirizzo puntato da \param{res} il
-puntatore iniziale ad una \itindex{linked~list} \textit{linked list} di
-strutture di tipo \struct{addrinfo} contenenti tutte le informazioni ottenute.
+puntatore iniziale ad una \textit{linked list} di strutture di tipo
+\struct{addrinfo} contenenti tutte le informazioni ottenute.
\begin{figure}[!htb]
\footnotesize \centering
\label{fig:sock_addrinfo_struct}
\end{figure}
-Come illustrato la struttura \struct{addrinfo}, la cui definizione\footnote{la
- definizione è ripresa direttamente dal file \headfile{netdb.h} in questa
- struttura viene dichiarata, la pagina di manuale riporta \type{size\_t} come
- tipo di dato per il campo \var{ai\_addrlen}, qui viene usata quanto previsto
- dallo standard POSIX, in cui viene utilizzato \type{socklen\_t}; i due tipi
- di dati sono comunque equivalenti.} è riportata in
-fig.~\ref{fig:sock_addrinfo_struct}, viene usata sia in ingresso, per passare
-dei valori di controllo alla funzione, che in uscita, per ricevere i
-risultati. Il primo campo, \var{ai\_flags}, è una maschera binaria di bit che
+Come illustrato la struttura \struct{addrinfo}, la cui definizione è riportata
+in fig.~\ref{fig:sock_addrinfo_struct}, viene usata sia in ingresso, per
+passare dei valori di controllo alla funzione, che in uscita, per ricevere i
+risultati. La definizione è ripresa direttamente dal file \headfiled{netdb.h}
+in questa struttura viene dichiarata, la pagina di manuale riporta
+\type{size\_t} come tipo di dato per il campo \var{ai\_addrlen}, qui viene
+usata quanto previsto dallo standard POSIX, in cui viene utilizzato
+\type{socklen\_t}; i due tipi di dati sono comunque equivalenti.
+
+Il primo campo, \var{ai\_flags}, è una maschera binaria di bit che
permettono di controllare le varie modalità di risoluzione degli indirizzi,
che viene usato soltanto in ingresso. I tre campi successivi \var{ai\_family},
\var{ai\_socktype}, e \var{ai\_protocol} contengono rispettivamente la
\begin{figure}[!htb]
\centering
\includegraphics[width=10cm]{img/addrinfo_list}
- \caption{La \itindex{linked~list} \textit{linked list} delle strutture
- \struct{addrinfo} restituite da \func{getaddrinfo}.}
+ \caption{La \textit{linked list} delle strutture \struct{addrinfo}
+ restituite da \func{getaddrinfo}.}
\label{fig:sock_addrinfo_list}
\end{figure}
\end{Verbatim}
%$
-Una volta estratti i risultati dalla \itindex{linked~list} \textit{linked list}
-puntata da \param{res} se questa non viene più utilizzata si dovrà avere cura
-di disallocare opportunamente tutta la memoria, per questo viene fornita
+Una volta estratti i risultati dalla \textit{linked list} puntata
+da \param{res} se questa non viene più utilizzata si dovrà avere cura di
+disallocare opportunamente tutta la memoria, per questo viene fornita
l'apposita funzione \funcd{freeaddrinfo}, il cui prototipo è:
\begin{functions}
\headdecl{netdb.h}
\const{SO\_DONTROUTE}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}&
Non invia attraverso un gateway.\\
\const{SO\_BROADCAST}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}&
- Attiva o disattiva il \itindex{broadcast}
- \textit{broadcast}.\\
+ Attiva o disattiva il \textit{broadcast}.\\
\const{SO\_SNDBUF} &$\bullet$&$\bullet$& &\texttt{int}&
Imposta dimensione del buffer di trasmissione.\\
\const{SO\_RCVBUF} &$\bullet$&$\bullet$& &\texttt{int}&
di routing del kernel. Prende per \param{optval} un intero usato come valore
logico.
-\item[\const{SO\_BROADCAST}] questa opzione abilita il \itindex{broadcast}
- \textit{broadcast}; quanto abilitata i socket di tipo \const{SOCK\_DGRAM}
- riceveranno i pacchetti inviati all'indirizzo di \textit{broadcast}, e
- potranno scrivere pacchetti su tale indirizzo. Prende per \param{optval} un
- intero usato come valore logico. L'opzione non ha effetti su un socket di
- tipo \const{SOCK\_STREAM}.
+\item[\const{SO\_BROADCAST}] questa opzione abilita il \textit{broadcast};
+ quanto abilitata i socket di tipo \const{SOCK\_DGRAM} riceveranno i
+ pacchetti inviati all'indirizzo di \textit{broadcast}, e potranno scrivere
+ pacchetti su tale indirizzo. Prende per \param{optval} un intero usato come
+ valore logico. L'opzione non ha effetti su un socket di tipo
+ \const{SOCK\_STREAM}.
\item[\const{SO\_SNDBUF}] questa opzione imposta la dimensione del buffer di
trasmissione del socket. Prende per \param{optval} un intero indicante il
livello da utilizzare è \const{SOL\_IP} (o l'equivalente \const{IPPROTO\_IP});
si è riportato un elenco di queste opzioni in tab.~\ref{tab:sock_opt_iplevel}.
Le costanti indicanti le opzioni e tutte le altre costanti ad esse collegate
-sono definite in \headfile{netinet/ip.h}, ed accessibili includendo detto
+sono definite in \headfiled{netinet/ip.h}, ed accessibili includendo detto
file.
\begin{table}[!htb]
dove sono elencate le rispettive costanti da utilizzare come valore per
l'argomento \param{optname}. Dette costanti e tutte le altre costanti e
strutture collegate all'uso delle opzioni TCP sono definite in
-\headfile{netinet/tcp.h}, ed accessibili includendo detto file.\footnote{in
+\headfiled{netinet/tcp.h}, ed accessibili includendo detto file.\footnote{in
realtà questo è il file usato dalle librerie; la definizione delle opzioni
effettivamente supportate da Linux si trova nel file
\texttt{include/linux/tcp.h} dei sorgenti del kernel, dal quale si sono
questo caso per poterle utilizzare occorrerà impostare l'opportuno valore per
l'argomento \param{level}, che è \const{SOL\_UDP} (o l'equivalente
\const{IPPROTO\_UDP}). Le costanti che identificano dette opzioni sono
-definite in \headfile{netinet/udp.h}, ed accessibili includendo detto
+definite in \headfiled{netinet/udp.h}, ed accessibili includendo detto
file.\footnote{come per TCP, la definizione delle opzioni effettivamente
supportate dal kernel si trova in realtà nel file
\texttt{include/linux/udp.h}, dal quale si sono estratte le costanti di
\hline
\const{IFF\_UP} & L'interfaccia è attiva.\\
\const{IFF\_BROADCAST} & L'interfaccia ha impostato un indirizzo di
- \itindex{broadcast} \textit{broadcast} valido.\\
+ \textit{broadcast} valido.\\
\const{IFF\_DEBUG} & È attivo il flag interno di debug.\\
\const{IFF\_LOOPBACK} & L'interfaccia è una interfaccia di
\textit{loopback}.\\
privilegiata.
\item[\const{SIOCSIFHWBROADCAST}] imposta l'indirizzo \textit{broadcast}
- \itindex{broadcast} hardware dell'interfaccia al valore specificato dal
- campo \var{ifr\_hwaddr}. L'operazione è privilegiata.
+ hardware dell'interfaccia al valore specificato dal campo
+ \var{ifr\_hwaddr}. L'operazione è privilegiata.
\item[\const{SIOCGIFMAP}] legge alcuni parametri hardware (memoria, interrupt,
canali di DMA) del driver dell'interfaccia specificata, restituendo i
avere abilitato l'opzione \texttt{CONFIG\_SYN\_COOKIES} nella compilazione
del kernel.} Prende un valore logico, e di default è disabilitato. Questa
funzionalità serve a fornire una protezione in caso di un attacco di tipo
- \index{SYN~flood} \textit{SYN flood}, e deve essere utilizzato come ultima
- risorsa dato che costituisce una violazione del protocollo TCP e confligge
- con altre funzionalità come le estensioni e può causare problemi per i
- client ed il reinoltro dei pacchetti.
+ \textit{SYN flood}, e deve essere utilizzato come ultima risorsa dato che
+ costituisce una violazione del protocollo TCP e confligge con altre
+ funzionalità come le estensioni e può causare problemi per i client ed il
+ reinoltro dei pacchetti.
\item[\sysctlrelfile{net/ipv4}{tcp\_syn\_retries}] imposta il numero
di tentativi di ritrasmissione dei pacchetti SYN di inizio connessione del