Annotation of researchv10no/ipc/bin/OLDdkcc/remfio.h, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.