/* * Please do not edit this file. * It was generated using rpcgen. */ #include "../common/fmd_rpc_adm.h" #include #include /* getenv, exit */ #include #include /* for pmap_unset */ #include /* strcmp */ #include /* setsid */ #include #include #include #include /* rlimit */ #include #ifndef SIG_PF #define SIG_PF void(*)(int) #endif #ifdef DEBUG #define RPC_SVC_FG #endif #define _RPCSVC_CLOSEDOWN 120 #include extern void fmd_adm_1(struct svc_req *, SVCXPRT *); extern bool_t xdr_fmd_stat(XDR *, struct fmd_stat *); #undef RW_READ_HELD #undef RW_WRITE_HELD #undef RW_LOCK_HELD #undef MUTEX_HELD extern int _rpcpmstart; /* Started by a port monitor ? */ /* States a server can be in wrt request */ #define _IDLE 0 #define _SERVED 1 /* LINTED static unused if no main */ static int _rpcsvcstate = _IDLE; /* Set when a request is serviced */ static int _rpcsvccount = 0; /* Number of requests being serviced */ mutex_t _svcstate_lock; /* lock for _rpcsvcstate, _rpcsvccount */ #if defined(RPC_MSGOUT) extern void RPC_MSGOUT(const char *, ...); #else /* defined(RPC_MSGOUT) */ static void RPC_MSGOUT(const char *fmt, char *msg) { #ifdef RPC_SVC_FG if (_rpcpmstart) syslog(LOG_ERR, fmt, msg); else { (void) fprintf(stderr, fmt, msg); (void) putc('\n', stderr); } #else syslog(LOG_ERR, fmt, msg); #endif } #endif /* defined(RPC_MSGOUT) */ /* ARGSUSED */ int _fmd_adm_modinfo_1( void *argp, struct fmd_rpc_modlist *result, struct svc_req *rqstp) { return (fmd_adm_modinfo_1_svc(result, rqstp)); } int _fmd_adm_modcstat_1( char * *argp, struct fmd_rpc_modstat *result, struct svc_req *rqstp) { return (fmd_adm_modcstat_1_svc(*argp, result, rqstp)); } int _fmd_adm_moddstat_1( char * *argp, struct fmd_rpc_modstat *result, struct svc_req *rqstp) { return (fmd_adm_moddstat_1_svc(*argp, result, rqstp)); } /* ARGSUSED */ int _fmd_adm_modgstat_1( void *argp, struct fmd_rpc_modstat *result, struct svc_req *rqstp) { return (fmd_adm_modgstat_1_svc(result, rqstp)); } int _fmd_adm_modload_1( char * *argp, int *result, struct svc_req *rqstp) { return (fmd_adm_modload_1_svc(*argp, result, rqstp)); } int _fmd_adm_modunload_1( char * *argp, int *result, struct svc_req *rqstp) { return (fmd_adm_modunload_1_svc(*argp, result, rqstp)); } int _fmd_adm_modreset_1( char * *argp, int *result, struct svc_req *rqstp) { return (fmd_adm_modreset_1_svc(*argp, result, rqstp)); } int _fmd_adm_modgc_1( char * *argp, int *result, struct svc_req *rqstp) { return (fmd_adm_modgc_1_svc(*argp, result, rqstp)); } int _fmd_adm_rsrclist_1( bool_t *argp, struct fmd_rpc_rsrclist *result, struct svc_req *rqstp) { return (fmd_adm_rsrclist_1_svc(*argp, result, rqstp)); } int _fmd_adm_rsrcinfo_1( char * *argp, struct fmd_rpc_rsrcinfo *result, struct svc_req *rqstp) { return (fmd_adm_rsrcinfo_1_svc(*argp, result, rqstp)); } int _fmd_adm_rsrcflush_1( char * *argp, int *result, struct svc_req *rqstp) { return (fmd_adm_rsrcflush_1_svc(*argp, result, rqstp)); } int _fmd_adm_rsrcrepaired_1( char * *argp, int *result, struct svc_req *rqstp) { return (fmd_adm_rsrcrepaired_1_svc(*argp, result, rqstp)); } int _fmd_adm_serdinfo_old_1( char * *argp, struct fmd_rpc_serdlist *result, struct svc_req *rqstp) { return (fmd_adm_serdinfo_old_1_svc(*argp, result, rqstp)); } int _fmd_adm_serdreset_1( fmd_adm_serdreset_1_argument *argp, int *result, struct svc_req *rqstp) { return (fmd_adm_serdreset_1_svc( argp->arg1, argp->arg2, result, rqstp)); } int _fmd_adm_logrotate_1( char * *argp, int *result, struct svc_req *rqstp) { return (fmd_adm_logrotate_1_svc(*argp, result, rqstp)); } int _fmd_adm_caserepair_1( char * *argp, int *result, struct svc_req *rqstp) { return (fmd_adm_caserepair_1_svc(*argp, result, rqstp)); } /* ARGSUSED */ int _fmd_adm_xprtlist_1( void *argp, struct fmd_rpc_xprtlist *result, struct svc_req *rqstp) { return (fmd_adm_xprtlist_1_svc(result, rqstp)); } int _fmd_adm_xprtstat_1( int32_t *argp, struct fmd_rpc_modstat *result, struct svc_req *rqstp) { return (fmd_adm_xprtstat_1_svc(*argp, result, rqstp)); } /* ARGSUSED */ int _fmd_adm_caselist_1( void *argp, struct fmd_rpc_caselist *result, struct svc_req *rqstp) { return (fmd_adm_caselist_1_svc(result, rqstp)); } int _fmd_adm_caseinfo_1( char * *argp, struct fmd_rpc_caseinfo *result, struct svc_req *rqstp) { return (fmd_adm_caseinfo_1_svc(*argp, result, rqstp)); } int _fmd_adm_rsrcreplaced_1( char * *argp, int *result, struct svc_req *rqstp) { return (fmd_adm_rsrcreplaced_1_svc(*argp, result, rqstp)); } int _fmd_adm_rsrcacquit_1( fmd_adm_rsrcacquit_1_argument *argp, int *result, struct svc_req *rqstp) { return (fmd_adm_rsrcacquit_1_svc( argp->arg1, argp->arg2, result, rqstp)); } int _fmd_adm_caseacquit_1( char * *argp, int *result, struct svc_req *rqstp) { return (fmd_adm_caseacquit_1_svc(*argp, result, rqstp)); } int _fmd_adm_serdlist_1( char * *argp, struct fmd_rpc_serdlist *result, struct svc_req *rqstp) { return (fmd_adm_serdlist_1_svc(*argp, result, rqstp)); } int _fmd_adm_serdinfo_1( fmd_adm_serdinfo_1_argument *argp, struct fmd_rpc_serdinfo *result, struct svc_req *rqstp) { return (fmd_adm_serdinfo_1_svc( argp->arg1, argp->arg2, result, rqstp)); } void fmd_adm_1(struct svc_req *rqstp, register SVCXPRT *transp) { union { char *fmd_adm_modcstat_1_arg; char *fmd_adm_moddstat_1_arg; char *fmd_adm_modload_1_arg; char *fmd_adm_modunload_1_arg; char *fmd_adm_modreset_1_arg; char *fmd_adm_modgc_1_arg; bool_t fmd_adm_rsrclist_1_arg; char *fmd_adm_rsrcinfo_1_arg; char *fmd_adm_rsrcflush_1_arg; char *fmd_adm_rsrcrepaired_1_arg; char *fmd_adm_serdinfo_old_1_arg; fmd_adm_serdreset_1_argument fmd_adm_serdreset_1_arg; char *fmd_adm_logrotate_1_arg; char *fmd_adm_caserepair_1_arg; int32_t fmd_adm_xprtstat_1_arg; char *fmd_adm_caseinfo_1_arg; char *fmd_adm_rsrcreplaced_1_arg; fmd_adm_rsrcacquit_1_argument fmd_adm_rsrcacquit_1_arg; char *fmd_adm_caseacquit_1_arg; char *fmd_adm_serdlist_1_arg; fmd_adm_serdinfo_1_argument fmd_adm_serdinfo_1_arg; } argument; union { struct fmd_rpc_modlist fmd_adm_modinfo_1_res; struct fmd_rpc_modstat fmd_adm_modcstat_1_res; struct fmd_rpc_modstat fmd_adm_moddstat_1_res; struct fmd_rpc_modstat fmd_adm_modgstat_1_res; int fmd_adm_modload_1_res; int fmd_adm_modunload_1_res; int fmd_adm_modreset_1_res; int fmd_adm_modgc_1_res; struct fmd_rpc_rsrclist fmd_adm_rsrclist_1_res; struct fmd_rpc_rsrcinfo fmd_adm_rsrcinfo_1_res; int fmd_adm_rsrcflush_1_res; int fmd_adm_rsrcrepaired_1_res; struct fmd_rpc_serdlist fmd_adm_serdinfo_old_1_res; int fmd_adm_serdreset_1_res; int fmd_adm_logrotate_1_res; int fmd_adm_caserepair_1_res; struct fmd_rpc_xprtlist fmd_adm_xprtlist_1_res; struct fmd_rpc_modstat fmd_adm_xprtstat_1_res; struct fmd_rpc_caselist fmd_adm_caselist_1_res; struct fmd_rpc_caseinfo fmd_adm_caseinfo_1_res; int fmd_adm_rsrcreplaced_1_res; int fmd_adm_rsrcacquit_1_res; int fmd_adm_caseacquit_1_res; struct fmd_rpc_serdlist fmd_adm_serdlist_1_res; struct fmd_rpc_serdinfo fmd_adm_serdinfo_1_res; } result; bool_t retval; xdrproc_t _xdr_argument, _xdr_result; bool_t (*local)(char *, void *, struct svc_req *); (void) mutex_lock(&_svcstate_lock); _rpcsvccount++; (void) mutex_unlock(&_svcstate_lock); switch (rqstp->rq_proc) { case NULLPROC: (void) svc_sendreply(transp, (xdrproc_t)xdr_void, NULL); (void) mutex_lock(&_svcstate_lock); _rpcsvccount--; _rpcsvcstate = _SERVED; (void) mutex_unlock(&_svcstate_lock); return; /* CSTYLED */ case FMD_ADM_MODINFO: _xdr_argument = (xdrproc_t) xdr_void; _xdr_result = (xdrproc_t) xdr_fmd_rpc_modlist; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_modinfo_1; break; case FMD_ADM_MODCSTAT: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_fmd_rpc_modstat; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_modcstat_1; break; case FMD_ADM_MODDSTAT: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_fmd_rpc_modstat; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_moddstat_1; break; case FMD_ADM_MODGSTAT: _xdr_argument = (xdrproc_t) xdr_void; _xdr_result = (xdrproc_t) xdr_fmd_rpc_modstat; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_modgstat_1; break; case FMD_ADM_MODLOAD: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_int; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_modload_1; break; case FMD_ADM_MODUNLOAD: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_int; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_modunload_1; break; case FMD_ADM_MODRESET: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_int; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_modreset_1; break; case FMD_ADM_MODGC: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_int; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_modgc_1; break; case FMD_ADM_RSRCLIST: _xdr_argument = (xdrproc_t) xdr_bool; _xdr_result = (xdrproc_t) xdr_fmd_rpc_rsrclist; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_rsrclist_1; break; case FMD_ADM_RSRCINFO: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_fmd_rpc_rsrcinfo; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_rsrcinfo_1; break; case FMD_ADM_RSRCFLUSH: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_int; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_rsrcflush_1; break; case FMD_ADM_RSRCREPAIRED: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_int; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_rsrcrepaired_1; break; case FMD_ADM_SERDINFO_OLD: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_fmd_rpc_serdlist; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_serdinfo_old_1; break; case FMD_ADM_SERDRESET: _xdr_argument = (xdrproc_t) xdr_fmd_adm_serdreset_1_argument; _xdr_result = (xdrproc_t) xdr_int; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_serdreset_1; break; case FMD_ADM_LOGROTATE: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_int; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_logrotate_1; break; case FMD_ADM_CASEREPAIR: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_int; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_caserepair_1; break; case FMD_ADM_XPRTLIST: _xdr_argument = (xdrproc_t) xdr_void; _xdr_result = (xdrproc_t) xdr_fmd_rpc_xprtlist; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_xprtlist_1; break; case FMD_ADM_XPRTSTAT: _xdr_argument = (xdrproc_t) xdr_int32_t; _xdr_result = (xdrproc_t) xdr_fmd_rpc_modstat; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_xprtstat_1; break; case FMD_ADM_CASELIST: _xdr_argument = (xdrproc_t) xdr_void; _xdr_result = (xdrproc_t) xdr_fmd_rpc_caselist; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_caselist_1; break; case FMD_ADM_CASEINFO: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_fmd_rpc_caseinfo; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_caseinfo_1; break; case FMD_ADM_RSRCREPLACED: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_int; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_rsrcreplaced_1; break; case FMD_ADM_RSRCACQUIT: _xdr_argument = (xdrproc_t) xdr_fmd_adm_rsrcacquit_1_argument; _xdr_result = (xdrproc_t) xdr_int; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_rsrcacquit_1; break; case FMD_ADM_CASEACQUIT: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_int; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_caseacquit_1; break; case FMD_ADM_SERDLIST: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_fmd_rpc_serdlist; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_serdlist_1; break; case FMD_ADM_SERDINFO: _xdr_argument = (xdrproc_t) xdr_fmd_adm_serdinfo_1_argument; _xdr_result = (xdrproc_t) xdr_fmd_rpc_serdinfo; local = (bool_t (*) (char *, void *, struct svc_req *)) _fmd_adm_serdinfo_1; break; default: svcerr_noproc(transp); (void) mutex_lock(&_svcstate_lock); _rpcsvccount--; _rpcsvcstate = _SERVED; (void) mutex_unlock(&_svcstate_lock); return; /* CSTYLED */ } (void) memset((char *)&argument, 0, sizeof (argument)); if (!svc_getargs(transp, _xdr_argument, (caddr_t)&argument)) { svcerr_decode(transp); (void) mutex_lock(&_svcstate_lock); _rpcsvccount--; _rpcsvcstate = _SERVED; (void) mutex_unlock(&_svcstate_lock); return; /* CSTYLED */ } retval = (bool_t)(*local)((char *)&argument, (void *)&result, rqstp); if (_xdr_result && retval > 0 && !svc_sendreply(transp, _xdr_result, (char *)&result)) { svcerr_systemerr(transp); } if (!svc_freeargs(transp, _xdr_argument, (caddr_t)&argument)) { RPC_MSGOUT("%s", "unable to free arguments"); exit(1); } if (_xdr_result != NULL) { if (!fmd_adm_1_freeresult(transp, _xdr_result, (caddr_t)&result)) RPC_MSGOUT("%s", "unable to free results"); } (void) mutex_lock(&_svcstate_lock); _rpcsvccount--; _rpcsvcstate = _SERVED; (void) mutex_unlock(&_svcstate_lock); return; /* CSTYLED */ }