diff options
Diffstat (limited to 'iauth/a_struct_def.h')
-rw-r--r-- | iauth/a_struct_def.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/iauth/a_struct_def.h b/iauth/a_struct_def.h new file mode 100644 index 0000000..d71b166 --- /dev/null +++ b/iauth/a_struct_def.h @@ -0,0 +1,72 @@ +/************************************************************************ + * IRC - Internet Relay Chat, iauth/a_struct_def.h + * Copyright (C) 1998 Christophe Kalt + * + * 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 1, 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. + */ + + +typedef struct AuthData anAuthData; + +#define INBUFSIZE 4096 /* I/O buffer size */ +#define MAXI 16 /* maximum number of instances */ +#define BDSIZE ((MAXI + 7) / 8) /* bit data size */ + +struct AuthData +{ + /* the following are set by a_io.c and may be read by modules */ + char user[USERLEN+1]; /* username */ + char passwd[PASSWDLEN+1]; /* password */ + char host[HOSTLEN+1]; /* hostname */ + char itsip[HOSTLEN+1]; /* client ip */ + u_short itsport; /* client port */ + char ourip[HOSTLEN+1]; /* our ip */ + u_short ourport; /* our port */ + u_int state; /* state (general) */ + + /* the following are set by modules */ + char *authuser; /* authenticated username */ + u_char authfrom; /* where we got authuser from */ + + /* the following are for use by a_io.c only */ + char idone[BDSIZE]; /* keeping track of instances' work */ + u_char ileft; /* time saver, anything left? */ + + /* the following are shared by a_io.c & modules */ + char *inbuffer; /* input buffer */ + u_int buflen; /* length of data in buffer */ + int rfd, wfd; /* fd's */ + AnInstance *instance; /* the module instanciation working */ + u_int mod_status; /* used by the module only! */ + time_t timeout; /* timeout */ +}; + +#define A_ACTIVE 0x0001 /* entry is active */ +#define A_START 0x0002 /* go through modules from beginning */ +#define A_DONE 0x0004 /* nothing left to be done */ +#define A_IGNORE 0x0010 /* ignore subsequent messages from ircd */ +#define A_LATE 0x0080 /* ircd is no longer waiting for a reply */ + +#define A_GOTU 0x0100 /* got username (from ircd) */ +#define A_GOTP 0x0200 /* got password (from ircd) */ +#define A_GOTH 0x0400 /* got hostname (from ircd) */ +#define A_NOH 0x0800 /* no hostname available */ + +#define A_UNIX 0x1000 /* authuser is suitable for use by ircd */ +#define A_DENY 0x8000 /* connection should be denied access */ + +#define SetBit(v,n) v[n/8] |= (1 << (n % 8)) +#define UnsetBit(v,n) v[n/8] &= ~(1 << (n % 8)) +#define CheckBit(v,n) (v[n/8] & (1 << (n % 8))) |