/* net.h Networking stuff for cheezmud. Copyright (C) 1995 David Flater. 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _NET_H #define _NET_H #include <stdio.h> #include <string.h> #include <ctype.h> #include <stdlib.h> #include <assert.h> #include <sys/types.h> #include <sys/time.h> #include <sys/file.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <sys/socket.h> #include <netinet/in.h> #include <netinet/tcp.h> #include <arpa/inet.h> #include <arpa/telnet.h> #include <netdb.h> #include <errno.h> #include <signal.h> #include <unistd.h> #include <fcntl.h> #include <math.h> #include "Player.h" /* Delete these if they are redefs and cause problems */ #define max(a,b) (a < b ? b : a) #define min(a,b) (a > b ? b : a) /* Number of signals, should be set by signal.h but not always is */ #ifndef NSIG #define NSIG 32 #endif /* Some compilers actually don't define O_NONBLOCK. O_NDELAY is the same * on some machines; on others, it wreaks havoc. Pray that this has the * desired effect! */ #ifndef O_NONBLOCK #define O_NONBLOCK O_NDELAY #endif /* Connection types: * new New inbound connection * auth New connection being authenticated * player Established connection * delete Connection being deleted */ typedef enum {new, auth, player, delete} contype; struct conlist { struct conlist *next; /* Linked list */ /* Mud object */ id mudplayer; /* Connection information */ int con; /* fd for input and output */ void (*handler) (); /* Where to process received messages */ void (*notify) (); /* Notification of deletion */ contype type; /* Type of connection. */ char *name; /* Name of player. */ char hname[80]; /* Name of host */ long lastrecv; /* Timestamp of last receive */ long maxidle; /* Input-related stuff */ char *inbuffer; /* Generic input buffer */ long inbuflen; /* How long is it */ long inmemsize; /* Size of memory block >= inbuflen */ /* Output-related stuff */ char *yettosend; /* Generic output buffer */ long sendlen; /* How long is it */ long sendmemsize; /* Size of memory block >= sendlen */ }; extern void unbreak_pipe (); extern int broke_pipe (); extern void sig_setup (); #endif