#include #include #include typedef enum { file, std, sock } dstype; typedef struct { int fd; dstype tp; int ipv6; int server; struct sockaddr_storage peer; } *ds, s_ds; #define DEFAULT_LISTENNING_QUEUE 5 typedef struct{ int fd; int ipv6; } *nethandler, s_nethandler; typedef struct { dstype tp; void *original; SSL *s; } *tlsDs, s_tlsDs; nethandler getIPv4Port(const int port); nethandler getPort(const int port); ds createFromFile(int); ds createFromFileName(const char*); ds createFromHandler(nethandler); ds createToIPv4Host(const unsigned long, const int); ds createToIPv6Host(const unsigned char[16], const int); tlsDs startSockTls(ds, const char*, const char*, const char*); int getPeer(ds, unsigned long*, unsigned char[16], int*); int closeDs(ds); void closeHandler(nethandler); ds closeTls(tlsDs); int sendDs(ds, const char[const], const int); int recvDs(ds, char[], const int); int tlsDsSend(tlsDs, const char[const], const int); int tlsDsRecv(tlsDs, char[], const int); int stdDsSend(const char[const], const int); int stdDsRecv(char[], const int); int getFd(ds); int getTlsFd(tlsDs); void closeFd(int);