1ab9b2e15Sgtb /* 2*5e01956fSGlenn Barry * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3ab9b2e15Sgtb */ 4ab9b2e15Sgtb 5ab9b2e15Sgtb #include <assert.h> 6ab9b2e15Sgtb 7ab9b2e15Sgtb #include "gssapi_err_generic.h" 8ab9b2e15Sgtb #include "gssapi_err_krb5.h" 9ab9b2e15Sgtb #include "gssapiP_krb5.h" 10ab9b2e15Sgtb 11ab9b2e15Sgtb #include "gss_libinit.h" 12ab9b2e15Sgtb #include "k5-platform.h" 13ab9b2e15Sgtb 14ab9b2e15Sgtb #include "mglueP.h" 15ab9b2e15Sgtb /* 16ab9b2e15Sgtb * Initialize the GSSAPI library. 17ab9b2e15Sgtb */ 18ab9b2e15Sgtb 19ab9b2e15Sgtb MAKE_INIT_FUNCTION(gssint_lib_init); 20ab9b2e15Sgtb MAKE_FINI_FUNCTION(gssint_lib_fini); 21ab9b2e15Sgtb gssint_lib_init(void)22ab9b2e15Sgtbint gssint_lib_init(void) 23ab9b2e15Sgtb { 24ab9b2e15Sgtb int err; 25ab9b2e15Sgtb 26ab9b2e15Sgtb #ifdef SHOW_INITFINI_FUNCS 27ab9b2e15Sgtb printf("gssint_lib_init\n"); 28ab9b2e15Sgtb #endif 29ab9b2e15Sgtb 30ab9b2e15Sgtb #if !USE_BUNDLE_ERROR_STRINGS 31ab9b2e15Sgtb add_error_table(&et_k5g_error_table); 32ab9b2e15Sgtb add_error_table(&et_ggss_error_table); 33ab9b2e15Sgtb #endif 34ab9b2e15Sgtb #if 0 /* SUNW15resync */ 35ab9b2e15Sgtb err = gssint_mechglue_init(); 36ab9b2e15Sgtb if (err) 37ab9b2e15Sgtb return err; 38ab9b2e15Sgtb #endif 39ab9b2e15Sgtb err = k5_mutex_finish_init(&gssint_krb5_keytab_lock); 40ab9b2e15Sgtb if (err) 41ab9b2e15Sgtb return err; 42ab9b2e15Sgtb err = k5_key_register(K5_KEY_GSS_KRB5_SET_CCACHE_OLD_NAME, free); 43ab9b2e15Sgtb if (err) 44ab9b2e15Sgtb return err; 45ab9b2e15Sgtb err = k5_key_register(K5_KEY_GSS_KRB5_CCACHE_NAME, free); 46ab9b2e15Sgtb if (err) 47ab9b2e15Sgtb return err; 48*5e01956fSGlenn Barry err = k5_key_register(K5_KEY_GSS_KRB5_ERROR_MESSAGE, 49*5e01956fSGlenn Barry krb5_gss_delete_error_info); 50*5e01956fSGlenn Barry if (err) 51*5e01956fSGlenn Barry return err; 52159d09a2SMark Phalan #ifndef _WIN32 53ab9b2e15Sgtb err = k5_mutex_finish_init(&kg_kdc_flag_mutex); 54ab9b2e15Sgtb if (err) 55ab9b2e15Sgtb return err; 56ab9b2e15Sgtb #endif 57ab9b2e15Sgtb return k5_mutex_finish_init(&kg_vdb.mutex); 58ab9b2e15Sgtb } 59ab9b2e15Sgtb gssint_lib_fini(void)60ab9b2e15Sgtbvoid gssint_lib_fini(void) 61ab9b2e15Sgtb { 62ab9b2e15Sgtb if (!INITIALIZER_RAN(gssint_lib_init) || PROGRAM_EXITING()) { 63ab9b2e15Sgtb #ifdef SHOW_INITFINI_FUNCS 64ab9b2e15Sgtb printf("gssint_lib_fini: skipping\n"); 65ab9b2e15Sgtb #endif 66ab9b2e15Sgtb return; 67ab9b2e15Sgtb } 68ab9b2e15Sgtb #ifdef SHOW_INITFINI_FUNCS 69ab9b2e15Sgtb printf("gssint_lib_fini\n"); 70ab9b2e15Sgtb #endif 71ab9b2e15Sgtb #if !USE_BUNDLE_ERROR_STRINGS 72ab9b2e15Sgtb remove_error_table(&et_k5g_error_table); 73ab9b2e15Sgtb remove_error_table(&et_ggss_error_table); 74ab9b2e15Sgtb #endif 75ab9b2e15Sgtb k5_key_delete(K5_KEY_GSS_KRB5_SET_CCACHE_OLD_NAME); 76ab9b2e15Sgtb k5_key_delete(K5_KEY_GSS_KRB5_CCACHE_NAME); 77ab9b2e15Sgtb k5_mutex_destroy(&kg_vdb.mutex); 78159d09a2SMark Phalan #ifndef _WIN32 79ab9b2e15Sgtb k5_mutex_destroy(&kg_kdc_flag_mutex); 80ab9b2e15Sgtb #endif 81ab9b2e15Sgtb k5_mutex_destroy(&gssint_krb5_keytab_lock); 82ab9b2e15Sgtb #if 0 /* SUNW15resync */ 83ab9b2e15Sgtb gssint_mechglue_fini(); 84ab9b2e15Sgtb #endif 85ab9b2e15Sgtb } 86ab9b2e15Sgtb gssint_initialize_library(void)87ab9b2e15SgtbOM_uint32 gssint_initialize_library (void) 88ab9b2e15Sgtb { 89ab9b2e15Sgtb return CALL_INIT_FUNCTION(gssint_lib_init); 90ab9b2e15Sgtb } 91