Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

/*
 *      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])