1*54925bf6Swillf /* 2*54925bf6Swillf * Data Types for policy and principal information that 3*54925bf6Swillf * exists in the respective databases. 4*54925bf6Swillf * 5*54925bf6Swillf * $Header$ 6*54925bf6Swillf * 7*54925bf6Swillf * This file was originally created with rpcgen. 8*54925bf6Swillf * It has been hacked up since then. 9*54925bf6Swillf */ 10*54925bf6Swillf 11*54925bf6Swillf #ifndef __ADB_H__ 12*54925bf6Swillf #define __ADB_H__ 13*54925bf6Swillf 14*54925bf6Swillf #include <sys/types.h> 15*54925bf6Swillf #include <errno.h> 16*54925bf6Swillf #include <krb5.h> 17*54925bf6Swillf #include <kdb.h> 18*54925bf6Swillf /* Okay, this is a bit obscure. The libdb2 configure script doesn't 19*54925bf6Swillf detect it, but on Tru64 5.1, netinet/in.h causes sys/bittypes.h to 20*54925bf6Swillf be included, and that has a typedef for u_int32_t. Because the 21*54925bf6Swillf configure script doesn't detect it, it causes db-config.h to have a 22*54925bf6Swillf #define for u_int32_t, so including db.h and then netinet/in.h 23*54925bf6Swillf causes compilation to fail. 24*54925bf6Swillf 25*54925bf6Swillf Since gssrpc/types.h includes netinet/in.h, including that first 26*54925bf6Swillf will cause the typedef to be seen before the macro definition, 27*54925bf6Swillf which still isn't quite right, but is close enough for now. 28*54925bf6Swillf 29*54925bf6Swillf A better fix might be for db.h to include netinet/in.h if that's 30*54925bf6Swillf where we find u_int32_t. */ 31*54925bf6Swillf /* Solaris Kerberos: gssrpc not supported */ 32*54925bf6Swillf #if 0 /************** Begin IFDEF'ed OUT *******************************/ 33*54925bf6Swillf #include <gssrpc/types.h> 34*54925bf6Swillf #include <gssrpc/xdr.h> 35*54925bf6Swillf #else 36*54925bf6Swillf #include <rpc/types.h> 37*54925bf6Swillf #include <rpc/xdr.h> 38*54925bf6Swillf #endif /**************** END IFDEF'ed OUT *******************************/ 39*54925bf6Swillf #include <db.h> 40*54925bf6Swillf #include <kdb/adb_err.h> 41*54925bf6Swillf #include <com_err.h> 42*54925bf6Swillf 43*54925bf6Swillf typedef long osa_adb_ret_t; 44*54925bf6Swillf 45*54925bf6Swillf #define OSA_ADB_POLICY_DB_MAGIC 0x12345A00 46*54925bf6Swillf 47*54925bf6Swillf #define OSA_ADB_POLICY_VERSION_MASK 0x12345D00 48*54925bf6Swillf #define OSA_ADB_POLICY_VERSION_1 0x12345D01 49*54925bf6Swillf 50*54925bf6Swillf 51*54925bf6Swillf 52*54925bf6Swillf typedef struct _osa_adb_db_lock_ent_t { 53*54925bf6Swillf FILE *lockfile; 54*54925bf6Swillf char *filename; 55*54925bf6Swillf int refcnt, lockmode, lockcnt; 56*54925bf6Swillf krb5_context context; 57*54925bf6Swillf } osa_adb_lock_ent, *osa_adb_lock_t; 58*54925bf6Swillf 59*54925bf6Swillf typedef struct _osa_adb_db_ent_t { 60*54925bf6Swillf int magic; 61*54925bf6Swillf DB *db; 62*54925bf6Swillf HASHINFO info; 63*54925bf6Swillf BTREEINFO btinfo; 64*54925bf6Swillf char *filename; 65*54925bf6Swillf osa_adb_lock_t lock; 66*54925bf6Swillf int opencnt; 67*54925bf6Swillf } osa_adb_db_ent, *osa_adb_db_t, *osa_adb_princ_t, *osa_adb_policy_t; 68*54925bf6Swillf 69*54925bf6Swillf /* 70*54925bf6Swillf * Return Code (the rest are in adb_err.h) 71*54925bf6Swillf */ 72*54925bf6Swillf 73*54925bf6Swillf #define OSA_ADB_OK 0 74*54925bf6Swillf 75*54925bf6Swillf /* 76*54925bf6Swillf * Functions 77*54925bf6Swillf */ 78*54925bf6Swillf 79*54925bf6Swillf krb5_error_code osa_adb_create_db(char *filename, char *lockfile, int magic); 80*54925bf6Swillf krb5_error_code osa_adb_destroy_db(char *filename, char *lockfile, int magic); 81*54925bf6Swillf krb5_error_code osa_adb_rename_db(char *filefrom, char *lockfrom, 82*54925bf6Swillf char *fileto, char *lockto, int magic); 83*54925bf6Swillf krb5_error_code osa_adb_init_db(osa_adb_db_t *dbp, char *filename, 84*54925bf6Swillf char *lockfile, int magic); 85*54925bf6Swillf krb5_error_code osa_adb_fini_db(osa_adb_db_t db, int magic); 86*54925bf6Swillf krb5_error_code osa_adb_get_lock(osa_adb_db_t db, int mode); 87*54925bf6Swillf krb5_error_code osa_adb_release_lock(osa_adb_db_t db); 88*54925bf6Swillf krb5_error_code osa_adb_open_and_lock(osa_adb_princ_t db, int locktype); 89*54925bf6Swillf krb5_error_code osa_adb_close_and_unlock(osa_adb_princ_t db); 90*54925bf6Swillf krb5_error_code osa_adb_close_policy(osa_adb_policy_t db); 91*54925bf6Swillf krb5_error_code osa_adb_create_policy(osa_adb_policy_t db, 92*54925bf6Swillf osa_policy_ent_t entry); 93*54925bf6Swillf krb5_error_code osa_adb_destroy_policy(osa_adb_policy_t db, 94*54925bf6Swillf char * name); 95*54925bf6Swillf krb5_error_code osa_adb_get_policy(osa_adb_policy_t db, 96*54925bf6Swillf char * name, 97*54925bf6Swillf osa_policy_ent_t *entry, 98*54925bf6Swillf int *cnt); 99*54925bf6Swillf krb5_error_code osa_adb_put_policy(osa_adb_policy_t db, 100*54925bf6Swillf osa_policy_ent_t entry); 101*54925bf6Swillf krb5_error_code osa_adb_iter_policy(osa_adb_policy_t db, 102*54925bf6Swillf osa_adb_iter_policy_func func, 103*54925bf6Swillf void * data); 104*54925bf6Swillf void osa_free_policy_ent(osa_policy_ent_t val); 105*54925bf6Swillf 106*54925bf6Swillf bool_t xdr_osa_policy_ent_rec(XDR *xdrs, osa_policy_ent_t objp); 107*54925bf6Swillf 108*54925bf6Swillf #endif /* __ADB_H__ */ 109