clnt_perror.c (7c478bd9) | clnt_perror.c (61961e0f) |
---|---|
1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * --- 4 unchanged lines hidden (view full) --- 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END | 1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * --- 4 unchanged lines hidden (view full) --- 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END |
21 * 22 * Copyright 2003 Sun Microsystems, Inc. All rights reserved. | 21 */ 22 23/* 24 * Copyright 2005 Sun Microsystems, Inc. All rights reserved. |
23 * Use is subject to license terms. 24 */ 25/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ 26/* All Rights Reserved */ 27/* 28 * Portions of this source code were derived from Berkeley 29 * 4.3 BSD under license from the Regents of the University of 30 * California. 31 */ 32 33#pragma ident "%Z%%M% %I% %E% SMI" 34 35/* 36 * clnt_perror.c 37 * 38 */ 39 40#include "mt.h" 41#include "rpc_mt.h" | 25 * Use is subject to license terms. 26 */ 27/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ 28/* All Rights Reserved */ 29/* 30 * Portions of this source code were derived from Berkeley 31 * 4.3 BSD under license from the Regents of the University of 32 * California. 33 */ 34 35#pragma ident "%Z%%M% %I% %E% SMI" 36 37/* 38 * clnt_perror.c 39 * 40 */ 41 42#include "mt.h" 43#include "rpc_mt.h" |
42#ifndef KERNEL | |
43#include <stdio.h> 44#include <libintl.h> 45#include <string.h> | 44#include <stdio.h> 45#include <libintl.h> 46#include <string.h> |
46#endif 47 | |
48#include <rpc/types.h> | 47#include <rpc/types.h> |
49#include <rpc/trace.h> | |
50#include <rpc/auth.h> 51#include <sys/tiuser.h> 52#include <rpc/clnt.h> 53#include <stdlib.h> 54#include <syslog.h> 55#include <string.h> 56 57extern char *netdir_sperror(); 58 59const char __nsl_dom[] = "SUNW_OST_NETRPC"; 60 | 48#include <rpc/auth.h> 49#include <sys/tiuser.h> 50#include <rpc/clnt.h> 51#include <stdlib.h> 52#include <syslog.h> 53#include <string.h> 54 55extern char *netdir_sperror(); 56 57const char __nsl_dom[] = "SUNW_OST_NETRPC"; 58 |
61#ifndef KERNEL 62 | |
63#define ERRBUFSZ 512 64 65static char * | 59#define ERRBUFSZ 512 60 61static char * |
66__buf() | 62__buf(void) |
67{ 68 char *buf; 69 static char buf_main[ERRBUFSZ]; 70 static pthread_key_t perror_key; 71 | 63{ 64 char *buf; 65 static char buf_main[ERRBUFSZ]; 66 static pthread_key_t perror_key; 67 |
72 trace1(TR___buf, 0); | |
73 buf = thr_main()? buf_main : 74 thr_get_storage(&perror_key, ERRBUFSZ, free); 75 if (buf == NULL) 76 syslog(LOG_WARNING, 77 "clnt_sperror: malloc failed when trying to create buffer\n"); | 68 buf = thr_main()? buf_main : 69 thr_get_storage(&perror_key, ERRBUFSZ, free); 70 if (buf == NULL) 71 syslog(LOG_WARNING, 72 "clnt_sperror: malloc failed when trying to create buffer\n"); |
78 trace1(TR___buf, 1); | |
79 return (buf); 80} 81 82static char * | 73 return (buf); 74} 75 76static char * |
83auth_errmsg(stat) 84 enum auth_stat stat; | 77auth_errmsg(enum auth_stat stat) |
85{ | 78{ |
86 trace1(TR_auth_errmsg, 0); | |
87 switch (stat) { 88 case AUTH_OK: | 79 switch (stat) { 80 case AUTH_OK: |
89 trace1(TR_auth_errmsg, 1); | |
90 return (dgettext(__nsl_dom, "Authentication OK")); 91 case AUTH_BADCRED: | 81 return (dgettext(__nsl_dom, "Authentication OK")); 82 case AUTH_BADCRED: |
92 trace1(TR_auth_errmsg, 1); | |
93 return (dgettext(__nsl_dom, "Invalid client credential")); 94 case AUTH_REJECTEDCRED: | 83 return (dgettext(__nsl_dom, "Invalid client credential")); 84 case AUTH_REJECTEDCRED: |
95 trace1(TR_auth_errmsg, 1); | |
96 return (dgettext(__nsl_dom, "Server rejected credential")); 97 case AUTH_BADVERF: | 85 return (dgettext(__nsl_dom, "Server rejected credential")); 86 case AUTH_BADVERF: |
98 trace1(TR_auth_errmsg, 1); | |
99 return (dgettext(__nsl_dom, "Invalid client verifier")); 100 case AUTH_REJECTEDVERF: | 87 return (dgettext(__nsl_dom, "Invalid client verifier")); 88 case AUTH_REJECTEDVERF: |
101 trace1(TR_auth_errmsg, 1); | |
102 return (dgettext(__nsl_dom, "Server rejected verifier")); 103 case AUTH_TOOWEAK: | 89 return (dgettext(__nsl_dom, "Server rejected verifier")); 90 case AUTH_TOOWEAK: |
104 trace1(TR_auth_errmsg, 1); | |
105 return (dgettext(__nsl_dom, "Client credential too weak")); 106 case AUTH_INVALIDRESP: | 91 return (dgettext(__nsl_dom, "Client credential too weak")); 92 case AUTH_INVALIDRESP: |
107 trace1(TR_auth_errmsg, 1); | |
108 return (dgettext(__nsl_dom, "Invalid server verifier")); 109 case AUTH_FAILED: | 93 return (dgettext(__nsl_dom, "Invalid server verifier")); 94 case AUTH_FAILED: |
110 trace1(TR_auth_errmsg, 1); | |
111 return (dgettext(__nsl_dom, "Failed (unspecified error)")); 112 113 /* kerberos specific */ 114 case AUTH_DECODE: | 95 return (dgettext(__nsl_dom, "Failed (unspecified error)")); 96 97 /* kerberos specific */ 98 case AUTH_DECODE: |
115 trace1(TR_auth_errmsg, 1); | |
116 return (dgettext(__nsl_dom, "Could not decode authenticator")); 117 case AUTH_TIMEEXPIRE: | 99 return (dgettext(__nsl_dom, "Could not decode authenticator")); 100 case AUTH_TIMEEXPIRE: |
118 trace1(TR_auth_errmsg, 1); | |
119 return (dgettext(__nsl_dom, "Time of credential expired")); 120 case AUTH_TKT_FILE: | 101 return (dgettext(__nsl_dom, "Time of credential expired")); 102 case AUTH_TKT_FILE: |
121 trace1(TR_auth_errmsg, 1); | |
122 return (dgettext(__nsl_dom, 123 "Something wrong with kerberos ticket file")); 124 case AUTH_NET_ADDR: | 103 return (dgettext(__nsl_dom, 104 "Something wrong with kerberos ticket file")); 105 case AUTH_NET_ADDR: |
125 trace1(TR_auth_errmsg, 1); | |
126 return (dgettext(__nsl_dom, 127 "Incorrect network address in kerberos ticket")); 128 case AUTH_KERB_GENERIC: | 106 return (dgettext(__nsl_dom, 107 "Incorrect network address in kerberos ticket")); 108 case AUTH_KERB_GENERIC: |
129 trace1(TR_auth_errmsg, 1); | |
130 return (dgettext(__nsl_dom, "Kerberos generic error")); 131 } | 109 return (dgettext(__nsl_dom, "Kerberos generic error")); 110 } |
132 trace1(TR_auth_errmsg, 1); | |
133 return (dgettext(__nsl_dom, "Unknown authentication error")); 134} 135 136/* 137 * Return string reply error info. For use after clnt_call() 138 */ 139 140#define REMAINDER (ERRBUFSZ - (str - strstart)) 141 142char * | 111 return (dgettext(__nsl_dom, "Unknown authentication error")); 112} 113 114/* 115 * Return string reply error info. For use after clnt_call() 116 */ 117 118#define REMAINDER (ERRBUFSZ - (str - strstart)) 119 120char * |
143clnt_sperror(cl, s) 144 const CLIENT *cl; 145 const char *s; | 121clnt_sperror(const CLIENT *cl, const char *s) |
146{ 147 struct rpc_err e; 148 char *err; 149 char *str = __buf(); 150 char *strstart = str; 151 | 122{ 123 struct rpc_err e; 124 char *err; 125 char *str = __buf(); 126 char *strstart = str; 127 |
152 trace2(TR_clnt_sperror, 0, cl); 153 if (str == NULL) { 154 trace2(TR_clnt_sperror, 1, cl); | 128 if (str == NULL) |
155 return (NULL); | 129 return (NULL); |
156 } | |
157 CLNT_GETERR((CLIENT *) cl, &e); 158 159 (void) snprintf(str, ERRBUFSZ, "%s: ", s); 160 str += strlcat(str, clnt_sperrno(e.re_status), ERRBUFSZ); 161 162 switch (e.re_status) { 163 case RPC_SUCCESS: 164 case RPC_CANTENCODEARGS: --- 71 unchanged lines hidden (view full) --- 236 break; 237 238 default: /* unknown */ 239 (void) snprintf(str, REMAINDER, "; s1 = %lu, s2 = %lu", 240 e.re_lb.s1, e.re_lb.s2); 241 str += strlen(str); 242 break; 243 } | 130 CLNT_GETERR((CLIENT *) cl, &e); 131 132 (void) snprintf(str, ERRBUFSZ, "%s: ", s); 133 str += strlcat(str, clnt_sperrno(e.re_status), ERRBUFSZ); 134 135 switch (e.re_status) { 136 case RPC_SUCCESS: 137 case RPC_CANTENCODEARGS: --- 71 unchanged lines hidden (view full) --- 209 break; 210 211 default: /* unknown */ 212 (void) snprintf(str, REMAINDER, "; s1 = %lu, s2 = %lu", 213 e.re_lb.s1, e.re_lb.s2); 214 str += strlen(str); 215 break; 216 } |
244 trace2(TR_clnt_sperror, 1, cl); | |
245 return (strstart); 246} 247#undef REMAINDER 248 249void | 217 return (strstart); 218} 219#undef REMAINDER 220 221void |
250clnt_perror(cl, s) 251 const CLIENT *cl; 252 const char *s; | 222clnt_perror(const CLIENT *cl, const char *s) |
253{ | 223{ |
254 trace2(TR_clnt_perror, 0, cl); | |
255 (void) fprintf(stderr, "%s\n", clnt_sperror(cl, s)); | 224 (void) fprintf(stderr, "%s\n", clnt_sperror(cl, s)); |
256 trace2(TR_clnt_perror, 1, cl); | |
257} 258 259void | 225} 226 227void |
260clnt_perrno(num) 261 enum clnt_stat num; | 228clnt_perrno(const enum clnt_stat num) |
262{ | 229{ |
263 trace1(TR_clnt_perrno, 0); | |
264 (void) fprintf(stderr, "%s\n", clnt_sperrno(num)); | 230 (void) fprintf(stderr, "%s\n", clnt_sperrno(num)); |
265 trace1(TR_clnt_perrno, 1); | |
266} 267 268/* 269 * Why a client handle could not be created 270 */ 271char * | 231} 232 233/* 234 * Why a client handle could not be created 235 */ 236char * |
272clnt_spcreateerror(s) 273 const char *s; | 237clnt_spcreateerror(const char *s) |
274{ 275 char *errstr; 276 char *str = __buf(); 277 | 238{ 239 char *errstr; 240 char *str = __buf(); 241 |
278 trace1(TR_clnt_spcreateerror, 0); 279 if (str == NULL) { 280 trace1(TR_clnt_spcreateerror, 1); | 242 if (str == NULL) |
281 return (NULL); | 243 return (NULL); |
282 } | |
283 (void) snprintf(str, ERRBUFSZ, "%s: ", s); 284 (void) strlcat(str, clnt_sperrno(rpc_createerr.cf_stat), ERRBUFSZ); 285 286 switch (rpc_createerr.cf_stat) { 287 case RPC_N2AXLATEFAILURE: 288 (void) strlcat(str, " - ", ERRBUFSZ); 289 (void) strlcat(str, netdir_sperror(), ERRBUFSZ); 290 break; --- 22 unchanged lines hidden (view full) --- 313 (rpc_createerr.cf_error.re_terrno < t_nerr)) { 314 (void) strlcat(str, 315 t_errlist[rpc_createerr.cf_error.re_terrno], 316 ERRBUFSZ); 317 if (rpc_createerr.cf_error.re_terrno == TSYSERR) { 318 char *err; 319 err = strerror(rpc_createerr.cf_error.re_errno); 320 if (err) { | 244 (void) snprintf(str, ERRBUFSZ, "%s: ", s); 245 (void) strlcat(str, clnt_sperrno(rpc_createerr.cf_stat), ERRBUFSZ); 246 247 switch (rpc_createerr.cf_stat) { 248 case RPC_N2AXLATEFAILURE: 249 (void) strlcat(str, " - ", ERRBUFSZ); 250 (void) strlcat(str, netdir_sperror(), ERRBUFSZ); 251 break; --- 22 unchanged lines hidden (view full) --- 274 (rpc_createerr.cf_error.re_terrno < t_nerr)) { 275 (void) strlcat(str, 276 t_errlist[rpc_createerr.cf_error.re_terrno], 277 ERRBUFSZ); 278 if (rpc_createerr.cf_error.re_terrno == TSYSERR) { 279 char *err; 280 err = strerror(rpc_createerr.cf_error.re_errno); 281 if (err) { |
321 strlcat(str, " (", ERRBUFSZ); 322 strlcat(str, err, ERRBUFSZ); 323 strlcat(str, ")", ERRBUFSZ); | 282 (void) strlcat(str, " (", ERRBUFSZ); 283 (void) strlcat(str, err, ERRBUFSZ); 284 (void) strlcat(str, ")", ERRBUFSZ); |
324 } 325 } 326 } else { 327 (void) snprintf(&str[strlen(str)], 328 ERRBUFSZ - strlen(str), 329 dgettext(__nsl_dom, "TLI Error %d"), 330 rpc_createerr.cf_error.re_terrno); 331 } --- 7 unchanged lines hidden (view full) --- 339 break; 340 341 case RPC_AUTHERROR: 342 (void) strlcat(str, " - ", ERRBUFSZ); 343 (void) strlcat(str, 344 auth_errmsg(rpc_createerr.cf_error.re_why), ERRBUFSZ); 345 break; 346 } | 285 } 286 } 287 } else { 288 (void) snprintf(&str[strlen(str)], 289 ERRBUFSZ - strlen(str), 290 dgettext(__nsl_dom, "TLI Error %d"), 291 rpc_createerr.cf_error.re_terrno); 292 } --- 7 unchanged lines hidden (view full) --- 300 break; 301 302 case RPC_AUTHERROR: 303 (void) strlcat(str, " - ", ERRBUFSZ); 304 (void) strlcat(str, 305 auth_errmsg(rpc_createerr.cf_error.re_why), ERRBUFSZ); 306 break; 307 } |
347 trace1(TR_clnt_spcreateerror, 1); | |
348 return (str); 349} 350 351void | 308 return (str); 309} 310 311void |
352clnt_pcreateerror(s) 353 const char *s; | 312clnt_pcreateerror(const char *s) |
354{ | 313{ |
355 trace1(TR_clnt_pcreateerror, 0); | |
356 (void) fprintf(stderr, "%s\n", clnt_spcreateerror(s)); | 314 (void) fprintf(stderr, "%s\n", clnt_spcreateerror(s)); |
357 trace1(TR_clnt_pcreateerror, 1); | |
358} | 315} |
359#endif /* ! KERNEL */ | |
360 361/* 362 * This interface for use by rpc_call() and rpc_broadcast() 363 */ 364const char * | 316 317/* 318 * This interface for use by rpc_call() and rpc_broadcast() 319 */ 320const char * |
365clnt_sperrno(stat) 366 const enum clnt_stat stat; | 321clnt_sperrno(const enum clnt_stat stat) |
367{ | 322{ |
368 trace1(TR_clnt_sperrno, 0); | |
369 switch (stat) { 370 case RPC_SUCCESS: | 323 switch (stat) { 324 case RPC_SUCCESS: |
371 trace1(TR_clnt_sperrno, 1); | |
372 return (dgettext(__nsl_dom, "RPC: Success")); 373 case RPC_CANTENCODEARGS: | 325 return (dgettext(__nsl_dom, "RPC: Success")); 326 case RPC_CANTENCODEARGS: |
374 trace1(TR_clnt_sperrno, 1); | |
375 return (dgettext(__nsl_dom, "RPC: Can't encode arguments")); 376 case RPC_CANTDECODERES: | 327 return (dgettext(__nsl_dom, "RPC: Can't encode arguments")); 328 case RPC_CANTDECODERES: |
377 trace1(TR_clnt_sperrno, 1); | |
378 return (dgettext(__nsl_dom, "RPC: Can't decode result")); 379 case RPC_CANTSTORE: | 329 return (dgettext(__nsl_dom, "RPC: Can't decode result")); 330 case RPC_CANTSTORE: |
380 trace1(TR_clnt_sperrno, 1); | |
381 return (dgettext(__nsl_dom, "RPC: Can't store request")); 382 case RPC_CANTSEND: | 331 return (dgettext(__nsl_dom, "RPC: Can't store request")); 332 case RPC_CANTSEND: |
383 trace1(TR_clnt_sperrno, 1); | |
384 return (dgettext(__nsl_dom, "RPC: Unable to send")); 385 case RPC_CANTRECV: | 333 return (dgettext(__nsl_dom, "RPC: Unable to send")); 334 case RPC_CANTRECV: |
386 trace1(TR_clnt_sperrno, 1); | |
387 return (dgettext(__nsl_dom, "RPC: Unable to receive")); 388 case RPC_TIMEDOUT: | 335 return (dgettext(__nsl_dom, "RPC: Unable to receive")); 336 case RPC_TIMEDOUT: |
389 trace1(TR_clnt_sperrno, 1); | |
390 return (dgettext(__nsl_dom, "RPC: Timed out")); 391 case RPC_VERSMISMATCH: | 337 return (dgettext(__nsl_dom, "RPC: Timed out")); 338 case RPC_VERSMISMATCH: |
392 trace1(TR_clnt_sperrno, 1); | |
393 return (dgettext(__nsl_dom, 394 "RPC: Incompatible versions of RPC")); 395 case RPC_AUTHERROR: | 339 return (dgettext(__nsl_dom, 340 "RPC: Incompatible versions of RPC")); 341 case RPC_AUTHERROR: |
396 trace1(TR_clnt_sperrno, 1); | |
397 return (dgettext(__nsl_dom, "RPC: Authentication error")); 398 case RPC_PROGUNAVAIL: | 342 return (dgettext(__nsl_dom, "RPC: Authentication error")); 343 case RPC_PROGUNAVAIL: |
399 trace1(TR_clnt_sperrno, 1); | |
400 return (dgettext(__nsl_dom, "RPC: Program unavailable")); 401 case RPC_PROGVERSMISMATCH: | 344 return (dgettext(__nsl_dom, "RPC: Program unavailable")); 345 case RPC_PROGVERSMISMATCH: |
402 trace1(TR_clnt_sperrno, 1); | |
403 return (dgettext(__nsl_dom, "RPC: Program/version mismatch")); 404 case RPC_PROCUNAVAIL: | 346 return (dgettext(__nsl_dom, "RPC: Program/version mismatch")); 347 case RPC_PROCUNAVAIL: |
405 trace1(TR_clnt_sperrno, 1); | |
406 return (dgettext(__nsl_dom, "RPC: Procedure unavailable")); 407 case RPC_CANTDECODEARGS: | 348 return (dgettext(__nsl_dom, "RPC: Procedure unavailable")); 349 case RPC_CANTDECODEARGS: |
408 trace1(TR_clnt_sperrno, 1); | |
409 return (dgettext(__nsl_dom, 410 "RPC: Server can't decode arguments")); 411 412 case RPC_SYSTEMERROR: | 350 return (dgettext(__nsl_dom, 351 "RPC: Server can't decode arguments")); 352 353 case RPC_SYSTEMERROR: |
413 trace1(TR_clnt_sperrno, 1); | |
414 return (dgettext(__nsl_dom, "RPC: Remote system error")); 415 case RPC_UNKNOWNHOST: | 354 return (dgettext(__nsl_dom, "RPC: Remote system error")); 355 case RPC_UNKNOWNHOST: |
416 trace1(TR_clnt_sperrno, 1); | |
417 return (dgettext(__nsl_dom, "RPC: Unknown host")); 418 case RPC_UNKNOWNPROTO: | 356 return (dgettext(__nsl_dom, "RPC: Unknown host")); 357 case RPC_UNKNOWNPROTO: |
419 trace1(TR_clnt_sperrno, 1); | |
420 return (dgettext(__nsl_dom, "RPC: Unknown protocol")); 421 case RPC_RPCBFAILURE: | 358 return (dgettext(__nsl_dom, "RPC: Unknown protocol")); 359 case RPC_RPCBFAILURE: |
422 trace1(TR_clnt_sperrno, 1); | |
423 return (dgettext(__nsl_dom, "RPC: Rpcbind failure")); 424 case RPC_N2AXLATEFAILURE: | 360 return (dgettext(__nsl_dom, "RPC: Rpcbind failure")); 361 case RPC_N2AXLATEFAILURE: |
425 trace1(TR_clnt_sperrno, 1); | |
426 return (dgettext(__nsl_dom, 427 "RPC: Name to address translation failed")); 428 case RPC_NOBROADCAST: | 362 return (dgettext(__nsl_dom, 363 "RPC: Name to address translation failed")); 364 case RPC_NOBROADCAST: |
429 trace1(TR_clnt_sperrno, 1); | |
430 return (dgettext(__nsl_dom, "RPC: Broadcast not supported")); 431 case RPC_PROGNOTREGISTERED: | 365 return (dgettext(__nsl_dom, "RPC: Broadcast not supported")); 366 case RPC_PROGNOTREGISTERED: |
432 trace1(TR_clnt_sperrno, 1); | |
433 return (dgettext(__nsl_dom, "RPC: Program not registered")); 434 case RPC_UNKNOWNADDR: | 367 return (dgettext(__nsl_dom, "RPC: Program not registered")); 368 case RPC_UNKNOWNADDR: |
435 trace1(TR_clnt_sperrno, 1); | |
436 return (dgettext(__nsl_dom, 437 "RPC: Remote server address unknown")); 438 case RPC_TLIERROR: | 369 return (dgettext(__nsl_dom, 370 "RPC: Remote server address unknown")); 371 case RPC_TLIERROR: |
439 trace1(TR_clnt_sperrno, 1); | |
440 return (dgettext(__nsl_dom, "RPC: Miscellaneous tli error")); 441 case RPC_FAILED: | 372 return (dgettext(__nsl_dom, "RPC: Miscellaneous tli error")); 373 case RPC_FAILED: |
442 trace1(TR_clnt_sperrno, 1); | |
443 return (dgettext(__nsl_dom, "RPC: Failed (unspecified error)")); 444 case RPC_INPROGRESS: | 374 return (dgettext(__nsl_dom, "RPC: Failed (unspecified error)")); 375 case RPC_INPROGRESS: |
445 trace1(TR_clnt_sperrno, 1); | |
446 return (dgettext(__nsl_dom, "RPC: RAC call in progress")); 447 case RPC_STALERACHANDLE: | 376 return (dgettext(__nsl_dom, "RPC: RAC call in progress")); 377 case RPC_STALERACHANDLE: |
448 trace1(TR_clnt_sperrno, 1); | |
449 return (dgettext(__nsl_dom, "RPC: Stale RAC handle")); 450 case RPC_CANTCONNECT: | 378 return (dgettext(__nsl_dom, "RPC: Stale RAC handle")); 379 case RPC_CANTCONNECT: |
451 trace1(TR_clnt_sperrno, 1); | |
452 return (dgettext(__nsl_dom, "RPC: Couldn't make connection")); 453 case RPC_XPRTFAILED: | 380 return (dgettext(__nsl_dom, "RPC: Couldn't make connection")); 381 case RPC_XPRTFAILED: |
454 trace1(TR_clnt_sperrno, 1); | |
455 return (dgettext(__nsl_dom, 456 "RPC: Received disconnect from remote")); 457 case RPC_CANTCREATESTREAM: | 382 return (dgettext(__nsl_dom, 383 "RPC: Received disconnect from remote")); 384 case RPC_CANTCREATESTREAM: |
458 trace1(TR_clnt_sperrno, 1); | |
459 return (dgettext(__nsl_dom, "RPC: Can't push RPC module")); 460 } | 385 return (dgettext(__nsl_dom, "RPC: Can't push RPC module")); 386 } |
461 trace1(TR_clnt_sperrno, 1); | |
462 return (dgettext(__nsl_dom, "RPC: (unknown error code)")); 463} | 387 return (dgettext(__nsl_dom, "RPC: (unknown error code)")); 388} |