Si tenga presente che non tutte le famiglie di protocolli sono utilizzabili
dall'utente generico, ad esempio in generale tutti i socket di tipo
\const{SOCK\_RAW} possono essere creati solo da processi che hanno i privilegi
-di amministratore (cioè con user-ID effettivo uguale a zero) o dotati della
+di amministratore (cioè con \acr{uid} effettivo uguale a zero) o dotati della
\itindex{capabilities} \textit{capability} \const{CAP\_NET\_RAW}.
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{15cm}
+ \begin{minipage}[c]{\textwidth}
\includestruct{listati/sockaddr.h}
\end{minipage}
\caption{La struttura generica degli indirizzi dei socket
\begin{figure}[!htb]
\footnotesize\centering
- \begin{minipage}[c]{15cm}
+ \begin{minipage}[c]{\textwidth}
\includestruct{listati/sockaddr_in.h}
\end{minipage}
\caption{La struttura \structd{sockaddr\_in} degli indirizzi dei socket
altrimenti si avrà un errore di \errcode{EINVAL}; il membro \var{sin\_port}
specifica il \textsl{numero di porta}. I numeri di porta sotto il 1024 sono
chiamati \textsl{riservati} in quanto utilizzati da servizi standard e
-soltanto processi con i privilegi di amministratore (con user-ID effettivo
+soltanto processi con i privilegi di amministratore (con \acr{uid} effettivo
uguale a zero) o con la \itindex{capabilities} \textit{capability}
\const{CAP\_NET\_BIND\_SERVICE} possono usare la funzione \func{bind} (che
vedremo in sez.~\ref{sec:TCP_func_bind}) su queste porte.
Infine occorre sottolineare che sia gli indirizzi che i numeri di porta devono
essere specificati in quello che viene chiamato \textit{network order}, cioè
con i bit ordinati in formato \textit{big endian} (vedi
-sez.~\ref{sec:sock_endianess}), questo comporta la necessità di usare apposite
+sez.~\ref{sec:sock_endianness}), questo comporta la necessità di usare apposite
funzioni di conversione per mantenere la portabilità del codice (vedi
sez.~\ref{sec:sock_addr_func} per i dettagli del problema e le relative
soluzioni).
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{15cm}
+ \begin{minipage}[c]{\textwidth}
\includestruct{listati/sockaddr_in6.h}
\end{minipage}
\caption{La struttura \structd{sockaddr\_in6} degli indirizzi dei socket
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{15cm}
+ \begin{minipage}[c]{\textwidth}
\includestruct{listati/sockaddr_un.h}
\end{minipage}
\caption{La struttura \structd{sockaddr\_un} degli indirizzi dei socket
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{15cm}
+ \begin{minipage}[c]{\textwidth}
\includestruct{listati/sockaddr_atalk.h}
\end{minipage}
\caption{La struttura \structd{sockaddr\_atalk} degli indirizzi dei socket
usati solo da processi con i privilegi di amministratore o con la
\itindex{capabilities} \textit{capability} \const{CAP\_NET\_BIND\_SERVICE}.
L'indirizzo remoto è specificato nella struttura \var{sat\_addr}, e deve
-essere in \textit{network order} (vedi sez.~\ref{sec:sock_endianess}); esso è
+essere in \textit{network order} (vedi sez.~\ref{sec:sock_endianness}); esso è
composto da un parte di rete data dal campo \var{s\_net}, che può assumere il
valore \const{AT\_ANYNET}, che indica una rete generica e vale anche per
indicare la rete su cui si è, il singolo nodo è indicato da \var{s\_node}, e
speciale \const{ETH\_P\_ALL} passeranno sul \textit{packet socket} tutti i
pacchetti, qualunque sia il loro protocollo di collegamento. Ovviamente l'uso
di questi socket è una operazione privilegiata e può essere effettuati solo da
-un processo con i privilegi di amministratore (user-ID effettivo nullo) o con
+un processo con i privilegi di amministratore (\acr{uid} effettivo nullo) o con
la \itindex{capabilities} \textit{capability} \const{CAP\_NET\_RAW}.
Una volta aperto un \textit{packet socket}, tutti i pacchetti del protocollo
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{15cm}
+ \begin{minipage}[c]{\textwidth}
\includestruct{listati/sockaddr_ll.h}
\end{minipage}
\caption{La struttura \structd{sockaddr\_ll} degli indirizzi dei
\subsection{Le funzioni per il riordinamento}
\label{sec:sock_func_ord}
-Come già visto in sez.~\ref{sec:sock_endianess} il problema connesso
-\itindex{endianess} all'\textit{endianess} è che quando si passano dei dati da
+Come già visto in sez.~\ref{sec:sock_endianness} il problema connesso
+\itindex{endianness} all'\textit{endianness} è che quando si passano dei dati da
un tipo di architettura all'altra i dati vengono interpretati in maniera
diversa, e ad esempio nel caso dell'intero a 16 bit ci si ritroverà con i due
byte in cui è suddiviso scambiati di posto. Per questo motivo si usano delle
% LocalWords: pathname AppleTalk netatalk personal Apple ATPROTO atalk sat if
% LocalWords: ANYNET node ANYNODE ATADDR BCAST pcap IEEE linux ether ETH ALL
% LocalWords: sll ifindex ethernet halen MAC hatype ARP arp pkttype HOST recv
-% LocalWords: OTHERHOST OUTGOING recvfrom recvmsg endianess little endtest Mac
+% LocalWords: OTHERHOST OUTGOING recvfrom recvmsg endianness little endtest Mac
% LocalWords: Intel Digital Motorola IBM VME PowerPC l'Intel xABCD ptr htonl
-% LocalWords: all'endianess htons ntohl ntohs long hostlong hostshort netlong
+% LocalWords: htons ntohl ntohs long hostlong hostshort netlong
% LocalWords: sort netshort host inet aton ntoa dotted decimal const char src
% LocalWords: strptr struct dest addrptr INADDR NULL pton ntop presentation af
% LocalWords: numeric EAFNOSUPPORT size ENOSPC ENOAFSUPPORT ADDRSTRLEN ROUTE