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