X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=socket-util.h;h=7dd832eaca86d6a19f262e04d627c38c243012db;hp=711f7740a8898d5540c6feb32cd202c3b061b931;hb=dcc47b179fed0ae67b0481b2454aea03947e712c;hpb=42f4e3c4413ad35e3815f25211fee95d775488a7 diff --git a/socket-util.h b/socket-util.h index 711f7740a..7dd832eac 100644 --- a/socket-util.h +++ b/socket-util.h @@ -6,11 +6,12 @@ #include #include #include +#include #include "macro.h" #include "util.h" -typedef struct Address { +typedef struct SocketAddress { union { struct sockaddr sa; struct sockaddr_in in4; @@ -25,16 +26,19 @@ typedef struct Address { /* Socket type, i.e. SOCK_STREAM, SOCK_DGRAM, ... */ int type; +} SocketAddress; - /* Only for INET6 sockets: issue IPV6_V6ONLY sockopt */ - bool bind_ipv6_only; -} Address; +typedef enum SocketAddressBindIPv6Only { + SOCKET_ADDRESS_DEFAULT, + SOCKET_ADDRESS_BOTH, + SOCKET_ADDRESS_IPV6_ONLY +} SocketAddressBindIPv6Only; -#define address_family(a) ((a)->sockaddr.sa.sa_family) +#define socket_address_family(a) ((a)->sockaddr.sa.sa_family) -int address_parse(Address *a, const char *s); -int address_print(const Address *a, char **p); -int address_verify(const Address *a); -int address_listen(const Address *a, int backlog); +int socket_address_parse(SocketAddress *a, const char *s); +int socket_address_print(const SocketAddress *a, char **p); +int socket_address_verify(const SocketAddress *a); +int socket_address_listen(const SocketAddress *a, int backlog, SocketAddressBindIPv6Only only, const char *bind_to_device, int *ret); #endif