SO_DEBUG
authorSimone Piccardi <piccardi@gnulinux.it>
Mon, 27 Dec 2004 22:59:41 +0000 (22:59 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Mon, 27 Dec 2004 22:59:41 +0000 (22:59 +0000)
sockctrl.tex

index 2b83e8429160762444323af645db82c4a609fa3a..af35bcaef16ee548ebcefd799a9bb10d59433696 100644 (file)
@@ -2190,8 +2190,8 @@ allora il seguente:
   piuttosto che usare questa funzione.
 
 \item[\const{SO\_PASSCRED}] questa opzione abilita la ricezione dei messaggi
-  di controllo \const{SCM\_CREDENTIALS} dei socket unix-domain. Prende per
-  \param{optval} un intero usato come valore logico.
+  di controllo di tipo \const{SCM\_CREDENTIALS} dei socket unix-domain. Prende
+  per \param{optval} un intero usato come valore logico.
 
 \item[\const{SO\_PEERCRED}] questa opzione restituisce le credenziali del
   processo remoto connesso al socket; l'opzione è disponibile solo per socket
@@ -2214,9 +2214,26 @@ allora il seguente:
     socket} (vedi sez.~\ref{cha:advanced_socket_xxx}).
 
 
-\item[\const{SO\_DEBUG}] 
-
-\item[\const{SO\_REUSEADDR}]
+\item[\const{SO\_DEBUG}] questa opzione abilita il debugging delle operazioni
+  dei socket; l'opzione utilizza per \param{optval} un intero usato come
+  valore logico, e può essere utilizzata solo da un processo con i privilegi
+  di amministratore (in particolare con la \textit{capability}
+  \const{CAP\_NET\_ADMIN}).  L'opzione necessita inoltre dell'opportuno
+  supporto nel kernel;\footnote{deve cioè essere definita la macro di
+    preprocessore \texttt{SOCK\_DEBUGGING} nel file \file{include/net/sock.h}
+    dei sorgenti del kernel, questo è sempre vero nei kernel delle serie
+    superiori alla 2.3, per i kernel delle serie precedenti invece è
+    necessario aggiungere a mano detta definizione; è inoltre possibile
+    abilitare anche il tracciamento degli stati del TCP definendo la macro
+    \texttt{STATE\_TRACE} in \file{include/net/tcp.h}.}  quando viene
+  abilitata una serie di messaggi con le informazioni di debug vengono inviati
+  direttamente al sistema del kernel log.\footnote{si tenga presente che il
+    comportamento è diverso da quanto avviene con BSD, dove l'opzione opera
+    solo sui socket TCP causando la scrittura di tutti i pacchetti inviati
+    sulla rete su un buffer circolare che viene letto da un apposito
+    programma, \cmd{trpt}.}
+
+\item[\const{SO\_REUSEADDR}]  
 
 \item[\const{SO\_TYPE}] questa opzione permette di leggere il tipo di socket
   su cui si opera; funziona solo con \func{getsockopt}, ed utilizza per