|
Tutte le funzioni dei socket che usano gli indirizzi sono definite usando nel prototipo un puntatore a questa struttura; per questo motivo quando si invocano dette funzioni passando l'indirizzo di un protocollo specifico occorrerà eseguire una conversione del relativo puntatore.
I tipi di dati che compongono la struttura sono stabiliti dallo standard POSIX.1g e li abbiamo riassunti in tab. 14.3 con i rispettivi file di include in cui sono definiti; la struttura è invece definita nell'include file sys/socket.h.
Dal punto di vista del programmatore l'unico uso di questa struttura è quello di fare da riferimento per il casting, per il kernel le cose sono un po' diverse, in quanto esso usa il puntatore per recuperare il campo sa_family, comune a tutte le famiglie, con cui determinare il tipo di indirizzo; per questo motivo, anche se l'uso di un puntatore void * sarebbe più immediato per l'utente (che non dovrebbe più eseguire il casting), è stato mantenuto l'uso di questa struttura.