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