/* * Cf. /lib/rfc/rfc1014, /lib/rfc/rfc1050 */ enum Bool { FALSE = 0, TRUE = 1 }; enum Auth_flavor { AUTH_NULL = 0, AUTH_UNIX = 1, AUTH_SHORT = 2, AUTH_DES = 3 }; enum Msg_type { CALL = 0, REPLY = 1 }; /* * A reply to a call message can take on two forms: * The message was either accepted or rejected. */ enum Reply_stat { MSG_ACCEPTED = 0, MSG_DENIED = 1 }; /* * Given that a call message was accepted, the following is the * status of an attempt to call a remote procedure. */ enum Accept_stat { SUCCESS = 0, /* RPC executed successfully */ PROG_UNAVAIL = 1, /* remote hasn't exported program */ PROG_MISMATCH = 2, /* remote can't support version # */ PROC_UNAVAIL = 3, /* program can't support procedure */ GARBAGE_ARGS = 4 /* procedure can't decode params */ }; /* * Reasons why a call message was rejected: */ enum Reject_stat { RPC_MISMATCH = 0, /* RPC version number != 2 */ AUTH_ERROR = 1 /* remote can't authenticate caller */ }; /* * Why authentication failed: */ enum Auth_stat { AUTH_BADCRED = 1, /* bad credentials (seal broken) */ AUTH_REJECTEDCRED = 2, /* client must begin new session */ AUTH_BADVERF = 3, /* bad verifier (seal broken) */ AUTH_REJECTEDVERF = 4, /* verifier expired or replayed */ AUTH_TOOWEAK = 5 /* rejected for security reasons */ }; enum { IPPROTO_TCP = 6, /* protocol number for TCP/IP */ IPPROTO_UDP = 17 /* protocol number for UDP/IP */ }; #define ROUNDUP(n) ((n) + ((-(n))&3)) #define PLONG(x) (dataptr[3] = ((ulong)(x)), dataptr[2] = ((ulong)(x))>>8, dataptr[1] = ((ulong)(x))>>16, dataptr[0] = ((ulong)(x))>>24, dataptr += 4) #define PPTR(x, n) (memmove(dataptr, (x), n), dataptr += ROUNDUP(n)) #define PBYTE(x) (*dataptr++ = (x)) #define GLONG() (argptr += 4, (((uchar*)argptr)[-1] | (((uchar*)argptr)[-2]<<8) | (((uchar*)argptr)[-3]<<16) | (((uchar*)argptr)[-4]<<24))) #define GPTR(n) (void *)(argptr); argptr += ROUNDUP(n) #define GBYTE() (argptr++, ((uchar*)argptr)[-1])