Merge commit '0b2e8253986c5c761129b58cfdac46d204903de1'
[unleashed.git] / include / rpcsvc / nis_db.h
blob65efd4b2ba4fd6639ae70aa9037b1109dd2285ab
1 /*
2 * CDDL HEADER START
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.
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.
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]
20 * CDDL HEADER END
23 * Copyright 2014 Garrett D'Amore <garrett@damore.org>
25 * Copyright (c) 1991,1997-1998 by Sun Microsystems, Inc.
26 * All rights reserved.
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.
36 #ifndef _RPCSVC_NIS_DB_H
37 #define _RPCSVC_NIS_DB_H
39 #include <rpc/rpc.h>
40 #include <rpcsvc/nis.h>
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
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
57 typedef enum db_status db_status;
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
68 typedef enum db_action db_action;
70 typedef entry_obj *entry_object_p;
72 typedef struct {
73 uint_t db_next_desc_len;
74 char *db_next_desc_val;
75 } db_next_desc;
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;
86 typedef struct db_result db_result;
89 * Prototypes for the database functions.
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 *);
107 #ifdef __cplusplus
109 #endif
111 #endif /* _RPCSVC_NIS_DB_H */