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