xref: /onnv-gate/usr/src/lib/gss_mechs/mech_krb5/mech/gss_libinit.c (revision 13132:9615cdbf7b70)
15053Sgtb /*
2*13132SGlenn.Barry@oracle.com  * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
35053Sgtb  */
45053Sgtb 
55053Sgtb #include <assert.h>
65053Sgtb 
75053Sgtb #include "gssapi_err_generic.h"
85053Sgtb #include "gssapi_err_krb5.h"
95053Sgtb #include "gssapiP_krb5.h"
105053Sgtb 
115053Sgtb #include "gss_libinit.h"
125053Sgtb #include "k5-platform.h"
135053Sgtb 
145053Sgtb #include "mglueP.h"
155053Sgtb /*
165053Sgtb  * Initialize the GSSAPI library.
175053Sgtb  */
185053Sgtb 
195053Sgtb MAKE_INIT_FUNCTION(gssint_lib_init);
205053Sgtb MAKE_FINI_FUNCTION(gssint_lib_fini);
215053Sgtb 
gssint_lib_init(void)225053Sgtb int gssint_lib_init(void)
235053Sgtb {
245053Sgtb     int err;
255053Sgtb 
265053Sgtb #ifdef SHOW_INITFINI_FUNCS
275053Sgtb     printf("gssint_lib_init\n");
285053Sgtb #endif
295053Sgtb 
305053Sgtb #if !USE_BUNDLE_ERROR_STRINGS
315053Sgtb     add_error_table(&et_k5g_error_table);
325053Sgtb     add_error_table(&et_ggss_error_table);
335053Sgtb #endif
345053Sgtb #if 0 /* SUNW15resync */
355053Sgtb     err = gssint_mechglue_init();
365053Sgtb     if (err)
375053Sgtb 	return err;
385053Sgtb #endif
395053Sgtb     err = k5_mutex_finish_init(&gssint_krb5_keytab_lock);
405053Sgtb     if (err)
415053Sgtb 	return err;
425053Sgtb     err = k5_key_register(K5_KEY_GSS_KRB5_SET_CCACHE_OLD_NAME, free);
435053Sgtb     if (err)
445053Sgtb 	return err;
455053Sgtb     err = k5_key_register(K5_KEY_GSS_KRB5_CCACHE_NAME, free);
465053Sgtb     if (err)
475053Sgtb 	return err;
48*13132SGlenn.Barry@oracle.com     err = k5_key_register(K5_KEY_GSS_KRB5_ERROR_MESSAGE,
49*13132SGlenn.Barry@oracle.com                           krb5_gss_delete_error_info);
50*13132SGlenn.Barry@oracle.com     if (err)
51*13132SGlenn.Barry@oracle.com 	return err;
527934SMark.Phalan@Sun.COM #ifndef _WIN32
535053Sgtb     err = k5_mutex_finish_init(&kg_kdc_flag_mutex);
545053Sgtb     if (err)
555053Sgtb 	return err;
565053Sgtb #endif
575053Sgtb     return k5_mutex_finish_init(&kg_vdb.mutex);
585053Sgtb }
595053Sgtb 
gssint_lib_fini(void)605053Sgtb void gssint_lib_fini(void)
615053Sgtb {
625053Sgtb     if (!INITIALIZER_RAN(gssint_lib_init) || PROGRAM_EXITING()) {
635053Sgtb #ifdef SHOW_INITFINI_FUNCS
645053Sgtb 	printf("gssint_lib_fini: skipping\n");
655053Sgtb #endif
665053Sgtb 	return;
675053Sgtb     }
685053Sgtb #ifdef SHOW_INITFINI_FUNCS
695053Sgtb     printf("gssint_lib_fini\n");
705053Sgtb #endif
715053Sgtb #if !USE_BUNDLE_ERROR_STRINGS
725053Sgtb     remove_error_table(&et_k5g_error_table);
735053Sgtb     remove_error_table(&et_ggss_error_table);
745053Sgtb #endif
755053Sgtb     k5_key_delete(K5_KEY_GSS_KRB5_SET_CCACHE_OLD_NAME);
765053Sgtb     k5_key_delete(K5_KEY_GSS_KRB5_CCACHE_NAME);
775053Sgtb     k5_mutex_destroy(&kg_vdb.mutex);
787934SMark.Phalan@Sun.COM #ifndef _WIN32
795053Sgtb     k5_mutex_destroy(&kg_kdc_flag_mutex);
805053Sgtb #endif
815053Sgtb     k5_mutex_destroy(&gssint_krb5_keytab_lock);
825053Sgtb #if 0 /* SUNW15resync */
835053Sgtb     gssint_mechglue_fini();
845053Sgtb #endif
855053Sgtb }
865053Sgtb 
gssint_initialize_library(void)875053Sgtb OM_uint32 gssint_initialize_library (void)
885053Sgtb {
895053Sgtb     return CALL_INIT_FUNCTION(gssint_lib_init);
905053Sgtb }
91