xref: /onnv-gate/usr/src/lib/krb5/plugins/kdb/db2/kdb_db2.h (revision 6426:a88591926d3d)
14960Swillf #pragma ident	"%Z%%M%	%I%	%E% SMI"
24960Swillf /*
34960Swillf  * lib/kdb/kdb_db2.h
44960Swillf  *
54960Swillf  * Copyright 1997 by the Massachusetts Institute of Technology.
64960Swillf  * All Rights Reserved.
74960Swillf  *
84960Swillf  * Export of this software from the United States of America may
94960Swillf  *   require a specific license from the United States Government.
104960Swillf  *   It is the responsibility of any person or organization contemplating
114960Swillf  *   export to obtain such a license before exporting.
124960Swillf  *
134960Swillf  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
144960Swillf  * distribute this software and its documentation for any purpose and
154960Swillf  * without fee is hereby granted, provided that the above copyright
164960Swillf  * notice appear in all copies and that both that copyright notice and
174960Swillf  * this permission notice appear in supporting documentation, and that
184960Swillf  * the name of M.I.T. not be used in advertising or publicity pertaining
194960Swillf  * to distribution of the software without specific, written prior
204960Swillf  * permission.  Furthermore if you modify this software you must label
214960Swillf  * your software as modified software and not distribute it in such a
224960Swillf  * fashion that it might be confused with the original M.I.T. software.
234960Swillf  * M.I.T. makes no representations about the suitability of
244960Swillf  * this software for any purpose.  It is provided "as is" without express
254960Swillf  * or implied warranty.
264960Swillf  *
274960Swillf  *
284960Swillf  * KDC Database backend definitions for Berkely DB.
294960Swillf  */
304960Swillf #ifndef KRB5_KDB_DB2_H
314960Swillf #define KRB5_KDB_DB2_H
324960Swillf 
334960Swillf #include "policy_db.h"
344960Swillf 
354960Swillf typedef struct _krb5_db2_context {
364960Swillf     krb5_boolean        db_inited;      /* Context initialized          */
374960Swillf     char *              db_name;        /* Name of database             */
384960Swillf     DB *		db;		/* DB handle			*/
394960Swillf     krb5_boolean	hashfirst;	/* Try hash database type first	*/
404960Swillf     char *              db_lf_name;     /* Name of lock file            */
414960Swillf     int                 db_lf_file;     /* File descriptor of lock file */
424960Swillf     time_t              db_lf_time;     /* Time last updated            */
434960Swillf     int                 db_locks_held;  /* Number of times locked       */
444960Swillf     int                 db_lock_mode;   /* Last lock mode, e.g. greatest*/
454960Swillf     krb5_boolean        db_nb_locks;    /* [Non]Blocking lock modes     */
464960Swillf     krb5_keyblock      *db_master_key;  /* Master key of database       */
474960Swillf     osa_adb_policy_t    policy_db;
484960Swillf     krb5_boolean tempdb;
494960Swillf } krb5_db2_context;
504960Swillf 
514960Swillf #define KRB5_DB2_MAX_RETRY 5
524960Swillf 
534960Swillf #define KDB2_LOCK_EXT ".ok"
544960Swillf #define KDB2_TEMP_LOCK_EXT "~.ok"
554960Swillf 
564960Swillf krb5_error_code krb5_db2_db_init
574960Swillf 	(krb5_context);
584960Swillf krb5_error_code krb5_db2_db_fini
594960Swillf 	(krb5_context);
604960Swillf krb5_error_code krb5_db2_db_get_age
614960Swillf 	(krb5_context,
624960Swillf 		   char *,
634960Swillf 		   time_t * );
644960Swillf krb5_error_code krb5_db2_db_create
654960Swillf 	(krb5_context,
664960Swillf 		   char *,
674960Swillf 		   krb5_int32);
684960Swillf krb5_error_code krb5_db2_db_destroy
694960Swillf 	(krb5_context,
704960Swillf 		   char * );
714960Swillf krb5_error_code krb5_db2_db_rename
724960Swillf 	(krb5_context,
734960Swillf 		   char *,
744960Swillf 		   char * );
754960Swillf krb5_error_code krb5_db2_db_get_principal
764960Swillf 	(krb5_context,
774960Swillf 		   krb5_const_principal,
784960Swillf 		   krb5_db_entry *,
794960Swillf 		   int *,
804960Swillf 		   krb5_boolean * );
814960Swillf krb5_error_code krb5_db2_db_free_principal
824960Swillf 	(krb5_context,
834960Swillf 		   krb5_db_entry *,
844960Swillf 		   int );
854960Swillf krb5_error_code krb5_db2_db_put_principal
864960Swillf 	(krb5_context,
874960Swillf 	 krb5_db_entry *,
884960Swillf 	 int *,
894960Swillf 	 char **db_args
904960Swillf 	 );
914960Swillf krb5_error_code krb5_db2_db_iterate_ext
924960Swillf     	(krb5_context,
934960Swillf 		   krb5_error_code (*) (krb5_pointer,
944960Swillf 					          krb5_db_entry *),
954960Swillf 	           krb5_pointer, int, int );
965916Swillf /* Solaris Kerberos: adding support for db_args */
974960Swillf krb5_error_code krb5_db2_db_iterate
984960Swillf (krb5_context,char *,
994960Swillf 		   krb5_error_code (*) (krb5_pointer,
1004960Swillf 					          krb5_db_entry *),
1015916Swillf 	           krb5_pointer,
1025916Swillf 		   char **db_args );
1034960Swillf krb5_error_code krb5_db2_db_set_nonblocking
1044960Swillf 	(krb5_context,
1054960Swillf 		   krb5_boolean,
1064960Swillf 		   krb5_boolean * );
1074960Swillf krb5_boolean krb5_db2_db_set_lockmode
1084960Swillf 	(krb5_context,
1094960Swillf 		   krb5_boolean );
1104960Swillf krb5_error_code krb5_db2_db_open_database
1114960Swillf 	(krb5_context);
1124960Swillf krb5_error_code krb5_db2_db_close_database
1134960Swillf 	(krb5_context);
1144960Swillf 
1154960Swillf krb5_error_code
1164960Swillf krb5_db2_set_master_key_ext ( krb5_context kcontext,
1174960Swillf 			      char *pwd,
1184960Swillf 			      krb5_keyblock *key);
1194960Swillf 
1204960Swillf krb5_error_code
1214960Swillf krb5_db2_db_set_mkey( krb5_context context,
1224960Swillf 		      krb5_keyblock *key);
1234960Swillf 
1244960Swillf krb5_error_code
1254960Swillf krb5_db2_db_get_mkey( krb5_context context,
1264960Swillf 		      krb5_keyblock **key);
1274960Swillf 
1284960Swillf krb5_error_code
1294960Swillf krb5_db2_db_put_principal( krb5_context context,
1304960Swillf 			   krb5_db_entry *entries,
1314960Swillf 			   register int *nentries,
1324960Swillf 			   char **db_args);
1334960Swillf 
1344960Swillf krb5_error_code
1354960Swillf krb5_db2_db_delete_principal(krb5_context context,
1364960Swillf 			     krb5_const_principal searchfor,
1374960Swillf 			     int *nentries);
1384960Swillf 
1394960Swillf krb5_error_code krb5_db2_lib_init(void);
1404960Swillf 
1414960Swillf krb5_error_code krb5_db2_lib_cleanup(void);
1424960Swillf 
1434960Swillf krb5_error_code
1444960Swillf krb5_db2_db_unlock(krb5_context);
1454960Swillf 
1464960Swillf krb5_error_code
1474960Swillf krb5_db2_promote_db(krb5_context kcontext,
1484960Swillf 		    char *conf_section,
1494960Swillf 		    char **db_args);
1504960Swillf 
1514960Swillf krb5_error_code
1524960Swillf krb5_db2_db_set_option ( krb5_context kcontext,
1534960Swillf 			 int option,
1544960Swillf 			 void *value );
1554960Swillf 
1564960Swillf krb5_error_code
1574960Swillf krb5_db2_db_lock( krb5_context 	  context,
1584960Swillf 		  int 	 	  in_mode);
1594960Swillf 
1604960Swillf 
1614960Swillf krb5_error_code
1624960Swillf krb5_db2_open( krb5_context kcontext,
1634960Swillf 			       char *conf_section,
1644960Swillf 			       char **db_args,
1654960Swillf 			       int mode );
1664960Swillf 
1674960Swillf krb5_error_code krb5_db2_create( krb5_context kcontext,
1684960Swillf 				 char *conf_section,
1694960Swillf 				 char **db_args );
1704960Swillf 
1714960Swillf krb5_error_code krb5_db2_destroy( krb5_context kcontext,
1724960Swillf 				  char *conf_section,
1734960Swillf 				  char **db_args );
1744960Swillf 
1754960Swillf const char * krb5_db2_err2str( krb5_context kcontext,
1764960Swillf 			       long err_code );
1774960Swillf 
1784960Swillf void *
1794960Swillf krb5_db2_alloc( krb5_context kcontext,
1804960Swillf 		void *ptr,
1814960Swillf 		size_t size );
1824960Swillf 
1834960Swillf void
1844960Swillf krb5_db2_free( krb5_context kcontext,
1854960Swillf 		    void *ptr );
1864960Swillf 
187*6426Smp153739 const char *
188*6426Smp153739 krb5_db2_errcode_2_string(krb5_context kcontext,
189*6426Smp153739 		    long err_code);
1904960Swillf 
191*6426Smp153739 void
192*6426Smp153739 krb5_db2_release_errcode_string(krb5_context kcontext,
193*6426Smp153739 		    const char *msg);
1944960Swillf 
1954960Swillf 
1964960Swillf 
1974960Swillf /* policy management functions */
1984960Swillf krb5_error_code
1994960Swillf krb5_db2_create_policy(krb5_context context, osa_policy_ent_t entry);
2004960Swillf 
2014960Swillf krb5_error_code krb5_db2_get_policy ( krb5_context kcontext,
2024960Swillf 				      char *name,
2034960Swillf 				      osa_policy_ent_t *policy,
2044960Swillf 				      int *cnt);
2054960Swillf 
2064960Swillf krb5_error_code krb5_db2_put_policy ( krb5_context kcontext,
2074960Swillf 				      osa_policy_ent_t policy );
2084960Swillf 
2094960Swillf krb5_error_code krb5_db2_iter_policy ( krb5_context kcontext,
2104960Swillf 				       char *match_entry,
2114960Swillf 				       osa_adb_iter_policy_func func,
2124960Swillf 				       void *data );
2134960Swillf 
2144960Swillf krb5_error_code krb5_db2_delete_policy ( krb5_context kcontext,
2154960Swillf 					 char *policy );
2164960Swillf 
2174960Swillf void krb5_db2_free_policy( krb5_context kcontext,
2184960Swillf 			   osa_policy_ent_t entry );
2194960Swillf 
2204960Swillf #endif /* KRB5_KDB_DB2_H */
221