xref: /illumos-gate/usr/src/head/rpcsvc/nis_db.h (revision ba3594ba9b5dd4c846c472a8d657edcb7c8109ac)
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 2014 Garrett D'Amore <garrett@damore.org>
24  *
25  * Copyright (c) 1991,1997-1998 by Sun Microsystems, Inc.
26  * All rights reserved.
27  */
28 
29 /*
30  * This header file defines the interface to the NIS database. All
31  * implementations of the database must export at least these routines.
32  * They must also follow the conventions set herein. See the implementors
33  * guide for specific semantics that are required.
34  */
35 
36 #ifndef	_RPCSVC_NIS_DB_H
37 #define	_RPCSVC_NIS_DB_H
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 extern bool_t db_initialize(char *);
93 extern db_status db_create_table(char *, table_obj *);
94 extern db_status db_destroy_table(char *);
95 extern db_result *db_first_entry(char *, int, nis_attr *);
96 extern db_result *db_next_entry(char *, db_next_desc *);
97 extern db_result *db_reset_next_entry(char *, db_next_desc *);
98 extern db_result *db_list_entries(char *, int, nis_attr *);
99 extern db_result *db_add_entry(char *, int,  nis_attr *, entry_obj *);
100 extern db_result *db_remove_entry(char *, int, nis_attr *);
101 extern db_status db_checkpoint(char *);
102 extern db_status db_standby(char *);
103 extern db_status db_table_exists(char *);
104 extern db_status db_unload_table(char *);
105 extern void db_free_result(db_result *);
106 
107 #ifdef __cplusplus
108 }
109 #endif
110 
111 #endif	/* _RPCSVC_NIS_DB_H */
112