Back to index

glibc  2.9
nis.h
Go to the documentation of this file.
00001 /*
00002  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
00003  * unrestricted use provided that this legend is included on all tape
00004  * media and as a part of the software program in whole or part.  Users
00005  * may copy or modify Sun RPC without charge, but are not authorized
00006  * to license or distribute it to anyone else except as part of a product or
00007  * program developed by the user or with the express written consent of
00008  * Sun Microsystems, Inc.
00009  *
00010  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
00011  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
00012  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
00013  *
00014  * Sun RPC is provided with no support and without any obligation on the
00015  * part of Sun Microsystems, Inc. to assist in its use, correction,
00016  * modification or enhancement.
00017  *
00018  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
00019  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
00020  * OR ANY PART THEREOF.
00021  *
00022  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
00023  * or profits or other special, indirect and consequential damages, even if
00024  * Sun has been advised of the possibility of such damages.
00025  *
00026  * Sun Microsystems, Inc.
00027  * 2550 Garcia Avenue
00028  * Mountain View, California  94043
00029  */
00030 
00031 #ifndef _RPCSVC_NIS_H
00032 #define _RPCSVC_NIS_H 1
00033 
00034 #include <features.h>
00035 #include <rpc/rpc.h>
00036 #include <rpcsvc/nis_tags.h>
00037 
00038 __BEGIN_DECLS
00039 
00040 /*
00041  *     nis.h
00042  *
00043  *     This file is the main include file for NIS clients. It contains
00044  *     both the client library function defines and the various data
00045  *     structures used by the NIS service. It includes the file nis_tags.h
00046  *     which defines the tag values. This allows the tags to change without
00047  *     having to change the nis.x file.
00048  *
00049  *     NOTE : THIS FILE IS NOT GENERATED WITH RPCGEN ! SO YOU HAVE TO
00050  *             ADD ALL THE CHANGES ON nis_*.x FILES HERE AGAIN !
00051  *
00052  *      I have removed all the Solaris internal structs and variables,
00053  *      because they are not supported, Sun changed them between various
00054  *      releases and they shouldn't be used in user programs.
00055  *                                              <kukuk@suse.de>
00056  */
00057 
00058 
00059 #ifndef __nis_object_h
00060 #define __nis_object_h
00061 
00062 #define NIS_MAXSTRINGLEN 255
00063 #define NIS_MAXNAMELEN 1024
00064 #define NIS_MAXATTRNAME 32
00065 #define NIS_MAXATTRVAL 2048
00066 #define NIS_MAXCOLUMNS 64
00067 #define NIS_MAXATTR 16
00068 #define NIS_MAXPATH 1024
00069 #define NIS_MAXREPLICAS 128
00070 #define NIS_MAXLINKS 16
00071 #define NIS_PK_NONE 0
00072 #define NIS_PK_DH 1
00073 #define NIS_PK_RSA 2
00074 #define NIS_PK_KERB 3
00075 #define NIS_PK_DHEXT 4
00076 
00077 struct nis_attr {
00078        char *zattr_ndx;
00079        struct {
00080               u_int zattr_val_len;
00081               char *zattr_val_val;
00082        } zattr_val;
00083 };
00084 typedef struct nis_attr nis_attr;
00085 
00086 typedef char *nis_name;
00087 
00088 enum zotypes {
00089        BOGUS_OBJ = 0,
00090        NO_OBJ = 1,
00091        DIRECTORY_OBJ = 2,
00092        GROUP_OBJ = 3,
00093        TABLE_OBJ = 4,
00094        ENTRY_OBJ = 5,
00095        LINK_OBJ = 6,
00096        PRIVATE_OBJ = 7,
00097        NIS_BOGUS_OBJ = 0,
00098        NIS_NO_OBJ = 1,
00099        NIS_DIRECTORY_OBJ = 2,
00100        NIS_GROUP_OBJ = 3,
00101        NIS_TABLE_OBJ = 4,
00102        NIS_ENTRY_OBJ = 5,
00103        NIS_LINK_OBJ = 6,
00104        NIS_PRIVATE_OBJ = 7
00105 };
00106 typedef enum zotypes zotypes;
00107 
00108 enum nstype {
00109        UNKNOWN = 0,
00110        NIS = 1,
00111        SUNYP = 2,
00112        IVY = 3,
00113        DNS = 4,
00114        X500 = 5,
00115        DNANS = 6,
00116        XCHS = 7,
00117        CDS = 8,
00118 };
00119 typedef enum nstype nstype;
00120 
00121 struct oar_mask {
00122         uint32_t oa_rights;
00123         zotypes oa_otype;
00124 };
00125 typedef struct oar_mask oar_mask;
00126 
00127 struct endpoint {
00128        char *uaddr;
00129        char *family;
00130        char *proto;
00131 };
00132 typedef struct endpoint endpoint;
00133 
00134 struct nis_server {
00135        nis_name name;
00136        struct {
00137               u_int ep_len;
00138               endpoint *ep_val;
00139        } ep;
00140        uint32_t key_type;
00141        netobj pkey;
00142 };
00143 typedef struct nis_server nis_server;
00144 
00145 struct directory_obj {
00146        nis_name do_name;
00147        nstype do_type;
00148        struct {
00149               u_int do_servers_len;
00150               nis_server *do_servers_val;
00151        } do_servers;
00152        uint32_t do_ttl;
00153        struct {
00154               u_int do_armask_len;
00155               oar_mask *do_armask_val;
00156        } do_armask;
00157 };
00158 typedef struct directory_obj directory_obj;
00159 
00160 #define EN_BINARY 1
00161 #define EN_CRYPT 2
00162 #define EN_XDR 4
00163 #define EN_MODIFIED 8
00164 #define EN_ASN1 64
00165 
00166 struct entry_col {
00167        uint32_t ec_flags;
00168        struct {
00169               u_int ec_value_len;
00170               char *ec_value_val;
00171        } ec_value;
00172 };
00173 typedef struct entry_col entry_col;
00174 
00175 struct entry_obj {
00176        char *en_type;
00177        struct {
00178               u_int en_cols_len;
00179               entry_col *en_cols_val;
00180        } en_cols;
00181 };
00182 typedef struct entry_obj entry_obj;
00183 
00184 struct group_obj {
00185        uint32_t gr_flags;
00186        struct {
00187               u_int gr_members_len;
00188               nis_name *gr_members_val;
00189        } gr_members;
00190 };
00191 typedef struct group_obj group_obj;
00192 
00193 struct link_obj {
00194        zotypes li_rtype;
00195        struct {
00196               u_int li_attrs_len;
00197               nis_attr *li_attrs_val;
00198        } li_attrs;
00199        nis_name li_name;
00200 };
00201 typedef struct link_obj link_obj;
00202 
00203 #define TA_BINARY 1
00204 #define TA_CRYPT 2
00205 #define TA_XDR 4
00206 #define TA_SEARCHABLE 8
00207 #define TA_CASE 16
00208 #define TA_MODIFIED 32
00209 #define TA_ASN1 64
00210 
00211 struct table_col {
00212        char *tc_name;
00213        uint32_t tc_flags;
00214        uint32_t tc_rights;
00215 };
00216 typedef struct table_col table_col;
00217 
00218 struct table_obj {
00219        char *ta_type;
00220        int ta_maxcol;
00221        u_char ta_sep;
00222        struct {
00223               u_int ta_cols_len;
00224               table_col *ta_cols_val;
00225        } ta_cols;
00226        char *ta_path;
00227 };
00228 typedef struct table_obj table_obj;
00229 
00230 struct objdata {
00231        zotypes zo_type;
00232        union {
00233               struct directory_obj di_data;
00234               struct group_obj gr_data;
00235               struct table_obj ta_data;
00236               struct entry_obj en_data;
00237               struct link_obj li_data;
00238               struct {
00239                      u_int po_data_len;
00240                      char *po_data_val;
00241               } po_data;
00242        } objdata_u;
00243 };
00244 typedef struct objdata objdata;
00245 
00246 struct nis_oid {
00247        uint32_t ctime;
00248        uint32_t mtime;
00249 };
00250 typedef struct nis_oid nis_oid;
00251 
00252 struct nis_object {
00253        nis_oid zo_oid;
00254        nis_name zo_name;
00255        nis_name zo_owner;
00256        nis_name zo_group;
00257        nis_name zo_domain;
00258        uint32_t zo_access;
00259        uint32_t zo_ttl;
00260        objdata zo_data;
00261 };
00262 typedef struct nis_object nis_object;
00263 
00264 #endif /* if __nis_object_h */
00265 
00266 enum nis_error {
00267        NIS_SUCCESS = 0,
00268        NIS_S_SUCCESS = 1,
00269        NIS_NOTFOUND = 2,
00270        NIS_S_NOTFOUND = 3,
00271        NIS_CACHEEXPIRED = 4,
00272        NIS_NAMEUNREACHABLE = 5,
00273        NIS_UNKNOWNOBJ = 6,
00274        NIS_TRYAGAIN = 7,
00275        NIS_SYSTEMERROR = 8,
00276        NIS_CHAINBROKEN = 9,
00277        NIS_PERMISSION = 10,
00278        NIS_NOTOWNER = 11,
00279        NIS_NOT_ME = 12,
00280        NIS_NOMEMORY = 13,
00281        NIS_NAMEEXISTS = 14,
00282        NIS_NOTMASTER = 15,
00283        NIS_INVALIDOBJ = 16,
00284        NIS_BADNAME = 17,
00285        NIS_NOCALLBACK = 18,
00286        NIS_CBRESULTS = 19,
00287        NIS_NOSUCHNAME = 20,
00288        NIS_NOTUNIQUE = 21,
00289        NIS_IBMODERROR = 22,
00290        NIS_NOSUCHTABLE = 23,
00291        NIS_TYPEMISMATCH = 24,
00292        NIS_LINKNAMEERROR = 25,
00293        NIS_PARTIAL = 26,
00294        NIS_TOOMANYATTRS = 27,
00295        NIS_RPCERROR = 28,
00296        NIS_BADATTRIBUTE = 29,
00297        NIS_NOTSEARCHABLE = 30,
00298        NIS_CBERROR = 31,
00299        NIS_FOREIGNNS = 32,
00300        NIS_BADOBJECT = 33,
00301        NIS_NOTSAMEOBJ = 34,
00302        NIS_MODFAIL = 35,
00303        NIS_BADREQUEST = 36,
00304        NIS_NOTEMPTY = 37,
00305        NIS_COLDSTART_ERR = 38,
00306        NIS_RESYNC = 39,
00307        NIS_FAIL = 40,
00308        NIS_UNAVAIL = 41,
00309        NIS_RES2BIG = 42,
00310        NIS_SRVAUTH = 43,
00311        NIS_CLNTAUTH = 44,
00312        NIS_NOFILESPACE = 45,
00313        NIS_NOPROC = 46,
00314        NIS_DUMPLATER = 47,
00315 };
00316 typedef enum nis_error nis_error;
00317 
00318 struct nis_result {
00319        nis_error status;
00320        struct {
00321               u_int objects_len;
00322               nis_object *objects_val;
00323        } objects;
00324        netobj cookie;
00325        uint32_t zticks;
00326        uint32_t dticks;
00327        uint32_t aticks;
00328        uint32_t cticks;
00329 };
00330 typedef struct nis_result nis_result;
00331 
00332 struct ns_request {
00333        nis_name ns_name;
00334        struct {
00335               u_int ns_object_len;
00336               nis_object *ns_object_val;
00337        } ns_object;
00338 };
00339 typedef struct ns_request ns_request;
00340 
00341 struct ib_request {
00342        nis_name ibr_name;
00343        struct {
00344               u_int ibr_srch_len;
00345               nis_attr *ibr_srch_val;
00346        } ibr_srch;
00347        uint32_t ibr_flags;
00348        struct {
00349               u_int ibr_obj_len;
00350               nis_object *ibr_obj_val;
00351        } ibr_obj;
00352        struct {
00353               u_int ibr_cbhost_len;
00354               nis_server *ibr_cbhost_val;
00355        } ibr_cbhost;
00356        u_int ibr_bufsize;
00357        netobj ibr_cookie;
00358 };
00359 typedef struct ib_request ib_request;
00360 
00361 struct ping_args {
00362        nis_name dir;
00363        uint32_t stamp;
00364 };
00365 typedef struct ping_args ping_args;
00366 
00367 enum log_entry_t {
00368        LOG_NOP = 0,
00369        ADD_NAME = 1,
00370        REM_NAME = 2,
00371        MOD_NAME_OLD = 3,
00372        MOD_NAME_NEW = 4,
00373        ADD_IBASE = 5,
00374        REM_IBASE = 6,
00375        MOD_IBASE = 7,
00376        UPD_STAMP = 8,
00377 };
00378 typedef enum log_entry_t log_entry_t;
00379 
00380 struct log_entry {
00381        uint32_t le_time;
00382        log_entry_t le_type;
00383        nis_name le_princp;
00384        nis_name le_name;
00385        struct {
00386               u_int le_attrs_len;
00387               nis_attr *le_attrs_val;
00388        } le_attrs;
00389        nis_object le_object;
00390 };
00391 typedef struct log_entry log_entry;
00392 
00393 struct log_result {
00394        nis_error lr_status;
00395        netobj lr_cookie;
00396        struct {
00397               u_int lr_entries_len;
00398               log_entry *lr_entries_val;
00399        } lr_entries;
00400 };
00401 typedef struct log_result log_result;
00402 
00403 struct cp_result {
00404        nis_error cp_status;
00405        uint32_t cp_zticks;
00406        uint32_t cp_dticks;
00407 };
00408 typedef struct cp_result cp_result;
00409 
00410 struct nis_tag {
00411        uint32_t tag_type;
00412        char *tag_val;
00413 };
00414 typedef struct nis_tag nis_tag;
00415 
00416 struct nis_taglist {
00417        struct {
00418               u_int tags_len;
00419               nis_tag *tags_val;
00420        } tags;
00421 };
00422 typedef struct nis_taglist nis_taglist;
00423 
00424 struct dump_args {
00425        nis_name da_dir;
00426        uint32_t da_time;
00427        struct {
00428               u_int da_cbhost_len;
00429               nis_server *da_cbhost_val;
00430        } da_cbhost;
00431 };
00432 typedef struct dump_args dump_args;
00433 
00434 struct fd_args {
00435        nis_name dir_name;
00436        nis_name requester;
00437 };
00438 typedef struct fd_args fd_args;
00439 
00440 struct fd_result {
00441        nis_error status;
00442        nis_name source;
00443        struct {
00444               u_int dir_data_len;
00445               char *dir_data_val;
00446        } dir_data;
00447        struct {
00448               u_int signature_len;
00449               char *signature_val;
00450        } signature;
00451 };
00452 typedef struct fd_result fd_result;
00453 
00454 /* Generic client creating flags */
00455 #define ZMH_VC              1
00456 #define ZMH_DG              2
00457 #define ZMH_AUTH     4
00458 
00459 /* Testing Access rights for objects */
00460 
00461 #define NIS_READ_ACC        1
00462 #define NIS_MODIFY_ACC             2
00463 #define NIS_CREATE_ACC             4
00464 #define NIS_DESTROY_ACC     8
00465 /* Test macros. a == access rights, m == desired rights. */
00466 #define NIS_WORLD(a, m)        (((a) & (m)) != 0)
00467 #define NIS_GROUP(a, m)        (((a) & ((m) << 8)) != 0)
00468 #define NIS_OWNER(a, m)        (((a) & ((m) << 16)) != 0)
00469 #define NIS_NOBODY(a, m)       (((a) & ((m) << 24)) != 0)
00470 /*
00471  * EOL Alert - The following non-prefixed test macros are
00472  * here for backward compatability, and will be not be present
00473  * in future releases - use the NIS_*() macros above.
00474  */
00475 #define WORLD(a, m)  (((a) & (m)) != 0)
00476 #define GROUP(a, m)  (((a) & ((m) << 8)) != 0)
00477 #define OWNER(a, m)  (((a) & ((m) << 16)) != 0)
00478 #define NOBODY(a, m) (((a) & ((m) << 24)) != 0)
00479 
00480 #define OATYPE(d, n) (((d)->do_armask.do_armask_val+n)->oa_otype)
00481 #define OARIGHTS(d, n) (((d)->do_armask.do_armask_val+n)->oa_rights)
00482 #define WORLD_DEFAULT (NIS_READ_ACC)
00483 #define GROUP_DEFAULT (NIS_READ_ACC << 8)
00484 #define OWNER_DEFAULT ((NIS_READ_ACC + NIS_MODIFY_ACC + NIS_CREATE_ACC +\
00485                      NIS_DESTROY_ACC) << 16)
00486 #define DEFAULT_RIGHTS (WORLD_DEFAULT | GROUP_DEFAULT | OWNER_DEFAULT)
00487 
00488 /* Result manipulation defines ... */
00489 #define NIS_RES_NUMOBJ(x)   ((x)->objects.objects_len)
00490 #define NIS_RES_OBJECT(x)   ((x)->objects.objects_val)
00491 #define NIS_RES_COOKIE(x)   ((x)->cookie)
00492 #define NIS_RES_STATUS(x)   ((x)->status)
00493 
00494 /* These defines make getting at the variant part of the object easier. */
00495 #define TA_data zo_data.objdata_u.ta_data
00496 #define EN_data zo_data.objdata_u.en_data
00497 #define DI_data zo_data.objdata_u.di_data
00498 #define LI_data zo_data.objdata_u.li_data
00499 #define GR_data zo_data.objdata_u.gr_data
00500 
00501 #define __type_of(o) ((o)->zo_data.zo_type)
00502 
00503 /* Declarations for the internal subroutines in nislib.c */
00504 enum name_pos {SAME_NAME, HIGHER_NAME, LOWER_NAME, NOT_SEQUENTIAL, BAD_NAME};
00505 typedef enum name_pos name_pos;
00506 
00507 /*
00508  * Defines for getting at column data in entry objects. Because RPCGEN
00509  * generates some rather wordy structures, we create some defines that
00510  * collapse the needed keystrokes to access a particular value using
00511  * these definitions they take an nis_object *, and an int and return
00512  * a u_char * for Value, and an int for length.
00513  */
00514 #define ENTRY_VAL(obj, col) (obj)->EN_data.en_cols.en_cols_val[col].ec_value.ec_value_val
00515 #define ENTRY_LEN(obj, col) (obj)->EN_data.en_cols.en_cols_val[col].ec_value.ec_value_len
00516 
00517 
00518 /* Prototypes, and extern declarations for the NIS library functions. */
00519 #include <rpcsvc/nislib.h>
00520 #endif
00521 
00522 /*
00523  * nis_3.h
00524  *
00525  * This file contains definitions that are only of interest to the actual
00526  * service daemon and client stubs. Normal users of NIS will not include
00527  * this file.
00528  *
00529  * NOTE : This include file is automatically created by a combination
00530  * of rpcgen and sed. DO NOT EDIT IT, change the nis.x file instead
00531  * and then remake this file.
00532  */
00533 #ifndef __nis_3_h
00534 #define __nis_3_h
00535 
00536 #define NIS_PROG 100300
00537 #define NIS_VERSION 3
00538 
00539 #define NIS_LOOKUP 1
00540 extern  nis_result * nis_lookup_3 (ns_request *, CLIENT *) __THROW;
00541 extern  nis_result * nis_lookup_3_svc (ns_request *, struct svc_req *) __THROW;
00542 #define NIS_ADD 2
00543 extern  nis_result * nis_add_3 (ns_request *, CLIENT *) __THROW;
00544 extern  nis_result * nis_add_3_svc (ns_request *, struct svc_req *) __THROW;
00545 #define NIS_MODIFY 3
00546 extern  nis_result * nis_modify_3 (ns_request *, CLIENT *) __THROW;
00547 extern  nis_result * nis_modify_3_svc (ns_request *, struct svc_req *) __THROW;
00548 #define NIS_REMOVE 4
00549 extern  nis_result * nis_remove_3 (ns_request *, CLIENT *) __THROW;
00550 extern  nis_result * nis_remove_3_svc (ns_request *, struct svc_req *) __THROW;
00551 #define NIS_IBLIST 5
00552 extern  nis_result * nis_iblist_3 (ib_request *, CLIENT *) __THROW;
00553 extern  nis_result * nis_iblist_3_svc (ib_request *, struct svc_req *) __THROW;
00554 #define NIS_IBADD 6
00555 extern  nis_result * nis_ibadd_3 (ib_request *, CLIENT *) __THROW;
00556 extern  nis_result * nis_ibadd_3_svc (ib_request *, struct svc_req *) __THROW;
00557 #define NIS_IBMODIFY 7
00558 extern  nis_result * nis_ibmodify_3 (ib_request *, CLIENT *) __THROW;
00559 extern  nis_result * nis_ibmodify_3_svc (ib_request *, struct svc_req *)
00560      __THROW;
00561 #define NIS_IBREMOVE 8
00562 extern  nis_result * nis_ibremove_3 (ib_request *, CLIENT *) __THROW;
00563 extern  nis_result * nis_ibremove_3_svc (ib_request *, struct svc_req *)
00564      __THROW;
00565 #define NIS_IBFIRST 9
00566 extern  nis_result * nis_ibfirst_3 (ib_request *, CLIENT *) __THROW;
00567 extern  nis_result * nis_ibfirst_3_svc (ib_request *, struct svc_req *)
00568      __THROW;
00569 #define NIS_IBNEXT 10
00570 extern  nis_result * nis_ibnext_3 (ib_request *, CLIENT *) __THROW;
00571 extern  nis_result * nis_ibnext_3_svc (ib_request *, struct svc_req *) __THROW;
00572 #define NIS_FINDDIRECTORY 12
00573 extern  fd_result * nis_finddirectory_3 (fd_args *, CLIENT *) __THROW;
00574 extern  fd_result * nis_finddirectory_3_svc (fd_args *,
00575                                         struct svc_req *) __THROW;
00576 #define NIS_STATUS 14
00577 extern  nis_taglist * nis_status_3 (nis_taglist *, CLIENT *) __THROW;
00578 extern  nis_taglist * nis_status_3_svc (nis_taglist *, struct svc_req *)
00579      __THROW;
00580 #define NIS_DUMPLOG 15
00581 extern  log_result * nis_dumplog_3 (dump_args *, CLIENT *) __THROW;
00582 extern  log_result * nis_dumplog_3_svc (dump_args *, struct svc_req *) __THROW;
00583 #define NIS_DUMP 16
00584 extern  log_result * nis_dump_3 (dump_args *, CLIENT *) __THROW;
00585 extern  log_result * nis_dump_3_svc (dump_args *, struct svc_req *) __THROW;
00586 #define NIS_CALLBACK 17
00587 extern  bool_t * nis_callback_3 (netobj *, CLIENT *) __THROW;
00588 extern  bool_t * nis_callback_3_svc (netobj *, struct svc_req *) __THROW;
00589 #define NIS_CPTIME 18
00590 extern  uint32_t * nis_cptime_3 (nis_name *, CLIENT *) __THROW;
00591 extern  uint32_t * nis_cptime_3_svc (nis_name *, struct svc_req *) __THROW;
00592 #define NIS_CHECKPOINT 19
00593 extern  cp_result * nis_checkpoint_3 (nis_name *, CLIENT *) __THROW;
00594 extern  cp_result * nis_checkpoint_3_svc (nis_name *, struct svc_req *)
00595      __THROW;
00596 #define NIS_PING 20
00597 extern  void * nis_ping_3 (ping_args *, CLIENT *) __THROW;
00598 extern  void * nis_ping_3_svc (ping_args *, struct svc_req *) __THROW;
00599 #define NIS_SERVSTATE 21
00600 extern  nis_taglist * nis_servstate_3 (nis_taglist *, CLIENT *) __THROW;
00601 extern  nis_taglist * nis_servstate_3_svc (nis_taglist *,
00602                                       struct svc_req *) __THROW;
00603 #define NIS_MKDIR 22
00604 extern  nis_error * nis_mkdir_3 (nis_name *, CLIENT *) __THROW;
00605 extern  nis_error * nis_mkdir_3_svc (nis_name *, struct svc_req *) __THROW;
00606 #define NIS_RMDIR 23
00607 extern  nis_error * nis_rmdir_3 (nis_name *, CLIENT *) __THROW;
00608 extern  nis_error * nis_rmdir_3_svc (nis_name *, struct svc_req *) __THROW;
00609 #define NIS_UPDKEYS 24
00610 extern  nis_error * nis_updkeys_3 (nis_name *, CLIENT *) __THROW;
00611 extern  nis_error * nis_updkeys_3_svc (nis_name *, struct svc_req *) __THROW;
00612 
00613 __END_DECLS
00614 
00615 #endif /* ! _RPCSVC_NIS_H */