Ensure outgoing errors are logged.
[shibboleth/cpp-sp.git] / shib-target / shibrpc-svc.c
1 /*
2  * Please do not edit this file.
3  * It was generated using rpcgen.
4  */
5
6 #include "shibrpc.h"
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <rpc/pmap_clnt.h>
10 #include <string.h>
11 #include <memory.h>
12 #ifdef WIN32
13 # include <winsock.h>
14 #else
15 # include <sys/socket.h>
16 # include <netinet/in.h>
17 #endif
18
19 #ifndef SIG_PF
20 #define SIG_PF void(*)(int)
21 #endif
22
23 void
24 shibrpc_prog_2(struct svc_req *rqstp, register SVCXPRT *transp)
25 {
26         union {
27                 int shibrpc_ping_2_arg;
28                 shibrpc_new_session_args_2 shibrpc_new_session_2_arg;
29                 shibrpc_get_session_args_2 shibrpc_get_session_2_arg;
30                 shibrpc_end_session_args_2 shibrpc_end_session_2_arg;
31         } argument;
32         union {
33                 int shibrpc_ping_2_res;
34                 shibrpc_new_session_ret_2 shibrpc_new_session_2_res;
35                 shibrpc_get_session_ret_2 shibrpc_get_session_2_res;
36                 shibrpc_end_session_ret_2 shibrpc_end_session_2_res;
37         } result;
38         bool_t retval;
39         xdrproc_t _xdr_argument, _xdr_result;
40         bool_t (*local)(char *, void *, struct svc_req *);
41
42         switch (rqstp->rq_proc) {
43         case shibrpc_ping:
44                 _xdr_argument = (xdrproc_t) xdr_int;
45                 _xdr_result = (xdrproc_t) xdr_int;
46                 local = (bool_t (*) (char *, void *,  struct svc_req *))shibrpc_ping_2_svc;
47                 break;
48
49         case shibrpc_new_session:
50                 _xdr_argument = (xdrproc_t) xdr_shibrpc_new_session_args_2;
51                 _xdr_result = (xdrproc_t) xdr_shibrpc_new_session_ret_2;
52                 local = (bool_t (*) (char *, void *,  struct svc_req *))shibrpc_new_session_2_svc;
53                 break;
54
55         case shibrpc_get_session:
56                 _xdr_argument = (xdrproc_t) xdr_shibrpc_get_session_args_2;
57                 _xdr_result = (xdrproc_t) xdr_shibrpc_get_session_ret_2;
58                 local = (bool_t (*) (char *, void *,  struct svc_req *))shibrpc_get_session_2_svc;
59                 break;
60
61         case shibrpc_end_session:
62                 _xdr_argument = (xdrproc_t) xdr_shibrpc_end_session_args_2;
63                 _xdr_result = (xdrproc_t) xdr_shibrpc_end_session_ret_2;
64                 local = (bool_t (*) (char *, void *,  struct svc_req *))shibrpc_end_session_2_svc;
65                 break;
66
67         default:
68                 svcerr_noproc (transp);
69                 return;
70         }
71         memset ((char *)&argument, 0, sizeof (argument));
72         if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
73                 svcerr_decode (transp);
74                 return;
75         }
76         retval = (bool_t) (*local)((char *)&argument, (void *)&result, rqstp);
77         if (retval > 0 && !svc_sendreply(transp, (xdrproc_t) _xdr_result, (char *)&result)) {
78                 svcerr_systemerr (transp);
79         }
80         if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
81                 fprintf (stderr, "%s", "unable to free arguments");
82                 exit (1);
83         }
84         if (!shibrpc_prog_2_freeresult (transp, _xdr_result, (caddr_t) &result))
85                 fprintf (stderr, "%s", "unable to free results");
86
87         return;
88 }