|
|
1.1 root 1: /*
2: * Messages exchanged between this program and system-V rexec'd one
3: *
4: * The general form of a message is:
5: * a fixed size control portion
6: * a variable size data portion
7: * The first two bytes of the control message give a length of the
8: * variable portion. First byte is low 8 bits, second byte high bits.
9: *
10: */
11:
12: struct rem_req {
13: short r_length ; /* length of variable data portion */
14: char r_type ; /* message type, see defines below */
15: char r_seq ; /* message sequence number */
16: short r_uid ; /* effective uid of sender */
17: short r_gid ; /* groupid of sender */
18: short r_file ; /* primary file to be referenced */
19: /* (either a directory or regular,
20: * depending of type of request) */
21: short r_mode ; /* file open mode, or new mode */
22:
23: union {
24: struct { /* ROPEN type message */
25: short r_arg ; /* creation mode */
26: short r_flag ; /* set according to defines below */
27: } ropen ;
28: struct { /* RREAD type message */
29: short r_X1 ; /* filler */
30: unsigned short r_count ;/* number of bytes to read */
31: long r_offset ; /* offset in file to start */
32: long r_lastr ; /* last logical block read */
33: } rread ;
34: struct { /* RWRITE type message */
35: short r_X1 ; /* filler */
36: unsigned short r_count ;/* number of bytes to transfer */
37: /* (NOTE - better be same as r_length) */
38: long r_offset ; /* offset in file to start */
39: long r_limit ; /* max block number allowed */
40: } rwrite ;
41: struct { /* RUTIME type message */
42: short r_tod ; /* 1 = use system clock */
43: short r_X1 ;
44: long r_atime ; /* access time */
45: long r_mtime ; /* modification time */
46: } rutime ;
47: struct { /* RCHOWN type message */
48: short r_nuid ; /* new user id */
49: short r_ngid ; /* new group id */
50: } rchown ;
51: struct { /* RMKNOD type message */
52: short r_dev ; /* major/minor number */
53: } rmknod ;
54: struct { /* RLINK type message */
55: short r_dir1 ; /* base of search for second path */
56: short r_nlen1 ; /* length of second pathname */
57: /* NOTE - first is r_length-r_nlen1 */
58: } rlink ;
59: struct { /* RIOCTL type message */
60: short r_cmd ; /* command type to driver */
61: short r_arg ; /* argument/user memory address */
62: } rioctl ;
63: } r_var ;
64: } ;
65:
66:
67: /*
68: * Messages originated by us
69: *
70: * General format is identical to those to us
71: *
72: */
73:
74: struct rem_reply {
75: short s_length ; /* length of variable data following */
76: char s_type ; /* type of message */
77: char s_error ; /* returned error code */
78: /* from here on, these fields may be UNION'ed
79: * because no single message uses all of them.
80: * However, the standard control message length
81: * is generous enough that it doesn't matter
82: */
83: short s_file ; /* returned file index */
84: short s_uid ; /* owner of opened file */
85: short s_gid ; /* groupid of opened file */
86: short s_mode ; /* mode of opened file */
87: unsigned short s_resid ; /* residual data remaining on RREAD */
88: unsigned short s_count ; /* data written on RWRITE */
89: long s_lastr ; /* last logical block written RWRITE */
90: long s_size ; /* file size RSEEK */
91: } ;
92:
93: /*
94: * Message types
95: * originated by rexec'd program
96: * (requests to us to do some I/O for it)
97: */
98: #define RMOUNT 'a'
99: #define RCOPEN 'b'
100: #define RREAD 'c'
101: #define RWRITE 'd'
102: #define RCHDIR 'g'
103: #define RSTAT 'h'
104: #define RFSTAT 'i'
105: #define RUTIME 'j'
106: #define RCHMOD 'k'
107: #define RCHOWN 'l'
108: #define RMKNOD 'm'
109: #define RACCESS 'n'
110: #define RLINK 'o'
111: #define RUNLINK 'p'
112: #define RUMOUNT 'q'
113: #define RSEEK 't'
114: #define RCANCEL 'u'
115: #define RSYNC 'v'
116: #define RIOCTL 'y'
117: #define RCLOSEF 'z'
118:
119: /*
120: * Originated by us
121: */
122: #define RSIGNAL 'A'
123:
124:
125: /*
126: * Misc other defines
127: */
128:
129: /*
130: * bits in r_var.ropen.r_flag
131: */
132: #define RREG 02 /* must be regular file */
133: #define REXEC 04 /* open for execution */
134:
135: /*
136: * structure-to-string and string-to-structure formats
137: */
138: #define F_REMREQ "sbbssssssll"
139:
140: #define F_REMREPLY "sbbssssssll"
141:
142: /*
143: * size of string passed as control portion
144: */
145: #define REMSIZE 24
146:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.