17dd7cddfSDavid du Colombier /* 27dd7cddfSDavid du Colombier * Cf. /lib/rfc/rfc1014, /lib/rfc/rfc1050 37dd7cddfSDavid du Colombier */ 47dd7cddfSDavid du Colombier 57dd7cddfSDavid du Colombier enum Bool 67dd7cddfSDavid du Colombier { 77dd7cddfSDavid du Colombier FALSE = 0, 87dd7cddfSDavid du Colombier TRUE = 1 97dd7cddfSDavid du Colombier }; 107dd7cddfSDavid du Colombier 117dd7cddfSDavid du Colombier enum Auth_flavor 127dd7cddfSDavid du Colombier { 137dd7cddfSDavid du Colombier AUTH_NULL = 0, 147dd7cddfSDavid du Colombier AUTH_UNIX = 1, 157dd7cddfSDavid du Colombier AUTH_SHORT = 2, 167dd7cddfSDavid du Colombier AUTH_DES = 3 177dd7cddfSDavid du Colombier }; 187dd7cddfSDavid du Colombier 197dd7cddfSDavid du Colombier enum Msg_type 207dd7cddfSDavid du Colombier { 217dd7cddfSDavid du Colombier CALL = 0, 227dd7cddfSDavid du Colombier REPLY = 1 237dd7cddfSDavid du Colombier }; 247dd7cddfSDavid du Colombier 257dd7cddfSDavid du Colombier /* 267dd7cddfSDavid du Colombier * A reply to a call message can take on two forms: 277dd7cddfSDavid du Colombier * The message was either accepted or rejected. 287dd7cddfSDavid du Colombier */ 297dd7cddfSDavid du Colombier 307dd7cddfSDavid du Colombier enum Reply_stat 317dd7cddfSDavid du Colombier { 327dd7cddfSDavid du Colombier MSG_ACCEPTED = 0, 337dd7cddfSDavid du Colombier MSG_DENIED = 1 347dd7cddfSDavid du Colombier }; 357dd7cddfSDavid du Colombier 367dd7cddfSDavid du Colombier /* 377dd7cddfSDavid du Colombier * Given that a call message was accepted, the following is the 387dd7cddfSDavid du Colombier * status of an attempt to call a remote procedure. 397dd7cddfSDavid du Colombier */ 407dd7cddfSDavid du Colombier enum Accept_stat 417dd7cddfSDavid du Colombier { 427dd7cddfSDavid du Colombier SUCCESS = 0, /* RPC executed successfully */ 437dd7cddfSDavid du Colombier PROG_UNAVAIL = 1, /* remote hasn't exported program */ 447dd7cddfSDavid du Colombier PROG_MISMATCH = 2, /* remote can't support version # */ 457dd7cddfSDavid du Colombier PROC_UNAVAIL = 3, /* program can't support procedure */ 467dd7cddfSDavid du Colombier GARBAGE_ARGS = 4 /* procedure can't decode params */ 477dd7cddfSDavid du Colombier }; 487dd7cddfSDavid du Colombier 497dd7cddfSDavid du Colombier /* 507dd7cddfSDavid du Colombier * Reasons why a call message was rejected: 517dd7cddfSDavid du Colombier */ 527dd7cddfSDavid du Colombier enum Reject_stat 537dd7cddfSDavid du Colombier { 547dd7cddfSDavid du Colombier RPC_MISMATCH = 0, /* RPC version number != 2 */ 557dd7cddfSDavid du Colombier AUTH_ERROR = 1 /* remote can't authenticate caller */ 567dd7cddfSDavid du Colombier }; 577dd7cddfSDavid du Colombier 587dd7cddfSDavid du Colombier /* 597dd7cddfSDavid du Colombier * Why authentication failed: 607dd7cddfSDavid du Colombier */ 617dd7cddfSDavid du Colombier enum Auth_stat 627dd7cddfSDavid du Colombier { 637dd7cddfSDavid du Colombier AUTH_BADCRED = 1, /* bad credentials (seal broken) */ 647dd7cddfSDavid du Colombier AUTH_REJECTEDCRED = 2, /* client must begin new session */ 657dd7cddfSDavid du Colombier AUTH_BADVERF = 3, /* bad verifier (seal broken) */ 667dd7cddfSDavid du Colombier AUTH_REJECTEDVERF = 4, /* verifier expired or replayed */ 677dd7cddfSDavid du Colombier AUTH_TOOWEAK = 5 /* rejected for security reasons */ 687dd7cddfSDavid du Colombier }; 697dd7cddfSDavid du Colombier 707dd7cddfSDavid du Colombier enum 717dd7cddfSDavid du Colombier { 727dd7cddfSDavid du Colombier IPPROTO_TCP = 6, /* protocol number for TCP/IP */ 737dd7cddfSDavid du Colombier IPPROTO_UDP = 17 /* protocol number for UDP/IP */ 747dd7cddfSDavid du Colombier }; 757dd7cddfSDavid du Colombier 767dd7cddfSDavid du Colombier #define ROUNDUP(n) ((n) + ((-(n))&3)) 777dd7cddfSDavid du Colombier 787dd7cddfSDavid du Colombier #define PLONG(x) (dataptr[3] = ((ulong)(x)), dataptr[2] = ((ulong)(x))>>8, dataptr[1] = ((ulong)(x))>>16, dataptr[0] = ((ulong)(x))>>24, dataptr += 4) 797dd7cddfSDavid du Colombier #define PPTR(x, n) (memmove(dataptr, (x), n), dataptr += ROUNDUP(n)) 80*9a747e4fSDavid du Colombier #define PBYTE(x) (*dataptr++ = (x)) 817dd7cddfSDavid du Colombier 827dd7cddfSDavid du Colombier #define GLONG() (argptr += 4, (((uchar*)argptr)[-1] | (((uchar*)argptr)[-2]<<8) | (((uchar*)argptr)[-3]<<16) | (((uchar*)argptr)[-4]<<24))) 837dd7cddfSDavid du Colombier #define GPTR(n) (void *)(argptr); argptr += ROUNDUP(n) 84*9a747e4fSDavid du Colombier #define GBYTE() (argptr++, ((uchar*)argptr)[-1]) 85