📄 math_svc.c
字号:
/* * Please do not edit this file. * It was generated using rpcgen. */#include "math.h"#include <stdio.h>#include <stdlib.h>#include <rpc/pmap_clnt.h>#include <string.h>#include <memory.h>#include <sys/socket.h>#include <netinet/in.h>#include <rpc/auth.h>#ifndef SIG_PF#define SIG_PF void(*)(int)#endifstatic voidmath_prog_2(struct svc_req *rqstp, register SVCXPRT *transp){ union { struct MATH math_proc_2_arg; } argument; char *result; xdrproc_t _xdr_argument, _xdr_result; char *(*local)(char *, struct svc_req *); struct authunix_parms *sys_cred;
int pass=0;
switch (rqstp->rq_cred.oa_flavor)
{
case AUTH_NONE:
printf("The AUTH style is AUTH_NONE\n");
break;
case AUTH_SYS:
printf("The AUTH style is AUTH_SYS\n");
sys_cred=(struct authunix_parms*)rqstp->rq_clntcred; if ((strcmp(sys_cred->aup_machname,"localhost")==0)&&(sys_cred->aup_uid==0)
&&(sys_cred->aup_gid==0))
pass=1;
break;
case AUTH_SHORT:
printf("The AUTH style is AUTH_SHORT\n");
break;
case AUTH_DES:
printf("The AUTH style is AUTH_DES\n");
break;
default:
break;
}
if (!pass)
{
svcerr_weakauth(transp);
return ;
}
switch (rqstp->rq_proc) { case NULLPROC: (void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL); return; case MATH_PROC: _xdr_argument = (xdrproc_t) xdr_MATH; _xdr_result = (xdrproc_t) xdr_MATH; local = (char *(*)(char *, struct svc_req *)) math_proc_2_svc; break; default: svcerr_noproc (transp); return; } memset ((char *)&argument, 0, sizeof (argument)); if (!svc_getargs (transp, _xdr_argument, (caddr_t) &argument)) { svcerr_decode (transp); return; } result = (*local)((char *)&argument, rqstp); if (result != NULL && !svc_sendreply(transp, _xdr_result, result)) { svcerr_systemerr (transp); } if (!svc_freeargs (transp, _xdr_argument, (caddr_t) &argument)) { fprintf (stderr, "unable to free arguments"); exit (1); } return;}intmain (int argc, char **argv){ register SVCXPRT *transp; pmap_unset (MATH_PROG, MATH_VER); transp = svcudp_create(RPC_ANYSOCK); if (transp == NULL) { fprintf (stderr, "cannot create udp service."); exit(1); } if (!svc_register(transp, MATH_PROG, MATH_VER, math_prog_2, IPPROTO_UDP)) { fprintf (stderr, "unable to register (MATH_PROG, MATH_VER, udp)."); exit(1); } transp = svctcp_create(RPC_ANYSOCK, 0, 0); if (transp == NULL) { fprintf (stderr, "cannot create tcp service."); exit(1); } if (!svc_register(transp, MATH_PROG, MATH_VER, math_prog_2, IPPROTO_TCP)) { fprintf (stderr, "unable to register (MATH_PROG, MATH_VER, tcp)."); exit(1); } svc_run (); fprintf (stderr, "svc_run returned"); exit (1); /* NOTREACHED */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -