From: Zhanna Tsitkov Date: Wed, 21 Apr 2010 19:03:41 +0000 (+0000) Subject: Moved plugin initialization into krb5int_lib_init from the applications. (It is still... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c4ad5082d7a8dc23b1a036f0b10c1f3ef86c8d5e;p=thirdparty%2Fkrb5.git Moved plugin initialization into krb5int_lib_init from the applications. (It is still needed in the appl, e.g. t_prng, where krb5 lib is not initialized). Make check works until it reaches ./t_gssapi.py git-svn-id: svn://anonsvn.mit.edu/krb5/branches/plugins@23915 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/Makefile.in b/src/Makefile.in index 36d15ba077..736ad0b2d2 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -7,8 +7,7 @@ mydir=. # plugins/preauth/wpse # plugins/preauth/cksum_body # plugins/authdata/greet -SUBDIRS=util include plugins/prng plugin_core lib \ - plugins/prng/plugin_yarrow plugin_core/impl \ +SUBDIRS=util include plugin_core plugins/prng lib \ @ldap_plugin_dir@ \ plugins/kdb/db2 \ plugins/preauth/pkinit \ @@ -18,6 +17,8 @@ SUBDIRS=util include plugins/prng plugin_core lib \ BUILDTOP=$(REL)$(C) LOCALINCLUDES = -I$(srcdir) +# plugins/prng/plugin_yarrow + SRCS = HDRS = diff --git a/src/config/pre.in b/src/config/pre.in index 4f69cfbbb7..e77f81e0e7 100644 --- a/src/config/pre.in +++ b/src/config/pre.in @@ -324,8 +324,8 @@ GSSRPC_DEPLIB = $(TOPLIBD)/libgssrpc$(DEPLIBEXT) GSS_DEPLIB = $(TOPLIBD)/libgssapi_krb5$(DEPLIBEXT) KRB5_DEPLIB = $(TOPLIBD)/libkrb5$(DEPLIBEXT) CRYPTO_DEPLIB = $(TOPLIBD)/libk5crypto$(DEPLIBEXT) -PLUGIN_CORE_DEPLIB = $(TOPLIBD)/../plugin_core/plugin_core$(DEPLIBEXT) -PLUGIN_PRNG_DEPLIB = $(TOPLIBD)/../plugins/prng/plugin_prng$(DEPLIBEXT) +PLUGIN_CORE_DEPLIB = $(TOPLIBD)/../plugin_core/libplugin_core$(DEPLIBEXT) +PLUGIN_PRNG_DEPLIB = $(TOPLIBD)/../plugins/prng/libplugin_prng.a COM_ERR_DEPLIB = $(COM_ERR_DEPLIB-@COM_ERR_VERSION@) COM_ERR_DEPLIB-sys = # empty COM_ERR_DEPLIB-k5 = $(TOPLIBD)/libcom_err$(DEPLIBEXT) diff --git a/src/lib/Makefile.in b/src/lib/Makefile.in index 55e9b0f37d..fc8af38215 100644 --- a/src/lib/Makefile.in +++ b/src/lib/Makefile.in @@ -1,5 +1,5 @@ mydir=lib -SUBDIRS=crypto krb5 gssapi rpc kdb kadm5 apputils +SUBDIRS=crypto ../plugins/prng/plugin_yarrow ../plugin_core/impl krb5 gssapi rpc kdb kadm5 apputils BUILDTOP=$(REL).. all-unix:: diff --git a/src/lib/crypto/crypto_tests/Makefile.in b/src/lib/crypto/crypto_tests/Makefile.in index 14ec0ff896..ee09ea4b5f 100644 --- a/src/lib/crypto/crypto_tests/Makefile.in +++ b/src/lib/crypto/crypto_tests/Makefile.in @@ -15,11 +15,7 @@ PROG_RPATH=$(KRB5_LIBDIR) DEFS= PLUGINS_LIBS = \ - ../../../plugin_core/impl/plugin_default_manager.so \ - ../../../plugin_core/impl/plugin_default_factory.so \ - ../../../plugins/prng/plugin_yarrow/plugin_prng_impl.so \ - ../../../plugins/prng/plugin_yarrow/yarrow.so \ - ../../../plugins/prng/plugin_yarrow/ycipher.so + $(srcdir)/../../libplugin_impl.a $(srcdir)/../../libplugin_yarrow.a EXTRADEPSRCS=\ $(srcdir)/t_nfold.c \ @@ -51,15 +47,15 @@ EXTRADEPSRCS=\ # checksums that interoperate. # check-unix:: t_nfold t_encrypt t_prf t_prng t_hmac \ # -check-unix:: t_prng t_nfold t_encrypt t_hmac t_prf\ +check-unix:: t_encrypt t_prng t_nfold t_encrypt t_hmac t_prf\ t_cksum4 t_cksum5 \ aes-test \ t_mddriver4 t_mddriver \ t_crc t_cts t_short + $(RUN_SETUP) $(VALGRIND) ./t_encrypt $(RUN_SETUP) $(VALGRIND) ./t_prng <$(srcdir)/t_prng.seed >t_prng.output && \ diff t_prng.output $(srcdir)/t_prng.expected $(RUN_SETUP) $(VALGRIND) ./t_nfold - $(RUN_SETUP) $(VALGRIND) ./t_encrypt $(RUN_SETUP) $(VALGRIND) ./t_hmac $(RUN_SETUP) $(VALGRIND) ./t_prf <$(srcdir)/t_prf.in >t_prf.output diff t_prf.output $(srcdir)/t_prf.expected diff --git a/src/lib/crypto/crypto_tests/t_prng.c b/src/lib/crypto/crypto_tests/t_prng.c index 623aaedbb3..7825b23548 100644 --- a/src/lib/crypto/crypto_tests/t_prng.c +++ b/src/lib/crypto/crypto_tests/t_prng.c @@ -48,6 +48,7 @@ int main () { krb5_data input, output; unsigned int source_id, seed_length; unsigned int i; +//#if 0 plugin_manager* default_manager; const char conf_path[] = "plugin_conf.yml"; @@ -56,7 +57,7 @@ int main () { plugin_manager_configure(conf_path); plugin_manager_start(); - +//#endif while (1) { /* Read source*/ if (scanf ("%u", &source_id ) == EOF ) diff --git a/src/lib/krb5/Makefile.in b/src/lib/krb5/Makefile.in index adaba32aa1..75ca2b4c41 100644 --- a/src/lib/krb5/Makefile.in +++ b/src/lib/krb5/Makefile.in @@ -1,9 +1,16 @@ mydir=lib/krb5 BUILDTOP=$(REL)..$(S).. -LOCALINCLUDES = -I$(srcdir)/ccache -I$(srcdir)/keytab -I$(srcdir)/rcache -I$(srcdir)/os -I$(srcdir)/unicode +LOCALINCLUDES = -I$(srcdir)/ccache -I$(srcdir)/keytab -I$(srcdir)/rcache -I$(srcdir)/os -I$(srcdir)/unicode \ + -I$(srcdir)/../../plugin_core/ -I$(srcdir)/../../plugins/prng/ -I$(srcdir)/../../plugin_core/impl + SUBDIRS= error_tables asn.1 ccache keytab krb os rcache unicode DEFS= +PLUGINS_LIBS = \ + ../../plugin_core/impl/libplugin_impl.a $(PLUGIN_CORE_DEPLIB) \ + ../../plugins/prng/plugin_yarrow/libplugin_yarrow.a + + ##DOSBUILDTOP = ..\.. ##DOSLIBNAME=$(OUTPRE)krb5.lib ##DOSOBJFILEDEP=$(OUTPRE)asn1.lst $(OUTPRE)ccache.lst $(OUTPRE)err_tbls.lst $(OUTPRE)keytab.lst $(OUTPRE)krb.lst $(OUTPRE)os.lst $(OUTPRE)posix.lst $(OUTPRE)rcache.lst $(OUTPRE)krb5.lst $(OUTPRE)unicode.lst @@ -54,8 +61,8 @@ SRCS=\ RELDIR=krb5 SHLIB_EXPDEPS = \ $(TOPLIBD)/libk5crypto$(SHLIBEXT) \ - $(COM_ERR_DEPLIB) $(SUPPORT_DEPLIB) -SHLIB_EXPLIBS=-lk5crypto -lcom_err $(SUPPORT_LIB) @GEN_LIB@ $(LIBS) + $(COM_ERR_DEPLIB) $(SUPPORT_DEPLIB) +SHLIB_EXPLIBS=-lk5crypto -lcom_err $(SUPPORT_LIB) @GEN_LIB@ $(LIBS) $(PLUGINS_LIBS) SHLIB_DIRS=-L$(TOPLIBD) SHLIB_RDIRS=$(KRB5_LIBDIR) @@ -63,7 +70,9 @@ all-unix:: all-liblinks all-windows:: -clean-unix:: clean-liblinks clean-libs clean-libobjs +clean-unix:: clean-liblinks clean-libs clean-libobjs + + clean-windows:: $(RM) $(OUTPRE)krb5.lib krb5.bak diff --git a/src/lib/krb5/krb5_libinit.c b/src/lib/krb5/krb5_libinit.c index 1948b72685..9a9395da7c 100644 --- a/src/lib/krb5/krb5_libinit.c +++ b/src/lib/krb5/krb5_libinit.c @@ -15,6 +15,9 @@ #include "kt-int.h" #include "rc-int.h" #include "os-proto.h" +#include +#include + /* * Initialize the Kerberos v5 library. @@ -27,6 +30,8 @@ MAKE_FINI_FUNCTION(krb5int_lib_fini); int krb5int_lib_init(void) { int err; + plugin_manager* default_manager; + const char conf_path[] = "/tmp/plugin_conf.yml"; krb5int_set_error_info_callout_fn (error_message); @@ -39,7 +44,6 @@ int krb5int_lib_init(void) add_error_table(&et_kdb5_error_table); add_error_table(&et_asn1_error_table); add_error_table(&et_k524_error_table); - err = krb5int_rc_finish_init(); if (err) return err; @@ -51,6 +55,13 @@ int krb5int_lib_init(void) err = krb5int_cc_initialize(); if (err) return err; + + /* Plugin initialization */ + default_manager = plugin_default_manager_get_instance(); + set_plugin_manager_instance(default_manager); + plugin_manager_configure(conf_path); + plugin_manager_start(); + err = k5_mutex_finish_init(&krb5int_us_time_mutex); if (err) return err; diff --git a/src/plugin_core/Makefile.in b/src/plugin_core/Makefile.in index 9aca2180ae..a17dc90fc2 100644 --- a/src/plugin_core/Makefile.in +++ b/src/plugin_core/Makefile.in @@ -1,12 +1,13 @@ mydir=plugin_core BUILDTOP=$(REL).. +RELDIR=../plugin_core PROG_LIBPATH=-L$(TOPLIBD) PROG_RPATH=$(KRB5_LIBDIR) DEFS= LOCALINCLUDES = -I$(srcdir)/include/krb5 -I$(srcdir)/. -I$(srcdir)/../plugins/prng -LIBBASE=plugin_core +LIBBASE= plugin_core LIBMAJOR=0 LIBMINOR=0 SO_EXT=.so @@ -15,7 +16,7 @@ LIBS_UTILS = -lyaml SHLIB_DIRS=-L$(TOPLIBD) SHLIB_RDIRS=$(KRB5_LIBDIR) -STOBJLISTS=OBJS.ST ../plugins/prng/OBJS.SH +STOBJLISTS=OBJS.ST SHLIB_EXPLIBS= $(LIBS_UTILS) @@ -23,14 +24,13 @@ STLIBOBJS= plugin_manager.o plugin_factory.o yaml_parser.o SRCS= plugin_manager.c plugin_factory.c yaml_parser.c -# all-unix:: all-libobjs all-unix:: all-liblinks install-unix:: install-libs -clean-unix:: clean-libs clean-libobjs +clean-unix:: clean-libs clean-libobjs clean-liblinks clean:: $(RM) lib$(LIBBASE)$(SO_EXT) -@libnover_frag@ +@lib_frag@ @libobj_frag@ diff --git a/src/plugin_core/impl/Makefile.in b/src/plugin_core/impl/Makefile.in index 17145789cc..ce169acdc3 100644 --- a/src/plugin_core/impl/Makefile.in +++ b/src/plugin_core/impl/Makefile.in @@ -1,5 +1,6 @@ mydir=impl BUILDTOP=$(REL)../.. +RELDIR=../plugin_core/impl PROG_LIBPATH=-L$(TOPLIBD) PROG_RPATH=$(KRB5_LIBDIR) DEFS= @@ -8,22 +9,26 @@ LOCALINCLUDES = -I$(srcdir)/../../include/krb5 -I$(srcdir)/. \ -I$(srcdir)/../../plugins/prng/plugin_yarrow -I$(srcdir)/../../plugins/prng \ -I$(srcdir)/.. - -STLIBOBJS= plugin_default_factory.o plugin_default_manager.o +LIBBASE=plugin_impl -OBJS=\ - $(OUTPRE)plugin_default_manager.$(OBJEXT) \ - $(OUTPRE)plugin_default_factory.$(OBJEXT) +STLIBOBJS= plugin_default_factory.o plugin_default_manager.o SRCS= plugin_default_factory.c plugin_default_manager.c -all-unix:: all-libobjs +STOBJLISTS=OBJS.ST -includes:: depend +LIBS_UTILS = ../plugin_core$(SO_EXT) \ + ../../plugins/prng/plugin_yarrow/plugin_prng_impl$(SO_EXT) \ + ../../plugins/prng/plugin_yarrow/ycipher$(SO_EXT) \ + ../../plugins/prng/plugin_yarrow/yarrow$(SO_EXT) -depend:: $(SRCS) +SHLIB_EXPLIBS= $(LIBS_UTILS) $(CRYPTO_DEPLIB) $(SUPPORT_DEPLIB) -clean-unix:: clean-libobjs +all-unix:: all-liblinks +clean-unix:: clean-liblinks clean-libs clean-libobjs +install-unix:: install-libs -@libobj_frag@ +@libpriv_frag@ +@lib_frag@ +@libobj_frag@ diff --git a/src/plugin_core/impl/plugin_default_factory.c b/src/plugin_core/impl/plugin_default_factory.c index fdb4be4752..447495db1c 100644 --- a/src/plugin_core/impl/plugin_default_factory.c +++ b/src/plugin_core/impl/plugin_default_factory.c @@ -13,20 +13,19 @@ static plugin_factory* _default_factory_instance = NULL; -static plugin_descr _table[] = { +static plugin_descr plugin_default_factory_table[] = { {"plugin_yarrow_prng", plugin_yarrow_prng_create}, //{"plugin_simple_prng", plugin_simple_prng_create}, {"plugin_ldap_audit", NULL}, {NULL,NULL} }; - /* Factory API implementation */ static void _get_factory_content (const char* container[]) { plugin_descr *ptr = NULL; int i = 0; - for( ptr = _table; ptr->plugin_name != NULL; ptr++,i++) { + for( ptr = plugin_default_factory_table; ptr->plugin_name != NULL; ptr++,i++) { container[i] = ptr->plugin_name; } } @@ -38,7 +37,7 @@ _create_api (const char* plugin_name) plugin_descr *ptr = NULL; handle.api = NULL; - for( ptr = _table; ptr->plugin_name != NULL; ptr++) { + for( ptr = plugin_default_factory_table; ptr->plugin_name != NULL; ptr++) { if (strcmp(ptr->plugin_name, plugin_name) == 0) { handle = ptr->plugin_creator(); break; diff --git a/src/plugin_core/impl/plugin_default_factory.h b/src/plugin_core/impl/plugin_default_factory.h index 1c34826e7e..dcd92a9bec 100644 --- a/src/plugin_core/impl/plugin_default_factory.h +++ b/src/plugin_core/impl/plugin_default_factory.h @@ -3,12 +3,14 @@ * */ -#ifndef SIMPLE_PLUGIN_FACTORY_H_ -#define SIMPLE_PLUGIN_FACTORY_H_ +#ifndef PLUGIN_DEFAULT_FACTORY_H_ +#define PLUGIN_DEFAULT_FACTORY_H_ #include +#include "plugin_prng_impl.h" + factory_handle plugin_default_factory_get_instance(void); -#endif /* SIMPLE_PLUGIN_FACTORY_H_ */ +#endif /* PLUGIN_DEFAULT_FACTORY_H_ */ diff --git a/src/plugin_core/plugin_core.exports b/src/plugin_core/libplugin_core.exports similarity index 100% rename from src/plugin_core/plugin_core.exports rename to src/plugin_core/libplugin_core.exports diff --git a/src/plugins/prng/Makefile.in b/src/plugins/prng/Makefile.in index 5e929e3b27..75c44e04a7 100644 --- a/src/plugins/prng/Makefile.in +++ b/src/plugins/prng/Makefile.in @@ -1,26 +1,22 @@ mydir=plugins/prng BUILDTOP=$(REL)../.. -KRB5_RUN_ENV = @KRB5_RUN_ENV@ -KRB5_CONFIG_SETUP = +RELDIR=../plugins/prng PROG_LIBPATH=-L$(TOPLIBD) PROG_RPATH=$(KRB5_LIBDIR) -MODULE_INSTALL_DIR = -DEFS=@DEFS@ +DEFS= LOCALINCLUDES = -I../../include/krb5 -I. -I../../plugin_core -STLIBOBJS= plugin_prng.o -OBJS= $(OUTPRE)plugin_prng.$(OBJEXT) -SRCS= plugin_prng.c +LIBBASE=plugin_prng -#all-unix:: all-liblinks -all-unix:: all-libobjs +STLIBOBJS= plugin_prng.o +SRCS= plugin_prng.c +STOBJLISTS=OBJS.ST -includes:: depend - -depend:: $(SRCS) - -clean-unix:: clean-libobjs +all-unix:: all-liblinks +clean-unix:: clean-liblinks clean-libs clean-libobjs +install-unix:: install-libs +@libpriv_frag@ +@lib_frag@ @libobj_frag@ - diff --git a/src/plugins/prng/plugin_yarrow/Makefile.in b/src/plugins/prng/plugin_yarrow/Makefile.in index e8fa422f41..8166393e66 100644 --- a/src/plugins/prng/plugin_yarrow/Makefile.in +++ b/src/plugins/prng/plugin_yarrow/Makefile.in @@ -1,5 +1,6 @@ mydir=plugins/prng/plugin_yarrow BUILDTOP=$(REL)../../.. +RELDIR=../plugins/prng/plugin_yarrow PROG_LIBPATH=-L$(TOPLIBD) PROG_RPATH=$(KRB5_LIBDIR) DEFS= @@ -9,29 +10,21 @@ LOCALINCLUDES = -I../../../include/krb5 -I. -I../../../plugin_core -I.. -I$(src -I$(srcdir)/../../../lib/crypto/@CRYPTO_IMPL@/sha1 \ -I$(srcdir)/../../../lib/crypto/@CRYPTO_IMPL@/enc_provider +LIBBASE=plugin_yarrow - -STLIBOBJS=\ - yarrow.o \ - ycipher.o \ - plugin_prng_impl.o - -OBJS=\ - $(OUTPRE)yarrow.$(OBJEXT) \ - $(OUTPRE)ycipher.$(OBJEXT) \ - $(OUTPRE)plugin_prng_impl.$(OBJEXT) - +STLIBOBJS= yarrow.o ycipher.o plugin_prng_impl.o SRCS=\ $(srcdir)/yarrow.c \ $(srcdir)/ycipher.c \ $(srcdir)/plugin_prng_impl.c -all-unix:: all-libobjs - -includes:: depend +STOBJLISTS=OBJS.ST -depend:: $(SRCS) +all-unix:: all-liblinks +clean-unix:: clean-liblinks clean-libs clean-libobjs +install-unix:: install-libs -clean-unix:: clean-libobjs +@libpriv_frag@ +@lib_frag@ @libobj_frag@ diff --git a/src/plugins/prng/plugin_yarrow/deps b/src/plugins/prng/plugin_yarrow/deps index da07f98452..2b4cd1f3d4 100644 --- a/src/plugins/prng/plugin_yarrow/deps +++ b/src/plugins/prng/plugin_yarrow/deps @@ -29,5 +29,7 @@ plugin_prng_impl.so plugin_prng_impl.po $(OUTPRE)plugin_prng_impl.$(OBJEXT): \ $(BUILDTOP)/include/krb5/krb5.h $(COM_ERR_DEPS) $(top_srcdir)/plugins/prng/plugin_yarrow/plugin_prng_impl.h \ $(top_srcdir)/plugin_core/plugin_manager.h \ $(top_srcdir)/plugin_core/plugin_factory.h \ + $(srcdir)/../../../lib/crypto/builtin/yhash.h \ + $(srcdir)/../../../lib/crypto/builtin/enc_provider/enc_provider.h \ plugin_prng_impl.c diff --git a/src/plugins/prng/prng.exports b/src/plugins/prng/prng.exports deleted file mode 100644 index 49943ced40..0000000000 --- a/src/plugins/prng/prng.exports +++ /dev/null @@ -1,5 +0,0 @@ -plugin_prng_seed -plugin_prng_os_seed -plugin_prng_rand -plugin_prng_init -plugin_prng_cleanup