1 /* external request demon interface definitions */
2 
3 #ifndef ERQ_H__
4 #define ERQ_H__ 1
5 
6 /* servive request types */
7 
8 #define ERQ_RLOOKUP     0  /* Lookup ip -> name */
9 #define ERQ_EXECUTE     1  /* Execute a program */
10 #define ERQ_FORK        2  /* Fork a program */
11 #define ERQ_AUTH        3  /* Connect to a remote authd */
12 #define ERQ_SPAWN       4  /* Spawn a program */
13 #define ERQ_SEND        5  /* Send data to a program or connection */
14 #define ERQ_KILL        6  /* Kill a program or connection */
15 #define ERQ_OPEN_UDP    7  /* Open a UDP socket */
16 #define ERQ_OPEN_TCP    8  /* Open a TCP connection */
17 #define ERQ_LISTEN      9  /* Open a TCP accept-socket */
18 #define ERQ_ACCEPT     10  /* Accept a connection from a accept-socket */
19 #define ERQ_LOOKUP     11  /* Lookup name -> ip */
20 
21 #ifdef __IPV6__
22 #define ERQ_RLOOKUPV6  12  /* Lookup name/ip6 */
23 #endif
24 
25 /* Additional service request type flags evaluated by efun send_erq().
26  * The ERQ itself won't get to see it.
27  */
28 
29 #define ERQ_CB_STRING  (1 << 31)  /* Callback closure takes a string arg */
30 
31 
32 /* answers from ERQ_EXECUTE / ERQ_FORK */
33 
34 #define ERQ_OK		  0
35 #define ERQ_SIGNALED	  1
36 #define ERQ_E_NOTFOUND	  2  /* process not found by wait */
37 #define ERQ_E_UNKNOWN	  3  /* unknown exit condition from wait() */
38 #define ERQ_E_ARGLENGTH	  4
39 #define ERQ_E_ARGFORMAT	  5
40 #define ERQ_E_ARGNUMBER	  6
41 #define ERQ_E_ILLEGAL	  7
42 #define ERQ_E_PATHLEN	  8
43 #define ERQ_E_FORKFAIL	  9
44 #define ERQ_E_TICKET	 11
45 #define ERQ_E_INCOMPLETE 12
46 #define ERQ_E_WOULDBLOCK 13
47 #define ERQ_E_PIPE	 14
48 #define ERQ_STDOUT	 15  /* Normal data received */
49 #define ERQ_STDERR	 16
50 #define ERQ_EXITED	 17  /* Connection closed on EOF */
51 #define ERQ_E_NSLOTS	 18
52 
53 /* reserved handles */
54 
55 #define ERQ_HANDLE_RLOOKUP (-1)
56 #define ERQ_HANDLE_KEEP_HANDLE (-2)
57 #define ERQ_HANDLE_RLOOKUPV6 (-3)
58 
59 #endif /* ERQ_H__ */
60