+è illustrata in fig.~\ref{fig:netdevice_ifreq_struct}. Normalmente si utilizza
+il primo campo della struttura, \var{ifr\_name} per specificare il nome
+dell'interfaccia su cui si vuole operare (ad esempio \texttt{eth0},
+\texttt{ppp0}, ecc.), e si inseriscono (o ricevono) i valori relativi alle
+diversa carateristiche e funzionalità nel secondo campo, che come si può
+notare è definito come una \ctyp{union} proprio in quanto il suo significato
+varia a secondo dell'operazione scelta.
+
+Si tenga inoltre presente che alcune di queste operazioni (in particolare
+quelle che modificano le caratteristiche dell'interfaccia) sono privilegiate e
+richiedono i privilegi di amministatore o la \itindex{capabilities}
+\textit{capability} \const{CAP\_NET\_ADMIN}, altrimenti si otterrà un errore
+di \errval{EPERM}. Le costanti che identificano le operazioni disponibili
+sono le seguenti:
+\begin{basedescript}{\desclabelwidth{2.7cm}\desclabelstyle{\nextlinelabel}}
+\item[\const{SIOCGIFNAME}] questa è l'unica operazione che usa il campo
+ \var{ifr\_name} per restituire un risultato, tutte le altre lo utilizzano
+ per indicare l'interfaccia sulla quale operare. L'operazione richiede che si
+ indichi nel campo \var{ifr\_ifindex} il valore numerico dell'\textsl{indice}
+ dell'interfaccia, e restituisce il relativo nome in \var{ifr\_name}.
+
+ Il kernel infatti assegna ad ogni interfaccia un numero progressivo, detto
+ appunto \textit{interface index}, che è quello che effettivamente la
+ identifica nelle operazioni a basso livello, il nome dell'interfaccia è
+ soltanto una etichetta associata a detto \textsl{indice}, che permette di
+ rendere più comprensibile l'indicazione dell'interfaccia all'interno dei
+ comandi; si può ottenere un elenco delle interfacce che contiene anche il
+ valore del relativo indice usando il comando \cmd{ip link}.}
+
+\item[\const{SIOCGIFINDEX}] restituisce nel campo \var{ifr\_ifindex} il valore
+ numerico dell'indice dell'interfaccia specificata con \var{ifr\_name}, è in
+ sostanza l'operazione inversa di \const{SIOCGIFNAME}.
+
+\item[\const{SIOCGIFFLAGS}] permette di ottenere nel campo \var{ifr\_flags} il
+ valore corrente dei flag dell'interfaccia specificata. Il valore restituito
+ è una maschera binaria i cui bit sono identificabili attraverso le varie
+ costanti di tab.~\ref{tab:netdevice_iface_flag}.
+
+\begin{table}[htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|p{8cm}|}
+ \hline
+ \textbf{Flag} & \textbf{Significato} \\
+ \hline
+ \hline
+ \const{IFF\_UP} & l'interfaccia è attiva.\\
+ \const{IFF\_BROADCAST} & l'interfaccia ha impostato un indirizzo di
+ \itindex{broadcast} \textit{broadcast} valido.\\
+ \const{IFF\_DEBUG} & è attivo il flag interno di debug.\\
+ \const{IFF\_LOOPBACK} & l'interfaccia è una interfaccia di
+ \textit{loopback}.\\
+ \const{IFF\_POINTOPOINT}& l'interfaccia è associata ad un collegamento
+ \textsl{punto-punto}.\\
+ \const{IFF\_RUNNING} & l'interfaccia ha delle risorse allocate (non può
+ quindi essere disattivata).\\
+ \const{IFF\_NOARP} & l'interfaccia ha il protocollo ARP disabilitato o
+ l'indirizzo del livello di rete non è impostato.\\
+ \const{IFF\_PROMISC} & l'interfaccia è in \index{modo~promiscuo}
+ \textsl{modo promiscuo} (riceve cioè tutti i
+ pacchetti che vede passare, compresi quelli non
+ direttamente indirizzati a lei).\\
+ \const{IFF\_NOTRAILERS}& evita l'uso di \textit{trailer} nei pacchetti.\\
+ \const{IFF\_ALLMULTI} & riceve tutti i pacchetti di \itindex{multicast}
+ \textit{multicast}.\\
+ \const{IFF\_MASTER} & l'interfaccia è il master di un bundle per il
+ bilanciamento di carico.\\
+ \const{IFF\_SLAVE} & l'interfaccia è uno slave di un bundle per il
+ bilanciamento di carico.\\
+ \const{IFF\_MULTICAST} & l'interfaccia ha il supporto per il
+ \textit{multicast} \itindex{multicast} attivo.\\
+ \const{IFF\_PORTSEL} & l'interfaccia può impostare i suoi parametri
+ hardware (con l'uso di \struct{ifmap})..\\
+ \const{IFF\_AUTOMEDIA} & l'interfaccia è in grado di selezionare
+ automaticamente il tipo di collegamento.\\
+ \const{IFF\_DYNAMIC} & gli indirizzi assegnati all'interfaccia vengono
+ persi quando questa viene disattivata.\\
+% \const{IFF\_} & .\\
+ \hline
+ \end{tabular}
+ \caption{Le costanti che identificano i vari bit della maschera binaria
+ \var{ifr\_flags} che esprime i flag di una interfaccia di rete.}
+ \label{tab:netdevice_iface_flag}
+\end{table}
+
+
+\item[\const{SIOCSIFFLAGS}] permette di impostare il valore dei flag
+ dell'interfaccia attraverso il valore della maschera binaria da passare nel
+ campo \var{ifr\_flags}, che può essere ottenuta con l'OR aritmetico delle
+ costanti di tab.~\ref{tab:netdevice_iface_flag}; questa operazione è
+ privilegiata.
+