/* * ---------------------------------------------------------------- * Night Light IRC Proxy - Client Header * ---------------------------------------------------------------- * Copyright (C) 1997-2007 Jonas Kvinge * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * Last modified by: * Jonas Kvinge (24.11.2007) * */ #ifdef CLIENT_H #warning "client.h already included." #else #define CLIENT_H struct in_addr; #if IPV6_SUPPORT struct in6_addr; #endif struct Listen_Struct; /* DEFINES - JONAS (24.06.2000) */ #define CLIENT_VERIFYTIMEOUT 45 #define CLIENT_ERRORTIMEOUT 6 #define CLIENT_IDLETIMEBEFOREPING 300 #define CLIENT_PINGTIMEOUT 240 /* BIT MASKS - JONAS (24.06.2000) */ #define CLIENT_BITMASK_SSL 1 #define CLIENT_BITMASK_IPV6 2 #define CLIENT_BITMASK_SOCKET 4 #define CLIENT_BITMASK_SSLHANDSHAKE 8 #define CLIENT_BITMASK_VERIFIED 16 #define CLIENT_BITMASK_SENTPING 32 #define CLIENT_BITMASK_SENTERROR 64 /* MACROS - JONAS (24.06.2000) */ #define Client_SetSSL(x) ((x)->Flags |= CLIENT_BITMASK_SSL) #define Client_SetIPv6(x) ((x)->Flags |= CLIENT_BITMASK_IPV6) #define Client_SetSocket(x) ((x)->Flags |= CLIENT_BITMASK_SOCKET) #define Client_SetSSLHandshake(x) ((x)->Flags |= CLIENT_BITMASK_SSLHANDSHAKE) #define Client_SetVerified(x) ((x)->Flags |= CLIENT_BITMASK_VERIFIED) #define Client_SetSentPing(x) ((x)->Flags |= CLIENT_BITMASK_SENTPING) #define Client_SetSentError(x) ((x)->Flags |= CLIENT_BITMASK_SENTERROR) #define Client_ClearSSL(x) ((x)->Flags &= ~CLIENT_BITMASK_SSL) #define Client_ClearIPv6(x) ((x)->Flags &= ~CLIENT_BITMASK_IPV6) #define Client_ClearSocket(x) ((x)->Flags &= ~CLIENT_BITMASK_SOCKET) #define Client_ClearSSLHandshake(x) ((x)->Flags &= ~CLIENT_BITMASK_SSLHANDSHAKE) #define Client_ClearVerified(x) ((x)->Flags &= ~CLIENT_BITMASK_VERIFIED) #define Client_ClearSentPing(x) ((x)->Flags &= ~CLIENT_BITMASK_SENTPING) #define Client_ClearSentError(x) ((x)->Flags &= ~CLIENT_BITMASK_SENTERROR) #define Client_IsSSL(x) ((x)->Flags & CLIENT_BITMASK_SSL) #define Client_IsIPv6(x) ((x)->Flags & CLIENT_BITMASK_IPV6) #define Client_IsSocket(x) ((x)->Flags & CLIENT_BITMASK_SOCKET) #define Client_IsSSLHandshake(x) ((x)->Flags & CLIENT_BITMASK_SSLHANDSHAKE) #define Client_IsVerified(x) ((x)->Flags & CLIENT_BITMASK_VERIFIED) #define Client_IsSentPing(x) ((x)->Flags & CLIENT_BITMASK_SENTPING) #define Client_IsSentError(x) ((x)->Flags & CLIENT_BITMASK_SENTERROR) /* STRUCTURES - JONAS (18.07.2001) */ struct Client_Struct { struct Listen_Struct *ListenS; char *Nick; char *User; char *Host; char *Pass; unsigned long int ResolveFlags; unsigned long int Flags; char *HostName; char *HostIPS; struct in_addr INAddr; #if IPV6_SUPPORT struct in6_addr INAddr6; #endif unsigned long int PortH; unsigned long int PortN; signed long int FD; time_t Time; time_t LastRecvTime; time_t SentPingTime; time_t SentErrorTime; char *RecvBuffer; char *SendBuffer; struct UserConf_Struct *UserConf; struct Conn_Struct *ConnS; struct Who_Struct *Who_Head; unsigned long int Lines; time_t LineTime; struct Client_Struct *Prev; struct Client_Struct *Next; #if SSL_SUPPORT SSL *SSL_H; X509 *Cert; #endif }; /* FUNCTION PROTOTYPES - JONAS (18.07.2001) */ struct Client_Struct *client_add(struct Listen_Struct *ListenS, const char *const HostIPSPT); void client_rem(struct Client_Struct *ClientS); #endif