|
|
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:
46: /*
47: * Print reply error info
48: */
49: void
50: clnt_perror(rpch, s)
51: CLIENT *rpch;
52: char *s;
53: {
54: struct rpc_err e;
55: void clnt_perrno();
56:
57: CLNT_GETERR(rpch, &e);
58: fprintf(stderr, "%s: ", s);
59: switch (e.re_status) {
60: case RPC_SUCCESS:
61: case RPC_CANTENCODEARGS:
62: case RPC_CANTDECODERES:
63: case RPC_TIMEDOUT:
64: case RPC_PROGUNAVAIL:
65: case RPC_PROCUNAVAIL:
66: case RPC_CANTDECODEARGS:
67: clnt_perrno(e.re_status);
68: break;
69: case RPC_CANTSEND:
70: clnt_perrno(e.re_status);
71: fprintf(stderr, "; errno = %s",
72: strerror(e.re_errno));
73: break;
74:
75: case RPC_CANTRECV:
76: clnt_perrno(e.re_status);
77: fprintf(stderr, "; errno = %s",
78: strerror(e.re_errno));
79: break;
80:
81: case RPC_VERSMISMATCH:
82: clnt_perrno(e.re_status);
83: fprintf(stderr, "; low version = %lu, high version = %lu", e.re_vers.low, e.re_vers.high);
84: break;
85:
86: case RPC_AUTHERROR:
87: clnt_perrno(e.re_status);
88: fprintf(stderr, "; why = ");
89: switch (e.re_why) {
90: case AUTH_OK:
91: fprintf(stderr, "AUTH_OK");
92: break;
93:
94: case AUTH_BADCRED:
95: fprintf(stderr, "AUTH_BOGUS_CREDENTIAL");
96: break;
97:
98: case AUTH_REJECTEDCRED:
99: fprintf(stderr, "AUTH_REJECTED_CREDENTIAL");
100: break;
101:
102: case AUTH_BADVERF:
103: fprintf(stderr, "AUTH_BOGUS_VERIFIER");
104: break;
105:
106: case AUTH_REJECTEDVERF:
107: fprintf(stderr, "AUTH_REJECTED_VERIFIER");
108: break;
109:
110: case AUTH_TOOWEAK:
111: fprintf(stderr, "AUTH_TOO_WEAK (remote error)");
112: break;
113:
114: case AUTH_INVALIDRESP:
115: fprintf(stderr, "AUTH_INVALID_RESPONSE");
116: break;
117:
118: default:
119: fprintf(stderr, "AUTH_UNKNOWN_FAILURE");
120: break;
121: }
122: break;
123:
124: case RPC_PROGVERSMISMATCH:
125: clnt_perrno(e.re_status);
126: fprintf(stderr, "; low version = %lu, high version = %lu", e.re_vers.low, e.re_vers.high);
127: break;
128:
129: default:
130: fprintf(stderr, "RPC_UNKNOWN_FAILURE; s1 = %lu, s2 = %lu", e.re_lb.s1, e.re_lb.s2);
131: break;
132: }
133: fprintf(stderr, "\n");
134: }
135:
136: /*
137: * This interface for use by clntrpc
138: */
139: void
140: clnt_perrno(num)
141: enum clnt_stat num;
142: {
143: switch (num) {
144: case RPC_SUCCESS:
145: fprintf(stderr, "RPC_SUCCESS");
146: break;
147:
148: case RPC_CANTENCODEARGS:
149: fprintf(stderr, "RPC_CANT_ENCODE_ARGS");
150: break;
151:
152: case RPC_CANTDECODERES:
153: fprintf(stderr, "RPC_CANT_DECODE_RESULTS");
154: break;
155:
156: case RPC_CANTSEND:
157: fprintf(stderr, "RPC_CANT_SEND");
158: break;
159:
160: case RPC_CANTRECV:
161: fprintf(stderr, "RPC_CANT_RECV");
162: break;
163:
164: case RPC_TIMEDOUT:
165: fprintf(stderr, "RPC_TIMED_OUT");
166: break;
167:
168: case RPC_VERSMISMATCH:
169: fprintf(stderr, "RPC_VERSION_MISMATCH");
170: break;
171:
172: case RPC_AUTHERROR:
173: fprintf(stderr, "RPC_AUTH_ERROR");
174: break;
175:
176: case RPC_PROGUNAVAIL:
177: fprintf(stderr, "RPC_REMOTE_PROGRAM_UNAVAILABLE");
178: break;
179:
180: case RPC_PROGVERSMISMATCH:
181: fprintf(stderr, "RPC_PROGRAM_MISMATCH");
182: break;
183:
184: case RPC_PROCUNAVAIL:
185: fprintf(stderr, "RPC_UNKNOWN_PROCEDURE");
186: break;
187:
188: case RPC_CANTDECODEARGS:
189: fprintf(stderr, "RPC_CANT_DECODE_ARGS");
190: break;
191: case RPC_UNKNOWNHOST:
192: fprintf(stderr, "RPC_UNKNOWNHOST");
193: break;
194: case RPC_PMAPFAILURE:
195: fprintf(stderr, "RPC_PMAP_FAILURE");
196: break;
197: case RPC_PROGNOTREGISTERED:
198: fprintf(stderr, "RPC_PROG_NOT_REGISTERED");
199: break;
200: case RPC_SYSTEMERROR:
201: fprintf(stderr, "RPC_SYSTEM_ERROR");
202: break;
203: }
204: }
205:
206: /*
207: * A handle on why an rpc creation routine failed (returned NULL.)
208: */
209: struct rpc_createerr rpc_createerr;
210:
211: clnt_pcreateerror(s)
212: char *s;
213: {
214:
215: fprintf(stderr, "%s: ", s);
216: clnt_perrno(rpc_createerr.cf_stat);
217: switch (rpc_createerr.cf_stat) {
218: case RPC_PMAPFAILURE:
219: fprintf(stderr, " - ");
220: clnt_perrno(rpc_createerr.cf_error.re_status);
221: break;
222:
223: case RPC_SYSTEMERROR:
224: fprintf(stderr, " - %s",
225: strerror(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.