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);