Home | History | Annotate | Download | only in rpcsvc
      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