X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=sockctrl.tex;h=458b8110ad71a64fee3364d308149cb5740f1f5f;hp=8d0f5b9b34a95f1d20ffba6ed23ce2b331357fea;hb=c46df2fabf1fd8946892f9adf0771831a5c0f796;hpb=1add1cb54c1754ed030033b994a68c6678d7d275 diff --git a/sockctrl.tex b/sockctrl.tex index 8d0f5b9..458b811 100644 --- a/sockctrl.tex +++ b/sockctrl.tex @@ -1,6 +1,6 @@ %% sockctrl.tex %% -%% Copyright (C) 2004-2012 Simone Piccardi. Permission is granted to +%% Copyright (C) 2004-2013 Simone Piccardi. Permission is granted to %% copy, distribute and/or modify this document under the terms of the GNU Free %% Documentation License, Version 1.1 or any later version published by the %% Free Software Foundation; with the Invariant Sections being "Prefazione", @@ -2340,6 +2340,9 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni: % Documentation/networking/timestamping.txt +% TOFO documentare SO_REUSEPORT introdotta con il kernel 3.9, vedi +% http://git.kernel.org/linus/c617f398edd4db2b8567a28e899a88f8f574798d + \end{basedescript} @@ -2624,16 +2627,20 @@ Essendo questo un caso particolare in alcuni sistemi (come BSD) è stata introdotta una opzione ulteriore, \const{SO\_REUSEPORT} che richiede che detta opzione sia specificata per tutti i socket per i quali si vuole eseguire il \textit{completely duplicate binding}. Nel caso di Linux questa opzione non -esiste, ma il comportamento di \const{SO\_REUSEADDR} è analogo, sarà cioè -possibile effettuare un \textit{completely duplicate binding} ed ottenere il -successo di \func{bind} su un socket legato allo stesso indirizzo e porta solo -se il programma che ha eseguito per primo \func{bind} su di essi ha impostato -questa opzione.\footnote{questa restrizione permette di evitare il cosiddetto - \textit{port stealing}, in cui un programma, usando \const{SO\_REUSEADDR}, - può collegarsi ad una porta già in uso e ricevere i pacchetti destinati ad - un altro programma; con questa caratteristica ciò è possibile soltanto se il +esisteva fino al kernel 3.9, ma il comportamento di \const{SO\_REUSEADDR} è +analogo, sarà cioè possibile effettuare un \textit{completely duplicate + binding} ed ottenere il successo di \func{bind} su un socket legato allo +stesso indirizzo e porta solo se il programma che ha eseguito per primo +\func{bind} su di essi ha impostato questa opzione.\footnote{questa + restrizione permette di evitare parzialmente il cosiddetto \textit{port + stealing}, in cui un programma, usando \const{SO\_REUSEADDR}, può + collegarsi ad una porta già in uso e ricevere i pacchetti destinati ad un + altro programma; con questa caratteristica ciò è possibile soltanto se il primo programma a consentirlo, avendo usato fin dall'inizio - \const{SO\_REUSEADDR}.} + \const{SO\_REUSEADDR}.} + +% TODO documentare SO_REUSEPORT, vedi https://lwn.net/Articles/542260/ + \index{costante!{SO\_REUSEADDR}@{{\tt {SO\_REUSEADDR}}}|)} @@ -3545,11 +3552,10 @@ caratteristiche delle opzioni citate è quello dell'elenco seguente: Benché la maggior parte delle caratteristiche dei socket sia gestibile con le funzioni \func{setsockopt} e \func{getsockopt}, alcune proprietà possono essere impostate attraverso le funzioni \func{fcntl} e \func{ioctl} già -trattate in sez.~\ref{sec:file_fcntl} e sez.~\ref{sec:file_ioctl}; in -quell'occasione abbiamo parlato di queste funzioni esclusivamente nell'ambito -della loro applicazione a file descriptor associati a dei file normali; qui -tratteremo invece i dettagli del loro utilizzo con file descriptor associati a -dei socket. +trattate in sez.~\ref{sec:file_fcntl_ioctl}; in quell'occasione abbiamo +parlato di queste funzioni esclusivamente nell'ambito della loro applicazione +a file descriptor associati a dei file normali; qui tratteremo invece i +dettagli del loro utilizzo con file descriptor associati a dei socket. \subsection{L'uso di \func{ioctl} e \func{fcntl} per i socket generici} @@ -3557,10 +3563,10 @@ dei socket. Tratteremo in questa sezione le caratteristiche specifiche delle funzioni \func{ioctl} e \func{fcntl} quando esse vengono utilizzate con dei socket -generici. Quanto già detto in precedenza in sez.~\ref{sec:file_fcntl} e -sez.~\ref{sec:file_ioctl} continua a valere; quello che tratteremo qui sono le -operazioni ed i comandi che sono validi, o che hanno significati peculiari, -quando queste funzioni vengono applicate a dei socket generici. +generici. Quanto già detto in precedenza sez.~\ref{sec:file_fcntl_ioctl} +continua a valere; quello che tratteremo qui sono le operazioni ed i comandi +che sono validi, o che hanno significati peculiari, quando queste funzioni +vengono applicate a dei socket generici. Nell'elenco seguente si riportano i valori specifici che può assumere il secondo argomento della funzione \func{ioctl} (\param{request}, che indica il @@ -3600,10 +3606,10 @@ identificano le operazioni sono le seguenti: nullo. \item[\const{FIOASYNC}] Abilita o disabilita la modalità di I/O asincrono sul - socket. Questo significa (vedi sez.~\ref{sec:file_asyncronous_operation}) - che verrà inviato il segnale di \signal{SIGIO} (o quanto impostato con - \const{F\_SETSIG}, vedi sez.~\ref{sec:file_fcntl}) in caso di eventi di I/O - sul socket. + socket. Questo significa (vedi sez.~\ref{sec:signal_driven_io}) che verrà + inviato il segnale di \signal{SIGIO} (o quanto impostato con + \const{F\_SETSIG}, vedi sez.~\ref{sec:file_fcntl_ioctl}) in caso di eventi + di I/O sul socket. \end{basedescript} Nel caso dei socket generici anche \func{fcntl} prevede un paio di comandi