/* * socklib.c * * Handy functions for IPv4 socket connections. * * History: * 28/01/2014 Creation * 27/05/2014 New API. * * Author: Dario Rodriguez dario@softhome.net * This file is licensed under the terms of the GNU LGPL v2+ */ #include #include #include #include #include #include #include #include "socklib.h" typedef struct _sselect { int dummy } _sselect; char *ipv4_genip(char *hostname, long *resulthostsize); int ipv4_genport(char *portname, int fallback); int ipv4_preconnect(char *host, long hostsize, int port); /* setup socket, set non-blocking, connect(2) call */ int ipv4_connect(int fd); /* tests writeability */ int ipv4_postconnect(int fd); /* hopefully connect(2) suceeded, set blocking */ int ipv4_server(int port); int ipv4_serverbinded(char *host, long hostsize, int port); int sock_accept(int fd); int sock_getinfo(int socket, int *iplen, char *ip, int *port); /* ip must be at least 16 bytes to have room for an ipv6 address */ int sock_queued(int socket); int sock_setblocking(int socket, int block); sselect *sselect_init(void); int sselect_reset(sselect *ssel); int sselect_addread(sselect *ssel, int fd); int sselect_addwrite(sselect *ssel, int fd); int sselect_delread(sselect *ssel, int fd); int sselect_delwrite(sselect *ssel, int fd); int sselect_wait(sslect *ssel, int ms); int sselect_getread(sselect *ssel, int *fds, int sizefds); int sselect_getwrite(sselect *ssel, int *fds, int sizefds);