123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366 |
- /*
- * This file contains symbols and structures defining the rpc protocol
- * between the NIS clients and the NIS servers. The servers
- * are the NIS database servers, and the NIS binders.
- */
- #ifndef _RPCSVC_YP_PROT_H
- #define _RPCSVC_YP_PROT_H
- #include <features.h>
- #include <rpc/rpc.h>
- #include <rpcsvc/ypclnt.h>
- __BEGIN_DECLS
- /*
- * The following procedures are supported by the protocol:
- *
- * YPPROC_NULL() returns () takes nothing, returns nothing. This indicates
- * that the NIS server is alive.
- *
- * YPPROC_DOMAIN (char *) returns (bool_t) TRUE. Indicates that the
- * responding NIS server does serve the named domain; FALSE indicates no
- * support.
- *
- * YPPROC_DOMAIN_NONACK (char *) returns (TRUE) if the NIS server does serve
- * the named domain, otherwise does not return. Used in the broadcast case.
- *
- * YPPROC_MATCH (struct ypreq_key) returns (struct ypresp_val). Returns the
- * right-hand value for a passed left-hand key, within a named map and
- * domain.
- *
- * YPPROC_FIRST (struct ypreq_nokey) returns (struct ypresp_key_val).
- * Returns the first key-value pair from a named domain and map.
- *
- * YPPROC_NEXT (struct ypreq_key) returns (struct ypresp_key_val). Returns
- * the key-value pair following a passed key-value pair within a named
- * domain and map.
- *
- * YPPROC_XFR (struct ypreq_xfr) returns nothing. Indicates to a server that
- * a map should be updated.
- *
- * YPPROC_CLEAR takes nothing, returns nothing. Instructs a NIS server to
- * close the current map, so that old versions of the disk file don't get
- * held open.
- *
- * YPPROC_ALL (struct ypreq_nokey), returns
- * union switch (bool_t more) {
- * TRUE: (struct ypresp_key_val);
- * FALSE: (struct) {};
- * }
- *
- * YPPROC_MASTER (struct ypreq_nokey), returns (ypresp_master)
- *
- * YPPROC_ORDER (struct ypreq_nokey), returns (ypresp_order)
- *
- * YPPROC_MAPLIST (char *), returns (struct ypmaplist *)
- */
- /* Program and version symbols, magic numbers */
- #define YPPROG 100004
- #define YPVERS 2
- #define YPVERS_ORIG 1
- #define YPMAXRECORD 1024
- #define YPMAXDOMAIN 64 /* XXX orig. yp_prot.h defines 256 */
- #define YPMAXMAP 64
- #define YPMAXPEER 64 /* XXX orig. yp_prot.h defines 256 */
- /* byte size of a large NIS packet */
- #define YPMSGSZ 1600
- typedef struct {
- u_int keydat_len;
- char *keydat_val;
- } keydat_t;
- typedef struct {
- u_int valdat_len;
- char *valdat_val;
- } valdat_t;
- struct ypmap_parms {
- char *domain; /* Null string means not available */
- char *map; /* Null string means not available */
- unsigned int ordernum; /* 0 means not available */
- char *owner; /* Null string means not available */
- };
- /*
- * Request parameter structures
- */
- struct ypreq_key {
- const char *domain;
- const char *map;
- keydat_t keydat;
- };
- struct ypreq_nokey {
- char *domain;
- char *map;
- };
- struct ypreq_xfr {
- struct ypmap_parms map_parms;
- u_int transid;
- u_int proto;
- u_int port;
- };
- #define ypxfr_domain map_parms.domain
- #define ypxfr_map map_parms.map
- #define ypxfr_ordernum map_parms.ordernum
- #define ypxfr_owner map_parms.owner
- /* Return status values */
- enum ypstat {
- YP_TRUE = 1, /* General purpose success code */
- #define YP_TRUE YP_TRUE
- YP_NOMORE = 2, /* No more entries in map */
- #define YP_NOMORE YP_NOMORE
- YP_FALSE = 0, /* General purpose failure code */
- #define YP_FALSE YP_FALSE
- YP_NOMAP = -1, /* No such map in domain */
- #define YP_NOMAP YP_NOMAP
- YP_NODOM = -2, /* Domain not supported */
- #define YP_NODOM YP_NODOM
- YP_NOKEY = -3, /* No such key in map */
- #define YP_NOKEY YP_NOKEY
- YP_BADOP = -4, /* Invalid operation */
- #define YP_BADOP YP_BADOP
- YP_BADDB = -5, /* Server data base is bad */
- #define YP_BADDB YP_BADDB
- YP_YPERR = -6, /* NIS server error */
- #define YP_YPERR YP_YPERR
- YP_BADARGS = -7, /* Request arguments bad */
- #define YP_BADARGS YP_BADARGS
- YP_VERS = -8, /* NIS server version mismatch - server can't supply
- requested service. */
- #define YP_VERS YP_VERS
- };
- /*
- * Response parameter structures
- */
- typedef enum ypstat ypstat;
- struct ypresp_val {
- ypstat status;
- valdat_t valdat;
- };
- struct ypresp_key_val {
- ypstat status;
- #ifdef STUPID_SUN_BUG
- /* This is the form as distributed by Sun. But even the Sun NIS
- servers expect the values in the other order. So their
- implementation somehow must change the order internally. We
- don't want to follow this bad example since the user should be
- able to use rpcgen on this file. */
- keydat_t keydat;
- valdat_t valdat;
- #else
- valdat_t valdat;
- keydat_t keydat;
- #endif
- };
- struct ypresp_master {
- ypstat status;
- char *master;
- };
- struct ypresp_order {
- ypstat status;
- u_int ordernum;
- };
- struct ypmaplist {
- char *map;
- #define ypml_name map
- struct ypmaplist *next;
- #define ypml_next next
- };
- struct ypresp_maplist {
- ypstat status;
- struct ypmaplist *list;
- };
- /*
- * Procedure symbols. YPPROC_NULL, YPPROC_DOMAIN, and YPPROC_DOMAIN_NONACK
- * must keep the same values (0, 1, and 2) that they had in the first version
- * of the protocol.
- */
- #define YPPROC_NULL 0
- #define YPPROC_DOMAIN 1
- #define YPPROC_DOMAIN_NONACK 2
- #define YPPROC_MATCH 3
- #define YPPROC_FIRST 4
- #define YPPROC_NEXT 5
- #define YPPROC_XFR 6
- #define YPPROC_CLEAR 7
- #define YPPROC_ALL 8
- #define YPPROC_MASTER 9
- #define YPPROC_ORDER 10
- #define YPPROC_MAPLIST 11
- #define YPPROC_NEWXFR 12
- /*
- * Protocol between clients and NIS binder servers
- */
- /*
- * The following procedures are supported by the protocol:
- *
- * YPBINDPROC_NULL() returns ()
- * takes nothing, returns nothing
- *
- * YPBINDPROC_DOMAIN takes (char *) returns (struct ypbind_resp)
- *
- * YPBINDPROC_SETDOM takes (struct ypbind_setdom) returns nothing
- */
- /* Program and version symbols, magic numbers */
- #define YPBINDPROG 100007
- #define YPBINDVERS 2
- #define YPBINDVERS_ORIG 1
- /* Procedure symbols */
- #define YPBINDPROC_NULL 0
- #define YPBINDPROC_DOMAIN 1
- #define YPBINDPROC_SETDOM 2
- /*
- * 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 {
- struct in_addr ypbind_binding_addr; /* In network order */
- unsigned short int ypbind_binding_port; /* In network order */
- };
- struct ypbind_resp {
- enum ypbind_resptype ypbind_status;
- union {
- u_int ypbind_error;
- struct ypbind_binding ypbind_bindinfo;
- } ypbind_respbody;
- };
- /* Detailed failure reason codes for response field ypbind_error*/
- #define YPBIND_ERR_ERR 1 /* Internal error */
- #define YPBIND_ERR_NOSERV 2 /* No bound server for passed domain */
- #define YPBIND_ERR_RESC 3 /* System resource allocation failure */
- /*
- * Request data structure for ypbind "Set domain" procedure.
- */
- struct ypbind_setdom {
- char *ypsetdom_domain;
- struct ypbind_binding ypsetdom_binding;
- u_int ypsetdom_vers;
- };
- #define ypsetdom_addr ypsetdom_binding.ypbind_binding_addr
- #define ypsetdom_port ypsetdom_binding.ypbind_binding_port
- /*
- * Protocol between clients (ypxfr, only) and yppush
- * yppush speaks a protocol in the transient range, which
- * is supplied to ypxfr as a command-line parameter when it
- * is activated by ypserv.
- */
- #define YPPUSHVERS 1
- #define YPPUSHVERS_ORIG 1
- /* Procedure symbols */
- #define YPPUSHPROC_NULL 0
- #define YPPUSHPROC_XFRRESP 1
- /* Status values for yppushresp_xfr.status */
- enum yppush_status {
- YPPUSH_SUCC = 1, /* Success */
- #define YPPUSH_SUCC YPPUSH_SUCC
- YPPUSH_AGE = 2, /* Master's version not newer */
- #define YPPUSH_AGE YPPUSH_AGE
- YPPUSH_NOMAP = -1, /* Can't find server for map */
- #define YPPUSH_NOMAP YPPUSH_NOMAP
- YPPUSH_NODOM = -2, /* Domain not supported */
- #define YPPUSH_NODOM YPPUSH_NODOM
- YPPUSH_RSRC = -3, /* Local resouce alloc failure */
- #define YPPUSH_RSRC YPPUSH_RSRC
- YPPUSH_RPC = -4, /* RPC failure talking to server */
- #define YPPUSH_RPC YPPUSH_RPC
- YPPUSH_MADDR = -5, /* Can't get master address */
- #define YPPUSH_MADDR YPPUSH_MADDR
- YPPUSH_YPERR = -6, /* NIS server/map db error */
- #define YPPUSH_YPERR YPPUSH_YPERR
- YPPUSH_BADARGS = -7, /* Request arguments bad */
- #define YPPUSH_BADARGS YPPUSH_BADARGS
- YPPUSH_DBM = -8, /* Local dbm operation failed */
- #define YPPUSH_DBM YPPUSH_DBM
- YPPUSH_FILE = -9, /* Local file I/O operation failed */
- #define YPPUSH_FILE YPPUSH_FILE
- YPPUSH_SKEW = -10, /* Map version skew during transfer */
- #define YPPUSH_SKEW YPPUSH_SKEW
- YPPUSH_CLEAR = -11, /* Can't send "Clear" req to local ypserv */
- #define YPPUSH_CLEAR YPPUSH_CLEAR
- YPPUSH_FORCE = -12, /* No local order number in map - use -f flag*/
- #define YPPUSH_FORCE YPPUSH_FORCE
- YPPUSH_XFRERR = -13, /* ypxfr error */
- #define YPPUSH_XFRERR YPPUSH_XFRERR
- YPPUSH_REFUSED = -14, /* Transfer request refused by ypserv */
- #define YPPUSH_REFUSED YPPUSH_REFUSED
- YPPUSH_NOALIAS = -15 /* Alias not found for map or domain */
- #define YPPUSH_NOALIAS YPPUSH_NOALIAS
- };
- typedef enum yppush_status yppush_status;
- struct yppushresp_xfr {
- u_int transid;
- yppush_status status;
- };
- struct ypresp_all {
- bool_t more;
- union {
- struct ypresp_key_val val;
- } ypresp_all_u;
- };
- extern bool_t xdr_ypreq_key (XDR *__xdrs, struct ypreq_key * __objp);
- extern bool_t xdr_ypreq_nokey (XDR *__xdrs, struct ypreq_nokey * __objp);
- extern bool_t xdr_ypreq_xfr (XDR *__xdrs, struct ypreq_xfr * __objp);
- extern bool_t xdr_ypresp_val (XDR *__xdrs, struct ypresp_val * __objp);
- extern bool_t xdr_ypresp_key_val (XDR *__xdrs, struct ypresp_key_val * __objp);
- extern bool_t xdr_ypbind_resp (XDR *__xdrs, struct ypbind_resp * __objp);
- extern bool_t xdr_ypbind_setdom (XDR *__xdrs, struct ypbind_setdom * __objp);
- extern bool_t xdr_ypmap_parms (XDR *__xdrs, struct ypmap_parms * __objp);
- extern bool_t xdr_yppushresp_xfr (XDR *__xdrs, struct yppushresp_xfr * __objp);
- extern bool_t xdr_ypresp_order (XDR *__xdrs, struct ypresp_order * __objp);
- extern bool_t xdr_ypresp_master (XDR *__xdrs, struct ypresp_master * __objp);
- extern bool_t xdr_ypall (XDR *__xdrs, struct ypall_callback * __objp);
- extern bool_t xdr_ypresp_maplist (XDR *__xdrs, struct ypresp_maplist * __objp);
- extern bool_t xdr_ypbind_binding (XDR *__xdrs, struct ypbind_binding * __objp);
- extern bool_t xdr_ypbind_resptype (XDR *__xdrs, enum ypbind_resptype * __objp);
- extern bool_t xdr_ypstat (XDR *__xdrs, enum ypbind_resptype * __objp);
- extern bool_t xdr_ypresp_all (XDR *__xdrs, struct ypresp_all * __objp);
- extern bool_t xdr_domainname (XDR *__xdrs, char ** __objp);
- __END_DECLS
- #endif /* _RPCSVC_YP_PROT_H */
|