diff options
Diffstat (limited to 'sunrpc/clnt_perr.c')
-rw-r--r-- | sunrpc/clnt_perr.c | 192 |
1 files changed, 136 insertions, 56 deletions
diff --git a/sunrpc/clnt_perr.c b/sunrpc/clnt_perr.c index d756cb12ba..ae6a1da7e0 100644 --- a/sunrpc/clnt_perr.c +++ b/sunrpc/clnt_perr.c @@ -153,47 +153,102 @@ clnt_perror (CLIENT * rpch, const char *msg) struct rpc_errtab { enum clnt_stat status; - const char *message; + unsigned int message_off; +}; + +static const char rpc_errstr[] = +{ +#define RPC_SUCCESS_IDX 0 + N_("RPC: Success") + "\0" +#define RPC_CANTENCODEARGS_IDX (RPC_SUCCESS_IDX + sizeof "RPC: Success") + N_("RPC: Can't encode arguments") + "\0" +#define RPC_CANTDECODERES_IDX (RPC_CANTENCODEARGS_IDX \ + + sizeof "RPC: Can't encode arguments") + N_("RPC: Can't decode result") + "\0" +#define RPC_CANTSEND_IDX (RPC_CANTDECODERES_IDX \ + + sizeof "RPC: Can't decode result") + N_("RPC: Unable to send") + "\0" +#define RPC_CANTRECV_IDX (RPC_CANTSEND_IDX \ + + sizeof "RPC: Unable to send") + N_("RPC: Unable to receive") + "\0" +#define RPC_TIMEDOUT_IDX (RPC_CANTRECV_IDX \ + + sizeof "RPC: Unable to receive") + N_("RPC: Timed out") + "\0" +#define RPC_VERSMISMATCH_IDX (RPC_TIMEDOUT_IDX \ + + sizeof "RPC: Timed out") + N_("RPC: Incompatible versions of RPC") + "\0" +#define RPC_AUTHERROR_IDX (RPC_VERSMISMATCH_IDX \ + + sizeof "RPC: Incompatible versions of RPC") + N_("RPC: Authentication error") + "\0" +#define RPC_PROGUNAVAIL_IDX (RPC_AUTHERROR_IDX \ + + sizeof "RPC: Authentication error") + N_("RPC: Program unavailable") + "\0" +#define RPC_PROGVERSMISMATCH_IDX (RPC_PROGUNAVAIL_IDX \ + + sizeof "RPC: Program unavailable") + N_("RPC: Program/version mismatch") + "\0" +#define RPC_PROCUNAVAIL_IDX (RPC_PROGVERSMISMATCH_IDX \ + + sizeof "RPC: Program/version mismatch") + N_("RPC: Procedure unavailable") + "\0" +#define RPC_CANTDECODEARGS_IDX (RPC_PROCUNAVAIL_IDX \ + + sizeof "RPC: Procedure unavailable") + N_("RPC: Server can't decode arguments") + "\0" +#define RPC_SYSTEMERROR_IDX (RPC_CANTDECODEARGS_IDX \ + + sizeof "RPC: Server can't decode arguments") + N_("RPC: Remote system error") + "\0" +#define RPC_UNKNOWNHOST_IDX (RPC_SYSTEMERROR_IDX \ + + sizeof "RPC: Remote system error") + N_("RPC: Unknown host") + "\0" +#define RPC_UNKNOWNPROTO_IDX (RPC_UNKNOWNHOST_IDX \ + + sizeof "RPC: Unknown host") + N_("RPC: Unknown protocol") + "\0" +#define RPC_PMAPFAILURE_IDX (RPC_UNKNOWNPROTO_IDX \ + + sizeof "RPC: Unknown protocol") + N_("RPC: Port mapper failure") + "\0" +#define RPC_PROGNOTREGISTERED_IDX (RPC_PMAPFAILURE_IDX \ + + sizeof "RPC: Port mapper failure") + N_("RPC: Program not registered") + "\0" +#define RPC_FAILED_IDX (RPC_PROGNOTREGISTERED_IDX \ + + sizeof "RPC: Program not registered") + N_("RPC: Failed (unspecified error)") }; static const struct rpc_errtab rpc_errlist[] = { - {RPC_SUCCESS, - N_("RPC: Success")}, - {RPC_CANTENCODEARGS, - N_("RPC: Can't encode arguments")}, - {RPC_CANTDECODERES, - N_("RPC: Can't decode result")}, - {RPC_CANTSEND, - N_("RPC: Unable to send")}, - {RPC_CANTRECV, - N_("RPC: Unable to receive")}, - {RPC_TIMEDOUT, - N_("RPC: Timed out")}, - {RPC_VERSMISMATCH, - N_("RPC: Incompatible versions of RPC")}, - {RPC_AUTHERROR, - N_("RPC: Authentication error")}, - {RPC_PROGUNAVAIL, - N_("RPC: Program unavailable")}, - {RPC_PROGVERSMISMATCH, - N_("RPC: Program/version mismatch")}, - {RPC_PROCUNAVAIL, - N_("RPC: Procedure unavailable")}, - {RPC_CANTDECODEARGS, - N_("RPC: Server can't decode arguments")}, - {RPC_SYSTEMERROR, - N_("RPC: Remote system error")}, - {RPC_UNKNOWNHOST, - N_("RPC: Unknown host")}, - {RPC_UNKNOWNPROTO, - N_("RPC: Unknown protocol")}, - {RPC_PMAPFAILURE, - N_("RPC: Port mapper failure")}, - {RPC_PROGNOTREGISTERED, - N_("RPC: Program not registered")}, - {RPC_FAILED, - N_("RPC: Failed (unspecified error)")} + { RPC_SUCCESS, RPC_SUCCESS_IDX }, + { RPC_CANTENCODEARGS, RPC_CANTENCODEARGS_IDX }, + { RPC_CANTDECODERES, RPC_CANTDECODERES_IDX }, + { RPC_CANTSEND, RPC_CANTSEND_IDX }, + { RPC_CANTRECV, RPC_CANTRECV_IDX }, + { RPC_TIMEDOUT, RPC_TIMEDOUT_IDX }, + { RPC_VERSMISMATCH, RPC_VERSMISMATCH_IDX }, + { RPC_AUTHERROR, RPC_AUTHERROR_IDX }, + { RPC_PROGUNAVAIL, RPC_PROGUNAVAIL_IDX }, + { RPC_PROGVERSMISMATCH, RPC_PROGVERSMISMATCH }, + { RPC_PROCUNAVAIL, RPC_PROCUNAVAIL_IDX }, + { RPC_CANTDECODEARGS, RPC_CANTDECODEARGS_IDX }, + { RPC_SYSTEMERROR, RPC_SYSTEMERROR_IDX }, + { RPC_UNKNOWNHOST, RPC_UNKNOWNHOST_IDX }, + { RPC_UNKNOWNPROTO, RPC_UNKNOWNPROTO_IDX }, + { RPC_PMAPFAILURE, RPC_PMAPFAILURE_IDX }, + { RPC_PROGNOTREGISTERED, RPC_PROGNOTREGISTERED_IDX }, + { RPC_FAILED, RPC_FAILED_IDX } }; @@ -209,7 +264,7 @@ clnt_sperrno (enum clnt_stat stat) { if (rpc_errlist[i].status == stat) { - return _(rpc_errlist[i].message); + return _(rpc_errstr + rpc_errlist[i].message_off); } } return _("RPC: (unknown error code)"); @@ -264,27 +319,52 @@ clnt_pcreateerror (const char *msg) struct auth_errtab { enum auth_stat status; - const char *message; + unsigned int message_off; +}; + +static const char auth_errstr[] = +{ +#define AUTH_OK_IDX 0 + N_("Authentication OK") + "\0" +#define AUTH_BADCRED_IDX (AUTH_OK_IDX + sizeof "Authentication OK") + N_("Invalid client credential") + "\0" +#define AUTH_REJECTEDCRED_IDX (AUTH_BADCRED_IDX \ + + sizeof "Invalid client credential") + N_("Server rejected credential") + "\0" +#define AUTH_BADVERF_IDX (AUTH_REJECTEDCRED_IDX \ + + sizeof "Server rejected credential") + N_("Invalid client verifier") + "\0" +#define AUTH_REJECTEDVERF_IDX (AUTH_BADVERF_IDX \ + + sizeof "Invalid client verifier") + N_("Server rejected verifier") + "\0" +#define AUTH_TOOWEAK_IDX (AUTH_REJECTEDVERF_IDX \ + + sizeof "Server rejected verifier") + N_("Client credential too weak") + "\0" +#define AUTH_INVALIDRESP_IDX (AUTH_TOOWEAK_IDX \ + + sizeof "Client credential too weak") + N_("Invalid server verifier") + "\0" +#define AUTH_FAILED_IDX (AUTH_INVALIDRESP_IDX \ + + sizeof "Invalid server verifier") + N_("Failed (unspecified error)") }; static const struct auth_errtab auth_errlist[] = { - {AUTH_OK, - N_("Authentication OK")}, - {AUTH_BADCRED, - N_("Invalid client credential")}, - {AUTH_REJECTEDCRED, - N_("Server rejected credential")}, - {AUTH_BADVERF, - N_("Invalid client verifier")}, - {AUTH_REJECTEDVERF, - N_("Server rejected verifier")}, - {AUTH_TOOWEAK, - N_("Client credential too weak")}, - {AUTH_INVALIDRESP, - N_("Invalid server verifier")}, - {AUTH_FAILED, - N_("Failed (unspecified error)")}, + { AUTH_OK, AUTH_OK_IDX }, + { AUTH_BADCRED, AUTH_BADCRED_IDX }, + { AUTH_REJECTEDCRED, AUTH_REJECTEDCRED_IDX }, + { AUTH_BADVERF, AUTH_BADVERF_IDX }, + { AUTH_REJECTEDVERF, AUTH_REJECTEDVERF_IDX }, + { AUTH_TOOWEAK, AUTH_TOOWEAK_IDX }, + { AUTH_INVALIDRESP, AUTH_INVALIDRESP_IDX }, + { AUTH_FAILED, AUTH_FAILED_IDX } }; static char * @@ -297,7 +377,7 @@ auth_errmsg (enum auth_stat stat) { if (auth_errlist[i].status == stat) { - return _(auth_errlist[i].message); + return _(auth_errstr + auth_errlist[i].message_off); } } return NULL; |