diff options
Diffstat (limited to 'src/socket.h')
-rw-r--r-- | src/socket.h | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/src/socket.h b/src/socket.h index 1b1a762..faa7fa3 100644 --- a/src/socket.h +++ b/src/socket.h @@ -1,19 +1,51 @@ #ifndef POTD_SOCKET_H #define POTD_SOCKET_H 1 -#include <netinet/in.h> +#include <netdb.h> +#include <net/if.h> -#define POTD_BACKLOG 3 +#define POTD_BACKLOG 1 typedef struct psocket { int fd; - struct sockaddr_in sock; + socklen_t addr_len; + struct sockaddr addr; + int family; + int socktype; + int protocol; } psocket; -int socket_init_in(psocket *psocket, const char *listen_addr, - unsigned int listen_port); +int socket_nonblock(const psocket *psock); -int socket_bind_listen(psocket *psocket); +int socket_init_in(const char *addr, + const char *port, struct addrinfo **results); + +int socket_bind_in(psocket *psock, struct addrinfo **results); + +int socket_listen_in(psocket *psock); + +int socket_accept_in(const psocket *psock, psocket *client_psock); + +int socket_connect_in(psocket *psock, struct addrinfo **results); + +int socket_connectaddr_in(psocket *psock, struct addrinfo **results, + char host_buf[NI_MAXHOST], + char service_buf[NI_MAXSERV]); + +int socket_addrtostr_in(const psocket *psock, + char hbuf[NI_MAXHOST], char sbuf[NI_MAXSERV]); + +int socket_reconnect_in(psocket *psock); + +int socket_close(psocket *psock); + +void socket_clone(const psocket *src, psocket *dst); + +ssize_t socket_get_ifnames(const psocket *test_sock, char name[][IFNAMSIZ], + size_t siz, int loopback_only); + +int socket_set_ifaddr(const psocket *test_sock, + const char *ifname, const char *addr, const char *mask); #endif |