Annotation of 43BSDReno/usr.sbin/amd/rpcx/nfs_prot_svc.c, revision 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.