Annotation of 43BSDReno/usr.sbin/amd/rpcx/nfs_prot_svc.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * $Id: nfs_prot_svc.c,v 5.2 90/06/23 22:20:25 jsp Rel $
                      3:  *
                      4:  * Copyright (c) 1989 Jan-Simon Pendry
                      5:  * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
                      6:  * Copyright (c) 1989 The Regents of the University of California.
                      7:  * All rights reserved.
                      8:  *
                      9:  * This code is derived from software contributed to Berkeley by
                     10:  * Jan-Simon Pendry at Imperial College, London.
                     11:  *
                     12:  * Redistribution and use in source and binary forms are permitted provided
                     13:  * that: (1) source distributions retain this entire copyright notice and
                     14:  * comment, and (2) distributions including binaries display the following
                     15:  * acknowledgement:  ``This product includes software developed by the
                     16:  * University of California, Berkeley and its contributors'' in the
                     17:  * documentation or other materials provided with the distribution and in
                     18:  * all advertising materials mentioning features or use of this software.
                     19:  * Neither the name of the University nor the names of its contributors may
                     20:  * be used to endorse or promote products derived from this software without
                     21:  * specific prior written permission.
                     22:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
                     23:  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
                     24:  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     25:  *
                     26:  *     @(#)nfs_prot_svc.c      5.1 (Berkeley) 7/19/90
                     27:  */
                     28: 
                     29: #include "am.h"
                     30: 
                     31: void nfs_program_2(rqstp, transp)
                     32: struct svc_req *rqstp;
                     33: SVCXPRT *transp;
                     34: {
                     35:        union {
                     36:                nfs_fh nfsproc_getattr_2_arg;
                     37:                sattrargs nfsproc_setattr_2_arg;
                     38:                diropargs nfsproc_lookup_2_arg;
                     39:                nfs_fh nfsproc_readlink_2_arg;
                     40:                readargs nfsproc_read_2_arg;
                     41:                writeargs nfsproc_write_2_arg;
                     42:                createargs nfsproc_create_2_arg;
                     43:                diropargs nfsproc_remove_2_arg;
                     44:                renameargs nfsproc_rename_2_arg;
                     45:                linkargs nfsproc_link_2_arg;
                     46:                symlinkargs nfsproc_symlink_2_arg;
                     47:                createargs nfsproc_mkdir_2_arg;
                     48:                diropargs nfsproc_rmdir_2_arg;
                     49:                readdirargs nfsproc_readdir_2_arg;
                     50:                nfs_fh nfsproc_statfs_2_arg;
                     51:        } argument;
                     52:        char *result;
                     53:        bool_t (*xdr_argument)(), (*xdr_result)();
                     54:        char *(*local)();
                     55: 
                     56:        switch (rqstp->rq_proc) {
                     57:        case NFSPROC_NULL:
                     58:                xdr_argument = xdr_void;
                     59:                xdr_result = xdr_void;
                     60:                local = (char *(*)()) nfsproc_null_2;
                     61:                break;
                     62: 
                     63:        case NFSPROC_GETATTR:
                     64:                xdr_argument = xdr_nfs_fh;
                     65:                xdr_result = xdr_attrstat;
                     66:                local = (char *(*)()) nfsproc_getattr_2;
                     67:                break;
                     68: 
                     69:        case NFSPROC_SETATTR:
                     70:                xdr_argument = xdr_sattrargs;
                     71:                xdr_result = xdr_attrstat;
                     72:                local = (char *(*)()) nfsproc_setattr_2;
                     73:                break;
                     74: 
                     75:        case NFSPROC_ROOT:
                     76:                xdr_argument = xdr_void;
                     77:                xdr_result = xdr_void;
                     78:                local = (char *(*)()) nfsproc_root_2;
                     79:                break;
                     80: 
                     81:        case NFSPROC_LOOKUP:
                     82:                xdr_argument = xdr_diropargs;
                     83:                xdr_result = xdr_diropres;
                     84:                local = (char *(*)()) nfsproc_lookup_2;
                     85:                break;
                     86: 
                     87:        case NFSPROC_READLINK:
                     88:                xdr_argument = xdr_nfs_fh;
                     89:                xdr_result = xdr_readlinkres;
                     90:                local = (char *(*)()) nfsproc_readlink_2;
                     91:                break;
                     92: 
                     93:        case NFSPROC_READ:
                     94:                xdr_argument = xdr_readargs;
                     95:                xdr_result = xdr_readres;
                     96:                local = (char *(*)()) nfsproc_read_2;
                     97:                break;
                     98: 
                     99:        case NFSPROC_WRITECACHE:
                    100:                xdr_argument = xdr_void;
                    101:                xdr_result = xdr_void;
                    102:                local = (char *(*)()) nfsproc_writecache_2;
                    103:                break;
                    104: 
                    105:        case NFSPROC_WRITE:
                    106:                xdr_argument = xdr_writeargs;
                    107:                xdr_result = xdr_attrstat;
                    108:                local = (char *(*)()) nfsproc_write_2;
                    109:                break;
                    110: 
                    111:        case NFSPROC_CREATE:
                    112:                xdr_argument = xdr_createargs;
                    113:                xdr_result = xdr_diropres;
                    114:                local = (char *(*)()) nfsproc_create_2;
                    115:                break;
                    116: 
                    117:        case NFSPROC_REMOVE:
                    118:                xdr_argument = xdr_diropargs;
                    119:                xdr_result = xdr_nfsstat;
                    120:                local = (char *(*)()) nfsproc_remove_2;
                    121:                break;
                    122: 
                    123:        case NFSPROC_RENAME:
                    124:                xdr_argument = xdr_renameargs;
                    125:                xdr_result = xdr_nfsstat;
                    126:                local = (char *(*)()) nfsproc_rename_2;
                    127:                break;
                    128: 
                    129:        case NFSPROC_LINK:
                    130:                xdr_argument = xdr_linkargs;
                    131:                xdr_result = xdr_nfsstat;
                    132:                local = (char *(*)()) nfsproc_link_2;
                    133:                break;
                    134: 
                    135:        case NFSPROC_SYMLINK:
                    136:                xdr_argument = xdr_symlinkargs;
                    137:                xdr_result = xdr_nfsstat;
                    138:                local = (char *(*)()) nfsproc_symlink_2;
                    139:                break;
                    140: 
                    141:        case NFSPROC_MKDIR:
                    142:                xdr_argument = xdr_createargs;
                    143:                xdr_result = xdr_diropres;
                    144:                local = (char *(*)()) nfsproc_mkdir_2;
                    145:                break;
                    146: 
                    147:        case NFSPROC_RMDIR:
                    148:                xdr_argument = xdr_diropargs;
                    149:                xdr_result = xdr_nfsstat;
                    150:                local = (char *(*)()) nfsproc_rmdir_2;
                    151:                break;
                    152: 
                    153:        case NFSPROC_READDIR:
                    154:                xdr_argument = xdr_readdirargs;
                    155:                xdr_result = xdr_readdirres;
                    156:                local = (char *(*)()) nfsproc_readdir_2;
                    157:                break;
                    158: 
                    159:        case NFSPROC_STATFS:
                    160:                xdr_argument = xdr_nfs_fh;
                    161:                xdr_result = xdr_statfsres;
                    162:                local = (char *(*)()) nfsproc_statfs_2;
                    163:                break;
                    164: 
                    165:        default:
                    166:                svcerr_noproc(transp);
                    167:                return;
                    168:        }
                    169:        bzero((char *)&argument, sizeof(argument));
                    170:        if (!svc_getargs(transp, xdr_argument, &argument)) {
                    171:                svcerr_decode(transp);
                    172:                return;
                    173:        }
                    174:        result = (*local)(&argument, rqstp);
                    175:        if (result != NULL && !svc_sendreply(transp, xdr_result, result)) {
                    176:                svcerr_systemerr(transp);
                    177:        }
                    178:        if (!svc_freeargs(transp, xdr_argument, &argument)) {
                    179:                plog(XLOG_FATAL, "unable to free rpc arguments in nfs_program_1");
                    180:                going_down(1);
                    181:        }
                    182: }
                    183: 

unix.superglobalmegacorp.com

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