2 #include <sys/socket.h>
3 #include <netinet/in.h>
6 void *sockaddr_addr_offset(const void *x
)
11 if ( ((struct sockaddr
*)(x
))->sa_family
== AF_INET
)
13 return ((void *)(x
) + offsetof(struct sockaddr_in
, sin_addr
));
15 if ( ((struct sockaddr
*)(x
))->sa_family
== AF_INET6
)
17 return ((void *)(x
) + offsetof(struct sockaddr_in6
, sin6_addr
));
23 unsigned int sockaddr_addr_size(const void *x
)
27 if ( ((struct sockaddr
*)(x
))->sa_family
== AF_INET
)
29 return sizeof(struct in_addr
);
31 if ( ((struct sockaddr
*)(x
))->sa_family
== AF_INET6
)
33 return sizeof(struct in6_addr
);
39 unsigned int sockaddr_size(const void *x
)
43 if ( ((struct sockaddr
*)(x
))->sa_family
== AF_INET
)
45 return sizeof(struct sockaddr_in
);
47 if ( ((struct sockaddr
*)(x
))->sa_family
== AF_INET6
)
49 return sizeof(struct sockaddr_in6
);
54 in_port_t
*sockaddr_port_offset(const void *x
)
59 if ( ((struct sockaddr
*)(x
))->sa_family
== AF_INET
)
61 return ((void *)(x
) + offsetof(struct sockaddr_in
, sin_port
));
63 if ( ((struct sockaddr
*)(x
))->sa_family
== AF_INET6
)
65 return ((void *)(x
) + offsetof(struct sockaddr_in6
, sin6_port
));