Logo Search packages:      
Sourcecode: nmap version File versions  Download package

Rpc_cut.h

/*
 * Copyright (c) 1999, 2000
 *    Politecnico di Torino.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that: (1) source code distributions
 * retain the above copyright notice and this paragraph in its entirety, (2)
 * distributions including binary code include the above copyright notice and
 * this paragraph in its entirety in the documentation or other materials
 * provided with the distribution, and (3) all advertising materials mentioning
 * features or use of this software display the following acknowledgement:
 * ``This product includes software developed by the Politecnico
 * di Torino, and its contributors.'' Neither the name of
 * the University nor the names of its contributors may be used to endorse
 * or promote products derived from this software without specific prior
 * written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

#define u_long unsigned long
#define u_int unsigned int
#define u_short unsigned short
#define enum_t int
#define caddr_t char*

struct opaque_auth {
      enum_t      oa_flavor;        /* flavor of auth */
      caddr_t     oa_base;          /* address of more auth stuff */
      u_int oa_length;        /* not to exceed MAX_AUTH_BYTES */
};

struct accepted_reply {
      struct opaque_auth      ar_verf;
      enum accept_stat  ar_stat;
      union {
            struct {
                  u_long      low;
                  u_long      high;
            } AR_versions;
            /*struct {
                  caddr_t     where;
                  xdrproc_t proc;
            } AR_results;
            /* and many other null cases */
      } ru;
#define     ar_results  ru.AR_results
#define     ar_vers           ru.AR_versions
};

struct rejected_reply {
      enum reject_stat rj_stat;
      union {
            struct {
                  u_long low;
                  u_long high;
            } RJ_versions;
            enum auth_stat RJ_why;  /* why authentication did not work */
      } ru;
#define     rj_vers     ru.RJ_versions
#define     rj_why      ru.RJ_why
};

struct reply_body {
      enum reply_stat rp_stat;
      union {
            struct accepted_reply RP_ar;
            struct rejected_reply RP_dr;
      } ru;
#define     rp_acpt     ru.RP_ar
#define     rp_rjct     ru.RP_dr
};

struct call_body {
      u_long cb_rpcvers;      /* must be equal to two */
      u_long cb_prog;
      u_long cb_vers;
      u_long cb_proc;
      struct opaque_auth cb_cred;
      struct opaque_auth cb_verf; /* protocol specific - provided by client */
};

struct rpc_msg {
      u_long                  rm_xid;
      enum msg_type           rm_direction;
      union {
            struct call_body RM_cmb;
            struct reply_body RM_rmb;
      } ru;
#define     rm_call           ru.RM_cmb
#define     rm_reply    ru.RM_rmb
};

#define     MSG_ACCEPTED 0
#define MSG_DENIED 1

#define SUCCESS 0
#define PROG_UNAVAIL 1
#define PROG_MISMATCH 2
#define PROC_UNAVAIL 3
#define GARBAGE_ARGS 4
#define SYSTEM_ERR 5

#define PMAPPORT        ((u_short)111)
#define PMAPPROG        ((u_long)100000)
#define PMAPVERS        ((u_long)2)
#define PMAPVERS_PROTO        ((u_long)2)
#define PMAPVERS_ORIG         ((u_long)1)
#define PMAPPROC_NULL         ((u_long)0)
#define PMAPPROC_SET          ((u_long)1)
#define PMAPPROC_UNSET        ((u_long)2)
#define PMAPPROC_GETPORT      ((u_long)3)
#define PMAPPROC_DUMP         ((u_long)4)
#define PMAPPROC_CALLIT       ((u_long)5)

#define CALL 0
#define REPLY 1

Generated by  Doxygen 1.6.0   Back to index