/*
 *           NEVER REPLACE THIS VERSION BY ANOTHER !!
 *           (rpcgen generated or from your system)
 *
 *           Thorsten Kukuk <kukuk@suse.de>
 */

#ifndef _YP_H_RPCGEN
#define _YP_H_RPCGEN

#include "config.h"
#ifdef ULTRIX_KLUDGE
/* This is to avoid a crash with ultrix' libc */
#define xdr_ypreq_key yp_xdr_ypreq_key
#define xdr_ypreq_nokey yp_xdr_ypreq_nokey
#define xdr_ypreq_xfr yp_xdr_ypreq_xfr
#define xdr_ypmap_parms yp_xdr_ypmap_parms
#define xdr_ypresp_val yp_xdr_ypresp_val
#define xdr_ypresp_key_val yp_xdr_ypresp_key_val
#define xdr_ypresp_master yp_xdr_ypresp_master
#define xdr_ypresp_order yp_xdr_ypresp_order
#define xdr_ypmaplist yp_xdr_ypmaplist
#define xdr_ypresp_maplist yp_xdr_ypresp_maplist
#define xdr_ypbind_resp yp_xdr_ypbind_resp
#define xdr_ypbind_setdom yp_xdr_ypbind_setdom
#define xdr_yppushresp_xfr yp_xdr_yppushresp_xfr
#endif

#include <rpc/rpc.h>
#ifdef NEED_SVCSOC_H
#include <rpc/svc_soc.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

#define YPMAXRECORD 1024
#define YPMAXDOMAIN 64
#define YPMAXMAP 64
#define 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
};
typedef enum ypstat ypstat;

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 enum ypxfrstat ypxfrstat;


typedef char *domainname;
typedef char *mapname;
typedef char *peername;

typedef struct {
	u_int keydat_len;
	char *keydat_val;
} keydat;


typedef struct {
	u_int valdat_len;
	char *valdat_val;
} valdat;


struct ypmap_parms {
	domainname domain;
	mapname map;
	u_int ordernum;
	peername peer;
};
typedef struct ypmap_parms ypmap_parms;


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


struct ypreq_nokey {
	domainname domain;
	mapname map;
};
typedef struct ypreq_nokey ypreq_nokey;


struct ypreq_xfr {
	ypmap_parms map_parms;
	u_int transid;
	u_int prog;
	u_int port;
};
typedef struct ypreq_xfr ypreq_xfr;


struct ypresp_val {
	ypstat stat;
	valdat val;
};
typedef struct ypresp_val ypresp_val;


struct ypresp_key_val {
	ypstat stat;
	keydat key;
	valdat val;
};
typedef struct ypresp_key_val ypresp_key_val;


struct ypresp_master {
	ypstat stat;
	peername peer;
};
typedef struct ypresp_master ypresp_master;


struct ypresp_order {
	ypstat stat;
	u_int ordernum;
};
typedef struct ypresp_order ypresp_order;


typedef struct
{
    struct
    {
	int (*encode)(ypresp_key_val *val, void *data);
	int (*close)(void *data);
    } u;
    void *data;
} xdr_ypall_cb_t;


struct ypresp_all {
	bool_t more;
	union {
		ypresp_key_val val;
	} ypresp_all_u;
};
typedef struct ypresp_all ypresp_all;


struct ypresp_xfr {
	u_int transid;
	ypxfrstat xfrstat;
};
typedef struct ypresp_xfr ypresp_xfr;


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


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


enum yppush_status {
	YPPUSH_SUCC = 1,
	YPPUSH_AGE = 2,
	YPPUSH_NOMAP = -1,
	YPPUSH_NODOM = -2,
	YPPUSH_RSRC = -3,
	YPPUSH_RPC = -4,
	YPPUSH_MADDR = -5,
	YPPUSH_YPERR = -6,
	YPPUSH_BADARGS = -7,
	YPPUSH_DBM = -8,
	YPPUSH_FILE = -9,
	YPPUSH_SKEW = -10,
	YPPUSH_CLEAR = -11,
	YPPUSH_FORCE = -12,
	YPPUSH_XFRERR = -13,
	YPPUSH_REFUSED = -14
};
typedef enum yppush_status yppush_status;


struct yppushresp_xfr {
	u_int transid;
	yppush_status status;
};
typedef struct yppushresp_xfr yppushresp_xfr;


enum ypbind_resptype {
	YPBIND_SUCC_VAL = 1,
	YPBIND_FAIL_VAL = 2
};
typedef enum ypbind_resptype ypbind_resptype;


struct ypbind_binding {
	char ypbind_binding_addr[4];
	char ypbind_binding_port[2];
};
typedef struct ypbind_binding ypbind_binding;


struct ypbind_resp {
	ypbind_resptype ypbind_status;
	union {
		u_int ypbind_error;
		ypbind_binding ypbind_bindinfo;
	} ypbind_resp_u;
};
typedef struct ypbind_resp ypbind_resp;


#define YPBIND_ERR_ERR 1
#define YPBIND_ERR_NOSERV 2
#define YPBIND_ERR_RESC 3

struct ypbind_setdom {
	domainname ypsetdom_domain;
	ypbind_binding ypsetdom_binding;
	u_int ypsetdom_vers;
};
typedef struct ypbind_setdom ypbind_setdom;

enum ypreqtype {
        YPREQ_KEY = 1,
        YPREQ_NOKEY = 2,
        YPREQ_MAP_PARMS = 3,
};
typedef enum ypreqtype ypreqtype;

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

struct yprequest {
        ypreqtype yp_reqtype;
        union {
                ypreq_key yp_req_keytype;
                ypreq_nokey yp_req_nokeytype;
                ypmap_parms yp_req_map_parmstype;
        } yprequest_u;
};
typedef struct yprequest yprequest;

struct ypresponse {
        ypresptype yp_resptype;
        union {
                ypresp_val yp_resp_valtype;
                ypresp_key_val yp_resp_key_valtype;
                ypmap_parms yp_resp_map_parmstype;
        } ypresponse_u;
};
typedef struct ypresponse ypresponse;


#define YPPROG ((u_long)100004)
#define YPOLDVERS ((u_long)1)
#define YPVERS ((u_long)2)


#if defined(__STDC__) || defined(__cplusplus)
#define YPOLDPROC_NULL ((unsigned long)0)
extern  void * ypoldproc_null_1(void *, CLIENT *);
extern  void * ypoldproc_null_1_svc(void *, struct svc_req *);
#define YPOLDPROC_DOMAIN ((unsigned long)1)
extern  bool_t * ypoldproc_domain_1(domainname *, CLIENT *);
extern  bool_t * ypoldproc_domain_1_svc(domainname *, struct svc_req *);
#define YPOLDPROC_DOMAIN_NONACK ((unsigned long)2)
extern  bool_t * ypoldproc_domain_nonack_1(domainname *, CLIENT *);
extern  bool_t * ypoldproc_domain_nonack_1_svc(domainname *, struct svc_req *);
#define YPOLDPROC_MATCH ((unsigned long)3)
extern  ypresponse * ypoldproc_match_1(yprequest *, CLIENT *);
extern  ypresponse * ypoldproc_match_1_svc(yprequest *, struct svc_req *);
#define YPOLDPROC_FIRST ((unsigned long)4)
extern  ypresponse * ypoldproc_first_1(yprequest *, CLIENT *);
extern  ypresponse * ypoldproc_first_1_svc(yprequest *, struct svc_req *);
#define YPOLDPROC_NEXT ((unsigned long)5)
extern  ypresponse * ypoldproc_next_1(yprequest *, CLIENT *);
extern  ypresponse * ypoldproc_next_1_svc(yprequest *, struct svc_req *);
#define YPOLDPROC_POLL ((unsigned long)6)
extern  ypresponse * ypoldproc_poll_1(yprequest *, CLIENT *);
extern  ypresponse * ypoldproc_poll_1_svc(yprequest *, struct svc_req *);
#define YPOLDPROC_PUSH ((unsigned long)7)
extern  ypresponse * ypoldproc_push_1(yprequest *, CLIENT *);
extern  ypresponse * ypoldproc_push_1_svc(yprequest *, struct svc_req *);
#define YPOLDPROC_PULL ((unsigned long)8)
extern  ypresponse * ypoldproc_pull_1(yprequest *, CLIENT *);
extern  ypresponse * ypoldproc_pull_1_svc(yprequest *, struct svc_req *);
#define YPOLDPROC_GET ((unsigned long)9)
extern  ypresponse * ypoldproc_get_1(yprequest *, CLIENT *);
extern  ypresponse * ypoldproc_get_1_svc(yprequest *, struct svc_req *);
extern int ypprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t);

#else /* K&R C */
#define YPOLDPROC_NULL ((unsigned long)0)
extern  void * ypoldproc_null_1();
extern  void * ypoldproc_null_1_svc();
#define YPOLDPROC_DOMAIN ((unsigned long)1)
extern  bool_t * ypoldproc_domain_1();
extern  bool_t * ypoldproc_domain_1_svc();
#define YPOLDPROC_DOMAIN_NONACK ((unsigned long)2)
extern  bool_t * ypoldproc_domain_nonack_1();
extern  bool_t * ypoldproc_domain_nonack_1_svc();
#define YPOLDPROC_MATCH ((unsigned long)3)
extern  ypresponse * ypoldproc_match_1();
extern  ypresponse * ypoldproc_match_1_svc();
#define YPOLDPROC_FIRST ((unsigned long)4)
extern  ypresponse * ypoldproc_first_1();
extern  ypresponse * ypoldproc_first_1_svc();
#define YPOLDPROC_NEXT ((unsigned long)5)
extern  ypresponse * ypoldproc_next_1();
extern  ypresponse * ypoldproc_next_1_svc();
#define YPOLDPROC_POLL ((unsigned long)6)
extern  ypresponse * ypoldproc_poll_1();
extern  ypresponse * ypoldproc_poll_1_svc();
#define YPOLDPROC_PUSH ((unsigned long)7)
extern  ypresponse * ypoldproc_push_1();
extern  ypresponse * ypoldproc_push_1_svc();
#define YPOLDPROC_PULL ((unsigned long)8)
extern  ypresponse * ypoldproc_pull_1();
extern  ypresponse * ypoldproc_pull_1_svc();
#define YPOLDPROC_GET ((unsigned long)9)
extern  ypresponse * ypoldproc_get_1();
extern  ypresponse * ypoldproc_get_1_svc();
extern int ypprog_1_freeresult ();
#endif /* K&R C */

#if defined(__STDC__) || defined(__cplusplus)
#define YPPROC_NULL ((u_long)0)
extern  void * ypproc_null_2(void *, CLIENT *);
extern  void * ypproc_null_2_svc(void *, struct svc_req *);
#define YPPROC_DOMAIN ((u_long)1)
extern  bool_t * ypproc_domain_2(domainname *, CLIENT *);
extern  bool_t * ypproc_domain_2_svc(domainname *, struct svc_req *);
#define YPPROC_DOMAIN_NONACK ((u_long)2)
extern  bool_t * ypproc_domain_nonack_2(domainname *, CLIENT *);
extern  bool_t * ypproc_domain_nonack_2_svc(domainname *, struct svc_req *);
#define YPPROC_MATCH ((u_long)3)
extern  ypresp_val * ypproc_match_2(ypreq_key *, CLIENT *);
extern  ypresp_val * ypproc_match_2_svc(ypreq_key *, struct svc_req *);
#define YPPROC_FIRST ((u_long)4)
extern  ypresp_key_val * ypproc_first_2(ypreq_nokey *, CLIENT *);
extern  ypresp_key_val * ypproc_first_2_svc(ypreq_nokey *, struct svc_req *);
#define YPPROC_NEXT ((u_long)5)
extern  ypresp_key_val * ypproc_next_2(ypreq_key *, CLIENT *);
extern  ypresp_key_val * ypproc_next_2_svc(ypreq_key *, struct svc_req *);
#define YPPROC_XFR ((u_long)6)
extern  ypresp_xfr * ypproc_xfr_2(ypreq_xfr *, CLIENT *);
extern  ypresp_xfr * ypproc_xfr_2_svc(ypreq_xfr *, struct svc_req *);
#define YPPROC_CLEAR ((u_long)7)
extern  void * ypproc_clear_2(void *, CLIENT *);
extern  void * ypproc_clear_2_svc(void *, struct svc_req *);
#define YPPROC_ALL ((u_long)8)
extern  ypresp_all * ypproc_all_2(ypreq_nokey *, CLIENT *);
extern  ypresp_all * ypproc_all_2_svc(ypreq_nokey *, struct svc_req *);
#define YPPROC_MASTER ((u_long)9)
extern  ypresp_master * ypproc_master_2(ypreq_nokey *, CLIENT *);
extern  ypresp_master * ypproc_master_2_svc(ypreq_nokey *, struct svc_req *);
#define YPPROC_ORDER ((u_long)10)
extern  ypresp_order * ypproc_order_2(ypreq_nokey *, CLIENT *);
extern  ypresp_order * ypproc_order_2_svc(ypreq_nokey *, struct svc_req *);
#define YPPROC_MAPLIST ((u_long)11)
extern  ypresp_maplist * ypproc_maplist_2(domainname *, CLIENT *);
extern  ypresp_maplist * ypproc_maplist_2_svc(domainname *, struct svc_req *);

#else /* Old Style C */
#define YPPROC_NULL ((u_long)0)
extern  void * ypproc_null_2();
extern  void * ypproc_null_2_svc();
#define YPPROC_DOMAIN ((u_long)1)
extern  bool_t * ypproc_domain_2();
extern  bool_t * ypproc_domain_2_svc();
#define YPPROC_DOMAIN_NONACK ((u_long)2)
extern  bool_t * ypproc_domain_nonack_2();
extern  bool_t * ypproc_domain_nonack_2_svc();
#define YPPROC_MATCH ((u_long)3)
extern  ypresp_val * ypproc_match_2();
extern  ypresp_val * ypproc_match_2_svc();
#define YPPROC_FIRST ((u_long)4)
extern  ypresp_key_val * ypproc_first_2();
extern  ypresp_key_val * ypproc_first_2_svc();
#define YPPROC_NEXT ((u_long)5)
extern  ypresp_key_val * ypproc_next_2();
extern  ypresp_key_val * ypproc_next_2_svc();
#define YPPROC_XFR ((u_long)6)
extern  ypresp_xfr * ypproc_xfr_2();
extern  ypresp_xfr * ypproc_xfr_2_svc();
#define YPPROC_CLEAR ((u_long)7)
extern  void * ypproc_clear_2();
extern  void * ypproc_clear_2_svc();
#define YPPROC_ALL ((u_long)8)
extern  ypresp_all * ypproc_all_2();
extern  ypresp_all * ypproc_all_2_svc();
#define YPPROC_MASTER ((u_long)9)
extern  ypresp_master * ypproc_master_2();
extern  ypresp_master * ypproc_master_2_svc();
#define YPPROC_ORDER ((u_long)10)
extern  ypresp_order * ypproc_order_2();
extern  ypresp_order * ypproc_order_2_svc();
#define YPPROC_MAPLIST ((u_long)11)
extern  ypresp_maplist * ypproc_maplist_2();
extern  ypresp_maplist * ypproc_maplist_2_svc();
#endif /* Old Style C */

#define YPPUSH_XFRRESPPROG ((u_long)0x40000000)
#define YPPUSH_XFRRESPVERS ((u_long)1)

#ifdef __cplusplus
#define YPPUSHPROC_NULL ((u_long)0)
extern "C" void * yppushproc_null_1(void *, CLIENT *);
extern "C" void * yppushproc_null_1_svc(void *, struct svc_req *);
#define YPPUSHPROC_XFRRESP ((u_long)1)
extern "C" yppushresp_xfr * yppushproc_xfrresp_1(void *, CLIENT *);
extern "C" yppushresp_xfr * yppushproc_xfrresp_1_svc(void *, struct svc_req *);

#elif __STDC__
#define YPPUSHPROC_NULL ((u_long)0)
extern  void * yppushproc_null_1(void *, CLIENT *);
extern  void * yppushproc_null_1_svc(void *, struct svc_req *);
#define YPPUSHPROC_XFRRESP ((u_long)1)
extern  yppushresp_xfr * yppushproc_xfrresp_1(void *, CLIENT *);
extern  yppushresp_xfr * yppushproc_xfrresp_1_svc(void *, struct svc_req *);

#else /* Old Style C */
#define YPPUSHPROC_NULL ((u_long)0)
extern  void * yppushproc_null_1();
extern  void * yppushproc_null_1_svc();
#define YPPUSHPROC_XFRRESP ((u_long)1)
extern  yppushresp_xfr * yppushproc_xfrresp_1();
extern  yppushresp_xfr * yppushproc_xfrresp_1_svc();
#endif /* Old Style C */

#define YPBINDPROG ((u_long)100007)
#define YPBINDVERS ((u_long)2)


#if defined(__STDC__) || defined(__cplusplus)
#define YPBINDPROC_NULL ((u_long)0)
extern  void * ypbindproc_null_2(void *, CLIENT *);
extern  void * ypbindproc_null_2_svc(void *, struct svc_req *);
#define YPBINDPROC_DOMAIN ((u_long)1)
extern  ypbind_resp * ypbindproc_domain_2(domainname *, CLIENT *);
extern  ypbind_resp * ypbindproc_domain_2_svc(domainname *, struct svc_req *);
#define YPBINDPROC_SETDOM ((u_long)2)
extern  void * ypbindproc_setdom_2(ypbind_setdom *, CLIENT *);
extern  void * ypbindproc_setdom_2_svc(ypbind_setdom *, struct svc_req *);

#else /* Old Style C */
#define YPBINDPROC_NULL ((u_long)0)
extern  void * ypbindproc_null_2();
extern  void * ypbindproc_null_2_svc();
#define YPBINDPROC_DOMAIN ((u_long)1)
extern  ypbind_resp * ypbindproc_domain_2();
extern  ypbind_resp * ypbindproc_domain_2_svc();
#define YPBINDPROC_SETDOM ((u_long)2)
extern  void * ypbindproc_setdom_2();
extern  void * ypbindproc_setdom_2_svc();
#endif /* Old Style C */

/* the xdr functions */

#if defined(__STDC__) || defined(__cplusplus)
extern  bool_t xdr_ypstat (XDR *, ypstat*);
extern  bool_t xdr_ypxfrstat (XDR *, ypxfrstat*);
extern  bool_t xdr_domainname (XDR *, domainname*);
extern  bool_t xdr_mapname (XDR *, mapname*);
extern  bool_t xdr_peername (XDR *, peername*);
extern  bool_t xdr_keydat (XDR *, keydat*);
extern  bool_t xdr_valdat (XDR *, valdat*);
extern  bool_t xdr_ypmap_parms (XDR *, ypmap_parms*);
extern  bool_t xdr_ypreq_key (XDR *, ypreq_key*);
extern  bool_t xdr_ypreq_nokey (XDR *, ypreq_nokey*);
extern  bool_t xdr_ypreq_xfr (XDR *, ypreq_xfr*);
extern  bool_t xdr_ypresp_val (XDR *, ypresp_val*);
extern  bool_t xdr_ypresp_key_val (XDR *, ypresp_key_val*);
extern  bool_t xdr_ypresp_master (XDR *, ypresp_master*);
extern  bool_t xdr_ypresp_order (XDR *, ypresp_order*);
extern  bool_t xdr_ypresp_all (XDR *, ypresp_all*);
extern  bool_t xdr_ypresp_xfr (XDR *, ypresp_xfr*);
extern  bool_t xdr_ypmaplist (XDR *, ypmaplist*);
extern  bool_t xdr_ypresp_maplist (XDR *, ypresp_maplist*);
extern  bool_t xdr_yppush_status (XDR *, yppush_status*);
extern  bool_t xdr_yppushresp_xfr (XDR *, yppushresp_xfr*);
extern  bool_t xdr_ypbind_resptype (XDR *, ypbind_resptype*);
extern  bool_t xdr_ypbind_binding (XDR *, ypbind_binding*);
extern  bool_t xdr_ypbind_resp (XDR *, ypbind_resp*);
extern  bool_t xdr_ypbind_setdom (XDR *, ypbind_setdom*);
extern  bool_t xdr_ypreqtype (XDR *, ypreqtype*);
extern  bool_t xdr_ypresptype (XDR *, ypresptype*);
extern  bool_t xdr_yprequest (XDR *, yprequest*);
extern  bool_t xdr_ypresponse (XDR *, ypresponse*);

#else /* K&R C */
extern bool_t xdr_ypstat ();
extern bool_t xdr_ypxfrstat ();
extern bool_t xdr_domainname ();
extern bool_t xdr_mapname ();
extern bool_t xdr_peername ();
extern bool_t xdr_keydat ();
extern bool_t xdr_valdat ();
extern bool_t xdr_ypmap_parms ();
extern bool_t xdr_ypreq_key ();
extern bool_t xdr_ypreq_nokey ();
extern bool_t xdr_ypreq_xfr ();
extern bool_t xdr_ypresp_val ();
extern bool_t xdr_ypresp_key_val ();
extern bool_t xdr_ypresp_master ();
extern bool_t xdr_ypresp_order ();
extern bool_t xdr_ypresp_all ();
extern bool_t xdr_ypresp_xfr ();
extern bool_t xdr_ypmaplist ();
extern bool_t xdr_ypresp_maplist ();
extern bool_t xdr_yppush_status ();
extern bool_t xdr_yppushresp_xfr ();
extern bool_t xdr_ypbind_resptype ();
extern bool_t xdr_ypbind_binding ();
extern bool_t xdr_ypbind_resp ();
extern bool_t xdr_ypbind_setdom ();
extern bool_t xdr_ypreqtype ();
extern bool_t xdr_ypresptype ();
extern bool_t xdr_yprequest ();
extern bool_t xdr_ypresponse ();
#endif /* K&R C */

#ifdef __cplusplus
}
#endif

#endif /* !_YP_H_RPCGEN */
