|
|
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.