xref: /illumos-gate/usr/src/head/rpcsvc/nis_db.h (revision 581cede61ac9c14d8d4ea452562a567189eead78)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright (c) 1991,1997-1998 by Sun Microsystems, Inc.
24  * All rights reserved.
25  */
26 
27 /*
28  * This header file defines the interface to the NIS database. All
29  * implementations of the database must export at least these routines.
30  * They must also follow the conventions set herein. See the implementors
31  * guide for specific semantics that are required.
32  */
33 
34 #ifndef	_RPCSVC_NIS_DB_H
35 #define	_RPCSVC_NIS_DB_H
36 
37 #pragma ident	"%Z%%M%	%I%	%E% SMI"
38 
39 #include <rpc/rpc.h>
40 #include <rpcsvc/nis.h>
41 
42 #ifdef	__cplusplus
43 extern "C" {
44 #endif
45 
46 enum db_status {
47 	DB_SUCCESS = 0,
48 	DB_NOTFOUND = 1,
49 	DB_NOTUNIQUE = 2,
50 	DB_BADTABLE = 3,
51 	DB_BADQUERY = 4,
52 	DB_BADOBJECT = 5,
53 	DB_MEMORY_LIMIT = 6,
54 	DB_STORAGE_LIMIT = 7,
55 	DB_INTERNAL_ERROR = 8
56 };
57 typedef enum db_status db_status;
58 
59 enum db_action {
60 	DB_LOOKUP = 0,
61 	DB_REMOVE = 1,
62 	DB_ADD = 2,
63 	DB_FIRST = 3,
64 	DB_NEXT = 4,
65 	DB_ALL = 5,
66 	DB_RESET_NEXT = 6
67 };
68 typedef enum db_action db_action;
69 
70 typedef entry_obj *entry_object_p;
71 
72 typedef struct {
73 	uint_t db_next_desc_len;
74 	char *db_next_desc_val;
75 } db_next_desc;
76 
77 struct db_result {
78 	db_status status;
79 	db_next_desc nextinfo;
80 	struct {
81 		uint_t objects_len;
82 		entry_object_p *objects_val;
83 	} objects;
84 	long ticks;
85 };
86 typedef struct db_result db_result;
87 
88 /*
89  * Prototypes for the database functions.
90  */
91 
92 #if defined(__STDC__) || defined(__cplusplus)
93 
94 extern bool_t db_initialize(char *);
95 extern db_status db_create_table(char *, table_obj *);
96 extern db_status db_destroy_table(char *);
97 extern db_result *db_first_entry(char *, int, nis_attr *);
98 extern db_result *db_next_entry(char *, db_next_desc *);
99 extern db_result *db_reset_next_entry(char *, db_next_desc *);
100 extern db_result *db_list_entries(char *, int, nis_attr *);
101 extern db_result *db_add_entry(char *, int,  nis_attr *, entry_obj *);
102 extern db_result *db_remove_entry(char *, int, nis_attr *);
103 extern db_status db_checkpoint(char *);
104 extern db_status db_standby(char *);
105 extern db_status db_table_exists(char *);
106 extern db_status db_unload_table(char *);
107 extern void db_free_result(db_result *);
108 
109 #else /* Non-prototype definitions */
110 
111 extern bool_t db_initialize();
112 extern db_status db_create_table();
113 extern db_status db_destroy_table();
114 extern db_result *db_first_entry();
115 extern db_result *db_next_entry();
116 extern db_result *db_reset_next_entry();
117 extern db_result *db_list_entries();
118 extern db_result *db_add_entry();
119 extern db_result *db_remove_entry();
120 extern db_status db_checkpoint();
121 extern db_status db_standby();
122 extern db_status db_table_exists();
123 extern db_status db_unload_table();
124 extern void db_free_result();
125 
126 #endif  /* defined(__STDC__) || defined(__cplusplus) */
127 
128 #ifdef __cplusplus
129 }
130 #endif
131 
132 #endif	/* _RPCSVC_NIS_DB_H */
133