|
|
1.1 root 1: /*
2: * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
3: * unrestricted use provided that this legend is included on all tape
4: * media and as a part of the software program in whole or part. Users
5: * may copy or modify Sun RPC without charge, but are not authorized
6: * to license or distribute it to anyone else except as part of a product or
7: * program developed by the user.
8: *
9: * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
10: * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
11: * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
12: *
13: * Sun RPC is provided with no support and without any obligation on the
14: * part of Sun Microsystems, Inc. to assist in its use, correction,
15: * modification or enhancement.
16: *
17: * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
18: * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
19: * OR ANY PART THEREOF.
20: *
21: * In no event will Sun Microsystems, Inc. be liable for any lost revenue
22: * or profits or other special, indirect and consequential damages, even if
23: * Sun has been advised of the possibility of such damages.
24: *
25: * Sun Microsystems, Inc.
26: * 2550 Garcia Avenue
27: * Mountain View, California 94043
28: */
29: #ifndef lint
30: static char sccsid[] = "@(#)clnt_perror.c 1.1 85/02/08 Copyr 1984 Sun Micro";
31: #endif
32:
33: /*
34: * clnt_perror.c
35: *
36: * Copyright (C) 1984, Sun Microsystems, Inc.
37: *
38: */
39: #include "types.h"
40: #include "xdr.h"
41: #include "auth.h"
42: #include "clnt.h"
43: #include "rpc_msg.h"
44: #include <stdio.h>
45: extern char *sys_errlist[];
46:
47: /*
48: * Print reply error info
49: */
50: void
51: clnt_perror(rpch, s)
52: CLIENT *rpch;
53: char *s;
54: {
55: struct rpc_err e;
56: void clnt_perrno();
57:
58: CLNT_GETERR(rpch, &e);
59: fprintf(stderr, "%s: ", s);
60: switch (e.re_status) {
61: case RPC_SUCCESS:
62: case RPC_CANTENCODEARGS:
63: case RPC_CANTDECODERES:
64: case RPC_TIMEDOUT:
65: case RPC_PROGUNAVAIL:
66: case RPC_PROCUNAVAIL:
67: case RPC_CANTDECODEARGS:
68: clnt_perrno(e.re_status);
69: break;
70: case RPC_CANTSEND:
71: clnt_perrno(e.re_status);
72: fprintf(stderr, "; errno = %s",
73: sys_errlist[e.re_errno]);
74: break;
75:
76: case RPC_CANTRECV:
77: clnt_perrno(e.re_status);
78: fprintf(stderr, "; errno = %s",
79: sys_errlist[e.re_errno]);
80: break;
81:
82: case RPC_VERSMISMATCH:
83: clnt_perrno(e.re_status);
84: fprintf(stderr, "; low version = %lu, high version = %lu", e.re_vers.low, e.re_vers.high);
85: break;
86:
87: case RPC_AUTHERROR:
88: clnt_perrno(e.re_status);
89: fprintf(stderr, "; why = ");
90: switch (e.re_why) {
91: case AUTH_OK:
92: fprintf(stderr, "AUTH_OK");
93: break;
94:
95: case AUTH_BADCRED:
96: fprintf(stderr, "AUTH_BOGUS_CREDENTIAL");
97: break;
98:
99: case AUTH_REJECTEDCRED:
100: fprintf(stderr, "AUTH_REJECTED_CREDENTIAL");
101: break;
102:
103: case AUTH_BADVERF:
104: fprintf(stderr, "AUTH_BOGUS_VERIFIER");
105: break;
106:
107: case AUTH_REJECTEDVERF:
108: fprintf(stderr, "AUTH_REJECTED_VERIFIER");
109: break;
110:
111: case AUTH_TOOWEAK:
112: fprintf(stderr, "AUTH_TOO_WEAK (remote error)");
113: break;
114:
115: case AUTH_INVALIDRESP:
116: fprintf(stderr, "AUTH_INVALID_RESPONSE");
117: break;
118:
119: default:
120: fprintf(stderr, "AUTH_UNKNOWN_FAILURE");
121: break;
122: }
123: break;
124:
125: case RPC_PROGVERSMISMATCH:
126: clnt_perrno(e.re_status);
127: fprintf(stderr, "; low version = %lu, high version = %lu", e.re_vers.low, e.re_vers.high);
128: break;
129:
130: default:
131: fprintf(stderr, "RPC_UNKNOWN_FAILURE; s1 = %lu, s2 = %lu", e.re_lb.s1, e.re_lb.s2);
132: break;
133: }
134: fprintf(stderr, "\n");
135: }
136:
137: /*
138: * This interface for use by clntrpc
139: */
140: void
141: clnt_perrno(num)
142: enum clnt_stat num;
143: {
144: switch (num) {
145: case RPC_SUCCESS:
146: fprintf(stderr, "RPC_SUCCESS");
147: break;
148:
149: case RPC_CANTENCODEARGS:
150: fprintf(stderr, "RPC_CANT_ENCODE_ARGS");
151: break;
152:
153: case RPC_CANTDECODERES:
154: fprintf(stderr, "RPC_CANT_DECODE_RESULTS");
155: break;
156:
157: case RPC_CANTSEND:
158: fprintf(stderr, "RPC_CANT_SEND");
159: break;
160:
161: case RPC_CANTRECV:
162: fprintf(stderr, "RPC_CANT_RECV");
163: break;
164:
165: case RPC_TIMEDOUT:
166: fprintf(stderr, "RPC_TIMED_OUT");
167: break;
168:
169: case RPC_VERSMISMATCH:
170: fprintf(stderr, "RPC_VERSION_MISMATCH");
171: break;
172:
173: case RPC_AUTHERROR:
174: fprintf(stderr, "RPC_AUTH_ERROR");
175: break;
176:
177: case RPC_PROGUNAVAIL:
178: fprintf(stderr, "RPC_REMOTE_PROGRAM_UNAVAILABLE");
179: break;
180:
181: case RPC_PROGVERSMISMATCH:
182: fprintf(stderr, "RPC_PROGRAM_MISMATCH");
183: break;
184:
185: case RPC_PROCUNAVAIL:
186: fprintf(stderr, "RPC_UNKNOWN_PROCEDURE");
187: break;
188:
189: case RPC_CANTDECODEARGS:
190: fprintf(stderr, "RPC_CANT_DECODE_ARGS");
191: break;
192: case RPC_UNKNOWNHOST:
193: fprintf(stderr, "RPC_UNKNOWNHOST");
194: break;
195: case RPC_PMAPFAILURE:
196: fprintf(stderr, "RPC_PMAP_FAILURE");
197: break;
198: case RPC_PROGNOTREGISTERED:
199: fprintf(stderr, "RPC_PROG_NOT_REGISTERED");
200: break;
201: case RPC_SYSTEMERROR:
202: fprintf(stderr, "RPC_SYSTEM_ERROR");
203: break;
204: }
205: }
206:
207: /*
208: * A handle on why an rpc creation routine failed (returned NULL.)
209: */
210: struct rpc_createerr rpc_createerr;
211:
212: clnt_pcreateerror(s)
213: char *s;
214: {
215:
216: fprintf(stderr, "%s: ", s);
217: clnt_perrno(rpc_createerr.cf_stat);
218: switch (rpc_createerr.cf_stat) {
219: case RPC_PMAPFAILURE:
220: fprintf(stderr, " - ");
221: clnt_perrno(rpc_createerr.cf_error.re_status);
222: break;
223:
224: case RPC_SYSTEMERROR:
225: fprintf(stderr, " - %s", sys_errlist[rpc_createerr.cf_error.re_errno]);
226: break;
227:
228: }
229: fprintf(stderr, "\n");
230: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.