对已拒绝请求的回复

由于以下两个原因,服务器可能会拒绝调用消息: 服务器未运行兼容版本的 RPC 协议,或者存在认证失败。

网络服务器拒绝的请求的 RPC 应答消息具有以下结构:

struct rejected_reply rreply {
union switch (enum reject_stat stat) {
     case RPC_MISMATCH: 
          struct {
               unsigned int low;
               unsigned int high;
          } mismatch_info;
     case AUTH_ERROR: 
          enum auth_stat stat;
};
enum reject_stat 判别充当 RPC_MATCH 与 AUTH_ERROR 之间的切换。 被拒绝的调用消息返回下列其中一个状态条件:

enum reject_stat {
     RPC_MISMATCH   = 0, /* RPC version number is not 2       */
     AUTH_ERROR     = 1, /* remote cannot authenticate caller */
};
描述
RPC_MISMATCH 服务器未运行兼容版本的 RPC 协议。 服务器返回可用的最低版本号和最高版本号。
AUTH_ERROR 服务器拒绝认证调用者,并返回值为 enum auth_stat的失败状态。 由于凭证错误或已拒绝,验证器错误或已拒绝,验证器已到期或已重放的验证器或安全性问题,认证可能会失败。
如果服务器未认证调用者,AUTH_ERROR返回下列其中一个条件作为故障状态:

enum auth_stat {
     AUTH_BADCRED      = 1, /* bad credentials      */
     AUTH_REJECTEDCRED = 2, /* begin new session    */
     AUTH_BADVERF      = 3, /* bad verifier         */
     AUTH_REJECTEDVERF = 4, /* expired or replayed  */
     AUTH_TOOWEAK      = 5, /* rejected for security*/
};