[Swan] struct sockaddr_in
D. Hugh Redelmeier
hugh at mimosa.com
Thu Mar 7 06:42:41 EET 2013
On Fedora 17 (and probably lots of other Linux systems)
(1) ip(7) defines sruct sockaddr_in:
struct sockaddr_in {
sa_family_t sin_family; /* address family: AF_INET */
in_port_t sin_port; /* port in network byte order */
struct in_addr sin_addr; /* internet address */
};
/* Internet address. */
struct in_addr {
uint32_t s_addr; /* address in network byte order
*/
};
(2) when I get cc -E to show me struct sockaddr_in, I get something
different:
# 225 "/usr/include/netinet/in.h" 3 4
struct sockaddr_in
{
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[sizeof (struct sockaddr) -
(sizeof (unsigned short int)) -
sizeof (in_port_t) -
sizeof (struct in_addr)];
};
This version has padding so that sizeof(struct sockaddr) == sizeof(struct
sockaddr_in).
I wonder why? Is this a bug?
This confused me when I tried to understand pfkey messages generated by
Pluto.
More information about the Swan
mailing list