(root)/
glibc-2.38/
nis/
rpcsvc/
yp.h
       1  /*
       2   * Copyright (c) 2010, Oracle America, Inc.
       3   *
       4   * Redistribution and use in source and binary forms, with or without
       5   * modification, are permitted provided that the following conditions are
       6   * met:
       7   *
       8   *     * Redistributions of source code must retain the above copyright
       9   *       notice, this list of conditions and the following disclaimer.
      10   *     * Redistributions in binary form must reproduce the above
      11   *       copyright notice, this list of conditions and the following
      12   *       disclaimer in the documentation and/or other materials
      13   *       provided with the distribution.
      14   *     * Neither the name of the "Oracle America, Inc." nor the names of its
      15   *       contributors may be used to endorse or promote products derived
      16   *       from this software without specific prior written permission.
      17   *
      18   *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      19   *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      20   *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
      21   *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
      22   *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
      23   *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      24   *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
      25   *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
      26   *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
      27   *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
      28   *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
      29   *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      30   */
      31  
      32  #ifndef __RPCSVC_YP_H__
      33  #define __RPCSVC_YP_H__
      34  
      35  #include <features.h>
      36  #include <rpc/rpc.h>
      37  
      38  #define YPMAXRECORD 1024
      39  #define YPMAXDOMAIN 64
      40  #define YPMAXMAP 64
      41  #define YPMAXPEER 64
      42  
      43  enum ypstat {
      44  	YP_TRUE = 1,
      45  	YP_NOMORE = 2,
      46  	YP_FALSE = 0,
      47  	YP_NOMAP = -1,
      48  	YP_NODOM = -2,
      49  	YP_NOKEY = -3,
      50  	YP_BADOP = -4,
      51  	YP_BADDB = -5,
      52  	YP_YPERR = -6,
      53  	YP_BADARGS = -7,
      54  	YP_VERS = -8,
      55  };
      56  typedef enum ypstat ypstat;
      57  
      58  enum ypxfrstat {
      59  	YPXFR_SUCC = 1,
      60  	YPXFR_AGE = 2,
      61  	YPXFR_NOMAP = -1,
      62  	YPXFR_NODOM = -2,
      63  	YPXFR_RSRC = -3,
      64  	YPXFR_RPC = -4,
      65  	YPXFR_MADDR = -5,
      66  	YPXFR_YPERR = -6,
      67  	YPXFR_BADARGS = -7,
      68  	YPXFR_DBM = -8,
      69  	YPXFR_FILE = -9,
      70  	YPXFR_SKEW = -10,
      71  	YPXFR_CLEAR = -11,
      72  	YPXFR_FORCE = -12,
      73  	YPXFR_XFRERR = -13,
      74  	YPXFR_REFUSED = -14,
      75  };
      76  typedef enum ypxfrstat ypxfrstat;
      77  
      78  typedef char *domainname;
      79  typedef char *mapname;
      80  typedef char *peername;
      81  
      82  typedef struct {
      83    u_int keydat_len;
      84    char *keydat_val;
      85  } keydat;
      86  
      87  typedef struct {
      88    u_int valdat_len;
      89    char *valdat_val;
      90  } valdat;
      91  
      92  struct ypmap_parms {
      93    domainname domain;
      94    mapname map;
      95    u_int ordernum;
      96    peername peer;
      97  };
      98  typedef struct ypmap_parms ypmap_parms;
      99  
     100  struct ypreq_key {
     101    domainname domain;
     102    mapname map;
     103    keydat key;
     104  };
     105  typedef struct ypreq_key ypreq_key;
     106  
     107  struct ypreq_nokey {
     108    domainname domain;
     109    mapname map;
     110  };
     111  typedef struct ypreq_nokey ypreq_nokey;
     112  
     113  struct ypreq_xfr {
     114    ypmap_parms map_parms;
     115    u_int transid;
     116    u_int prog;
     117    u_int port;
     118  };
     119  typedef struct ypreq_xfr ypreq_xfr;
     120  
     121  struct ypresp_val {
     122    ypstat stat;
     123    valdat val;
     124  };
     125  typedef struct ypresp_val ypresp_val;
     126  
     127  struct ypresp_key_val {
     128    ypstat stat;
     129  #ifdef STUPID_SUN_BUG
     130    /* This is the form as distributed by Sun.  But even the Sun NIS
     131       servers expect the values in the other order.  So their
     132       implementation somehow must change the order internally.  We
     133       don't want to follow this bad example since the user should be
     134       able to use rpcgen on this file.  */
     135    keydat key;
     136    valdat val;
     137  #else
     138    valdat val;
     139    keydat key;
     140  #endif
     141  };
     142  typedef struct ypresp_key_val ypresp_key_val;
     143  
     144  struct ypresp_master {
     145    ypstat stat;
     146    peername peer;
     147  };
     148  typedef struct ypresp_master ypresp_master;
     149  
     150  struct ypresp_order {
     151    ypstat stat;
     152    u_int ordernum;
     153  };
     154  typedef struct ypresp_order ypresp_order;
     155  
     156  struct ypresp_all {
     157    bool_t more;
     158    union {
     159      ypresp_key_val val;
     160    } ypresp_all_u;
     161  };
     162  typedef struct ypresp_all ypresp_all;
     163  
     164  struct ypresp_xfr {
     165    u_int transid;
     166    ypxfrstat xfrstat;
     167  };
     168  typedef struct ypresp_xfr ypresp_xfr;
     169  
     170  struct ypmaplist {
     171    mapname map;
     172    struct ypmaplist *next;
     173  };
     174  typedef struct ypmaplist ypmaplist;
     175  
     176  struct ypresp_maplist {
     177    ypstat stat;
     178    ypmaplist *maps;
     179  };
     180  typedef struct ypresp_maplist ypresp_maplist;
     181  
     182  enum yppush_status {
     183    YPPUSH_SUCC = 1,
     184    YPPUSH_AGE = 2,
     185    YPPUSH_NOMAP = -1,
     186    YPPUSH_NODOM = -2,
     187    YPPUSH_RSRC = -3,
     188    YPPUSH_RPC = -4,
     189    YPPUSH_MADDR = -5,
     190    YPPUSH_YPERR = -6,
     191    YPPUSH_BADARGS = -7,
     192    YPPUSH_DBM = -8,
     193    YPPUSH_FILE = -9,
     194    YPPUSH_SKEW = -10,
     195    YPPUSH_CLEAR = -11,
     196    YPPUSH_FORCE = -12,
     197    YPPUSH_XFRERR = -13,
     198    YPPUSH_REFUSED = -14,
     199  };
     200  typedef enum yppush_status yppush_status;
     201  
     202  struct yppushresp_xfr {
     203    u_int transid;
     204    yppush_status status;
     205  };
     206  typedef struct yppushresp_xfr yppushresp_xfr;
     207  
     208  enum ypbind_resptype {
     209    YPBIND_SUCC_VAL = 1,
     210    YPBIND_FAIL_VAL = 2,
     211  };
     212  typedef enum ypbind_resptype ypbind_resptype;
     213  
     214  struct ypbind_binding {
     215    char ypbind_binding_addr[4];
     216    char ypbind_binding_port[2];
     217  };
     218  typedef struct ypbind_binding ypbind_binding;
     219  
     220  struct ypbind_resp {
     221    ypbind_resptype ypbind_status;
     222    union {
     223      u_int ypbind_error;
     224      ypbind_binding ypbind_bindinfo;
     225    } ypbind_resp_u;
     226  };
     227  typedef struct ypbind_resp ypbind_resp;
     228  
     229  #define YPBIND_ERR_ERR 1
     230  #define YPBIND_ERR_NOSERV 2
     231  #define YPBIND_ERR_RESC 3
     232  
     233  struct ypbind_setdom {
     234    domainname ypsetdom_domain;
     235    ypbind_binding ypsetdom_binding;
     236    u_int ypsetdom_vers;
     237  };
     238  typedef struct ypbind_setdom ypbind_setdom;
     239  
     240  __BEGIN_DECLS
     241  
     242  #define YPPROG 100004
     243  #define YPVERS 2
     244  
     245  #define YPPROC_NULL 0
     246  extern  void *ypproc_null_2 (void *, CLIENT *);
     247  extern  void *ypproc_null_2_svc (void *, struct svc_req *);
     248  #define YPPROC_DOMAIN 1
     249  extern  bool_t *ypproc_domain_2 (domainname *, CLIENT *);
     250  extern  bool_t *ypproc_domain_2_svc (domainname *, struct svc_req *);
     251  #define YPPROC_DOMAIN_NONACK 2
     252  extern  bool_t *ypproc_domain_nonack_2 (domainname *, CLIENT *);
     253  extern  bool_t *ypproc_domain_nonack_2_svc (domainname *, struct svc_req *);
     254  #define YPPROC_MATCH 3
     255  extern  ypresp_val *ypproc_match_2 (ypreq_key *, CLIENT *);
     256  extern  ypresp_val *ypproc_match_2_svc (ypreq_key *, struct svc_req *);
     257  #define YPPROC_FIRST 4
     258  extern  ypresp_key_val *ypproc_first_2 (ypreq_key *, CLIENT *);
     259  extern  ypresp_key_val *ypproc_first_2_svc (ypreq_key *, struct svc_req *);
     260  #define YPPROC_NEXT 5
     261  extern  ypresp_key_val *ypproc_next_2 (ypreq_key *, CLIENT *);
     262  extern  ypresp_key_val *ypproc_next_2_svc (ypreq_key *, struct svc_req *);
     263  #define YPPROC_XFR 6
     264  extern  ypresp_xfr *ypproc_xfr_2 (ypreq_xfr *, CLIENT *);
     265  extern  ypresp_xfr *ypproc_xfr_2_svc (ypreq_xfr *, struct svc_req *);
     266  #define YPPROC_CLEAR 7
     267  extern  void *ypproc_clear_2 (void *, CLIENT *);
     268  extern  void *ypproc_clear_2_svc (void *, struct svc_req *);
     269  #define YPPROC_ALL 8
     270  extern  ypresp_all *ypproc_all_2 (ypreq_nokey *, CLIENT *);
     271  extern  ypresp_all *ypproc_all_2_svc (ypreq_nokey *, struct svc_req *);
     272  #define YPPROC_MASTER 9
     273  extern  ypresp_master *ypproc_master_2 (ypreq_nokey *, CLIENT *);
     274  extern  ypresp_master *ypproc_master_2_svc (ypreq_nokey *, struct svc_req *);
     275  #define YPPROC_ORDER 10
     276  extern  ypresp_order *ypproc_order_2 (ypreq_nokey *, CLIENT *);
     277  extern  ypresp_order *ypproc_order_2_svc (ypreq_nokey *, struct svc_req *);
     278  #define YPPROC_MAPLIST 11
     279  extern  ypresp_maplist *ypproc_maplist_2 (domainname *, CLIENT *);
     280  extern  ypresp_maplist *ypproc_maplist_2_svc (domainname *, struct svc_req *);
     281  extern int ypprog_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
     282  
     283  
     284  #define YPPUSH_XFRRESPPROG (0x40000000)
     285  #define YPPUSH_XFRRESPVERS 1
     286  
     287  #define YPPUSHPROC_NULL 0
     288  extern  void *yppushproc_null_1 (void *, CLIENT *);
     289  extern  void *yppushproc_null_1_svc (void *, struct svc_req *);
     290  #define YPPUSHPROC_XFRRESP 1
     291  extern  void *yppushproc_xfrresp_1 (yppushresp_xfr *, CLIENT *);
     292  extern  void *yppushproc_xfrresp_1_svc (yppushresp_xfr *, struct svc_req *);
     293  extern int yppush_xfrrespprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
     294  
     295  
     296  #define YPBINDPROG 100007
     297  #define YPBINDVERS 2
     298  
     299  #define YPBINDPROC_NULL 0
     300  extern  void *ypbindproc_null_2 (void *, CLIENT *);
     301  extern  void *ypbindproc_null_2_svc (void *, struct svc_req *);
     302  #define YPBINDPROC_DOMAIN 1
     303  extern  ypbind_resp *ypbindproc_domain_2 (domainname *, CLIENT *);
     304  extern  ypbind_resp *ypbindproc_domain_2_svc (domainname *, struct svc_req *);
     305  #define YPBINDPROC_SETDOM 2
     306  extern  void *ypbindproc_setdom_2 (ypbind_setdom *, CLIENT *);
     307  extern  void *ypbindproc_setdom_2_svc (ypbind_setdom *, struct svc_req *);
     308  extern int ypbindprog_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
     309  
     310  
     311  extern  bool_t xdr_ypstat (XDR *, ypstat*);
     312  extern  bool_t xdr_ypxfrstat (XDR *, ypxfrstat*);
     313  extern  bool_t xdr_domainname (XDR *, domainname*);
     314  extern  bool_t xdr_mapname (XDR *, mapname*);
     315  extern  bool_t xdr_peername (XDR *, peername*);
     316  extern  bool_t xdr_keydat (XDR *, keydat*);
     317  extern  bool_t xdr_valdat (XDR *, valdat*);
     318  extern  bool_t xdr_ypmap_parms (XDR *, ypmap_parms*);
     319  extern  bool_t xdr_ypreq_key (XDR *, ypreq_key*);
     320  extern  bool_t xdr_ypreq_nokey (XDR *, ypreq_nokey*);
     321  extern  bool_t xdr_ypreq_xfr (XDR *, ypreq_xfr*);
     322  extern  bool_t xdr_ypresp_val (XDR *, ypresp_val*);
     323  extern  bool_t xdr_ypresp_key_val (XDR *, ypresp_key_val*);
     324  extern  bool_t xdr_ypresp_master (XDR *, ypresp_master*);
     325  extern  bool_t xdr_ypresp_order (XDR *, ypresp_order*);
     326  extern  bool_t xdr_ypresp_all (XDR *, ypresp_all*);
     327  extern  bool_t xdr_ypresp_xfr (XDR *, ypresp_xfr*);
     328  extern  bool_t xdr_ypmaplist (XDR *, ypmaplist*);
     329  extern  bool_t xdr_ypresp_maplist (XDR *, ypresp_maplist*);
     330  extern  bool_t xdr_yppush_status (XDR *, yppush_status*);
     331  extern  bool_t xdr_yppushresp_xfr (XDR *, yppushresp_xfr*);
     332  extern  bool_t xdr_ypbind_resptype (XDR *, ypbind_resptype*);
     333  extern  bool_t xdr_ypbind_binding (XDR *, ypbind_binding*);
     334  extern  bool_t xdr_ypbind_resp (XDR *, ypbind_resp*);
     335  extern  bool_t xdr_ypbind_setdom (XDR *, ypbind_setdom*);
     336  
     337  __END_DECLS
     338  
     339  #endif /* !__RPCSVC_YP_H__ */