X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=support%2Fnsm%2Fsm_inter_svc.c;fp=support%2Fnsm%2Fsm_inter_svc.c;h=6a0af14282df62531418e4ae24bec810eb0aa4a9;hp=0000000000000000000000000000000000000000;hb=e0b66eaad419b466ecfac1b82d4802bb5fb676d0;hpb=10fba47663b2f6c695ebe315cbe3b464350b0060 diff --git a/support/nsm/sm_inter_svc.c b/support/nsm/sm_inter_svc.c new file mode 100644 index 0000000..6a0af14 --- /dev/null +++ b/support/nsm/sm_inter_svc.c @@ -0,0 +1,93 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#include "sm_inter.h" +#include +#include +#include +#include +#include +#include +#include + +#ifndef SIG_PF +#define SIG_PF void(*)(int) +#endif +#define SM_INTER_X + +void +sm_prog_1(struct svc_req *rqstp, register SVCXPRT *transp) +{ + union { + struct sm_name sm_stat_1_arg; + struct mon sm_mon_1_arg; + struct mon_id sm_unmon_1_arg; + struct my_id sm_unmon_all_1_arg; + struct stat_chge sm_notify_1_arg; + } argument; + char *result; + xdrproc_t _xdr_argument, _xdr_result; + char *(*local)(char *, struct svc_req *); + + switch (rqstp->rq_proc) { + case NULLPROC: + (void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL); + return; + + case SM_STAT: + _xdr_argument = (xdrproc_t) xdr_sm_name; + _xdr_result = (xdrproc_t) xdr_sm_stat_res; + local = (char *(*)(char *, struct svc_req *)) sm_stat_1_svc; + break; + + case SM_MON: + _xdr_argument = (xdrproc_t) xdr_mon; + _xdr_result = (xdrproc_t) xdr_sm_stat_res; + local = (char *(*)(char *, struct svc_req *)) sm_mon_1_svc; + break; + + case SM_UNMON: + _xdr_argument = (xdrproc_t) xdr_mon_id; + _xdr_result = (xdrproc_t) xdr_sm_stat; + local = (char *(*)(char *, struct svc_req *)) sm_unmon_1_svc; + break; + + case SM_UNMON_ALL: + _xdr_argument = (xdrproc_t) xdr_my_id; + _xdr_result = (xdrproc_t) xdr_sm_stat; + local = (char *(*)(char *, struct svc_req *)) sm_unmon_all_1_svc; + break; + + case SM_SIMU_CRASH: + _xdr_argument = (xdrproc_t) xdr_void; + _xdr_result = (xdrproc_t) xdr_void; + local = (char *(*)(char *, struct svc_req *)) sm_simu_crash_1_svc; + break; + + case SM_NOTIFY: + _xdr_argument = (xdrproc_t) xdr_stat_chge; + _xdr_result = (xdrproc_t) xdr_void; + local = (char *(*)(char *, struct svc_req *)) sm_notify_1_svc; + break; + + default: + svcerr_noproc (transp); + return; + } + memset ((char *)&argument, 0, sizeof (argument)); + if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) { + svcerr_decode (transp); + return; + } + result = (*local)((char *)&argument, rqstp); + if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result, result)) { + svcerr_systemerr (transp); + } + if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) { + fprintf (stderr, "%s", "unable to free arguments"); + exit (1); + } + return; +}