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