home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.2 (Developer) / NS_dev_3.2.iso / NextDeveloper / Headers / bsd / rpcsvc / yp.x < prev    next >
Text File  |  1990-01-29  |  5KB  |  268 lines

  1. /*    @(#)yp.x    1.2 88/05/08 4.0NFSSRC SMI    */
  2.  
  3. /* 
  4.  * Copyright (c) 1988 by Sun Microsystems, Inc.
  5.  * @(#) from SUN 1.2
  6.  */
  7.  
  8. /*
  9.  * Protocol description file for the Yellow Pages Service
  10.  */
  11.  
  12. const YPMAXRECORD = 1024;
  13. const YPMAXDOMAIN = 64;
  14. const YPMAXMAP = 64;
  15. const YPMAXPEER = 64;
  16.  
  17.  
  18. enum ypstat {
  19.     YP_TRUE        =  1,
  20.     YP_NOMORE    =  2,
  21.     YP_FALSE    =  0,
  22.     YP_NOMAP    = -1,
  23.     YP_NODOM    = -2,
  24.     YP_NOKEY    = -3,
  25.     YP_BADOP    = -4,
  26.     YP_BADDB    = -5,
  27.     YP_YPERR    = -6,
  28.     YP_BADARGS    = -7,
  29.     YP_VERS        = -8
  30. };
  31.  
  32.  
  33. enum ypxfrstat {
  34.     YPXFR_SUCC    =  1,
  35.     YPXFR_AGE    =  2,
  36.     YPXFR_NOMAP    = -1,
  37.     YPXFR_NODOM    = -2,
  38.     YPXFR_RSRC    = -3,
  39.     YPXFR_RPC    = -4,
  40.     YPXFR_MADDR    = -5,
  41.     YPXFR_YPERR    = -6,
  42.     YPXFR_BADARGS    = -7,
  43.     YPXFR_DBM    = -8,
  44.     YPXFR_FILE    = -9,
  45.     YPXFR_SKEW    = -10,
  46.     YPXFR_CLEAR    = -11,
  47.     YPXFR_FORCE    = -12,
  48.     YPXFR_XFRERR    = -13,
  49.     YPXFR_REFUSED    = -14
  50. };
  51.  
  52.  
  53. typedef string domainname<YPMAXDOMAIN>;
  54. typedef string mapname<YPMAXMAP>;
  55. typedef string peername<YPMAXPEER>;
  56. typedef opaque keydat<YPMAXRECORD>;
  57. typedef opaque valdat<YPMAXRECORD>;
  58.  
  59.  
  60. struct ypmap_parms {
  61.     domainname domain;    
  62.     mapname map;
  63.     unsigned int ordernum;
  64.     peername peer;
  65. };
  66.  
  67. struct ypreq_key {
  68.     domainname domain;
  69.     mapname map;
  70.     keydat key;
  71. };
  72.  
  73. struct ypreq_nokey {
  74.     domainname domain;    
  75.     mapname map;
  76. };
  77.     
  78. struct ypreq_xfr {
  79.     ypmap_parms map_parms;
  80.     unsigned int transid;
  81.     unsigned int prog;
  82.     unsigned int port;
  83. };
  84.  
  85.  
  86. struct ypresp_val {
  87.     ypstat stat;
  88.     valdat val;
  89. };
  90.  
  91. struct ypresp_key_val {
  92.     ypstat stat;
  93.     keydat key;
  94.     valdat val;
  95. };
  96.  
  97.  
  98. struct ypresp_master {
  99.     ypstat stat;    
  100.     peername peer;
  101. };
  102.  
  103. struct ypresp_order {
  104.     ypstat stat;
  105.     unsigned int ordernum;
  106. };
  107.  
  108. union ypresp_all switch (bool more) {
  109. case TRUE:
  110.     ypresp_key_val val;
  111. case FALSE:
  112.     void;
  113. };
  114.  
  115. struct ypresp_xfr {
  116.     unsigned int transid;
  117.     ypxfrstat xfrstat;
  118. };
  119.  
  120. struct ypmaplist {
  121.     mapname map;
  122.     ypmaplist *next;
  123. };
  124.  
  125. struct ypresp_maplist {
  126.     ypstat stat;
  127.     ypmaplist *maps;
  128. };
  129.  
  130. enum yppush_status {
  131.     YPPUSH_SUCC    =  1,    /* Success */
  132.     YPPUSH_AGE     =  2,    /* Master's version not newer */
  133.     YPPUSH_NOMAP    = -1,    /* Can't find server for map */
  134.     YPPUSH_NODOM    = -2,    /* Domain not supported */
  135.     YPPUSH_RSRC    = -3,    /* Local resource alloc failure */
  136.     YPPUSH_RPC    = -4,    /* RPC failure talking to server */
  137.     YPPUSH_MADDR     = -5,    /* Can't get master address */
  138.     YPPUSH_YPERR    = -6,    /* YP server/map db error */
  139.     YPPUSH_BADARGS    = -7,    /* Request arguments bad */
  140.     YPPUSH_DBM    = -8,    /* Local dbm operation failed */
  141.     YPPUSH_FILE    = -9,    /* Local file I/O operation failed */
  142.     YPPUSH_SKEW    = -10,    /* Map version skew during transfer */
  143.     YPPUSH_CLEAR    = -11,    /* Can't send "Clear" req to local ypserv */
  144.     YPPUSH_FORCE    = -12,    /* No local order number in map  use -f flag. */
  145.     YPPUSH_XFRERR     = -13,    /* ypxfr error */
  146.     YPPUSH_REFUSED    = -14     /* Transfer request refused by ypserv */
  147. };
  148.  
  149. struct yppushresp_xfr {
  150.     unsigned transid;
  151.     yppush_status status;
  152. };
  153.  
  154. /*
  155.  * Response structure and overall result status codes.  Success and failure
  156.  * represent two separate response message types.
  157.  */
  158.  
  159. enum ypbind_resptype {
  160.     YPBIND_SUCC_VAL = 1, 
  161.     YPBIND_FAIL_VAL = 2
  162. };
  163.  
  164. struct ypbind_binding {
  165.     opaque ypbind_binding_addr[4]; /* In network order */
  166.     opaque ypbind_binding_port[2]; /* In network order */
  167. };   
  168.  
  169. union ypbind_resp switch (ypbind_resptype ypbind_status) {
  170. case YPBIND_FAIL_VAL:
  171.         unsigned ypbind_error;
  172. case YPBIND_SUCC_VAL:
  173.         ypbind_binding ypbind_bindinfo;
  174. };     
  175.  
  176. /* Detailed failure reason codes for response field ypbind_error*/
  177.  
  178. const YPBIND_ERR_ERR    = 1;    /* Internal error */
  179. const YPBIND_ERR_NOSERV = 2;    /* No bound server for passed domain */
  180. const YPBIND_ERR_RESC   = 3;    /* System resource allocation failure */
  181.  
  182.  
  183. /*
  184.  * Request data structure for ypbind "Set domain" procedure.
  185.  */
  186. struct ypbind_setdom {
  187.     domainname ypsetdom_domain;
  188.     ypbind_binding ypsetdom_binding;
  189.     unsigned ypsetdom_vers;
  190. };
  191.  
  192.  
  193. /*
  194.  * YP access protocol
  195.  */
  196. program YPPROG {
  197.     version YPVERS {
  198.         void 
  199.         YPPROC_NULL(void) = 0;
  200.  
  201.         bool 
  202.         YPPROC_DOMAIN(domainname) = 1;    
  203.  
  204.         bool
  205.         YPPROC_DOMAIN_NONACK(domainname) = 2;
  206.  
  207.         ypresp_val
  208.         YPPROC_MATCH(ypreq_key) = 3;
  209.  
  210.         ypresp_key_val 
  211.         YPPROC_FIRST(ypreq_key) = 4;
  212.  
  213.         ypresp_key_val 
  214.         YPPROC_NEXT(ypreq_key) = 5;
  215.  
  216.         ypresp_xfr
  217.         YPPROC_XFR(ypreq_xfr) = 6;
  218.  
  219.         void
  220.         YPPROC_CLEAR(void) = 7;
  221.  
  222.         ypresp_all
  223.         YPPROC_ALL(ypreq_nokey) = 8;
  224.  
  225.         ypresp_master
  226.         YPPROC_MASTER(ypreq_nokey) = 9;
  227.  
  228.         ypresp_order
  229.         YPPROC_ORDER(ypreq_nokey) = 10;
  230.  
  231.         ypresp_maplist 
  232.         YPPROC_MAPLIST(domainname) = 11;
  233.     } = 2;
  234. } = 100004;
  235.  
  236.  
  237. /*
  238.  * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
  239.  */
  240. program YPPUSH_XFRRESPPROG {
  241.     version YPPUSH_XFRRESPVERS {
  242.         void
  243.         YPPUSHPROC_NULL(void) = 0;
  244.  
  245.         yppushresp_xfr    
  246.         YPPUSHPROC_XFRRESP(void) = 1;
  247.     } = 1;
  248. } = 0x40000000;    /* transient: could be anything up to 0x5fffffff */
  249.  
  250.  
  251. /*
  252.  * YP binding protocol
  253.  */
  254. program YPBINDPROG {
  255.     version YPBINDVERS {
  256.         void
  257.         YPBINDPROC_NULL(void) = 0;
  258.     
  259.         ypbind_resp
  260.         YPBINDPROC_DOMAIN(domainname) = 1;
  261.  
  262.         void
  263.         YPBINDPROC_SETDOM(ypbind_setdom) = 2;
  264.     } = 2;
  265. } = 100007;
  266.  
  267.  
  268.