// This file is part of UNItopia Mudlib.
// ----------------------------------------------------------------
// File:	/sys/erq.h
// Description:	Defines fuer den ERQ (External Request Daemon)
// Author:	Driver
//
// $Log: erq.h,v $
// Revision 1.6  2006/10/18 20:14:32  gnomi
// Auf 3.3.714 aktualisiert.
//
// Revision 1.5  2001/08/23 09:21:54  freaky
// angepasst an ldmud-3.2.9dev323
//
// Revision 1.4  2001/03/14 20:32:37  freaky
// CVS-log eingebaut.
//

/* external request demon interface definitions */

#ifndef LPC__ERQ_H__
#define LPC__ERQ_H__ 1

/* servive request types */

#define ERQ_RLOOKUP     0  /* Lookup ip -> name */
#define ERQ_EXECUTE     1  /* Execute a program */
#define ERQ_FORK        2  /* Fork a program */
#define ERQ_AUTH        3  /* Connect to a remote authd */
#define ERQ_SPAWN       4  /* Spawn a program */
#define ERQ_SEND        5  /* Send data to a program or connection */
#define ERQ_KILL        6  /* Kill a program or connection */
#define ERQ_OPEN_UDP    7  /* Open a UDP socket */
#define ERQ_OPEN_TCP    8  /* Open a TCP connection */
#define ERQ_LISTEN      9  /* Open a TCP accept-socket */
#define ERQ_ACCEPT     10  /* Accept a connection from a accept-socket */
#define ERQ_LOOKUP     11  /* Lookup name -> ip */

#ifdef __IPV6__
#define ERQ_RLOOKUPV6  12  /* Lookup name/ip6 */
#endif

/* Additional service request type flags evaluated by efun send_erq().
 * The ERQ itself won't get to see it.
 */

#define ERQ_CB_STRING  (1 << 31)  /* Callback closure takes a string arg */


/* answers from ERQ_EXECUTE / ERQ_FORK */

#define ERQ_OK		  0
#define ERQ_SIGNALED	  1
#define ERQ_E_NOTFOUND	  2  /* process not found by wait */
#define ERQ_E_UNKNOWN	  3  /* unknown exit condition from wait() */
#define ERQ_E_ARGLENGTH	  4
#define ERQ_E_ARGFORMAT	  5
#define ERQ_E_ARGNUMBER	  6
#define ERQ_E_ILLEGAL	  7
#define ERQ_E_PATHLEN	  8
#define ERQ_E_FORKFAIL	  9
#define ERQ_E_TICKET	 11
#define ERQ_E_INCOMPLETE 12
#define ERQ_E_WOULDBLOCK 13
#define ERQ_E_PIPE	 14
#define ERQ_STDOUT	 15  /* Normal data received */
#define ERQ_STDERR	 16
#define ERQ_EXITED	 17  /* Connection closed on EOF */
#define ERQ_E_NSLOTS	 18

/* reserved handles */

#define ERQ_HANDLE_RLOOKUP (-1)
#define ERQ_HANDLE_KEEP_HANDLE (-2)
#define ERQ_HANDLE_RLOOKUPV6 (-3)

#endif /* LPC__ERQ_H__ */
