1 /*-*- Mode: C; c-basic-offset: 8 -*-*/
3 #ifndef foosocketutilhfoo
4 #define foosocketutilhfoo
6 #include <sys/socket.h>
7 #include <netinet/in.h>
13 typedef struct SocketAddress
{
16 struct sockaddr_in in4
;
17 struct sockaddr_in6 in6
;
18 struct sockaddr_un un
;
19 struct sockaddr_storage storage
;
22 /* We store the size here explicitly due to the weird
23 * sockaddr_un semantics for abstract sockets */
26 /* Socket type, i.e. SOCK_STREAM, SOCK_DGRAM, ... */
30 typedef enum SocketAddressBindIPv6Only
{
31 SOCKET_ADDRESS_DEFAULT
,
33 SOCKET_ADDRESS_IPV6_ONLY
34 } SocketAddressBindIPv6Only
;
36 #define socket_address_family(a) ((a)->sockaddr.sa.sa_family)
38 int socket_address_parse(SocketAddress
*a
, const char *s
);
39 int socket_address_print(const SocketAddress
*a
, char **p
);
40 int socket_address_verify(const SocketAddress
*a
);
41 int socket_address_listen(const SocketAddress
*a
, int backlog
, SocketAddressBindIPv6Only only
, int *ret
);