123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616 |
- /*
- * Copyright (c) 2010, Oracle America, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- #ifndef _RPCSVC_NIS_H
- #define _RPCSVC_NIS_H 1
- #include <features.h>
- #include <rpc/rpc.h>
- #include <rpcsvc/nis_tags.h>
- __BEGIN_DECLS
- /*
- * nis.h
- *
- * This file is the main include file for NIS clients. It contains
- * both the client library function defines and the various data
- * structures used by the NIS service. It includes the file nis_tags.h
- * which defines the tag values. This allows the tags to change without
- * having to change the nis.x file.
- *
- * NOTE : THIS FILE IS NOT GENERATED WITH RPCGEN ! SO YOU HAVE TO
- * ADD ALL THE CHANGES ON nis_*.x FILES HERE AGAIN !
- *
- * I have removed all the Solaris internal structs and variables,
- * because they are not supported, Sun changed them between various
- * releases and they shouldn't be used in user programs.
- * <kukuk@suse.de>
- */
- #ifndef __nis_object_h
- #define __nis_object_h
- #define NIS_MAXSTRINGLEN 255
- #define NIS_MAXNAMELEN 1024
- #define NIS_MAXATTRNAME 32
- #define NIS_MAXATTRVAL 2048
- #define NIS_MAXCOLUMNS 64
- #define NIS_MAXATTR 16
- #define NIS_MAXPATH 1024
- #define NIS_MAXREPLICAS 128
- #define NIS_MAXLINKS 16
- #define NIS_PK_NONE 0
- #define NIS_PK_DH 1
- #define NIS_PK_RSA 2
- #define NIS_PK_KERB 3
- #define NIS_PK_DHEXT 4
- struct nis_attr {
- char *zattr_ndx;
- struct {
- u_int zattr_val_len;
- char *zattr_val_val;
- } zattr_val;
- };
- typedef struct nis_attr nis_attr;
- typedef char *nis_name;
- enum zotypes {
- BOGUS_OBJ = 0,
- NO_OBJ = 1,
- DIRECTORY_OBJ = 2,
- GROUP_OBJ = 3,
- TABLE_OBJ = 4,
- ENTRY_OBJ = 5,
- LINK_OBJ = 6,
- PRIVATE_OBJ = 7,
- NIS_BOGUS_OBJ = 0,
- NIS_NO_OBJ = 1,
- NIS_DIRECTORY_OBJ = 2,
- NIS_GROUP_OBJ = 3,
- NIS_TABLE_OBJ = 4,
- NIS_ENTRY_OBJ = 5,
- NIS_LINK_OBJ = 6,
- NIS_PRIVATE_OBJ = 7
- };
- typedef enum zotypes zotypes;
- enum nstype {
- UNKNOWN = 0,
- NIS = 1,
- SUNYP = 2,
- IVY = 3,
- DNS = 4,
- X500 = 5,
- DNANS = 6,
- XCHS = 7,
- CDS = 8,
- };
- typedef enum nstype nstype;
- struct oar_mask {
- uint32_t oa_rights;
- zotypes oa_otype;
- };
- typedef struct oar_mask oar_mask;
- struct endpoint {
- char *uaddr;
- char *family;
- char *proto;
- };
- typedef struct endpoint endpoint;
- struct nis_server {
- nis_name name;
- struct {
- u_int ep_len;
- endpoint *ep_val;
- } ep;
- uint32_t key_type;
- netobj pkey;
- };
- typedef struct nis_server nis_server;
- struct directory_obj {
- nis_name do_name;
- nstype do_type;
- struct {
- u_int do_servers_len;
- nis_server *do_servers_val;
- } do_servers;
- uint32_t do_ttl;
- struct {
- u_int do_armask_len;
- oar_mask *do_armask_val;
- } do_armask;
- };
- typedef struct directory_obj directory_obj;
- #define EN_BINARY 1
- #define EN_CRYPT 2
- #define EN_XDR 4
- #define EN_MODIFIED 8
- #define EN_ASN1 64
- struct entry_col {
- uint32_t ec_flags;
- struct {
- u_int ec_value_len;
- char *ec_value_val;
- } ec_value;
- };
- typedef struct entry_col entry_col;
- struct entry_obj {
- char *en_type;
- struct {
- u_int en_cols_len;
- entry_col *en_cols_val;
- } en_cols;
- };
- typedef struct entry_obj entry_obj;
- struct group_obj {
- uint32_t gr_flags;
- struct {
- u_int gr_members_len;
- nis_name *gr_members_val;
- } gr_members;
- };
- typedef struct group_obj group_obj;
- struct link_obj {
- zotypes li_rtype;
- struct {
- u_int li_attrs_len;
- nis_attr *li_attrs_val;
- } li_attrs;
- nis_name li_name;
- };
- typedef struct link_obj link_obj;
- #define TA_BINARY 1
- #define TA_CRYPT 2
- #define TA_XDR 4
- #define TA_SEARCHABLE 8
- #define TA_CASE 16
- #define TA_MODIFIED 32
- #define TA_ASN1 64
- struct table_col {
- char *tc_name;
- uint32_t tc_flags;
- uint32_t tc_rights;
- };
- typedef struct table_col table_col;
- struct table_obj {
- char *ta_type;
- int ta_maxcol;
- u_char ta_sep;
- struct {
- u_int ta_cols_len;
- table_col *ta_cols_val;
- } ta_cols;
- char *ta_path;
- };
- typedef struct table_obj table_obj;
- struct objdata {
- zotypes zo_type;
- union {
- struct directory_obj di_data;
- struct group_obj gr_data;
- struct table_obj ta_data;
- struct entry_obj en_data;
- struct link_obj li_data;
- struct {
- u_int po_data_len;
- char *po_data_val;
- } po_data;
- } objdata_u;
- };
- typedef struct objdata objdata;
- struct nis_oid {
- uint32_t ctime;
- uint32_t mtime;
- };
- typedef struct nis_oid nis_oid;
- struct nis_object {
- nis_oid zo_oid;
- nis_name zo_name;
- nis_name zo_owner;
- nis_name zo_group;
- nis_name zo_domain;
- uint32_t zo_access;
- uint32_t zo_ttl;
- objdata zo_data;
- };
- typedef struct nis_object nis_object;
- #endif /* if __nis_object_h */
- enum nis_error {
- NIS_SUCCESS = 0,
- NIS_S_SUCCESS = 1,
- NIS_NOTFOUND = 2,
- NIS_S_NOTFOUND = 3,
- NIS_CACHEEXPIRED = 4,
- NIS_NAMEUNREACHABLE = 5,
- NIS_UNKNOWNOBJ = 6,
- NIS_TRYAGAIN = 7,
- NIS_SYSTEMERROR = 8,
- NIS_CHAINBROKEN = 9,
- NIS_PERMISSION = 10,
- NIS_NOTOWNER = 11,
- NIS_NOT_ME = 12,
- NIS_NOMEMORY = 13,
- NIS_NAMEEXISTS = 14,
- NIS_NOTMASTER = 15,
- NIS_INVALIDOBJ = 16,
- NIS_BADNAME = 17,
- NIS_NOCALLBACK = 18,
- NIS_CBRESULTS = 19,
- NIS_NOSUCHNAME = 20,
- NIS_NOTUNIQUE = 21,
- NIS_IBMODERROR = 22,
- NIS_NOSUCHTABLE = 23,
- NIS_TYPEMISMATCH = 24,
- NIS_LINKNAMEERROR = 25,
- NIS_PARTIAL = 26,
- NIS_TOOMANYATTRS = 27,
- NIS_RPCERROR = 28,
- NIS_BADATTRIBUTE = 29,
- NIS_NOTSEARCHABLE = 30,
- NIS_CBERROR = 31,
- NIS_FOREIGNNS = 32,
- NIS_BADOBJECT = 33,
- NIS_NOTSAMEOBJ = 34,
- NIS_MODFAIL = 35,
- NIS_BADREQUEST = 36,
- NIS_NOTEMPTY = 37,
- NIS_COLDSTART_ERR = 38,
- NIS_RESYNC = 39,
- NIS_FAIL = 40,
- NIS_UNAVAIL = 41,
- NIS_RES2BIG = 42,
- NIS_SRVAUTH = 43,
- NIS_CLNTAUTH = 44,
- NIS_NOFILESPACE = 45,
- NIS_NOPROC = 46,
- NIS_DUMPLATER = 47,
- };
- typedef enum nis_error nis_error;
- struct nis_result {
- nis_error status;
- struct {
- u_int objects_len;
- nis_object *objects_val;
- } objects;
- netobj cookie;
- uint32_t zticks;
- uint32_t dticks;
- uint32_t aticks;
- uint32_t cticks;
- };
- typedef struct nis_result nis_result;
- struct ns_request {
- nis_name ns_name;
- struct {
- u_int ns_object_len;
- nis_object *ns_object_val;
- } ns_object;
- };
- typedef struct ns_request ns_request;
- struct ib_request {
- nis_name ibr_name;
- struct {
- u_int ibr_srch_len;
- nis_attr *ibr_srch_val;
- } ibr_srch;
- uint32_t ibr_flags;
- struct {
- u_int ibr_obj_len;
- nis_object *ibr_obj_val;
- } ibr_obj;
- struct {
- u_int ibr_cbhost_len;
- nis_server *ibr_cbhost_val;
- } ibr_cbhost;
- u_int ibr_bufsize;
- netobj ibr_cookie;
- };
- typedef struct ib_request ib_request;
- struct ping_args {
- nis_name dir;
- uint32_t stamp;
- };
- typedef struct ping_args ping_args;
- enum log_entry_t {
- LOG_NOP = 0,
- ADD_NAME = 1,
- REM_NAME = 2,
- MOD_NAME_OLD = 3,
- MOD_NAME_NEW = 4,
- ADD_IBASE = 5,
- REM_IBASE = 6,
- MOD_IBASE = 7,
- UPD_STAMP = 8,
- };
- typedef enum log_entry_t log_entry_t;
- struct log_entry {
- uint32_t le_time;
- log_entry_t le_type;
- nis_name le_princp;
- nis_name le_name;
- struct {
- u_int le_attrs_len;
- nis_attr *le_attrs_val;
- } le_attrs;
- nis_object le_object;
- };
- typedef struct log_entry log_entry;
- struct log_result {
- nis_error lr_status;
- netobj lr_cookie;
- struct {
- u_int lr_entries_len;
- log_entry *lr_entries_val;
- } lr_entries;
- };
- typedef struct log_result log_result;
- struct cp_result {
- nis_error cp_status;
- uint32_t cp_zticks;
- uint32_t cp_dticks;
- };
- typedef struct cp_result cp_result;
- struct nis_tag {
- uint32_t tag_type;
- char *tag_val;
- };
- typedef struct nis_tag nis_tag;
- struct nis_taglist {
- struct {
- u_int tags_len;
- nis_tag *tags_val;
- } tags;
- };
- typedef struct nis_taglist nis_taglist;
- struct dump_args {
- nis_name da_dir;
- uint32_t da_time;
- struct {
- u_int da_cbhost_len;
- nis_server *da_cbhost_val;
- } da_cbhost;
- };
- typedef struct dump_args dump_args;
- struct fd_args {
- nis_name dir_name;
- nis_name requester;
- };
- typedef struct fd_args fd_args;
- struct fd_result {
- nis_error status;
- nis_name source;
- struct {
- u_int dir_data_len;
- char *dir_data_val;
- } dir_data;
- struct {
- u_int signature_len;
- char *signature_val;
- } signature;
- };
- typedef struct fd_result fd_result;
- /* Generic client creating flags */
- #define ZMH_VC 1
- #define ZMH_DG 2
- #define ZMH_AUTH 4
- /* Testing Access rights for objects */
- #define NIS_READ_ACC 1
- #define NIS_MODIFY_ACC 2
- #define NIS_CREATE_ACC 4
- #define NIS_DESTROY_ACC 8
- /* Test macros. a == access rights, m == desired rights. */
- #define NIS_WORLD(a, m) (((a) & (m)) != 0)
- #define NIS_GROUP(a, m) (((a) & ((m) << 8)) != 0)
- #define NIS_OWNER(a, m) (((a) & ((m) << 16)) != 0)
- #define NIS_NOBODY(a, m) (((a) & ((m) << 24)) != 0)
- /*
- * EOL Alert - The following non-prefixed test macros are
- * here for backward compatibility, and will be not be present
- * in future releases - use the NIS_*() macros above.
- */
- #define WORLD(a, m) (((a) & (m)) != 0)
- #define GROUP(a, m) (((a) & ((m) << 8)) != 0)
- #define OWNER(a, m) (((a) & ((m) << 16)) != 0)
- #define NOBODY(a, m) (((a) & ((m) << 24)) != 0)
- #define OATYPE(d, n) (((d)->do_armask.do_armask_val+n)->oa_otype)
- #define OARIGHTS(d, n) (((d)->do_armask.do_armask_val+n)->oa_rights)
- #define WORLD_DEFAULT (NIS_READ_ACC)
- #define GROUP_DEFAULT (NIS_READ_ACC << 8)
- #define OWNER_DEFAULT ((NIS_READ_ACC + NIS_MODIFY_ACC + NIS_CREATE_ACC +\
- NIS_DESTROY_ACC) << 16)
- #define DEFAULT_RIGHTS (WORLD_DEFAULT | GROUP_DEFAULT | OWNER_DEFAULT)
- /* Result manipulation defines ... */
- #define NIS_RES_NUMOBJ(x) ((x)->objects.objects_len)
- #define NIS_RES_OBJECT(x) ((x)->objects.objects_val)
- #define NIS_RES_COOKIE(x) ((x)->cookie)
- #define NIS_RES_STATUS(x) ((x)->status)
- /* These defines make getting at the variant part of the object easier. */
- #define TA_data zo_data.objdata_u.ta_data
- #define EN_data zo_data.objdata_u.en_data
- #define DI_data zo_data.objdata_u.di_data
- #define LI_data zo_data.objdata_u.li_data
- #define GR_data zo_data.objdata_u.gr_data
- #define __type_of(o) ((o)->zo_data.zo_type)
- /* Declarations for the internal subroutines in nislib.c */
- enum name_pos {SAME_NAME, HIGHER_NAME, LOWER_NAME, NOT_SEQUENTIAL, BAD_NAME};
- typedef enum name_pos name_pos;
- /*
- * Defines for getting at column data in entry objects. Because RPCGEN
- * generates some rather wordy structures, we create some defines that
- * collapse the needed keystrokes to access a particular value using
- * these definitions they take an nis_object *, and an int and return
- * a u_char * for Value, and an int for length.
- */
- #define ENTRY_VAL(obj, col) (obj)->EN_data.en_cols.en_cols_val[col].ec_value.ec_value_val
- #define ENTRY_LEN(obj, col) (obj)->EN_data.en_cols.en_cols_val[col].ec_value.ec_value_len
- /* Prototypes, and extern declarations for the NIS library functions. */
- #include <rpcsvc/nislib.h>
- #endif
- /*
- * nis_3.h
- *
- * This file contains definitions that are only of interest to the actual
- * service daemon and client stubs. Normal users of NIS will not include
- * this file.
- *
- * NOTE : This include file is automatically created by a combination
- * of rpcgen and sed. DO NOT EDIT IT, change the nis.x file instead
- * and then remake this file.
- */
- #ifndef __nis_3_h
- #define __nis_3_h
- #define NIS_PROG 100300
- #define NIS_VERSION 3
- #define NIS_LOOKUP 1
- extern nis_result * nis_lookup_3 (ns_request *, CLIENT *) __THROW;
- extern nis_result * nis_lookup_3_svc (ns_request *, struct svc_req *) __THROW;
- #define NIS_ADD 2
- extern nis_result * nis_add_3 (ns_request *, CLIENT *) __THROW;
- extern nis_result * nis_add_3_svc (ns_request *, struct svc_req *) __THROW;
- #define NIS_MODIFY 3
- extern nis_result * nis_modify_3 (ns_request *, CLIENT *) __THROW;
- extern nis_result * nis_modify_3_svc (ns_request *, struct svc_req *) __THROW;
- #define NIS_REMOVE 4
- extern nis_result * nis_remove_3 (ns_request *, CLIENT *) __THROW;
- extern nis_result * nis_remove_3_svc (ns_request *, struct svc_req *) __THROW;
- #define NIS_IBLIST 5
- extern nis_result * nis_iblist_3 (ib_request *, CLIENT *) __THROW;
- extern nis_result * nis_iblist_3_svc (ib_request *, struct svc_req *) __THROW;
- #define NIS_IBADD 6
- extern nis_result * nis_ibadd_3 (ib_request *, CLIENT *) __THROW;
- extern nis_result * nis_ibadd_3_svc (ib_request *, struct svc_req *) __THROW;
- #define NIS_IBMODIFY 7
- extern nis_result * nis_ibmodify_3 (ib_request *, CLIENT *) __THROW;
- extern nis_result * nis_ibmodify_3_svc (ib_request *, struct svc_req *)
- __THROW;
- #define NIS_IBREMOVE 8
- extern nis_result * nis_ibremove_3 (ib_request *, CLIENT *) __THROW;
- extern nis_result * nis_ibremove_3_svc (ib_request *, struct svc_req *)
- __THROW;
- #define NIS_IBFIRST 9
- extern nis_result * nis_ibfirst_3 (ib_request *, CLIENT *) __THROW;
- extern nis_result * nis_ibfirst_3_svc (ib_request *, struct svc_req *)
- __THROW;
- #define NIS_IBNEXT 10
- extern nis_result * nis_ibnext_3 (ib_request *, CLIENT *) __THROW;
- extern nis_result * nis_ibnext_3_svc (ib_request *, struct svc_req *) __THROW;
- #define NIS_FINDDIRECTORY 12
- extern fd_result * nis_finddirectory_3 (fd_args *, CLIENT *) __THROW;
- extern fd_result * nis_finddirectory_3_svc (fd_args *,
- struct svc_req *) __THROW;
- #define NIS_STATUS 14
- extern nis_taglist * nis_status_3 (nis_taglist *, CLIENT *) __THROW;
- extern nis_taglist * nis_status_3_svc (nis_taglist *, struct svc_req *)
- __THROW;
- #define NIS_DUMPLOG 15
- extern log_result * nis_dumplog_3 (dump_args *, CLIENT *) __THROW;
- extern log_result * nis_dumplog_3_svc (dump_args *, struct svc_req *) __THROW;
- #define NIS_DUMP 16
- extern log_result * nis_dump_3 (dump_args *, CLIENT *) __THROW;
- extern log_result * nis_dump_3_svc (dump_args *, struct svc_req *) __THROW;
- #define NIS_CALLBACK 17
- extern bool_t * nis_callback_3 (netobj *, CLIENT *) __THROW;
- extern bool_t * nis_callback_3_svc (netobj *, struct svc_req *) __THROW;
- #define NIS_CPTIME 18
- extern uint32_t * nis_cptime_3 (nis_name *, CLIENT *) __THROW;
- extern uint32_t * nis_cptime_3_svc (nis_name *, struct svc_req *) __THROW;
- #define NIS_CHECKPOINT 19
- extern cp_result * nis_checkpoint_3 (nis_name *, CLIENT *) __THROW;
- extern cp_result * nis_checkpoint_3_svc (nis_name *, struct svc_req *)
- __THROW;
- #define NIS_PING 20
- extern void * nis_ping_3 (ping_args *, CLIENT *) __THROW;
- extern void * nis_ping_3_svc (ping_args *, struct svc_req *) __THROW;
- #define NIS_SERVSTATE 21
- extern nis_taglist * nis_servstate_3 (nis_taglist *, CLIENT *) __THROW;
- extern nis_taglist * nis_servstate_3_svc (nis_taglist *,
- struct svc_req *) __THROW;
- #define NIS_MKDIR 22
- extern nis_error * nis_mkdir_3 (nis_name *, CLIENT *) __THROW;
- extern nis_error * nis_mkdir_3_svc (nis_name *, struct svc_req *) __THROW;
- #define NIS_RMDIR 23
- extern nis_error * nis_rmdir_3 (nis_name *, CLIENT *) __THROW;
- extern nis_error * nis_rmdir_3_svc (nis_name *, struct svc_req *) __THROW;
- #define NIS_UPDKEYS 24
- extern nis_error * nis_updkeys_3 (nis_name *, CLIENT *) __THROW;
- extern nis_error * nis_updkeys_3_svc (nis_name *, struct svc_req *) __THROW;
- __END_DECLS
- #endif /* ! _RPCSVC_NIS_H */
|