aboutsummaryrefslogtreecommitdiff
path: root/sunrpc/clnt_perr.c
diff options
context:
space:
mode:
Diffstat (limited to 'sunrpc/clnt_perr.c')
-rw-r--r--sunrpc/clnt_perr.c192
1 files changed, 136 insertions, 56 deletions
diff --git a/sunrpc/clnt_perr.c b/sunrpc/clnt_perr.c
index d756cb1..ae6a1da 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;