+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;
+
+GLOBAL CONNECTION *My_Connections;
+GLOBAL CONN_ID Pool_Size;
+GLOBAL long WCounter;
+
+#endif /* CONN_MODULE */
+
+
+GLOBAL void Conn_Init PARAMS((void ));
+GLOBAL void Conn_Exit PARAMS(( void ));
+
+GLOBAL unsigned int Conn_InitListeners PARAMS(( void ));
+GLOBAL void Conn_ExitListeners PARAMS(( void ));
+
+GLOBAL void Conn_Handler PARAMS(( void ));
+
+GLOBAL bool Conn_WriteStr PARAMS(( CONN_ID Idx, const char *Format, ... ));
+
+GLOBAL void Conn_Close PARAMS(( CONN_ID Idx, const char *LogMsg, const char *FwdMsg, bool InformClient ));
+
+GLOBAL void Conn_SyncServerStruct PARAMS(( void ));
+
+GLOBAL CLIENT* Conn_GetClient PARAMS((CONN_ID i));
+#ifdef SSL_SUPPORT
+GLOBAL bool Conn_GetCipherInfo PARAMS((CONN_ID Idx, char *buf, size_t len));
+GLOBAL bool Conn_UsesSSL PARAMS((CONN_ID Idx));
+#else
+static inline bool Conn_UsesSSL(UNUSED CONN_ID Idx) { return false; }
+#endif