OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [librpc/] [include/] [rpcsvc/] [yp.x] - Rev 389

Go to most recent revision | Compare with Previous | Blame | View Log

/* @(#)yp.x     2.1 88/08/01 4.0 RPCSRC */

/*
 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
 * unrestricted use provided that this legend is included on all tape
 * media and as a part of the software program in whole or part.  Users
 * may copy or modify Sun RPC without charge, but are not authorized
 * to license or distribute it to anyone else except as part of a product or
 * program developed by the user.
 * 
 * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
 * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
 * 
 * Sun RPC is provided with no support and without any obligation on the
 * part of Sun Microsystems, Inc. to assist in its use, correction,
 * modification or enhancement.
 * 
 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
 * OR ANY PART THEREOF.
 * 
 * In no event will Sun Microsystems, Inc. be liable for any lost revenue
 * or profits or other special, indirect and consequential damages, even if
 * Sun has been advised of the possibility of such damages.
 * 
 * Sun Microsystems, Inc.
 * 2550 Garcia Avenue
 * Mountain View, California  94043
 */

/*
 * Protocol description file for the Yellow Pages Service
 */

#ifndef RPC_HDR
%#ifndef lint
%static const char rcsid[] =
%  "$FreeBSD: src/include/rpcsvc/yp.x,v 1.12 1999/08/27 23:45:12 peter Exp $";
%#endif /* not lint */
#endif

const YPMAXRECORD = 1024;
const YPMAXDOMAIN = 64;
const YPMAXMAP = 64;
const YPMAXPEER = 64;


enum ypstat {
        YP_TRUE         =  1,
        YP_NOMORE       =  2,
        YP_FALSE        =  0,
        YP_NOMAP        = -1,
        YP_NODOM        = -2,
        YP_NOKEY        = -3,
        YP_BADOP        = -4,
        YP_BADDB        = -5,
        YP_YPERR        = -6,
        YP_BADARGS      = -7,
        YP_VERS         = -8
};


enum ypxfrstat {
        YPXFR_SUCC      =  1,
        YPXFR_AGE       =  2,
        YPXFR_NOMAP     = -1,
        YPXFR_NODOM     = -2,
        YPXFR_RSRC      = -3,
        YPXFR_RPC       = -4,
        YPXFR_MADDR     = -5,
        YPXFR_YPERR     = -6,
        YPXFR_BADARGS   = -7,
        YPXFR_DBM       = -8,
        YPXFR_FILE      = -9,
        YPXFR_SKEW      = -10,
        YPXFR_CLEAR     = -11,
        YPXFR_FORCE     = -12,
        YPXFR_XFRERR    = -13,
        YPXFR_REFUSED   = -14
};


typedef string domainname<YPMAXDOMAIN>;
typedef string mapname<YPMAXMAP>;
typedef string peername<YPMAXPEER>;
typedef opaque keydat<YPMAXRECORD>;
typedef opaque valdat<YPMAXRECORD>;


struct ypmap_parms {
        domainname domain;      
        mapname map;
        unsigned int ordernum;
        peername peer;
};

struct ypreq_key {
        domainname domain;
        mapname map;
        keydat key;
};

struct ypreq_nokey {
        domainname domain;      
        mapname map;
};
        
struct ypreq_xfr {
        ypmap_parms map_parms;
        unsigned int transid;
        unsigned int prog;
        unsigned int port;
};


struct ypresp_val {
        ypstat stat;
        valdat val;
};

struct ypresp_key_val {
        ypstat stat;
#ifdef STUPID_SUN_BUG /* These are backwards */
        keydat key;
        valdat val;
#else
        valdat val;
        keydat key;
#endif
};


struct ypresp_master {
        ypstat stat;    
        peername peer;
};

struct ypresp_order {
        ypstat stat;
        unsigned int ordernum;
};

union ypresp_all switch (bool more) {
case TRUE:
        ypresp_key_val val;
case FALSE:
        void;
};

struct ypresp_xfr {
        unsigned int transid;
        ypxfrstat xfrstat;
};

struct ypmaplist {
        mapname map;
        ypmaplist *next;
};

struct ypresp_maplist {
        ypstat stat;
        ypmaplist *maps;
};

enum yppush_status {
        YPPUSH_SUCC     =  1,   /* Success */
        YPPUSH_AGE      =  2,   /* Master's version not newer */
        YPPUSH_NOMAP    = -1,   /* Can't find server for map */
        YPPUSH_NODOM    = -2,   /* Domain not supported */
        YPPUSH_RSRC     = -3,   /* Local resource alloc failure */
        YPPUSH_RPC      = -4,   /* RPC failure talking to server */
        YPPUSH_MADDR    = -5,   /* Can't get master address */
        YPPUSH_YPERR    = -6,   /* YP server/map db error */
        YPPUSH_BADARGS  = -7,   /* Request arguments bad */
        YPPUSH_DBM      = -8,   /* Local dbm operation failed */
        YPPUSH_FILE     = -9,   /* Local file I/O operation failed */
        YPPUSH_SKEW     = -10,  /* Map version skew during transfer */
        YPPUSH_CLEAR    = -11,  /* Can't send "Clear" req to local ypserv */
        YPPUSH_FORCE    = -12,  /* No local order number in map  use -f flag. */
        YPPUSH_XFRERR   = -13,  /* ypxfr error */
        YPPUSH_REFUSED  = -14   /* Transfer request refused by ypserv */
};

struct yppushresp_xfr {
        unsigned transid;
        yppush_status status;
};

/*
 * Response structure and overall result status codes.  Success and failure
 * represent two separate response message types.
 */
 
enum ypbind_resptype {
        YPBIND_SUCC_VAL = 1, 
        YPBIND_FAIL_VAL = 2
};
 
struct ypbind_binding {
    opaque ypbind_binding_addr[4]; /* In network order */
    opaque ypbind_binding_port[2]; /* In network order */
};   

union ypbind_resp switch (ypbind_resptype ypbind_status) {
case YPBIND_FAIL_VAL:
        unsigned ypbind_error;
case YPBIND_SUCC_VAL:
        ypbind_binding ypbind_bindinfo;
};     

/* Detailed failure reason codes for response field ypbind_error*/
 
const YPBIND_ERR_ERR    = 1;    /* Internal error */
const YPBIND_ERR_NOSERV = 2;    /* No bound server for passed domain */
const YPBIND_ERR_RESC   = 3;    /* System resource allocation failure */
 
 
/*
 * Request data structure for ypbind "Set domain" procedure.
 */
struct ypbind_setdom {
        domainname ypsetdom_domain;
        ypbind_binding ypsetdom_binding;
        unsigned ypsetdom_vers;
};


/*
 * NIS v1 support for backwards compatibility
 */
enum ypreqtype {
        YPREQ_KEY = 1,
        YPREQ_NOKEY = 2,
        YPREQ_MAP_PARMS = 3
};

enum ypresptype {
        YPRESP_VAL = 1,
        YPRESP_KEY_VAL = 2,
        YPRESP_MAP_PARMS = 3
};

union yprequest switch (ypreqtype yp_reqtype) {
case YPREQ_KEY:
        ypreq_key yp_req_keytype;
case YPREQ_NOKEY:
        ypreq_nokey yp_req_nokeytype;
case YPREQ_MAP_PARMS:
        ypmap_parms yp_req_map_parmstype;
};

union ypresponse switch (ypresptype yp_resptype) {
case YPRESP_VAL:
        ypresp_val yp_resp_valtype;
case YPRESP_KEY_VAL:
        ypresp_key_val yp_resp_key_valtype;
case YPRESP_MAP_PARMS:
        ypmap_parms yp_resp_map_parmstype;
};

#if !defined(YPBIND_ONLY) && !defined(YPPUSH_ONLY)
/*
 * YP access protocol
 */
program YPPROG {
/*
 * NIS v1 support for backwards compatibility
 */
        version YPOLDVERS {
                void
                YPOLDPROC_NULL(void) = 0;

                bool
                YPOLDPROC_DOMAIN(domainname) = 1;

                bool
                YPOLDPROC_DOMAIN_NONACK(domainname) = 2;

                ypresponse
                YPOLDPROC_MATCH(yprequest) = 3;

                ypresponse
                YPOLDPROC_FIRST(yprequest) = 4;

                ypresponse
                YPOLDPROC_NEXT(yprequest) = 5;

                ypresponse
                YPOLDPROC_POLL(yprequest) = 6;

                ypresponse
                YPOLDPROC_PUSH(yprequest) = 7;

                ypresponse
                YPOLDPROC_PULL(yprequest) = 8;

                ypresponse
                YPOLDPROC_GET(yprequest) = 9;
        } = 1;

        version YPVERS {
                void 
                YPPROC_NULL(void) = 0;

                bool 
                YPPROC_DOMAIN(domainname) = 1;  

                bool
                YPPROC_DOMAIN_NONACK(domainname) = 2;

                ypresp_val
                YPPROC_MATCH(ypreq_key) = 3;

                ypresp_key_val 
#ifdef STUPID_SUN_BUG /* should be ypreq_nokey */
                YPPROC_FIRST(ypreq_key) = 4;
#else
                YPPROC_FIRST(ypreq_nokey) = 4;
#endif
                ypresp_key_val 
                YPPROC_NEXT(ypreq_key) = 5;

                ypresp_xfr
                YPPROC_XFR(ypreq_xfr) = 6;

                void
                YPPROC_CLEAR(void) = 7;

                ypresp_all
                YPPROC_ALL(ypreq_nokey) = 8;

                ypresp_master
                YPPROC_MASTER(ypreq_nokey) = 9;

                ypresp_order
                YPPROC_ORDER(ypreq_nokey) = 10;

                ypresp_maplist 
                YPPROC_MAPLIST(domainname) = 11;
        } = 2;
} = 100004;
#endif
#if !defined(YPSERV_ONLY) && !defined(YPBIND_ONLY)
/*
 * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
 */
program YPPUSH_XFRRESPPROG {
        version YPPUSH_XFRRESPVERS {
                void
                YPPUSHPROC_NULL(void) = 0;
#ifdef STUPID_SUN_BUG /* argument and return value are backwards */
                yppushresp_xfr  
                YPPUSHPROC_XFRRESP(void) = 1;
#else
                void
                YPPUSHPROC_XFRRESP(yppushresp_xfr) = 1;
#endif
        } = 1;
} = 0x40000000; /* transient: could be anything up to 0x5fffffff */
#endif
#if !defined(YPSERV_ONLY) && !defined(YPPUSH_ONLY)
/*
 * YP binding protocol
 */
program YPBINDPROG {
        version YPBINDVERS {
                void
                YPBINDPROC_NULL(void) = 0;
        
                ypbind_resp
                YPBINDPROC_DOMAIN(domainname) = 1;

                void
                YPBINDPROC_SETDOM(ypbind_setdom) = 2;
        } = 2;
} = 100007;

#endif

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.