+#ifdef SSL_SUPPORT
+#define CONN_SSL_CONNECT 16 /* wait for ssl connect to finish */
+#define CONN_SSL 32 /* this connection is SSL encrypted */
+#define CONN_SSL_WANT_WRITE 64 /* SSL/TLS library needs to write protocol data */
+#define CONN_SSL_WANT_READ 128 /* SSL/TLS library needs to read protocol data */
+#define CONN_SSL_FLAGS_ALL (CONN_SSL_CONNECT|CONN_SSL|CONN_SSL_WANT_WRITE|CONN_SSL_WANT_READ)
+#endif
+typedef long CONN_ID;
+
+#include "client.h"
+#include "proc.h"
+
+#ifdef CONN_MODULE
+
+#include "defines.h"
+#include "array.h"
+#include "tool.h"
+#include "ng_ipaddr.h"
+
+#ifdef ZLIB
+#include <zlib.h>
+typedef struct _ZipData
+{
+ z_stream in; /* "Handle" for input stream */
+ z_stream out; /* "Handle" for output stream */
+ array rbuf; /* Read buffer (compressed) */
+ array wbuf; /* Write buffer (uncompressed) */
+ long bytes_in, bytes_out; /* Counter for statistics (uncompressed!) */
+} ZIPDATA;
+#endif /* ZLIB */
+
+typedef struct _Connection
+{
+ int sock; /* Socket handle */
+ ng_ipaddr_t addr; /* Client address */
+ PROC_STAT proc_stat; /* Status of resolver process */
+ char host[HOST_LEN]; /* Hostname */
+ array rbuf; /* Read buffer */
+ array wbuf; /* Write buffer */
+ time_t signon; /* Signon ("connect") time */
+ time_t lastdata; /* Last activity */
+ time_t lastping; /* Last PING */
+ time_t lastprivmsg; /* Last PRIVMSG */
+ time_t delaytime; /* Ignore link ("penalty") */
+ long bytes_in, bytes_out; /* Received and sent bytes */
+ long msg_in, msg_out; /* Received and sent IRC messages */
+ int flag; /* Flag (see "irc-write" module) */
+ UINT16 options; /* Link options / connection state */
+ UINT16 bps; /* bytes processed within last second */
+ CLIENT *client; /* pointer to client structure */
+#ifdef ZLIB
+ ZIPDATA zip; /* Compression information */
+#endif /* ZLIB */
+#ifdef SSL_SUPPORT
+ struct ConnSSL_State ssl_state; /* SSL/GNUTLS state information */
+#endif
+} CONNECTION;