/* * ---------------------------------------------------------------- * Night Light IRC Proxy - Ident Daemon - Connection Header * ---------------------------------------------------------------- * Copyright (C) 1997-2006 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 (04.07.2003) * */ #ifdef IDENT_CONN_H #warning "ident_conn.h already included." #else #define IDENT_CONN_H /* DEFINES - JONAS (04.07.2003) */ #define IDENTCONN_TIMEOUT 45 /* BIT MASKS - JONAS (04.07.2003) */ #define IDENTCONN_SOCKET 1 /* MACROS - JONAS (04.07.2003) */ #define IdentConn_SetSocket(x) ((x)->Flags |= IDENTCONN_SOCKET) #define IdentConn_ClearSocket(x) ((x)->Flags &= ~IDENTCONN_SOCKET) #define IdentConn_IsSocket(x) ((x)->Flags & IDENTCONN_SOCKET) /* STRUCTURES - JONAS (04.07.2003) */ struct IdentConn_Struct { unsigned long int Flags; 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; char *RecvBuffer; char *SendBuffer; time_t Time; struct IdentConn_Struct *Prev; struct IdentConn_Struct *Next; }; /* FUNCTION PROTOTYPES - JONAS (04.07.2003) */ struct IdentConn_Struct *ident_conn_add(const char *const HostIPSPT, signed long int FD); void ident_conn_rem(struct IdentConn_Struct *IdentConnS); void ident_conn_initconnection(struct IdentConn_Struct *IdentConnS); void ident_conn_disconnect(struct IdentConn_Struct *IdentConnS); void ident_conn_fds(fd_set *ReadFDS, fd_set *WriteFDS, unsigned long int *FDS); void ident_conn_io(fd_set *ReadFDS, fd_set *WriteFDS, unsigned long int *FDS); void ident_conn_recv(struct IdentConn_Struct *IdentConnS); void ident_conn_send(struct IdentConn_Struct *IdentConnS); void ident_conn_addsend(struct IdentConn_Struct *IdentConnS, const char *const LinePT, ...) __attribute__ ((format (printf, 2, 3))); void ident_conn_parse(struct IdentConn_Struct *IdentConnS); void ident_conn_parse_message(struct IdentConn_Struct *IdentConnS, char *MessagePT); unsigned short int ident_conn_closeall(void); #endif