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

1.1       root        1: /*
                      2:  * $Id: amq_svc.c,v 5.2 90/06/23 22:20:17 jsp Rel $
                      3:  *
                      4:  * Copyright (c) 1990 Jan-Simon Pendry
                      5:  * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
                      6:  * Copyright (c) 1990 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:  *     @(#)amq_svc.c   5.1 (Berkeley) 7/19/90
                     27:  */
                     28: 
                     29: #include "am.h"
                     30: #include "amq.h"
                     31: extern bool_t xdr_amq_mount_info_qelem();
                     32: 
                     33: void
                     34: amq_program_1(rqstp, transp)
                     35:        struct svc_req *rqstp;
                     36:        SVCXPRT *transp;
                     37: {
                     38:        union {
                     39:                amq_string amqproc_mnttree_1_arg;
                     40:                amq_string amqproc_umnt_1_arg;
                     41:                amq_setopt amqproc_setopt_1_arg;
                     42:        } argument;
                     43:        char *result;
                     44:        bool_t (*xdr_argument)(), (*xdr_result)();
                     45:        char *(*local)();
                     46: 
                     47:        switch (rqstp->rq_proc) {
                     48:        case AMQPROC_NULL:
                     49:                xdr_argument = xdr_void;
                     50:                xdr_result = xdr_void;
                     51:                local = (char *(*)()) amqproc_null_1;
                     52:                break;
                     53: 
                     54:        case AMQPROC_MNTTREE:
                     55:                xdr_argument = xdr_amq_string;
                     56:                xdr_result = xdr_amq_mount_tree_p;
                     57:                local = (char *(*)()) amqproc_mnttree_1;
                     58:                break;
                     59: 
                     60:        case AMQPROC_UMNT:
                     61:                xdr_argument = xdr_amq_string;
                     62:                xdr_result = xdr_void;
                     63:                local = (char *(*)()) amqproc_umnt_1;
                     64:                break;
                     65: 
                     66:        case AMQPROC_STATS:
                     67:                xdr_argument = xdr_void;
                     68:                xdr_result = xdr_amq_mount_stats;
                     69:                local = (char *(*)()) amqproc_stats_1;
                     70:                break;
                     71: 
                     72:        case AMQPROC_EXPORT:
                     73:                xdr_argument = xdr_void;
                     74:                xdr_result = xdr_amq_mount_tree_list;
                     75:                local = (char *(*)()) amqproc_export_1;
                     76:                break;
                     77: 
                     78:        case AMQPROC_SETOPT:
                     79:                xdr_argument = xdr_amq_setopt;
                     80:                xdr_result = xdr_int;
                     81:                local = (char *(*)()) amqproc_setopt_1;
                     82:                break;
                     83: 
                     84:        case AMQPROC_GETMNTFS:
                     85:                xdr_argument = xdr_void;
                     86:                xdr_result = xdr_amq_mount_info_qelem;
                     87:                local = (char *(*)()) amqproc_getmntfs_1;
                     88:                break;
                     89: 
                     90:        default:
                     91:                svcerr_noproc(transp);
                     92:                return;
                     93:        }
                     94:        bzero((char *)&argument, sizeof(argument));
                     95:        if (!svc_getargs(transp, xdr_argument, &argument)) {
                     96:                svcerr_decode(transp);
                     97:                return;
                     98:        }
                     99:        result = (*local)(&argument, rqstp);
                    100:        if (result != NULL && !svc_sendreply(transp, xdr_result, result)) {
                    101:                svcerr_systemerr(transp);
                    102:        }
                    103:        if (!svc_freeargs(transp, xdr_argument, &argument)) {
                    104:                plog(XLOG_FATAL, "unable to free rpc arguments in amqprog_1");
                    105:                going_down(1);
                    106:        }
                    107: }
                    108: 

unix.superglobalmegacorp.com

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