/************************************************************************
 *   IRC - Internet Relay Chat, include/interproc.h
 *   Copyright (C) 1992 Darren Reed
 *
 *   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, 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.
 */

#define SOCKET_NAME     "/tmp/ircd.socket"
#define IRC_SB_SIZE             2048

int init_interproc(void);

int configure_interproc(int *sfd);
int sendto_interproc(int fd, char *msg, int len);
int linebuf_flush_interproc(int fd, buf_head_t *bufhead);

void send_interproc_queued(int fd, void *data);
void accept_localdomain_socket(int pfd, void *data);
void read_interproc_packet(int fd, void *data);
void parse_interproc(char *buf, int len);

void send_interproc_message(int fd, char *pattern, ...);
void vsend_interproc_message(int fd, char *pattern, va_list vl);
void send_interproc_numeric(int fd, int numeric, aClient *cptr, ...);

void terminate_interproc(void);

struct IToken {
   char *cmd;
   int (*func) ();
};

int iproc_notice(int parc, char **parv);
int iproc_globops(int parc, char **parv);
int iproc_gnotice(int parc, char **parv);
int iproc_kline(int parc, char **parv);
int iproc_akill(int parc, char **parv);

#ifdef INTERPROC_TOKENS
struct IToken interproc_tab[] = {
   { NULL, NULL }, /* #0 */
   { NULL, NULL }, /* #1 */
   { NULL, NULL }, /* #2 */
   { NULL, NULL }, /* #3 */
   { NULL, NULL }, /* #4 */
   { NULL, NULL }, /* #5 */
   { NULL, NULL }, /* #6 */
   { NULL, NULL }, /* #7 */
   { NULL, NULL }, /* #8 */
   { NULL, NULL }, /* #9 */
   { NULL, NULL }, /* #10 */
   { NULL, NULL }, /* #11 */
   { NULL, NULL }, /* #12 */
   { NULL, NULL }, /* #13 */
   { NULL, NULL }, /* #14 */
   { NULL, NULL }, /* #15 */
   { NULL, NULL }, /* #16 */
   { NULL, NULL }, /* #17 */
   { NULL, NULL }, /* #18 */
   { NULL, NULL }, /* #19 */
   { NULL, NULL }, /* #20 */
   { NULL, NULL }, /* #21 */
   { NULL, NULL }, /* #22 */
   { NULL, NULL }, /* #23 */
   { NULL, NULL }, /* #24 */
   { NULL, NULL }, /* #25 */
   { NULL, NULL }, /* #26 */
   { NULL, NULL }, /* #27 */
   { NULL, NULL }, /* #28 */
   { NULL, NULL }, /* #29 */
   { NULL, NULL }, /* #30 */
   { NULL, NULL }, /* #31 */
   { NULL, NULL }, /* #32 */
   { NULL, NULL }, 		/* ! should not be used */
   { NULL, NULL }, 		/* " */     
   { NULL, NULL }, 		/* # */     
   { NULL, NULL }, 		/* $ */     
   { NULL, NULL }, 		/* % */     
   { NULL, NULL }, 		/* & */     
   { NULL, NULL }, 		/* ' */     
   { NULL, NULL }, 		/* ( */     
   { NULL, NULL }, 		/* ) */     
   { NULL, NULL }, 		/* * */     
   { NULL, NULL }, 		/* + */     
   {MSG_EWHOIS, NULL }, 	/* , */
   { NULL, NULL }, 		/* - */
   { NULL, NULL }, 		/* . */
   { NULL, NULL }, 		/* / */
   { NULL, NULL }, 		/* 0 */
   {MSG_SVSKILL, NULL }, 	/* 1 */
   {MSG_SVSMODE, NULL }, 	/* 2 */
   {MSG_SVSNICK, NULL }, 	/* 3 */
   {MSG_SVSNOOP, NULL }, 	/* 4 */
   {MSG_SGLINE, NULL }, 	/* 5 */
   {MSG_UNSGLINE, NULL }, 	/* 6 */
   {MSG_UNSZLINE, NULL }, 	/* 7 */
   {NULL, NULL }, 		/* 8 */  
   {NULL, NULL }, 		/* 9 */  
   { NULL, NULL }, 		/* : should not be used */  
   {MSG_HASH, NULL }, 		/* ; */  
   {MSG_ADMINS, NULL }, 	/* < */  
   {MSG_MYID, NULL }, 		/* = */
   {MSG_SADMINS, NULL }, 	/* > */    
   {MSG_STATS, NULL }, 		/* ? */
   {MSG_LUSERS, NULL }, 	/* @ */
   {MSG_AWAY, NULL }, 		/* A */
   {MSG_BURST, NULL }, 		/* B */
   {MSG_JUPITER, NULL }, 	/* C */
   {MSG_UNJUPE, NULL }, 	/* D */
   {MSG_ERROR, NULL }, 		/* E */
   {MSG_GLINE, iproc_kline }, 		/* F */
   {MSG_GNOTICE, iproc_gnotice }, 	/* G */
   {MSG_CLIENT, NULL }, 	/* H */ 
   {MSG_INVITE, NULL }, 	/* I */
   {MSG_JOIN, NULL }, 		/* J */
   {MSG_KICK, NULL }, 		/* K */
   {MSG_GLOBOPS, iproc_globops }, 	/* L */
   {MSG_MODE, NULL }, 		/* M */
   {MSG_NICK, NULL }, 		/* N */
   {MSG_SQUERY, NULL }, 	/* O */
   {MSG_PRIVATE, NULL }, 	/* P */
   {MSG_QUIT, NULL }, 		/* Q */
   {MSG_RAKILL, NULL }, 	/* R */
   {MSG_SJOIN, NULL }, 		/* S */
   {MSG_TOPIC, NULL }, 		/* T */
   {MSG_UNSQLINE, NULL }, 	/* U */
   {MSG_NETSET, NULL }, 	/* V */
   {MSG_WHOIS, NULL }, 		/* W */
   {MSG_SERVICE, NULL }, 	/* X */
   {MSG_INFO, NULL }, 		/* Y */
   {MSG_SZLINE, NULL }, 	/* Z */
   {MSG_RPING, NULL }, 		/* [ */
   {MSG_USERS, NULL }, 		/* \ */
   {MSG_RPONG, NULL }, 		/* ] */
   {MSG_INFOCONF, NULL }, 	/* ^ */
   { NULL, NULL }, 		/* _ IN USE BY WORDFILTER */
   { NULL, NULL }, 		/* ` IN USE BY WORDFILTER */
   {MSG_AKILL, iproc_akill }, 		/* a */
   {MSG_SVSJOIN, NULL }, 	/* b */
   {MSG_CONNECT, NULL }, 	/* c */
   {MSG_ADMIN, NULL }, 		/* d */
   {MSG_EXCLUDE, NULL }, 	/* e */
   {MSG_PING, NULL }, 		/* f */
   {MSG_GOPER, NULL }, 		/* g */
   {MSG_SILENCE, NULL }, 	/* h */
   {MSG_TIME, NULL }, 		/* i */
   {MSG_REXCLUDE, NULL }, 	/* j */
   {MSG_KILL, NULL }, 		/* k */ 
   {MSG_WALLOPS, NULL }, 	/* l */
   {MSG_MOTD, NULL }, 		/* m */
   {MSG_NOTICE, iproc_notice }, /* n */
   {MSG_UPTIME, NULL }, 	/* o */
   {MSG_PART, NULL }, 		/* p */
   {MSG_SQUIT, NULL }, 		/* q */
   {MSG_RNOTICE, NULL }, 	/* r */
   {MSG_SERVER, NULL }, 	/* s */
   {MSG_TRACE, NULL }, 		/* t */
   {MSG_PONG, NULL }, 		/* u */
   {MSG_VERSION, NULL }, 	/* v */
   {MSG_WHOWAS, NULL }, 	/* w */
   {MSG_SQLINE, NULL }, 	/* x */
   {MSG_UNGLINE, NULL }, 	/* y */
   {MSG_SVINFO, NULL }, 	/* z */
   { NULL, NULL }, 		/* { */
   {MSG_REXCOM, NULL }, 	/* | */
   { NULL, NULL }, 		/* } */
   {MSG_TMODE, NULL }, 		/* ~ */
   { NULL, NULL }, 		/* #127 - 33 */
};
#endif



syntax highlighted by Code2HTML, v. 0.9.1