xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/rpcsvc/rex.x (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /* @(#)rex.x	2.1 88/08/01 4.0 RPCSRC */
2*53ee8cc1Swenshuai.xi /* @(#)rex.x 1.3 87/09/18 Copyr 1987 Sun Micro */
3*53ee8cc1Swenshuai.xi 
4*53ee8cc1Swenshuai.xi /*
5*53ee8cc1Swenshuai.xi  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
6*53ee8cc1Swenshuai.xi  * unrestricted use provided that this legend is included on all tape
7*53ee8cc1Swenshuai.xi  * media and as a part of the software program in whole or part.  Users
8*53ee8cc1Swenshuai.xi  * may copy or modify Sun RPC without charge, but are not authorized
9*53ee8cc1Swenshuai.xi  * to license or distribute it to anyone else except as part of a product or
10*53ee8cc1Swenshuai.xi  * program developed by the user.
11*53ee8cc1Swenshuai.xi  *
12*53ee8cc1Swenshuai.xi  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
13*53ee8cc1Swenshuai.xi  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
14*53ee8cc1Swenshuai.xi  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
15*53ee8cc1Swenshuai.xi  *
16*53ee8cc1Swenshuai.xi  * Sun RPC is provided with no support and without any obligation on the
17*53ee8cc1Swenshuai.xi  * part of Sun Microsystems, Inc. to assist in its use, correction,
18*53ee8cc1Swenshuai.xi  * modification or enhancement.
19*53ee8cc1Swenshuai.xi  *
20*53ee8cc1Swenshuai.xi  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
21*53ee8cc1Swenshuai.xi  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
22*53ee8cc1Swenshuai.xi  * OR ANY PART THEREOF.
23*53ee8cc1Swenshuai.xi  *
24*53ee8cc1Swenshuai.xi  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
25*53ee8cc1Swenshuai.xi  * or profits or other special, indirect and consequential damages, even if
26*53ee8cc1Swenshuai.xi  * Sun has been advised of the possibility of such damages.
27*53ee8cc1Swenshuai.xi  *
28*53ee8cc1Swenshuai.xi  * Sun Microsystems, Inc.
29*53ee8cc1Swenshuai.xi  * 2550 Garcia Avenue
30*53ee8cc1Swenshuai.xi  * Mountain View, California  94043
31*53ee8cc1Swenshuai.xi  */
32*53ee8cc1Swenshuai.xi 
33*53ee8cc1Swenshuai.xi /*
34*53ee8cc1Swenshuai.xi  * Remote execution (rex) protocol specification
35*53ee8cc1Swenshuai.xi  */
36*53ee8cc1Swenshuai.xi 
37*53ee8cc1Swenshuai.xi const STRINGSIZE = 1024;
38*53ee8cc1Swenshuai.xi typedef string rexstring<1024>;
39*53ee8cc1Swenshuai.xi 
40*53ee8cc1Swenshuai.xi /*
41*53ee8cc1Swenshuai.xi  * values to pass to REXPROC_SIGNAL
42*53ee8cc1Swenshuai.xi  */
43*53ee8cc1Swenshuai.xi const SIGINT = 2;	/* interrupt */
44*53ee8cc1Swenshuai.xi 
45*53ee8cc1Swenshuai.xi /*
46*53ee8cc1Swenshuai.xi  * Values for rst_flags, below
47*53ee8cc1Swenshuai.xi  */
48*53ee8cc1Swenshuai.xi const REX_INTERACTIVE = 1;	/* interactive mode */
49*53ee8cc1Swenshuai.xi 
50*53ee8cc1Swenshuai.xi struct rex_start {
51*53ee8cc1Swenshuai.xi 	rexstring rst_cmd<>;	/* list of command and args */
52*53ee8cc1Swenshuai.xi 	rexstring rst_host;	/* working directory host name */
53*53ee8cc1Swenshuai.xi 	rexstring rst_fsname;	/* working directory file system name */
54*53ee8cc1Swenshuai.xi 	rexstring rst_dirwithin;/* working directory within file system */
55*53ee8cc1Swenshuai.xi 	rexstring rst_env<>;	/* list of environment */
56*53ee8cc1Swenshuai.xi 	unsigned int rst_port0;	/* port for stdin */
57*53ee8cc1Swenshuai.xi 	unsigned int rst_port1;	/* port for stdout */
58*53ee8cc1Swenshuai.xi 	unsigned int rst_port2;	/* port for stderr */
59*53ee8cc1Swenshuai.xi 	unsigned int rst_flags;	/* options - see const above */
60*53ee8cc1Swenshuai.xi };
61*53ee8cc1Swenshuai.xi 
62*53ee8cc1Swenshuai.xi struct rex_result {
63*53ee8cc1Swenshuai.xi    	int rlt_stat;		/* integer status code */
64*53ee8cc1Swenshuai.xi 	rexstring rlt_message;	/* string message for human consumption */
65*53ee8cc1Swenshuai.xi };
66*53ee8cc1Swenshuai.xi 
67*53ee8cc1Swenshuai.xi 
68*53ee8cc1Swenshuai.xi struct sgttyb {
69*53ee8cc1Swenshuai.xi 	unsigned four;	/* always equals 4 */
70*53ee8cc1Swenshuai.xi 	opaque chars[4];
71*53ee8cc1Swenshuai.xi 	/* chars[0] == input speed */
72*53ee8cc1Swenshuai.xi 	/* chars[1] == output speed */
73*53ee8cc1Swenshuai.xi 	/* chars[2] == kill character */
74*53ee8cc1Swenshuai.xi 	/* chars[3] == erase character */
75*53ee8cc1Swenshuai.xi 	unsigned flags;
76*53ee8cc1Swenshuai.xi };
77*53ee8cc1Swenshuai.xi /* values for speeds above (baud rates)  */
78*53ee8cc1Swenshuai.xi const B0  = 0;
79*53ee8cc1Swenshuai.xi const B50 = 1;
80*53ee8cc1Swenshuai.xi const B75 = 2;
81*53ee8cc1Swenshuai.xi const B110 = 3;
82*53ee8cc1Swenshuai.xi const B134 = 4;
83*53ee8cc1Swenshuai.xi const B150 = 5;
84*53ee8cc1Swenshuai.xi const B200 = 6;
85*53ee8cc1Swenshuai.xi const B300 = 7;
86*53ee8cc1Swenshuai.xi const B600 = 8;
87*53ee8cc1Swenshuai.xi const B1200 = 9;
88*53ee8cc1Swenshuai.xi const B1800 = 10;
89*53ee8cc1Swenshuai.xi const B2400 = 11;
90*53ee8cc1Swenshuai.xi const B4800 = 12;
91*53ee8cc1Swenshuai.xi const B9600 = 13;
92*53ee8cc1Swenshuai.xi const B19200 = 14;
93*53ee8cc1Swenshuai.xi const B38400 = 15;
94*53ee8cc1Swenshuai.xi 
95*53ee8cc1Swenshuai.xi /* values for flags above */
96*53ee8cc1Swenshuai.xi const TANDEM = 0x00000001; /* send stopc on out q full */
97*53ee8cc1Swenshuai.xi const CBREAK = 0x00000002; /* half-cooked mode */
98*53ee8cc1Swenshuai.xi const LCASE = 0x00000004; /* simulate lower case */
99*53ee8cc1Swenshuai.xi const ECHO = 0x00000008; /* echo input */
100*53ee8cc1Swenshuai.xi const CRMOD = 0x00000010; /* map \r to \r\n on output */
101*53ee8cc1Swenshuai.xi const RAW = 0x00000020; /* no i/o processing */
102*53ee8cc1Swenshuai.xi const ODDP = 0x00000040; /* get/send odd parity */
103*53ee8cc1Swenshuai.xi const EVENP = 0x00000080; /* get/send even parity */
104*53ee8cc1Swenshuai.xi const ANYP = 0x000000c0; /* get any parity/send none */
105*53ee8cc1Swenshuai.xi const NLDELAY = 0x00000300; /* \n delay */
106*53ee8cc1Swenshuai.xi const  NL0 = 0x00000000;
107*53ee8cc1Swenshuai.xi const  NL1 = 0x00000100; /* tty 37 */
108*53ee8cc1Swenshuai.xi const  NL2 = 0x00000200; /* vt05 */
109*53ee8cc1Swenshuai.xi const  NL3 = 0x00000300;
110*53ee8cc1Swenshuai.xi const TBDELAY = 0x00000c00; /* horizontal tab delay */
111*53ee8cc1Swenshuai.xi const  TAB0 = 0x00000000;
112*53ee8cc1Swenshuai.xi const  TAB1 = 0x00000400; /* tty 37 */
113*53ee8cc1Swenshuai.xi const  TAB2 = 0x00000800;
114*53ee8cc1Swenshuai.xi const XTABS = 0x00000c00; /* expand tabs on output */
115*53ee8cc1Swenshuai.xi const CRDELAY = 0x00003000; /* \r delay */
116*53ee8cc1Swenshuai.xi const  CR0 = 0x00000000;
117*53ee8cc1Swenshuai.xi const  CR1 = 0x00001000; /* tn 300 */
118*53ee8cc1Swenshuai.xi const  CR2 = 0x00002000; /* tty 37 */
119*53ee8cc1Swenshuai.xi const  CR3 = 0x00003000; /* concept 100 */
120*53ee8cc1Swenshuai.xi const VTDELAY = 0x00004000; /* vertical tab delay */
121*53ee8cc1Swenshuai.xi const  FF0 = 0x00000000;
122*53ee8cc1Swenshuai.xi const  FF1 = 0x00004000; /* tty 37 */
123*53ee8cc1Swenshuai.xi const BSDELAY = 0x00008000; /* \b delay */
124*53ee8cc1Swenshuai.xi const  BS0 = 0x00000000;
125*53ee8cc1Swenshuai.xi const  BS1 = 0x00008000;
126*53ee8cc1Swenshuai.xi const CRTBS = 0x00010000; /* do backspacing for crt */
127*53ee8cc1Swenshuai.xi const PRTERA = 0x00020000; /* \ ... / erase */
128*53ee8cc1Swenshuai.xi const CRTERA = 0x00040000; /* " \b " to wipe out char */
129*53ee8cc1Swenshuai.xi const TILDE = 0x00080000; /* hazeltine tilde kludge */
130*53ee8cc1Swenshuai.xi const MDMBUF = 0x00100000; /* start/stop output on carrier intr */
131*53ee8cc1Swenshuai.xi const LITOUT = 0x00200000; /* literal output */
132*53ee8cc1Swenshuai.xi const TOSTOP = 0x00400000; /* SIGTTOU on background output */
133*53ee8cc1Swenshuai.xi const FLUSHO = 0x00800000; /* flush output to terminal */
134*53ee8cc1Swenshuai.xi const NOHANG = 0x01000000; /* no SIGHUP on carrier drop */
135*53ee8cc1Swenshuai.xi const L001000 = 0x02000000;
136*53ee8cc1Swenshuai.xi const CRTKIL = 0x04000000; /* kill line with " \b " */
137*53ee8cc1Swenshuai.xi const PASS8 = 0x08000000;
138*53ee8cc1Swenshuai.xi const CTLECH = 0x10000000; /* echo control chars as ^X */
139*53ee8cc1Swenshuai.xi const PENDIN = 0x20000000; /* tp->t_rawq needs reread */
140*53ee8cc1Swenshuai.xi const DECCTQ = 0x40000000; /* only ^Q starts after ^S */
141*53ee8cc1Swenshuai.xi const NOFLSH = 0x80000000; /* no output flush on signal */
142*53ee8cc1Swenshuai.xi 
143*53ee8cc1Swenshuai.xi struct tchars {
144*53ee8cc1Swenshuai.xi 	unsigned six;	/* always equals 6 */
145*53ee8cc1Swenshuai.xi 	opaque chars[6];
146*53ee8cc1Swenshuai.xi 	/* chars[0] == interrupt char */
147*53ee8cc1Swenshuai.xi 	/* chars[1] == quit char */
148*53ee8cc1Swenshuai.xi 	/* chars[2] == start output char */
149*53ee8cc1Swenshuai.xi 	/* chars[3] == stop output char */
150*53ee8cc1Swenshuai.xi 	/* chars[4] == end-of-file char */
151*53ee8cc1Swenshuai.xi 	/* chars[5] == input delimiter (like nl) */
152*53ee8cc1Swenshuai.xi };
153*53ee8cc1Swenshuai.xi 
154*53ee8cc1Swenshuai.xi struct ltchars {
155*53ee8cc1Swenshuai.xi 	unsigned six;	/* always equals 6 */
156*53ee8cc1Swenshuai.xi 	opaque chars[6];
157*53ee8cc1Swenshuai.xi 	/* chars[0] == stop process signal */
158*53ee8cc1Swenshuai.xi 	/* chars[1] == delayed stop process signal */
159*53ee8cc1Swenshuai.xi 	/* chars[2] == reprint line */
160*53ee8cc1Swenshuai.xi 	/* chars[3] == flush output */
161*53ee8cc1Swenshuai.xi 	/* chars[4] == word erase */
162*53ee8cc1Swenshuai.xi 	/* chars[5] == literal next character */
163*53ee8cc1Swenshuai.xi 	unsigned mode;
164*53ee8cc1Swenshuai.xi };
165*53ee8cc1Swenshuai.xi 
166*53ee8cc1Swenshuai.xi struct rex_ttysize {
167*53ee8cc1Swenshuai.xi 	int ts_lines;
168*53ee8cc1Swenshuai.xi 	int ts_cols;
169*53ee8cc1Swenshuai.xi };
170*53ee8cc1Swenshuai.xi 
171*53ee8cc1Swenshuai.xi struct rex_ttymode {
172*53ee8cc1Swenshuai.xi     sgttyb basic;    /* standard unix tty flags */
173*53ee8cc1Swenshuai.xi     tchars more; /* interrupt, kill characters, etc. */
174*53ee8cc1Swenshuai.xi     ltchars yetmore; /* special Berkeley characters */
175*53ee8cc1Swenshuai.xi     unsigned andmore;     /* and Berkeley modes */
176*53ee8cc1Swenshuai.xi };
177*53ee8cc1Swenshuai.xi 
178*53ee8cc1Swenshuai.xi /* values for andmore above */
179*53ee8cc1Swenshuai.xi const LCRTBS = 0x0001;	/* do backspacing for crt */
180*53ee8cc1Swenshuai.xi const LPRTERA = 0x0002;	/* \ ... / erase */
181*53ee8cc1Swenshuai.xi const LCRTERA = 0x0004;	/* " \b " to wipe out char */
182*53ee8cc1Swenshuai.xi const LTILDE = 0x0008;	/* hazeltine tilde kludge */
183*53ee8cc1Swenshuai.xi const LMDMBUF = 0x0010;	/* start/stop output on carrier intr */
184*53ee8cc1Swenshuai.xi const LLITOUT = 0x0020;	/* literal output */
185*53ee8cc1Swenshuai.xi const LTOSTOP = 0x0040;	/* SIGTTOU on background output */
186*53ee8cc1Swenshuai.xi const LFLUSHO = 0x0080;	/* flush output to terminal */
187*53ee8cc1Swenshuai.xi const LNOHANG = 0x0100;	/* no SIGHUP on carrier drop */
188*53ee8cc1Swenshuai.xi const LL001000 = 0x0200;
189*53ee8cc1Swenshuai.xi const LCRTKIL = 0x0400;	/* kill line with " \b " */
190*53ee8cc1Swenshuai.xi const LPASS8 = 0x0800;
191*53ee8cc1Swenshuai.xi const LCTLECH = 0x1000;	/* echo control chars as ^X */
192*53ee8cc1Swenshuai.xi const LPENDIN = 0x2000;	/* needs reread */
193*53ee8cc1Swenshuai.xi const LDECCTQ = 0x4000;	/* only ^Q starts after ^S */
194*53ee8cc1Swenshuai.xi const LNOFLSH = 0x8000;	/* no output flush on signal */
195*53ee8cc1Swenshuai.xi 
196*53ee8cc1Swenshuai.xi program REXPROG {
197*53ee8cc1Swenshuai.xi 	version REXVERS {
198*53ee8cc1Swenshuai.xi 
199*53ee8cc1Swenshuai.xi 		/*
200*53ee8cc1Swenshuai.xi 		 * Start remote execution
201*53ee8cc1Swenshuai.xi 		 */
202*53ee8cc1Swenshuai.xi 		rex_result
203*53ee8cc1Swenshuai.xi 		REXPROC_START(rex_start) = 1;
204*53ee8cc1Swenshuai.xi 
205*53ee8cc1Swenshuai.xi 		/*
206*53ee8cc1Swenshuai.xi 		 * Wait for remote execution to terminate
207*53ee8cc1Swenshuai.xi 		 */
208*53ee8cc1Swenshuai.xi 		rex_result
209*53ee8cc1Swenshuai.xi 		REXPROC_WAIT(void) = 2;
210*53ee8cc1Swenshuai.xi 
211*53ee8cc1Swenshuai.xi 		/*
212*53ee8cc1Swenshuai.xi 		 * Send tty modes
213*53ee8cc1Swenshuai.xi 		 */
214*53ee8cc1Swenshuai.xi 		void
215*53ee8cc1Swenshuai.xi 		REXPROC_MODES(rex_ttymode) = 3;
216*53ee8cc1Swenshuai.xi 
217*53ee8cc1Swenshuai.xi 		/*
218*53ee8cc1Swenshuai.xi 		 * Send window size change
219*53ee8cc1Swenshuai.xi 		 */
220*53ee8cc1Swenshuai.xi 		void
221*53ee8cc1Swenshuai.xi 		REXPROC_WINCH(rex_ttysize) = 4;
222*53ee8cc1Swenshuai.xi 
223*53ee8cc1Swenshuai.xi 		/*
224*53ee8cc1Swenshuai.xi 		 * Send other signal
225*53ee8cc1Swenshuai.xi 		 */
226*53ee8cc1Swenshuai.xi 		void
227*53ee8cc1Swenshuai.xi 		REXPROC_SIGNAL(int) = 5;
228*53ee8cc1Swenshuai.xi 	} = 1;
229*53ee8cc1Swenshuai.xi } = 100017;
230