(root)/
glibc-2.38/
nis/
rpcsvc/
nis.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_NIS_H
      33  #define _RPCSVC_NIS_H 1
      34  
      35  #include <features.h>
      36  #include <rpc/rpc.h>
      37  #include <rpcsvc/nis_tags.h>
      38  
      39  __BEGIN_DECLS
      40  
      41  /*
      42   *	nis.h
      43   *
      44   *	This file is the main include file for NIS clients. It contains
      45   *	both the client library function defines and the various data
      46   *	structures used by the NIS service. It includes the file nis_tags.h
      47   *	which defines the tag values. This allows the tags to change without
      48   *	having to change the nis.x file.
      49   *
      50   *	NOTE : THIS FILE IS NOT GENERATED WITH RPCGEN ! SO YOU HAVE TO
      51   *             ADD ALL THE CHANGES ON nis_*.x FILES HERE AGAIN !
      52   *
      53   *      I have removed all the Solaris internal structs and variables,
      54   *      because they are not supported, Sun changed them between various
      55   *      releases and they shouldn't be used in user programs.
      56   *                                              <kukuk@suse.de>
      57   */
      58  
      59  
      60  #ifndef __nis_object_h
      61  #define __nis_object_h
      62  
      63  #define NIS_MAXSTRINGLEN 255
      64  #define NIS_MAXNAMELEN 1024
      65  #define NIS_MAXATTRNAME 32
      66  #define NIS_MAXATTRVAL 2048
      67  #define NIS_MAXCOLUMNS 64
      68  #define NIS_MAXATTR 16
      69  #define NIS_MAXPATH 1024
      70  #define NIS_MAXREPLICAS 128
      71  #define NIS_MAXLINKS 16
      72  #define NIS_PK_NONE 0
      73  #define NIS_PK_DH 1
      74  #define NIS_PK_RSA 2
      75  #define NIS_PK_KERB 3
      76  #define NIS_PK_DHEXT 4
      77  
      78  struct nis_attr {
      79  	char *zattr_ndx;
      80  	struct {
      81  		u_int zattr_val_len;
      82  		char *zattr_val_val;
      83  	} zattr_val;
      84  };
      85  typedef struct nis_attr nis_attr;
      86  
      87  typedef char *nis_name;
      88  
      89  enum zotypes {
      90  	BOGUS_OBJ = 0,
      91  	NO_OBJ = 1,
      92  	DIRECTORY_OBJ = 2,
      93  	GROUP_OBJ = 3,
      94  	TABLE_OBJ = 4,
      95  	ENTRY_OBJ = 5,
      96  	LINK_OBJ = 6,
      97  	PRIVATE_OBJ = 7,
      98  	NIS_BOGUS_OBJ = 0,
      99  	NIS_NO_OBJ = 1,
     100  	NIS_DIRECTORY_OBJ = 2,
     101  	NIS_GROUP_OBJ = 3,
     102  	NIS_TABLE_OBJ = 4,
     103  	NIS_ENTRY_OBJ = 5,
     104  	NIS_LINK_OBJ = 6,
     105  	NIS_PRIVATE_OBJ = 7
     106  };
     107  typedef enum zotypes zotypes;
     108  
     109  enum nstype {
     110  	UNKNOWN = 0,
     111  	NIS = 1,
     112  	SUNYP = 2,
     113  	IVY = 3,
     114  	DNS = 4,
     115  	X500 = 5,
     116  	DNANS = 6,
     117  	XCHS = 7,
     118  	CDS = 8,
     119  };
     120  typedef enum nstype nstype;
     121  
     122  struct oar_mask {
     123  	uint32_t oa_rights;
     124  	zotypes oa_otype;
     125  };
     126  typedef struct oar_mask oar_mask;
     127  
     128  struct endpoint {
     129  	char *uaddr;
     130  	char *family;
     131  	char *proto;
     132  };
     133  typedef struct endpoint endpoint;
     134  
     135  struct nis_server {
     136  	nis_name name;
     137  	struct {
     138  		u_int ep_len;
     139  		endpoint *ep_val;
     140  	} ep;
     141  	uint32_t key_type;
     142  	netobj pkey;
     143  };
     144  typedef struct nis_server nis_server;
     145  
     146  struct directory_obj {
     147  	nis_name do_name;
     148  	nstype do_type;
     149  	struct {
     150  		u_int do_servers_len;
     151  		nis_server *do_servers_val;
     152  	} do_servers;
     153  	uint32_t do_ttl;
     154  	struct {
     155  		u_int do_armask_len;
     156  		oar_mask *do_armask_val;
     157  	} do_armask;
     158  };
     159  typedef struct directory_obj directory_obj;
     160  
     161  #define EN_BINARY 1
     162  #define EN_CRYPT 2
     163  #define EN_XDR 4
     164  #define EN_MODIFIED 8
     165  #define EN_ASN1 64
     166  
     167  struct entry_col {
     168  	uint32_t ec_flags;
     169  	struct {
     170  		u_int ec_value_len;
     171  		char *ec_value_val;
     172  	} ec_value;
     173  };
     174  typedef struct entry_col entry_col;
     175  
     176  struct entry_obj {
     177  	char *en_type;
     178  	struct {
     179  		u_int en_cols_len;
     180  		entry_col *en_cols_val;
     181  	} en_cols;
     182  };
     183  typedef struct entry_obj entry_obj;
     184  
     185  struct group_obj {
     186  	uint32_t gr_flags;
     187  	struct {
     188  		u_int gr_members_len;
     189  		nis_name *gr_members_val;
     190  	} gr_members;
     191  };
     192  typedef struct group_obj group_obj;
     193  
     194  struct link_obj {
     195  	zotypes li_rtype;
     196  	struct {
     197  		u_int li_attrs_len;
     198  		nis_attr *li_attrs_val;
     199  	} li_attrs;
     200  	nis_name li_name;
     201  };
     202  typedef struct link_obj link_obj;
     203  
     204  #define TA_BINARY 1
     205  #define TA_CRYPT 2
     206  #define TA_XDR 4
     207  #define TA_SEARCHABLE 8
     208  #define TA_CASE 16
     209  #define TA_MODIFIED 32
     210  #define TA_ASN1 64
     211  
     212  struct table_col {
     213  	char *tc_name;
     214  	uint32_t tc_flags;
     215  	uint32_t tc_rights;
     216  };
     217  typedef struct table_col table_col;
     218  
     219  struct table_obj {
     220  	char *ta_type;
     221  	int ta_maxcol;
     222  	u_char ta_sep;
     223  	struct {
     224  		u_int ta_cols_len;
     225  		table_col *ta_cols_val;
     226  	} ta_cols;
     227  	char *ta_path;
     228  };
     229  typedef struct table_obj table_obj;
     230  
     231  struct objdata {
     232  	zotypes zo_type;
     233  	union {
     234  		struct directory_obj di_data;
     235  		struct group_obj gr_data;
     236  		struct table_obj ta_data;
     237  		struct entry_obj en_data;
     238  		struct link_obj li_data;
     239  		struct {
     240  			u_int po_data_len;
     241  			char *po_data_val;
     242  		} po_data;
     243  	} objdata_u;
     244  };
     245  typedef struct objdata objdata;
     246  
     247  struct nis_oid {
     248  	uint32_t ctime;
     249  	uint32_t mtime;
     250  };
     251  typedef struct nis_oid nis_oid;
     252  
     253  struct nis_object {
     254  	nis_oid zo_oid;
     255  	nis_name zo_name;
     256  	nis_name zo_owner;
     257  	nis_name zo_group;
     258  	nis_name zo_domain;
     259  	uint32_t zo_access;
     260  	uint32_t zo_ttl;
     261  	objdata zo_data;
     262  };
     263  typedef struct nis_object nis_object;
     264  
     265  #endif /* if __nis_object_h */
     266  
     267  enum nis_error {
     268  	NIS_SUCCESS = 0,
     269  	NIS_S_SUCCESS = 1,
     270  	NIS_NOTFOUND = 2,
     271  	NIS_S_NOTFOUND = 3,
     272  	NIS_CACHEEXPIRED = 4,
     273  	NIS_NAMEUNREACHABLE = 5,
     274  	NIS_UNKNOWNOBJ = 6,
     275  	NIS_TRYAGAIN = 7,
     276  	NIS_SYSTEMERROR = 8,
     277  	NIS_CHAINBROKEN = 9,
     278  	NIS_PERMISSION = 10,
     279  	NIS_NOTOWNER = 11,
     280  	NIS_NOT_ME = 12,
     281  	NIS_NOMEMORY = 13,
     282  	NIS_NAMEEXISTS = 14,
     283  	NIS_NOTMASTER = 15,
     284  	NIS_INVALIDOBJ = 16,
     285  	NIS_BADNAME = 17,
     286  	NIS_NOCALLBACK = 18,
     287  	NIS_CBRESULTS = 19,
     288  	NIS_NOSUCHNAME = 20,
     289  	NIS_NOTUNIQUE = 21,
     290  	NIS_IBMODERROR = 22,
     291  	NIS_NOSUCHTABLE = 23,
     292  	NIS_TYPEMISMATCH = 24,
     293  	NIS_LINKNAMEERROR = 25,
     294  	NIS_PARTIAL = 26,
     295  	NIS_TOOMANYATTRS = 27,
     296  	NIS_RPCERROR = 28,
     297  	NIS_BADATTRIBUTE = 29,
     298  	NIS_NOTSEARCHABLE = 30,
     299  	NIS_CBERROR = 31,
     300  	NIS_FOREIGNNS = 32,
     301  	NIS_BADOBJECT = 33,
     302  	NIS_NOTSAMEOBJ = 34,
     303  	NIS_MODFAIL = 35,
     304  	NIS_BADREQUEST = 36,
     305  	NIS_NOTEMPTY = 37,
     306  	NIS_COLDSTART_ERR = 38,
     307  	NIS_RESYNC = 39,
     308  	NIS_FAIL = 40,
     309  	NIS_UNAVAIL = 41,
     310  	NIS_RES2BIG = 42,
     311  	NIS_SRVAUTH = 43,
     312  	NIS_CLNTAUTH = 44,
     313  	NIS_NOFILESPACE = 45,
     314  	NIS_NOPROC = 46,
     315  	NIS_DUMPLATER = 47,
     316  };
     317  typedef enum nis_error nis_error;
     318  
     319  struct nis_result {
     320  	nis_error status;
     321  	struct {
     322  		u_int objects_len;
     323  		nis_object *objects_val;
     324  	} objects;
     325  	netobj cookie;
     326  	uint32_t zticks;
     327  	uint32_t dticks;
     328  	uint32_t aticks;
     329  	uint32_t cticks;
     330  };
     331  typedef struct nis_result nis_result;
     332  
     333  struct ns_request {
     334  	nis_name ns_name;
     335  	struct {
     336  		u_int ns_object_len;
     337  		nis_object *ns_object_val;
     338  	} ns_object;
     339  };
     340  typedef struct ns_request ns_request;
     341  
     342  struct ib_request {
     343  	nis_name ibr_name;
     344  	struct {
     345  		u_int ibr_srch_len;
     346  		nis_attr *ibr_srch_val;
     347  	} ibr_srch;
     348  	uint32_t ibr_flags;
     349  	struct {
     350  		u_int ibr_obj_len;
     351  		nis_object *ibr_obj_val;
     352  	} ibr_obj;
     353  	struct {
     354  		u_int ibr_cbhost_len;
     355  		nis_server *ibr_cbhost_val;
     356  	} ibr_cbhost;
     357  	u_int ibr_bufsize;
     358  	netobj ibr_cookie;
     359  };
     360  typedef struct ib_request ib_request;
     361  
     362  struct ping_args {
     363  	nis_name dir;
     364  	uint32_t stamp;
     365  };
     366  typedef struct ping_args ping_args;
     367  
     368  enum log_entry_t {
     369  	LOG_NOP = 0,
     370  	ADD_NAME = 1,
     371  	REM_NAME = 2,
     372  	MOD_NAME_OLD = 3,
     373  	MOD_NAME_NEW = 4,
     374  	ADD_IBASE = 5,
     375  	REM_IBASE = 6,
     376  	MOD_IBASE = 7,
     377  	UPD_STAMP = 8,
     378  };
     379  typedef enum log_entry_t log_entry_t;
     380  
     381  struct log_entry {
     382  	uint32_t le_time;
     383  	log_entry_t le_type;
     384  	nis_name le_princp;
     385  	nis_name le_name;
     386  	struct {
     387  		u_int le_attrs_len;
     388  		nis_attr *le_attrs_val;
     389  	} le_attrs;
     390  	nis_object le_object;
     391  };
     392  typedef struct log_entry log_entry;
     393  
     394  struct log_result {
     395  	nis_error lr_status;
     396  	netobj lr_cookie;
     397  	struct {
     398  		u_int lr_entries_len;
     399  		log_entry *lr_entries_val;
     400  	} lr_entries;
     401  };
     402  typedef struct log_result log_result;
     403  
     404  struct cp_result {
     405  	nis_error cp_status;
     406  	uint32_t cp_zticks;
     407  	uint32_t cp_dticks;
     408  };
     409  typedef struct cp_result cp_result;
     410  
     411  struct nis_tag {
     412  	uint32_t tag_type;
     413  	char *tag_val;
     414  };
     415  typedef struct nis_tag nis_tag;
     416  
     417  struct nis_taglist {
     418  	struct {
     419  		u_int tags_len;
     420  		nis_tag *tags_val;
     421  	} tags;
     422  };
     423  typedef struct nis_taglist nis_taglist;
     424  
     425  struct dump_args {
     426  	nis_name da_dir;
     427  	uint32_t da_time;
     428  	struct {
     429  		u_int da_cbhost_len;
     430  		nis_server *da_cbhost_val;
     431  	} da_cbhost;
     432  };
     433  typedef struct dump_args dump_args;
     434  
     435  struct fd_args {
     436  	nis_name dir_name;
     437  	nis_name requester;
     438  };
     439  typedef struct fd_args fd_args;
     440  
     441  struct fd_result {
     442  	nis_error status;
     443  	nis_name source;
     444  	struct {
     445  		u_int dir_data_len;
     446  		char *dir_data_val;
     447  	} dir_data;
     448  	struct {
     449  		u_int signature_len;
     450  		char *signature_val;
     451  	} signature;
     452  };
     453  typedef struct fd_result fd_result;
     454  
     455  /* Generic client creating flags */
     456  #define ZMH_VC		1
     457  #define ZMH_DG		2
     458  #define ZMH_AUTH	4
     459  
     460  /* Testing Access rights for objects */
     461  
     462  #define NIS_READ_ACC		1
     463  #define NIS_MODIFY_ACC		2
     464  #define NIS_CREATE_ACC		4
     465  #define NIS_DESTROY_ACC	8
     466  /* Test macros. a == access rights, m == desired rights. */
     467  #define NIS_WORLD(a, m)        (((a) & (m)) != 0)
     468  #define NIS_GROUP(a, m)        (((a) & ((m) << 8)) != 0)
     469  #define NIS_OWNER(a, m)        (((a) & ((m) << 16)) != 0)
     470  #define NIS_NOBODY(a, m)       (((a) & ((m) << 24)) != 0)
     471  /*
     472   * EOL Alert - The following non-prefixed test macros are
     473   * here for backward compatibility, and will be not be present
     474   * in future releases - use the NIS_*() macros above.
     475   */
     476  #define WORLD(a, m)	(((a) & (m)) != 0)
     477  #define GROUP(a, m)	(((a) & ((m) << 8)) != 0)
     478  #define OWNER(a, m)	(((a) & ((m) << 16)) != 0)
     479  #define NOBODY(a, m)	(((a) & ((m) << 24)) != 0)
     480  
     481  #define OATYPE(d, n) (((d)->do_armask.do_armask_val+n)->oa_otype)
     482  #define OARIGHTS(d, n) (((d)->do_armask.do_armask_val+n)->oa_rights)
     483  #define WORLD_DEFAULT (NIS_READ_ACC)
     484  #define GROUP_DEFAULT (NIS_READ_ACC << 8)
     485  #define OWNER_DEFAULT ((NIS_READ_ACC + NIS_MODIFY_ACC + NIS_CREATE_ACC +\
     486  			NIS_DESTROY_ACC) << 16)
     487  #define DEFAULT_RIGHTS (WORLD_DEFAULT | GROUP_DEFAULT | OWNER_DEFAULT)
     488  
     489  /* Result manipulation defines ... */
     490  #define NIS_RES_NUMOBJ(x)	((x)->objects.objects_len)
     491  #define NIS_RES_OBJECT(x)	((x)->objects.objects_val)
     492  #define NIS_RES_COOKIE(x)	((x)->cookie)
     493  #define NIS_RES_STATUS(x)	((x)->status)
     494  
     495  /* These defines make getting at the variant part of the object easier. */
     496  #define TA_data zo_data.objdata_u.ta_data
     497  #define EN_data zo_data.objdata_u.en_data
     498  #define DI_data zo_data.objdata_u.di_data
     499  #define LI_data zo_data.objdata_u.li_data
     500  #define GR_data zo_data.objdata_u.gr_data
     501  
     502  #define __type_of(o) ((o)->zo_data.zo_type)
     503  
     504  /* Declarations for the internal subroutines in nislib.c */
     505  enum name_pos {SAME_NAME, HIGHER_NAME, LOWER_NAME, NOT_SEQUENTIAL, BAD_NAME};
     506  typedef enum name_pos name_pos;
     507  
     508  /*
     509   * Defines for getting at column data in entry objects. Because RPCGEN
     510   * generates some rather wordy structures, we create some defines that
     511   * collapse the needed keystrokes to access a particular value using
     512   * these definitions they take an nis_object *, and an int and return
     513   * a u_char * for Value, and an int for length.
     514   */
     515  #define ENTRY_VAL(obj, col) (obj)->EN_data.en_cols.en_cols_val[col].ec_value.ec_value_val
     516  #define ENTRY_LEN(obj, col) (obj)->EN_data.en_cols.en_cols_val[col].ec_value.ec_value_len
     517  
     518  
     519  /* Prototypes, and extern declarations for the NIS library functions. */
     520  #include <rpcsvc/nislib.h>
     521  #endif
     522  
     523  /*
     524   * nis_3.h
     525   *
     526   * This file contains definitions that are only of interest to the actual
     527   * service daemon and client stubs. Normal users of NIS will not include
     528   * this file.
     529   *
     530   * NOTE : This include file is automatically created by a combination
     531   * of rpcgen and sed. DO NOT EDIT IT, change the nis.x file instead
     532   * and then remake this file.
     533   */
     534  #ifndef __nis_3_h
     535  #define __nis_3_h
     536  
     537  #define NIS_PROG 100300
     538  #define NIS_VERSION 3
     539  
     540  #define NIS_LOOKUP 1
     541  extern  nis_result * nis_lookup_3 (ns_request *, CLIENT *) __THROW;
     542  extern  nis_result * nis_lookup_3_svc (ns_request *, struct svc_req *) __THROW;
     543  #define NIS_ADD 2
     544  extern  nis_result * nis_add_3 (ns_request *, CLIENT *) __THROW;
     545  extern  nis_result * nis_add_3_svc (ns_request *, struct svc_req *) __THROW;
     546  #define NIS_MODIFY 3
     547  extern  nis_result * nis_modify_3 (ns_request *, CLIENT *) __THROW;
     548  extern  nis_result * nis_modify_3_svc (ns_request *, struct svc_req *) __THROW;
     549  #define NIS_REMOVE 4
     550  extern  nis_result * nis_remove_3 (ns_request *, CLIENT *) __THROW;
     551  extern  nis_result * nis_remove_3_svc (ns_request *, struct svc_req *) __THROW;
     552  #define NIS_IBLIST 5
     553  extern  nis_result * nis_iblist_3 (ib_request *, CLIENT *) __THROW;
     554  extern  nis_result * nis_iblist_3_svc (ib_request *, struct svc_req *) __THROW;
     555  #define NIS_IBADD 6
     556  extern  nis_result * nis_ibadd_3 (ib_request *, CLIENT *) __THROW;
     557  extern  nis_result * nis_ibadd_3_svc (ib_request *, struct svc_req *) __THROW;
     558  #define NIS_IBMODIFY 7
     559  extern  nis_result * nis_ibmodify_3 (ib_request *, CLIENT *) __THROW;
     560  extern  nis_result * nis_ibmodify_3_svc (ib_request *, struct svc_req *)
     561       __THROW;
     562  #define NIS_IBREMOVE 8
     563  extern  nis_result * nis_ibremove_3 (ib_request *, CLIENT *) __THROW;
     564  extern  nis_result * nis_ibremove_3_svc (ib_request *, struct svc_req *)
     565       __THROW;
     566  #define NIS_IBFIRST 9
     567  extern  nis_result * nis_ibfirst_3 (ib_request *, CLIENT *) __THROW;
     568  extern  nis_result * nis_ibfirst_3_svc (ib_request *, struct svc_req *)
     569       __THROW;
     570  #define NIS_IBNEXT 10
     571  extern  nis_result * nis_ibnext_3 (ib_request *, CLIENT *) __THROW;
     572  extern  nis_result * nis_ibnext_3_svc (ib_request *, struct svc_req *) __THROW;
     573  #define NIS_FINDDIRECTORY 12
     574  extern  fd_result * nis_finddirectory_3 (fd_args *, CLIENT *) __THROW;
     575  extern  fd_result * nis_finddirectory_3_svc (fd_args *,
     576  					     struct svc_req *) __THROW;
     577  #define NIS_STATUS 14
     578  extern  nis_taglist * nis_status_3 (nis_taglist *, CLIENT *) __THROW;
     579  extern  nis_taglist * nis_status_3_svc (nis_taglist *, struct svc_req *)
     580       __THROW;
     581  #define NIS_DUMPLOG 15
     582  extern  log_result * nis_dumplog_3 (dump_args *, CLIENT *) __THROW;
     583  extern  log_result * nis_dumplog_3_svc (dump_args *, struct svc_req *) __THROW;
     584  #define NIS_DUMP 16
     585  extern  log_result * nis_dump_3 (dump_args *, CLIENT *) __THROW;
     586  extern  log_result * nis_dump_3_svc (dump_args *, struct svc_req *) __THROW;
     587  #define NIS_CALLBACK 17
     588  extern  bool_t * nis_callback_3 (netobj *, CLIENT *) __THROW;
     589  extern  bool_t * nis_callback_3_svc (netobj *, struct svc_req *) __THROW;
     590  #define NIS_CPTIME 18
     591  extern  uint32_t * nis_cptime_3 (nis_name *, CLIENT *) __THROW;
     592  extern  uint32_t * nis_cptime_3_svc (nis_name *, struct svc_req *) __THROW;
     593  #define NIS_CHECKPOINT 19
     594  extern  cp_result * nis_checkpoint_3 (nis_name *, CLIENT *) __THROW;
     595  extern  cp_result * nis_checkpoint_3_svc (nis_name *, struct svc_req *)
     596       __THROW;
     597  #define NIS_PING 20
     598  extern  void * nis_ping_3 (ping_args *, CLIENT *) __THROW;
     599  extern  void * nis_ping_3_svc (ping_args *, struct svc_req *) __THROW;
     600  #define NIS_SERVSTATE 21
     601  extern  nis_taglist * nis_servstate_3 (nis_taglist *, CLIENT *) __THROW;
     602  extern  nis_taglist * nis_servstate_3_svc (nis_taglist *,
     603  					   struct svc_req *) __THROW;
     604  #define NIS_MKDIR 22
     605  extern  nis_error * nis_mkdir_3 (nis_name *, CLIENT *) __THROW;
     606  extern  nis_error * nis_mkdir_3_svc (nis_name *, struct svc_req *) __THROW;
     607  #define NIS_RMDIR 23
     608  extern  nis_error * nis_rmdir_3 (nis_name *, CLIENT *) __THROW;
     609  extern  nis_error * nis_rmdir_3_svc (nis_name *, struct svc_req *) __THROW;
     610  #define NIS_UPDKEYS 24
     611  extern  nis_error * nis_updkeys_3 (nis_name *, CLIENT *) __THROW;
     612  extern  nis_error * nis_updkeys_3_svc (nis_name *, struct svc_req *) __THROW;
     613  
     614  __END_DECLS
     615  
     616  #endif /* ! _RPCSVC_NIS_H */