diff options
176 files changed, 3174 insertions, 2724 deletions
diff --git a/source4/Makefile b/source4/Makefile index ab3ef47fed..f2567e6ac4 100644 --- a/source4/Makefile +++ b/source4/Makefile @@ -19,6 +19,9 @@ BNLD_FLAGS = $(LDFLAGS) $(SYS_LDFLAGS) HOSTCC_FLAGS = -D_SAMBA_HOSTCC_ $(CFLAGS) HOSTLD_FLAGS = $(LDFLAGS) $(SYS_LDFLAGS) +$(srcdir)/version.h: $(srcdir)/VERSION + @$(SHELL) script/mkversion.sh VERSION $(srcdir)/version.h $(srcdir)/ + .DEFAULT_GOAL := all ifneq ($(automatic_dependencies),yes) @@ -26,9 +29,30 @@ ALL_PREDEP = proto .NOTPARALLEL: endif -include rules.mk +regen_version:: + @$(SHELL) script/mkversion.sh VERSION $(srcdir)/version.h $(srcdir)/ + +clean_pch:: + @echo "Removing precompiled headers" + @-rm -f include/includes.h.gch + +pch:: clean_pch include/includes.h.gch + +.DEFAULT_GOAL := all + +ifneq ($(automatic_dependencies),yes) +ALL_PREDEP = proto +.NOTPARALLEL: +endif + +include build/make/rules.mk +include build/make/python.mk include data.mk +BINARIES += $(BIN_PROGS) $(SBIN_PROGS) + +pythonmods:: $(PYTHON_PYS) $(PYTHON_SO) + DEP_FILES = $(patsubst %.ho,%.hd,$(patsubst %.o,%.d,$(ALL_OBJS))) \ include/includes.d @@ -55,7 +79,7 @@ endif DEFAULT_HEADERS = $(srcdir)/lib/util/dlinklist.h \ $(srcdir)/version.h -binaries:: +binaries:: $(BINARIES) libraries:: $(STATIC_LIBS) $(SHARED_LIBS) modules:: $(PLUGINS) headers:: $(PUBLIC_HEADERS) $(DEFAULT_HEADERS) diff --git a/source4/auth/auth.c b/source4/auth/auth.c index af3796a70d..6c86cf2d7c 100644 --- a/source4/auth/auth.c +++ b/source4/auth/auth.c @@ -516,6 +516,11 @@ const struct auth_critical_sizes *auth_interface_version(void) _PUBLIC_ NTSTATUS auth_init(void) { static bool initialized = false; + extern NTSTATUS auth_developer_init(void); + extern NTSTATUS auth_winbind_init(void); + extern NTSTATUS auth_anonymous_init(void); + extern NTSTATUS auth_unix_init(void); + extern NTSTATUS auth_sam_init(void); init_module_fn static_init[] = { STATIC_auth_MODULES }; diff --git a/source4/auth/config.mk b/source4/auth/config.mk index 63aec09847..7d4678b7ac 100644 --- a/source4/auth/config.mk +++ b/source4/auth/config.mk @@ -5,27 +5,31 @@ mkinclude ntlmssp/config.mk mkinclude credentials/config.mk [SUBSYSTEM::auth_session] -OBJ_FILES = session.o PRIVATE_PROTO_HEADER = session_proto.h PUBLIC_DEPENDENCIES = CREDENTIALS # PUBLIC_HEADERS += auth/session.h +auth_session_OBJ_FILES = $(addprefix auth/, session.o) + [SUBSYSTEM::auth_system_session] -OBJ_FILES = system_session.o PRIVATE_PROTO_HEADER = system_session_proto.h PUBLIC_DEPENDENCIES = CREDENTIALS PRIVATE_DEPENDENCIES = auth_session LIBSAMBA-UTIL LIBSECURITY +auth_system_session_OBJ_FILES = $(addprefix auth/, system_session.o) + [SUBSYSTEM::auth_sam] PRIVATE_PROTO_HEADER = auth_sam.h -OBJ_FILES = sam.o ntlm_check.o PUBLIC_DEPENDENCIES = SAMDB UTIL_LDB LIBSECURITY PRIVATE_DEPENDENCIES = LDAP_ENCODE +auth_sam_OBJ_FILES = $(addprefix auth/, sam.o ntlm_check.o) + [SUBSYSTEM::auth_sam_reply] PRIVATE_PROTO_HEADER = auth_sam_reply.h -OBJ_FILES = auth_sam_reply.o + +auth_sam_reply_OBJ_FILES = $(addprefix auth/, auth_sam_reply.o) ####################### # Start MODULE auth_sam @@ -33,64 +37,65 @@ OBJ_FILES = auth_sam_reply.o # gensec_krb5 and gensec_gssapi depend on it INIT_FUNCTION = auth_sam_init SUBSYSTEM = auth -OBJ_FILES = auth_sam.o PRIVATE_DEPENDENCIES = \ SAMDB auth_sam # End MODULE auth_sam ####################### +auth_sam_module_OBJ_FILES = $(addprefix auth/, auth_sam.o) + ####################### # Start MODULE auth_anonymous [MODULE::auth_anonymous] INIT_FUNCTION = auth_anonymous_init SUBSYSTEM = auth -OBJ_FILES = auth_anonymous.o # End MODULE auth_anonymous ####################### +auth_anonymous_OBJ_FILES = $(addprefix auth/, auth_anonymous.o) + ####################### # Start MODULE auth_winbind [MODULE::auth_winbind] INIT_FUNCTION = auth_winbind_init SUBSYSTEM = auth -OBJ_FILES = auth_winbind.o PRIVATE_DEPENDENCIES = NDR_WINBIND MESSAGING LIBWINBIND-CLIENT # End MODULE auth_winbind ####################### +auth_winbind_OBJ_FILES = $(addprefix auth/, auth_winbind.o) + ####################### # Start MODULE auth_developer [MODULE::auth_developer] INIT_FUNCTION = auth_developer_init SUBSYSTEM = auth -OBJ_FILES = auth_developer.o # End MODULE auth_developer ####################### +auth_developer_OBJ_FILES = $(addprefix auth/, auth_developer.o) + [MODULE::auth_unix] INIT_FUNCTION = auth_unix_init SUBSYSTEM = auth -OBJ_FILES = auth_unix.o PRIVATE_DEPENDENCIES = CRYPT PAM PAM_ERRORS NSS_WRAPPER +auth_unix_OBJ_FILES = $(addprefix auth/, auth_unix.o) + [SUBSYSTEM::PAM_ERRORS] PRIVATE_PROTO_HEADER = pam_errors.h -OBJ_FILES = pam_errors.o -####################### -# Start SUBSYSTEM auth -[SUBSYSTEM::auth] #VERSION = 0.0.1 #SO_VERSION = 0 +PAM_ERRORS_OBJ_FILES = $(addprefix auth/, pam_errors.o) + +[MODULE::auth] +INIT_FUNCTION = server_service_auth_init +SUBSYSTEM = service PRIVATE_PROTO_HEADER = auth_proto.h -OBJ_FILES = \ - auth.o \ - auth_util.o \ - auth_simple.o -PUBLIC_DEPENDENCIES = LIBSECURITY SAMDB CREDENTIALS -PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL -# End SUBSYSTEM auth -####################### +PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL LIBSECURITY SAMDB CREDENTIALS + +auth_OBJ_FILES = $(addprefix auth/, auth.o auth_util.o auth_simple.o) # PUBLIC_HEADERS += auth/auth.h @@ -98,3 +103,5 @@ PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL PUBLIC_DEPENDENCIES = auth_system_session PRIVATE_DEPENDENCIES = SAMDB SWIG_FILE = auth.i + +swig_auth_OBJ_FILES = auth/auth_wrap.o diff --git a/source4/auth/credentials/config.mk b/source4/auth/credentials/config.mk index 83f2f0db93..6f3ec3997c 100644 --- a/source4/auth/credentials/config.mk +++ b/source4/auth/credentials/config.mk @@ -2,18 +2,17 @@ # Start SUBSYSTEM CREDENTIALS [SUBSYSTEM::CREDENTIALS] PRIVATE_PROTO_HEADER = credentials_proto.h -OBJ_FILES = credentials.o \ - credentials_files.o \ - credentials_ntlm.o \ - credentials_krb5.o \ - ../kerberos/kerberos_util.o PUBLIC_DEPENDENCIES = \ LIBCLI_AUTH SECRETS LIBCRYPTO KERBEROS UTIL_LDB HEIMDAL_GSSAPI PRIVATE_DEPENDENCIES = \ SECRETS +CREDENTIALS_OBJ_FILES = $(addprefix auth/credentials/, credentials.o credentials_files.o credentials_ntlm.o credentials_krb5.o ../kerberos/kerberos_util.o) + PUBLIC_HEADERS += auth/credentials/credentials.h [PYTHON::swig_credentials] PUBLIC_DEPENDENCIES = CREDENTIALS LIBCMDLINE_CREDENTIALS SWIG_FILE = credentials.i + +swig_credentials_OBJ_FILES = auth/credentials/credentials_wrap.o diff --git a/source4/auth/gensec/config.mk b/source4/auth/gensec/config.mk index 14864f7e4c..cfb3493484 100644 --- a/source4/auth/gensec/config.mk +++ b/source4/auth/gensec/config.mk @@ -1,16 +1,18 @@ ################################# # Start SUBSYSTEM gensec [LIBRARY::gensec] -PC_FILE = gensec.pc -VERSION = 0.0.1 -SO_VERSION = 0 PRIVATE_PROTO_HEADER = gensec_proto.h -OBJ_FILES = gensec.o socket.o PUBLIC_DEPENDENCIES = \ CREDENTIALS LIBSAMBA-UTIL LIBCRYPTO ASN1_UTIL samba-socket LIBPACKET # End SUBSYSTEM gensec ################################# +PC_FILES += auth/gensec/gensec.pc + +gensec_VERSION = 0.0.1 +gensec_SOVERSION = 0 +gensec_OBJ_FILES = $(addprefix auth/gensec/, gensec.o socket.o) + PUBLIC_HEADERS += auth/gensec/gensec.h ################################################ @@ -18,31 +20,34 @@ PUBLIC_HEADERS += auth/gensec/gensec.h [MODULE::gensec_krb5] SUBSYSTEM = gensec INIT_FUNCTION = gensec_krb5_init -OBJ_FILES = gensec_krb5.o PRIVATE_DEPENDENCIES = CREDENTIALS KERBEROS auth auth_sam # End MODULE gensec_krb5 ################################################ +gensec_krb5_OBJ_FILES = $(addprefix auth/gensec/, gensec_krb5.o) + ################################################ # Start MODULE gensec_gssapi [MODULE::gensec_gssapi] SUBSYSTEM = gensec INIT_FUNCTION = gensec_gssapi_init -OBJ_FILES = gensec_gssapi.o PRIVATE_DEPENDENCIES = HEIMDAL_GSSAPI CREDENTIALS KERBEROS # End MODULE gensec_gssapi ################################################ +gensec_gssapi_OBJ_FILES = $(addprefix auth/gensec/, gensec_gssapi.o) + ################################################ # Start MODULE cyrus_sasl [MODULE::cyrus_sasl] SUBSYSTEM = gensec INIT_FUNCTION = gensec_sasl_init -OBJ_FILES = cyrus_sasl.o PRIVATE_DEPENDENCIES = CREDENTIALS SASL # End MODULE cyrus_sasl ################################################ +cyrus_sasl_OBJ_FILES = $(addprefix auth/gensec/, cyrus_sasl.o) + ################################################ # Start MODULE gensec_spnego [MODULE::gensec_spnego] @@ -50,31 +55,31 @@ SUBSYSTEM = gensec INIT_FUNCTION = gensec_spnego_init PRIVATE_PROTO_HEADER = spnego_proto.h PRIVATE_DEPENDENCIES = ASN1_UTIL CREDENTIALS -OBJ_FILES = spnego.o spnego_parse.o # End MODULE gensec_spnego ################################################ +gensec_spnego_OBJ_FILES = $(addprefix auth/gensec/, spnego.o spnego_parse.o) + ################################################ # Start MODULE gensec_schannel [MODULE::gensec_schannel] SUBSYSTEM = gensec PRIVATE_PROTO_HEADER = schannel_proto.h INIT_FUNCTION = gensec_schannel_init -OBJ_FILES = schannel.o \ - schannel_sign.o PRIVATE_DEPENDENCIES = SCHANNELDB NDR_SCHANNEL CREDENTIALS LIBNDR OUTPUT_TYPE = MERGED_OBJ # End MODULE gensec_schannel ################################################ +gensec_schannel_OBJ_FILES = $(addprefix auth/gensec/, schannel.o schannel_sign.o) + ################################################ # Start SUBSYSTEM SCHANNELDB [SUBSYSTEM::SCHANNELDB] PRIVATE_PROTO_HEADER = schannel_state.h -OBJ_FILES = \ - schannel_state.o PRIVATE_DEPENDENCIES = LDB_WRAP SAMDB -# # End SUBSYSTEM SCHANNELDB ################################################ +SCHANNELDB_OBJ_FILES = $(addprefix auth/gensec/, schannel_state.o) + diff --git a/source4/auth/gensec/gensec.c b/source4/auth/gensec/gensec.c index 59c19b96ab..59ad15740e 100644 --- a/source4/auth/gensec/gensec.c +++ b/source4/auth/gensec/gensec.c @@ -1268,6 +1268,12 @@ static int sort_gensec(struct gensec_security_ops **gs1, struct gensec_security_ _PUBLIC_ NTSTATUS gensec_init(struct loadparm_context *lp_ctx) { static bool initialized = false; + extern NTSTATUS gensec_sasl_init(void); + extern NTSTATUS gensec_krb5_init(void); + extern NTSTATUS gensec_schannel_init(void); + extern NTSTATUS gensec_spnego_init(void); + extern NTSTATUS gensec_gssapi_init(void); + extern NTSTATUS gensec_ntlmssp_init(void); init_module_fn static_init[] = { STATIC_gensec_MODULES }; init_module_fn *shared_init; diff --git a/source4/auth/kerberos/config.mk b/source4/auth/kerberos/config.mk index 7493a6d06d..762d6f8c49 100644 --- a/source4/auth/kerberos/config.mk +++ b/source4/auth/kerberos/config.mk @@ -2,13 +2,16 @@ # Start SUBSYSTEM KERBEROS [SUBSYSTEM::KERBEROS] PRIVATE_PROTO_HEADER = proto.h -OBJ_FILES = kerberos.o \ - clikrb5.o \ - kerberos_heimdal.o \ - kerberos_pac.o \ - gssapi_parse.o \ - krb5_init_context.o PUBLIC_DEPENDENCIES = HEIMDAL_KRB5 NDR_KRB5PAC samba-socket LIBCLI_RESOLVE PRIVATE_DEPENDENCIES = ASN1_UTIL auth_sam_reply LIBPACKET LIBNDR # End SUBSYSTEM KERBEROS ################################# + +KERBEROS_OBJ_FILES = $(addprefix auth/kerberos/, \ + kerberos.o \ + clikrb5.o \ + kerberos_heimdal.o \ + kerberos_pac.o \ + gssapi_parse.o \ + krb5_init_context.o) + diff --git a/source4/auth/ntlmssp/config.mk b/source4/auth/ntlmssp/config.mk index 9033384b1f..f8e711feda 100644 --- a/source4/auth/ntlmssp/config.mk +++ b/source4/auth/ntlmssp/config.mk @@ -1,6 +1,7 @@ [SUBSYSTEM::MSRPC_PARSE] PRIVATE_PROTO_HEADER = msrpc_parse.h -OBJ_FILES = ntlmssp_parse.o + +MSRPC_PARSE_OBJ_FILES = $(addprefix auth/ntlmssp/, ntlmssp_parse.o) ################################################ # Start MODULE gensec_ntlmssp @@ -8,11 +9,9 @@ OBJ_FILES = ntlmssp_parse.o SUBSYSTEM = gensec INIT_FUNCTION = gensec_ntlmssp_init PRIVATE_PROTO_HEADER = proto.h -OBJ_FILES = ntlmssp.o \ - ntlmssp_sign.o \ - ntlmssp_client.o \ - ntlmssp_server.o PRIVATE_DEPENDENCIES = MSRPC_PARSE CREDENTIALS OUTPUT_TYPE = MERGED_OBJ # End MODULE gensec_ntlmssp ################################################ + +gensec_ntlmssp_OBJ_FILES = $(addprefix auth/ntlmssp/, ntlmssp.o ntlmssp_sign.o ntlmssp_client.o ntlmssp_server.o) diff --git a/source4/build/m4/public.m4 b/source4/build/m4/public.m4 index eb673446c7..1eae998ca4 100644 --- a/source4/build/m4/public.m4 +++ b/source4/build/m4/public.m4 @@ -4,8 +4,6 @@ dnl Copyright (C) 2004 Stefan Metzmacher dnl Copyright (C) 2004-2005 Jelmer Vernooij dnl Published under the GPL dnl -dnl SMB_SUBSYSTEM(name,obj_files,required_subsystems) -dnl dnl SMB_EXT_LIB_FROM_PKGCONFIG(name,pkg-config name,[ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND]) dnl dnl SMB_EXT_LIB(name,libs,cflags,cppflags,ldflags) @@ -22,16 +20,15 @@ dnl SMB_SUBSYSTEM(name,obj_files,required_subsystems,cflags) AC_DEFUN([SMB_SUBSYSTEM], [ MAKE_SETTINGS="$MAKE_SETTINGS -$1_OBJ_FILES = $2 $1_CFLAGS = $4 $1_ENABLE = YES +$1_OBJ_FILES = $2 " SMB_INFO_SUBSYSTEMS="$SMB_INFO_SUBSYSTEMS ################################### # Start Subsystem $1 @<:@SUBSYSTEM::$1@:>@ -OBJ_FILES = \$($1_OBJ_FILES) PRIVATE_DEPENDENCIES = $3 CFLAGS = \$($1_CFLAGS) ENABLE = YES @@ -44,20 +41,17 @@ dnl SMB_LIBRARY(name,obj_files,required_subsystems,version,so_version,cflags,ldf AC_DEFUN([SMB_LIBRARY], [ MAKE_SETTINGS="$MAKE_SETTINGS -$1_OBJ_FILES = $2 $1_CFLAGS = $6 $1_LDFLAGS = $7 $1_ENABLE = YES +$1_OBJ_FILES = $2 " SMB_INFO_LIBRARIES="$SMB_INFO_LIBRARIES ################################### # Start Library $1 @<:@LIBRARY::$1@:>@ -OBJ_FILES = \$($1_OBJ_FILES) PRIVATE_DEPENDENCIES = $3 -VERSION = $4 -SO_VERSION = $5 CFLAGS = \$($1_CFLAGS) LDFLAGS = \$($1_LDFLAGS) ENABLE = YES diff --git a/source4/script/lex_compile.sh b/source4/build/make/lex_compile.sh index 9bba7257b1..9bba7257b1 100755 --- a/source4/script/lex_compile.sh +++ b/source4/build/make/lex_compile.sh diff --git a/source4/build/make/python.mk b/source4/build/make/python.mk new file mode 100644 index 0000000000..6c1798212e --- /dev/null +++ b/source4/build/make/python.mk @@ -0,0 +1,62 @@ +pythonbuilddir = $(builddir)/bin/python + +# Install Python +# Arguments: Module path +define python_module_template + +installpython:: $$(pythonbuilddir)/$(1) ; + cp $$< $$(DESTDIR)$$(PYTHONDIR)/$(1) + +uninstallpython:: + rm -f $$(DESTDIR)$$(PYTHONDIR)/$(1) ; + +pythonmods:: $$(pythonbuilddir)/$(1) ; + +endef + +define python_py_module_template + +$$(pythonbuilddir)/$(1): $(2) ; + mkdir -p $$(@D) + cp $$< $$@ + +$(call python_module_template,$(1)) + +endef + +# Python C module +# Arguments: Module path, object files +define python_c_module_template + +$$(pythonbuilddir)/$(1): $(2) ; + @echo Linking $$@ + @mkdir -p $$(@D) + @$$(MDLD) $$(LDFLAGS) $$(MDLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) $(3) + +$(call python_module_template,$(1)) +endef + +# Swig extensions +swig:: pythonmods + +.SUFFIXES: _wrap.c .i + +.i_wrap.c: + [ "$(SWIG)" == "no" ] || $(SWIG) -O -Wall -I$(srcdir)/scripting/swig -python -keyword $< + +realdistclean:: + @echo "Removing SWIG output files" + # FIXME: Remove _wrap.c files + +pythonmods:: + +clean:: + @echo "Removing python modules" + @rm -rf $(pythonbuilddir) + +pydoctor:: pythonmods + LD_LIBRARY_PATH=bin/shared PYTHONPATH=$(pythonbuilddir) pydoctor --project-name=Samba --project-url=http://www.samba.org --make-html --docformat=restructuredtext --add-package $(pythonbuilddir)/samba + +bin/python/%.py: + mkdir -p $(@D) + cp $< $@ diff --git a/source4/rules.mk b/source4/build/make/rules.mk index 5f91f8132e..faefb4e323 100644 --- a/source4/rules.mk +++ b/source4/build/make/rules.mk @@ -1,3 +1,6 @@ +# Rules file for Samba 4 +# This relies on GNU make. +# # Dependencies command DEPENDS = $(CC) -M -MG -MP -MT $(<:.c=.o) -MT $@ \ $(CFLAGS) $(CPPFLAGS) $< -o $@ @@ -26,22 +29,14 @@ PCHCOMPILE = @$(CC) -Ilib/replace \ # Partial linking PARTLINK = @$(PROG_LD) -r +make_utility_dir = $(srcdir)/build/make/ + include/config.h: @echo "include/config.h not present" @echo "You need to rerun ./autogen.sh and ./configure" @/bin/false -$(srcdir)/version.h: $(srcdir)/VERSION - @$(SHELL) script/mkversion.sh VERSION $(srcdir)/version.h $(srcdir)/ - -regen_version:: - @$(SHELL) script/mkversion.sh VERSION $(srcdir)/version.h $(srcdir)/ - -clean_pch:: - @echo "Removing precompiled headers" - @-rm -f include/includes.h.gch - -pch:: clean_pch include/includes.h.gch +pch:: clean:: clean_pch @echo Removing objects @@ -51,7 +46,7 @@ clean:: clean_pch @echo Removing binaries @-rm -f $(BIN_PROGS) $(SBIN_PROGS) $(BINARIES) $(TORTURE_PROGS) @echo Removing libraries - @-rm -f $(STATIC_LIBRARIES) $(SHARED_LIBRARIES) + @-rm -f $(STATIC_LIBS) $(SHARED_LIBS) @-rm -f bin/static/*.a bin/shared/*.$(SHLIBEXT) bin/mergedobj/*.o @echo Removing modules @-rm -f bin/modules/*/*.$(SHLIBEXT) @@ -94,6 +89,103 @@ unused_macros: @$(STLD) $(STLD_FLAGS) $@ $^ ############################################################################### +# Templates +############################################################################### + +# Partially link +# Arguments: target object file, source object files +define partial_link_template +$(1): $(2) ; + @echo Partially linking $$@ + @mkdir -p $$(@D) + $$(PARTLINK) -o $$@ $$^ +endef + +# Link a binary +# Arguments: target file, depends, flags +define binary_link_template +$(1): $(2) ; + @echo Linking $$@ + @$$(BNLD) $$(BNLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) $(3) +endef + +# Link a host-machine binary +# Arguments: target file, depends, flags +define host_binary_link_template +$(1): $(2) ; + @echo Linking $$@ + @$$(HOSTLD) $$(HOSTLD_FLAGS) -L$${builddir}/bin/static -o $$@ $$(INSTALL_LINK_FLAGS) $(3) +endef + +# Create a prototype header +# Arguments: header file, c files +define proto_header_template +$(1): $(2) ; + @echo "Creating $$@" + @$$(PERL) $$(srcdir)/script/mkproto.pl --srcdir=$$(srcdir) --builddir=$$(builddir) --public=/dev/null --private=$$@ $$^ +endef + +# Shared module +# Arguments: Target, dependencies, objects +define shared_module_template + +$(1): $(2) ; + @echo Linking $$@ + @mkdir -p $$(@D) + @$$(MDLD) $$(LDFLAGS) $$(MDLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) $(3) + +endef + +# Shared library +# Arguments: Target, dependencies, link flags, soname +define shared_library_template +$(1): $(2) + @echo Linking $$@ + @mkdir -p $$(@D) + @$$(SHLD) $$(LDFLAGS) $$(SHLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) \ + $(3) \ + $$(if $$(SONAMEFLAG), $$(SONAMEFLAG)$(notdir $(4))) + +ifneq ($(notdir $(1)),$(notdir $(4))) +$(4): $(1) + @echo "Creating symbolic link for $$@" + @ln -fs $$(<F) $$@ +endif + +ifneq ($(notdir $(1)),$(notdir $(5))) +$(5): $(1) + @echo "Creating symbolic link for $$@" + @ln -fs $$(<F) $$@ +endif +endef + +# Shared alias +# Arguments: Target, subsystem name, alias name +define shared_module_alias_template +bin/modules/$(2)/$(3).$$(SHLIBEXT): $(1) + @ln -fs $$(<F) $$@ + +PLUGINS += bin/modules/$(2)/$(3).$$(SHLIBEXT) + +uninstallplugins:: + @-rm $$(DESTDIR)$$(modulesdir)/$(2)/$(3).$$(SHLIBEXT) +installplugins:: + @ln -fs $(1) $$(DESTDIR)$$(modulesdir)/$(2)/$(3).$$(SHLIBEXT) + +endef + +define shared_module_install_template +installplugins:: bin/modules/$(1)/$(2) + @echo Installing$(2) as $$(DESTDIR)$$(modulesdir)/$(1)/$(2) + @mkdir -p $$(DESTDIR)$$(modulesdir)/$(1)/ + @cp bin/modules/$(1)/$(2) $$(DESTDIR)$$(modulesdir)/$(1)/$(2) +uninstallplugins:: + @echo Uninstalling $$(DESTDIR)$$(modulesdir)/$(1)/$(2) + @-rm $$(DESTDIR)$$(modulesdir)/$(1)/$(2) + +endef + +############################################################################### # File types ############################################################################### @@ -119,11 +211,9 @@ include/includes.d: include/includes.h @echo "Compiling $<" @-mkdir -p `dirname $@` @$(COMPILE) && exit 0 ; \ - echo "The following command failed:" 1>&2;\ - $(COMPILE) >/dev/null 2>&1 + $(COMPILE) -# echo "$(COMPILE)" 1>&2;\ .c.ho: @echo "Compiling $< with host compiler" @@ -139,11 +229,18 @@ include/includes.d: include/includes.h .y.c: @echo "Building $< with $(YACC)" - @-$(srcdir)/script/yacc_compile.sh "$(YACC)" "$<" "$@" + @-$(make_utility_dir)/yacc_compile.sh "$(YACC)" "$<" "$@" .l.c: @echo "Building $< with $(LEX)" - @-$(srcdir)/script/lex_compile.sh "$(LEX)" "$<" "$@" + @-$(make_utility_dir)/script/lex_compile.sh "$(LEX)" "$<" "$@" + +%.a: + @echo Linking $@ + @rm -f $@ + @mkdir -p $(@D) + @$(STLD) $(STLD_FLAGS) $@ $^ + DOCBOOK_MANPAGE_URL = http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl diff --git a/source4/script/yacc_compile.sh b/source4/build/make/yacc_compile.sh index a56a51da0a..a56a51da0a 100755 --- a/source4/script/yacc_compile.sh +++ b/source4/build/make/yacc_compile.sh diff --git a/source4/build/smb_build/config_mk.pm b/source4/build/smb_build/config_mk.pm index d8ec646910..307c391e07 100644 --- a/source4/build/smb_build/config_mk.pm +++ b/source4/build/smb_build/config_mk.pm @@ -23,14 +23,11 @@ my $section_types = { SWIG_FILE => "string", "PRIVATE_DEPENDENCIES" => "list", "PUBLIC_DEPENDENCIES" => "list", - "OBJ_FILES" => "list", "ENABLE" => "bool", "LDFLAGS" => "list", "CFLAGS" => "list", }, "SUBSYSTEM" => { - "OBJ_FILES" => "list", - "PRIVATE_DEPENDENCIES" => "list", "PUBLIC_DEPENDENCIES" => "list", @@ -47,7 +44,6 @@ my $section_types = { "SUBSYSTEM" => "string", "INIT_FUNCTION" => "string", - "OBJ_FILES" => "list", "PRIVATE_DEPENDENCIES" => "list", @@ -62,7 +58,6 @@ my $section_types = { "CFLAGS" => "list" }, "BINARY" => { - "OBJ_FILES" => "list", "PRIVATE_DEPENDENCIES" => "list", @@ -78,18 +73,12 @@ my $section_types = { "USE_HOSTCC" => "bool" }, "LIBRARY" => { - "VERSION" => "string", - "SO_VERSION" => "string", "LIBRARY_REALNAME" => "string", - "PC_FILE" => "string", - "INIT_FUNCTION_TYPE" => "string", "INIT_FUNCTION_SENTINEL" => "string", "OUTPUT_TYPE" => "list", - "OBJ_FILES" => "list", - "PRIVATE_DEPENDENCIES" => "list", "PUBLIC_DEPENDENCIES" => "list", @@ -223,6 +212,9 @@ sub run_config_mk($$$$) { $section = $1; $infragment = 0; + + $result->{$section}{EXISTS}{KEY} = "EXISTS"; + $result->{$section}{EXISTS}{VAL} = 1; next; } @@ -233,6 +225,7 @@ sub run_config_mk($$$$) $subdir =~ s/^\.$//g; $subdir =~ s/^\.\///g; $subdir .= "/" if ($subdir ne ""); + $makefile .= "basedir := $subdir\n"; $makefile .= run_config_mk($input, $srcdir, $builddir, $subdir.$subfile); next; } @@ -280,6 +273,7 @@ sub run_config_mk($$$$) $input->{$name}{BASEDIR} = $basedir; foreach my $key (values %{$result->{$section}}) { + next if ($key->{KEY} eq "EXISTS"); $key->{VAL} = smb_build::input::strtrim($key->{VAL}); my $vartype = $sectype->{$key->{KEY}}; if (not defined($vartype)) { diff --git a/source4/build/smb_build/header.pm b/source4/build/smb_build/header.pm index c2bdbaf4c8..dfb7c62e54 100644 --- a/source4/build/smb_build/header.pm +++ b/source4/build/smb_build/header.pm @@ -42,19 +42,9 @@ sub _prepare_build_h($) $DEFINE->{VAL} = "\\\n"; foreach (@{$key->{INIT_FUNCTIONS}}) { $DEFINE->{VAL} .= "\t$_, \\\n"; - unless (/{/) { - my $fn = $key->{INIT_FUNCTION_TYPE}; - my $n = $_; - if ($fn =~ /\(\*\)/) { - $fn =~ s/\(\*\)/$n/; - $output .= "$fn;\n"; - } else { - $n =~ s/\&//; - $output .= "$fn $n;\n"; - } - } } + die("Invalid sentinel") unless ($key->{INIT_FUNCTION_SENTINEL}); $DEFINE->{VAL} .= "\t$key->{INIT_FUNCTION_SENTINEL} \n"; push(@defines,$DEFINE); diff --git a/source4/build/smb_build/input.pm b/source4/build/smb_build/input.pm index 948f2657b4..3ca2f22f0c 100644 --- a/source4/build/smb_build/input.pm +++ b/source4/build/smb_build/input.pm @@ -84,13 +84,19 @@ sub check_module($$$) return if ($mod->{ENABLE} ne "YES"); + if (exists($INPUT->{$mod->{SUBSYSTEM}}{INIT_FUNCTION_TYPE})) { $mod->{INIT_FUNCTION_TYPE} = $INPUT->{$mod->{SUBSYSTEM}}{INIT_FUNCTION_TYPE}; } else { $mod->{INIT_FUNCTION_TYPE} = "NTSTATUS (*) (void)"; } + unless (defined($mod->{INIT_FUNCTION_SENTINEL})) { $mod->{INIT_FUNCTION_SENTINEL} = "NULL"; } + if (not defined($mod->{OUTPUT_TYPE})) { + if (not defined($INPUT->{$mod->{SUBSYSTEM}}->{TYPE})) { + die("Invalid type for subsystem $mod->{SUBSYSTEM}"); + } if ($INPUT->{$mod->{SUBSYSTEM}}->{TYPE} eq "EXT_LIB") { $mod->{OUTPUT_TYPE} = undef; } else { @@ -107,7 +113,7 @@ sub check_module($$$) } if (grep(/MERGED_OBJ/, @{$mod->{OUTPUT_TYPE}})) { push (@{$INPUT->{$mod->{SUBSYSTEM}}{INIT_FUNCTIONS}}, $mod->{INIT_FUNCTION}) if defined($mod->{INIT_FUNCTION}); - unshift (@{$INPUT->{$mod->{SUBSYSTEM}}{PRIVATE_DEPENDENCIES}}, $mod->{NAME}); + push (@{$INPUT->{$mod->{SUBSYSTEM}}{PRIVATE_DEPENDENCIES}}, $mod->{NAME}); } } @@ -119,16 +125,6 @@ sub check_library($$$) unless (defined($lib->{OUTPUT_TYPE})) { $lib->{OUTPUT_TYPE} = $default_ot; } - if (defined($lib->{VERSION}) and not defined($lib->{SO_VERSION})) { - print "$lib->{NAME}: Please specify SO_VERSION when specifying VERSION\n"; - return; - } - - if (defined($lib->{SO_VERSION}) and not defined($lib->{VERSION})) { - print "$lib->{NAME}: Please specify VERSION when specifying SO_VERSION\n"; - return; - } - unless (defined($lib->{INIT_FUNCTION_TYPE})) { $lib->{INIT_FUNCTION_TYPE} = "NTSTATUS (*) (void)"; } unless (defined($lib->{INIT_FUNCTION_SENTINEL})) { $lib->{INIT_FUNCTION_SENTINEL} = "NULL"; } unless (defined($lib->{INSTALLDIR})) { $lib->{INSTALLDIR} = "LIBDIR"; } @@ -151,7 +147,6 @@ sub check_python($$$) $dirname .= "/" unless $dirname =~ /\/$/; $dirname = "" if $dirname eq "./"; - $python->{OBJ_FILES} = ["$dirname$basename\_wrap.o"]; $python->{LIBRARY_REALNAME} = "_$basename.\$(SHLIBEXT)"; $python->{PYTHON_FILES} = ["$dirname$basename.py"]; push (@{$python->{CFLAGS}}, "\$(CFLAG_NO_UNUSED_MACROS)"); @@ -189,7 +184,6 @@ sub add_implicit($$) $INPUT->{$n} = { TYPE => "MAKE_RULE", NAME => $n, - TARGET => "", OUTPUT_TYPE => undef, LIBS => ["\$(".uc($n)."_LIBS)"], LDFLAGS => ["\$(".uc($n)."_LDFLAGS)"], @@ -249,7 +243,7 @@ sub check($$$$$) foreach my $part (values %$INPUT) { $part->{LINK_FLAGS} = []; - $part->{FULL_OBJ_LIST} = ["\$($part->{NAME}_OBJ_LIST)"]; + $part->{FULL_OBJ_LIST} = ["\$($part->{NAME}_OBJ_FILES)"]; if ($part->{TYPE} eq "SUBSYSTEM") { check_subsystem($INPUT, $part, $subsys_ot); diff --git a/source4/build/smb_build/main.pl b/source4/build/smb_build/main.pl index c3dc46461b..14897840a6 100644 --- a/source4/build/smb_build/main.pl +++ b/source4/build/smb_build/main.pl @@ -44,15 +44,14 @@ my $mkenv = new smb_build::makefile(\%config::config, $mkfile); my $shared_libs_used = 0; foreach my $key (values %$OUTPUT) { - $mkenv->_prepare_list($key, "OBJ_LIST"); - push(@{$mkenv->{all_objs}}, "\$($key->{NAME}_OBJ_LIST)"); + push(@{$mkenv->{all_objs}}, "\$($key->{NAME}_OBJ_FILES)"); } foreach my $key (values %$OUTPUT) { next unless defined $key->{OUTPUT_TYPE}; $mkenv->MergedObj($key) if grep(/MERGED_OBJ/, @{$key->{OUTPUT_TYPE}}); - $mkenv->StaticLibrary($key) if grep(/STATIC_LIBRARY/, @{$key->{OUTPUT_TYPE}}); + $mkenv->StaticLibraryPrimitives($key) if grep(/STATIC_LIBRARY/, @{$key->{OUTPUT_TYPE}}); if (defined($key->{PC_FILE})) { $mkenv->output("PC_FILES += $key->{BASEDIR}/$key->{PC_FILE}\n"); } @@ -66,19 +65,26 @@ foreach my $key (values %$OUTPUT) { $key->{TYPE} eq "PYTHON") and grep(/SHARED_LIBRARY/, @{$key->{OUTPUT_TYPE}}); $mkenv->PythonFiles($key) if defined($key->{PYTHON_FILES}); - $mkenv->ProtoHeader($key) if defined($key->{PRIVATE_PROTO_HEADER}); $mkenv->CFlags($key); } foreach my $key (values %$OUTPUT) { next unless defined $key->{OUTPUT_TYPE}; + $mkenv->Integrated($key) if grep(/INTEGRATED/, @{$key->{OUTPUT_TYPE}}); +} + +foreach my $key (values %$OUTPUT) { + next unless defined $key->{OUTPUT_TYPE}; + $mkenv->StaticLibrary($key) if grep(/STATIC_LIBRARY/, @{$key->{OUTPUT_TYPE}}); + $mkenv->SharedLibrary($key) if ($key->{TYPE} eq "LIBRARY") and grep(/SHARED_LIBRARY/, @{$key->{OUTPUT_TYPE}}); $mkenv->SharedModule($key) if ($key->{TYPE} eq "MODULE" or $key->{TYPE} eq "PYTHON") and grep(/SHARED_LIBRARY/, @{$key->{OUTPUT_TYPE}}); $mkenv->Binary($key) if grep(/BINARY/, @{$key->{OUTPUT_TYPE}}); + $mkenv->ProtoHeader($key) if defined($key->{PRIVATE_PROTO_HEADER}); } $mkenv->write("data.mk"); diff --git a/source4/build/smb_build/makefile.pm b/source4/build/smb_build/makefile.pm index 2470fa1459..8f3f1701b7 100644 --- a/source4/build/smb_build/makefile.pm +++ b/source4/build/smb_build/makefile.pm @@ -23,12 +23,11 @@ sub new($$$) $self->{output} = ""; - $self->{mkfile} = $mkfile; - $self->output("################################################\n"); $self->output("# Autogenerated by build/smb_build/makefile.pm #\n"); $self->output("################################################\n"); $self->output("\n"); + $self->output($mkfile); return $self; } @@ -203,12 +202,17 @@ __EOD__ $self->output("\n"); } -sub SharedLibraryPrimitives($$) +sub StaticLibraryPrimitives($$) { my ($self,$ctx) = @_; + + $self->output("$ctx->{NAME}_OUTPUT = $ctx->{OUTPUT}\n"); + $self->_prepare_list($ctx, "FULL_OBJ_LIST"); +} - $self->output("$ctx->{NAME}_SOVERSION = $ctx->{SO_VERSION}\n") if (defined($ctx->{SO_VERSION})); - $self->output("$ctx->{NAME}_VERSION = $ctx->{VERSION}\n") if (defined($ctx->{VERSION})); +sub SharedLibraryPrimitives($$) +{ + my ($self,$ctx) = @_; if (not grep(/STATIC_LIBRARY/, @{$ctx->{OUTPUT_TYPE}})) { $self->output("$ctx->{NAME}_OUTPUT = $ctx->{OUTPUT}\n"); @@ -224,7 +228,7 @@ sub SharedLibrary($$) $ctx->{LIBRARY_SONAME} = ""; } - $self->output("SHARED_LIBS += $ctx->{SHAREDDIR}/$ctx->{LIBRARY_REALNAME}\n") if (defined($ctx->{SO_VERSION})); + $self->output("SHARED_LIBS += $ctx->{SHAREDDIR}/$ctx->{LIBRARY_REALNAME}\n"); $self->_prepare_list($ctx, "DEPEND_LIST"); $self->_prepare_list($ctx, "LINK_FLAGS"); @@ -240,7 +244,9 @@ $ctx->{RESULT_SHARED_LIBRARY}: \$($ctx->{NAME}_DEPEND_LIST) \$($ctx->{NAME}_FULL __EOD__ ); if ($ctx->{LIBRARY_REALNAME} ne $ctx->{LIBRARY_SONAME}) { - $self->output("\t\@test \$($ctx->{NAME}_VERSION) = \$($ctx->{NAME}_SOVERSION) || ln -fs $ctx->{LIBRARY_REALNAME} $ctx->{SHAREDDIR}/$ctx->{LIBRARY_SONAME}\n"); + $self->output("ifneq (\$($ctx->{NAME}_VERSION),\$($ctx->{NAME}_SOVERSION))\n"); + $self->output("\t\@ln -fs $ctx->{LIBRARY_REALNAME} $ctx->{SHAREDDIR}/$ctx->{LIBRARY_SONAME}\n"); + $self->output("endif\n"); } $self->output("ifdef $ctx->{NAME}_SOVERSION\n"); $self->output("\t\@ln -fs $ctx->{LIBRARY_REALNAME} $ctx->{SHAREDDIR}/$ctx->{LIBRARY_DEBUGNAME}\n"); @@ -256,10 +262,10 @@ sub MergedObj($$) $self->output("$ctx->{NAME}_OUTPUT = $ctx->{OUTPUT}\n"); $self->output(<< "__EOD__" # -$ctx->{RESULT_MERGED_OBJ}: \$($ctx->{NAME}_OBJ_LIST) +$ctx->{RESULT_MERGED_OBJ}: \$($ctx->{NAME}_OBJ_FILES) \@echo Partially linking \$@ \@mkdir -p \$(\@D) - \$(PARTLINK) -o \$@ \$($ctx->{NAME}_OBJ_LIST) + \$(PARTLINK) -o \$@ \$($ctx->{NAME}_OBJ_FILES) __EOD__ ); @@ -269,13 +275,8 @@ sub StaticLibrary($$) { my ($self,$ctx) = @_; - return unless (defined($ctx->{OBJ_FILES})); - $self->output("STATIC_LIBS += $ctx->{TARGET_STATIC_LIBRARY}\n") if ($ctx->{TYPE} eq "LIBRARY"); - $self->output("$ctx->{NAME}_OUTPUT = $ctx->{OUTPUT}\n"); - $self->_prepare_list($ctx, "FULL_OBJ_LIST"); - $self->output("$ctx->{RESULT_STATIC_LIBRARY}: \$($ctx->{NAME}_FULL_OBJ_LIST)\n"); } @@ -324,7 +325,7 @@ sub PythonFiles($$) foreach (@{$ctx->{PYTHON_FILES}}) { my $target = "bin/python/".basename($_); - my $source = output::add_dir_str($ctx->{BASEDIR}, $_); + my $source = "\$(addprefix $ctx->{BASEDIR}/, $_)"; $self->output("$target: $source\n\n"); $self->output("PYTHON_PYS += $target\n"); } @@ -334,13 +335,13 @@ sub ProtoHeader($$) { my ($self,$ctx) = @_; - my $priv = output::add_dir_str($ctx->{BASEDIR}, $ctx->{PRIVATE_PROTO_HEADER}); + my $priv = "$ctx->{BASEDIR}/$ctx->{PRIVATE_PROTO_HEADER}"; $self->output("PROTO_HEADERS += $priv\n"); - $self->output("$priv: $ctx->{MK_FILE} \$($ctx->{NAME}_OBJ_LIST:.o=.c) \$(srcdir)/script/mkproto.pl\n"); + $self->output("$priv: $ctx->{MK_FILE} \$($ctx->{NAME}_OBJ_FILES:.o=.c) \$(srcdir)/script/mkproto.pl\n"); $self->output("\t\@echo \"Creating \$@\"\n"); $self->output("\t\@mkdir -p \$(\@D)\n"); - $self->output("\t\@\$(PERL) \$(srcdir)/script/mkproto.pl --srcdir=\$(srcdir) --builddir=\$(builddir) --public=/dev/null --private=\$@ \$($ctx->{NAME}_OBJ_LIST)\n\n"); + $self->output("\t\@\$(PERL) \$(srcdir)/script/mkproto.pl --srcdir=\$(srcdir) --builddir=\$(builddir) --public=/dev/null --private=\$@ \$($ctx->{NAME}_OBJ_FILES)\n\n"); } sub write($$) @@ -378,7 +379,6 @@ sub CFlags($$) my $src_ne_build = ($srcdir ne $builddir) ? 1 : 0; - return unless defined ($key->{OBJ_LIST}); return unless defined ($key->{FINAL_CFLAGS}); return unless (@{$key->{FINAL_CFLAGS}} > 0); @@ -392,19 +392,19 @@ sub CFlags($$) my @cflags = (); foreach my $flag (@sorted_cflags) { if($src_ne_build) { - if($flag =~ m#^-I([^/].*$)#) { - my $dir = $1; - $dir =~ s#^\$\((?:src|build)dir\)/?##; + if($flag =~ m#^-I([^/].*$)#) { + my $dir = $1; + $dir =~ s#^\$\((?:src|build)dir\)/?##; push(@cflags, "-I$builddir/$dir", "-I$srcdir/$dir"); - next; - } + next; + } } push(@cflags, $flag); } my $cflags = join(' ', @cflags); - $self->output("\$(patsubst %.ho,%.d,\$($key->{NAME}_OBJ_LIST:.o=.d)) \$($key->{NAME}_OBJ_LIST): CFLAGS+= $cflags\n"); + $self->output("\$(patsubst %.ho,%.d,\$($key->{NAME}_OBJ_FILES:.o=.d)) \$($key->{NAME}_OBJ_FILES): CFLAGS+= $cflags\n"); } 1; diff --git a/source4/build/smb_build/output.pm b/source4/build/smb_build/output.pm index 4ae4a62cf4..aeff7d48ce 100644 --- a/source4/build/smb_build/output.pm +++ b/source4/build/smb_build/output.pm @@ -7,39 +7,6 @@ package output; use strict; -use smb_build::config; - -sub add_dir_str($$) -{ - my ($dir,$file) = @_; - my $dirsep = "/"; - - $dir =~ s/^\.$//g; - $dir =~ s/^\.\///g; - - $dirsep = "" if ($dir eq ""); - - my $ret = $file; - if (substr($ret, 0, 1) ne "\$") { - $ret = "$dir$dirsep$file"; - $ret =~ s/([^\/\.]+)\/\.\.\///g; - $ret =~ s/([^\/\.]+)\/\.\.\///g; - } - - return $ret; -} - -sub add_dir_array($$) -{ - my ($dir,$files) = @_; - my @ret = (); - - foreach (@{$files}) { - push (@ret, add_dir_str($dir, $_)); - } - - return @ret; -} sub generate_shared_library($) { @@ -80,10 +47,8 @@ sub generate_shared_library($) $lib->{LIBRARY_DEBUGNAME} = $lib->{LIBRARY_REALNAME}; - if (defined($lib->{VERSION}) and $config::config{SONAMEFLAG} ne "#") { - $lib->{LIBRARY_SONAME} = "$lib->{LIBRARY_REALNAME}.\$($lib->{NAME}_SOVERSION)"; - $lib->{LIBRARY_REALNAME} = "$lib->{LIBRARY_REALNAME}.\$($lib->{NAME}_VERSION)"; - } + $lib->{LIBRARY_SONAME} = "\$(if \$($lib->{NAME}_SOVERSION),$lib->{LIBRARY_REALNAME}.\$($lib->{NAME}_SOVERSION),$lib->{LIBRARY_REALNAME})"; + $lib->{LIBRARY_REALNAME} = "\$(if \$($lib->{NAME}_VERSION),$lib->{LIBRARY_REALNAME}.\$($lib->{NAME}_VERSION),$lib->{LIBRARY_REALNAME})"; $lib->{RESULT_SHARED_LIBRARY} = "$lib->{SHAREDDIR}/$lib->{LIBRARY_REALNAME}"; $lib->{OUTPUT_SHARED_LIBRARY} = "-l$link_name"; @@ -97,11 +62,9 @@ sub generate_merged_obj($) my $link_name = $lib->{NAME}; $link_name =~ s/^LIB//; - if (defined($lib->{OBJ_FILES})) { - $lib->{MERGED_OBJNAME} = lc($link_name).".o"; - $lib->{RESULT_MERGED_OBJ} = $lib->{OUTPUT_MERGED_OBJ} = "bin/mergedobj/$lib->{MERGED_OBJNAME}"; - $lib->{TARGET_MERGED_OBJ} = $lib->{RESULT_MERGED_OBJ}; - } + $lib->{MERGED_OBJNAME} = lc($link_name).".o"; + $lib->{RESULT_MERGED_OBJ} = $lib->{OUTPUT_MERGED_OBJ} = "bin/mergedobj/$lib->{MERGED_OBJNAME}"; + $lib->{TARGET_MERGED_OBJ} = $lib->{RESULT_MERGED_OBJ}; } sub generate_static_library($) @@ -116,12 +79,10 @@ sub generate_static_library($) $lib->{LIBRARY_NAME} = "lib".lc($link_name).".a"; - if (defined($lib->{OBJ_FILES})) { - $lib->{RESULT_STATIC_LIBRARY} = "bin/static/$lib->{LIBRARY_NAME}"; - $lib->{TARGET_STATIC_LIBRARY} = $lib->{RESULT_STATIC_LIBRARY}; - $lib->{STATICDIR} = 'bin/static'; - $lib->{OUTPUT_STATIC_LIBRARY} = "-l".lc($link_name); - } + $lib->{RESULT_STATIC_LIBRARY} = "bin/static/$lib->{LIBRARY_NAME}"; + $lib->{TARGET_STATIC_LIBRARY} = $lib->{RESULT_STATIC_LIBRARY}; + $lib->{STATICDIR} = 'bin/static'; + $lib->{OUTPUT_STATIC_LIBRARY} = "-l".lc($link_name); } sub generate_binary($) @@ -160,10 +121,6 @@ sub create_output($$) foreach $part (values %{$depend}) { next unless(defined($part->{OUTPUT_TYPE})); - # Combine object lists - my @list = add_dir_array($part->{BASEDIR}, $part->{OBJ_FILES}); - push(@{$part->{OBJ_LIST}}, @list) if defined($part->{OBJ_FILES}); - generate_binary($part) if grep(/BINARY/, @{$part->{OUTPUT_TYPE}}); generate_shared_library($part) if grep(/SHARED_LIBRARY/, @{$part->{OUTPUT_TYPE}}); generate_static_library($part) if grep(/STATIC_LIBRARY/, @{$part->{OUTPUT_TYPE}}); diff --git a/source4/cldap_server/config.mk b/source4/cldap_server/config.mk index 9dd3758e7a..c10cf57b5b 100644 --- a/source4/cldap_server/config.mk +++ b/source4/cldap_server/config.mk @@ -6,11 +6,13 @@ INIT_FUNCTION = server_service_cldapd_init SUBSYSTEM = service PRIVATE_PROTO_HEADER = proto.h -OBJ_FILES = \ - cldap_server.o \ - netlogon.o \ - rootdse.o PRIVATE_DEPENDENCIES = \ LIBCLI_CLDAP LIBNETIF process_model # End SUBSYSTEM CLDAPD ####################### + +CLDAPD_OBJ_FILES = $(addprefix cldap_server/, \ + cldap_server.o \ + netlogon.o \ + rootdse.o) + diff --git a/source4/cldap_server/netlogon.c b/source4/cldap_server/netlogon.c index 32a71e43af..a524a6f8bd 100644 --- a/source4/cldap_server/netlogon.c +++ b/source4/cldap_server/netlogon.c @@ -20,7 +20,6 @@ */ #include "includes.h" -#include "libcli/ldap/ldap_ndr.h" #include "lib/ldb/include/ldb.h" #include "lib/ldb/include/ldb_errors.h" #include "lib/events/events.h" @@ -28,6 +27,7 @@ #include "smbd/service_task.h" #include "cldap_server/cldap_server.h" #include "librpc/gen_ndr/ndr_misc.h" +#include "libcli/ldap/ldap_ndr.h" #include "dsdb/samdb/samdb.h" #include "auth/auth.h" #include "ldb_wrap.h" diff --git a/source4/client/config.mk b/source4/client/config.mk index 2085faf61e..5cfa542fba 100644 --- a/source4/client/config.mk +++ b/source4/client/config.mk @@ -4,8 +4,6 @@ # Start BINARY smbclient [BINARY::smbclient] INSTALLDIR = BINDIR -OBJ_FILES = \ - client.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG \ SMBREADLINE \ @@ -20,13 +18,12 @@ PRIVATE_DEPENDENCIES = \ # End BINARY smbclient ################################# +smbclient_OBJ_FILES = client/client.o + ################################# # Start BINARY cifsdd [BINARY::cifsdd] INSTALLDIR = BINDIR -OBJ_FILES = \ - cifsdd.o \ - cifsddio.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG \ LIBCLI_SMB \ @@ -36,3 +33,4 @@ PRIVATE_DEPENDENCIES = \ # End BINARY sdd ################################# +cifsdd_OBJ_FILES = client/cifsdd.o client/cifsddio.o diff --git a/source4/cluster/config.mk b/source4/cluster/config.mk index 8b225202fb..00ac597f94 100644 --- a/source4/cluster/config.mk +++ b/source4/cluster/config.mk @@ -1,7 +1,6 @@ mkinclude ctdb/config.mk -#################### [SUBSYSTEM::CLUSTER] -OBJ_FILES = cluster.o \ - local.o PRIVATE_DEPENDENCIES = ctdb + +CLUSTER_OBJ_FILES = cluster/cluster.o cluster/local.o diff --git a/source4/cluster/ctdb/config.mk b/source4/cluster/ctdb/config.mk index b8199cafe4..01c639d142 100644 --- a/source4/cluster/ctdb/config.mk +++ b/source4/cluster/ctdb/config.mk @@ -1,20 +1,24 @@ ################## [SUBSYSTEM::brlock_ctdb] -OBJ_FILES = brlock_ctdb.o PUBLIC_DEPENDENCIES = ctdb +brlock_ctdb_OBJ_FILES = cluster/ctdb/brlock_ctdb.o + ################## [SUBSYSTEM::opendb_ctdb] -OBJ_FILES = opendb_ctdb.o PUBLIC_DEPENDENCIES = ctdb +opendb_ctdb_OBJ_FILES = cluster/ctdb/opendb_ctdb.o + ################## [SUBSYSTEM::ctdb] -OBJ_FILES = \ +PUBLIC_DEPENDENCIES = TDB_WRAP LIBTALLOC + +ctdb_OBJ_FILES = $(addprefix cluster/ctdb/, \ ctdb_cluster.o \ client/ctdb_client.o \ common/ctdb_io.o \ common/ctdb_ltdb.o \ common/ctdb_message.o \ - common/ctdb_util.o -PUBLIC_DEPENDENCIES = TDB_WRAP LIBTALLOC + common/ctdb_util.o) + diff --git a/source4/dsdb/config.mk b/source4/dsdb/config.mk index 1a20add91c..e334e4c6e3 100644 --- a/source4/dsdb/config.mk +++ b/source4/dsdb/config.mk @@ -10,31 +10,33 @@ PUBLIC_DEPENDENCIES = HEIMDAL_KRB5 PRIVATE_DEPENDENCIES = LIBNDR NDR_MISC NDR_DRSUAPI NDR_DRSBLOBS NSS_WRAPPER \ auth_system_session LDAP_ENCODE LIBCLI_AUTH LIBNDR \ SAMDB_SCHEMA LDB_WRAP SAMDB_COMMON -OBJ_FILES = \ + + +SAMDB_OBJ_FILES = $(addprefix dsdb/, \ samdb/samdb.o \ samdb/samdb_privilege.o \ samdb/cracknames.o \ - repl/replicated_objects.o - + repl/replicated_objects.o) # PUBLIC_HEADERS += dsdb/samdb/samdb.h [SUBSYSTEM::SAMDB_COMMON] PRIVATE_PROTO_HEADER = common/proto.h PRIVATE_DEPENDENCIES = LIBLDB -OBJ_FILES = \ - common/sidmap.o \ - common/flag_mapping.o \ - common/util.o + +SAMDB_COMMON_OBJ_FILES = $(addprefix dsdb/common/, \ + sidmap.o \ + flag_mapping.o \ + util.o) [SUBSYSTEM::SAMDB_SCHEMA] PRIVATE_PROTO_HEADER = schema/proto.h PRIVATE_DEPENDENCIES = SAMDB_COMMON NDR_DRSUAPI NDR_DRSBLOBS -OBJ_FILES = \ - schema/schema_init.o \ - schema/schema_syntax.o \ - schema/schema_constructed.o \ +SAMDB_SCHEMA_OBJ_FILES = $(addprefix dsdb/schema/, \ + schema_init.o \ + schema_syntax.o \ + schema_constructed.o) # PUBLIC_HEADERS += dsdb/schema/schema.h @@ -43,15 +45,17 @@ OBJ_FILES = \ [MODULE::DREPL_SRV] INIT_FUNCTION = server_service_drepl_init SUBSYSTEM = service -OBJ_FILES = \ - repl/drepl_service.o \ - repl/drepl_periodic.o \ - repl/drepl_partitions.o \ - repl/drepl_out_pull.o \ - repl/drepl_out_helpers.o PRIVATE_PROTO_HEADER = repl/drepl_service_proto.h PRIVATE_DEPENDENCIES = \ SAMDB \ process_model # End SUBSYSTEM DREPL_SRV ####################### + +DREPL_SRV_OBJ_FILES = $(addprefix dsdb/repl/, \ + drepl_service.o \ + drepl_periodic.o \ + drepl_partitions.o \ + drepl_out_pull.o \ + drepl_out_helpers.o) + diff --git a/source4/dsdb/samdb/ldb_modules/config.mk b/source4/dsdb/samdb/ldb_modules/config.mk index de93b5638d..414b449ba8 100644 --- a/source4/dsdb/samdb/ldb_modules/config.mk +++ b/source4/dsdb/samdb/ldb_modules/config.mk @@ -5,11 +5,11 @@ SUBSYSTEM = LIBLDB OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = LIBTALLOC LIBNDR NDR_MISC INIT_FUNCTION = objectguid_module_module_ops -OBJ_FILES = \ - objectguid.o # End MODULE ldb_objectguid ################################################ +ldb_objectguid_OBJ_FILES = dsdb/samdb/ldb_modules/objectguid.o + ################################################ # Start MODULE ldb_repl_meta_data [MODULE::ldb_repl_meta_data] @@ -18,11 +18,12 @@ OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = SAMDB LIBTALLOC LIBNDR NDR_MISC NDR_DRSUAPI \ NDR_DRSBLOBS LIBNDR INIT_FUNCTION = repl_meta_data_module_module_ops -OBJ_FILES = \ - repl_meta_data.o # End MODULE ldb_repl_meta_data ################################################ +ldb_repl_meta_data_OBJ_FILES = \ + dsdb/samdb/ldb_modules/repl_meta_data.o + ################################################ # Start MODULE ldb_dsdb_cache [MODULE::ldb_dsdb_cache] @@ -30,11 +31,12 @@ SUBSYSTEM = LIBLDB OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = SAMDB LIBTALLOC INIT_FUNCTION = dsdb_cache_module_module_ops -OBJ_FILES = \ - dsdb_cache.o # End MODULE ldb_dsdb_cache ################################################ +ldb_dsdb_cache_OBJ_FILES = \ + dsdb/samdb/ldb_modules/dsdb_cache.o + ################################################ # Start MODULE ldb_schema_fsmo [MODULE::ldb_schema_fsmo] @@ -42,11 +44,12 @@ SUBSYSTEM = LIBLDB OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = SAMDB LIBTALLOC INIT_FUNCTION = schema_fsmo_module_module_ops -OBJ_FILES = \ - schema_fsmo.o # End MODULE ldb_schema_fsmo ################################################ +ldb_schema_fsmo_OBJ_FILES = \ + dsdb/samdb/ldb_modules/schema_fsmo.o + ################################################ # Start MODULE ldb_naming_fsmo [MODULE::ldb_naming_fsmo] @@ -54,11 +57,12 @@ SUBSYSTEM = LIBLDB OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = SAMDB LIBTALLOC INIT_FUNCTION = naming_fsmo_module_module_ops -OBJ_FILES = \ - naming_fsmo.o # End MODULE ldb_naming_fsmo ################################################ +ldb_naming_fsmo_OBJ_FILES = \ + dsdb/samdb/ldb_modules/naming_fsmo.o + ################################################ # Start MODULE ldb_pdc_fsmo [MODULE::ldb_pdc_fsmo] @@ -66,11 +70,12 @@ SUBSYSTEM = LIBLDB OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = SAMDB LIBTALLOC INIT_FUNCTION = pdc_fsmo_module_module_ops -OBJ_FILES = \ - pdc_fsmo.o # End MODULE ldb_pdc_fsmo ################################################ +ldb_pdc_fsmo_OBJ_FILES = \ + dsdb/samdb/ldb_modules/pdc_fsmo.o + ################################################ # Start MODULE ldb_samldb [MODULE::ldb_samldb] @@ -78,12 +83,13 @@ SUBSYSTEM = LIBLDB OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = LIBTALLOC LDAP_ENCODE NDR_MISC SAMDB INIT_FUNCTION = samldb_module_module_ops -OBJ_FILES = \ - samldb.o # # End MODULE ldb_samldb ################################################ +ldb_samldb_OBJ_FILES = \ + dsdb/samdb/ldb_modules/samldb.o + ################################################ # Start MODULE ldb_samba3sam [MODULE::ldb_samba3sam] @@ -92,12 +98,13 @@ OUTPUT_TYPE = SHARED_LIBRARY INIT_FUNCTION = &ldb_samba3sam_module_module_ops PRIVATE_DEPENDENCIES = LIBTALLOC ldb_map SMBPASSWD NSS_WRAPPER LIBSECURITY \ NDR_SECURITY -OBJ_FILES = \ - samba3sam.o # # End MODULE ldb_samldb ################################################ +ldb_samba3sam_OBJ_FILES = \ + dsdb/samdb/ldb_modules/samba3sam.o + ################################################ # Start MODULE ldb_simple_ldap_map [MODULE::ldb_simple_ldap_map] @@ -107,12 +114,13 @@ INIT_FUNCTION = &ldb_simple_ldap_map_module_module_ops PRIVATE_DEPENDENCIES = LIBTALLOC ldb_map LIBNDR NDR_MISC ENABLE = YES ALIASES = entryuuid nsuniqueid -OBJ_FILES = \ - simple_ldap_map.o # # End MODULE ldb_entryuuid ################################################ +ldb_simple_ldap_map_OBJ_FILES = \ + dsdb/samdb/ldb_modules/simple_ldap_map.o + # ################################################ # # Start MODULE ldb_proxy # [MODULE::ldb_proxy] @@ -132,25 +140,24 @@ SUBSYSTEM = LIBLDB PRIVATE_DEPENDENCIES = LIBTALLOC SAMDB OUTPUT_TYPE = SHARED_LIBRARY INIT_FUNCTION = rootdse_module_module_ops -OBJ_FILES = \ - rootdse.o -# # End MODULE ldb_rootdse ################################################ +ldb_rootdse_OBJ_FILES = dsdb/samdb/ldb_modules/rootdse.o + ################################################ # Start MODULE ldb_password_hash [MODULE::ldb_password_hash] SUBSYSTEM = LIBLDB OUTPUT_TYPE = SHARED_LIBRARY INIT_FUNCTION = password_hash_module_module_ops -OBJ_FILES = password_hash.o PRIVATE_DEPENDENCIES = HEIMDAL_HDB_KEYS LIBTALLOC HEIMDAL_KRB5 LDAP_ENCODE \ LIBCLI_AUTH NDR_DRSBLOBS KERBEROS SAMDB -# # End MODULE ldb_password_hash ################################################ +ldb_password_hash_OBJ_FILES = dsdb/samdb/ldb_modules/password_hash.o + ################################################ # Start MODULE ldb_local_password [MODULE::ldb_local_password] @@ -158,11 +165,11 @@ PRIVATE_DEPENDENCIES = LIBTALLOC LIBNDR SAMDB OUTPUT_TYPE = SHARED_LIBRARY SUBSYSTEM = LIBLDB INIT_FUNCTION = local_password_module_module_ops -OBJ_FILES = local_password.o -# # End MODULE ldb_local_password ################################################ +ldb_local_password_OBJ_FILES = dsdb/samdb/ldb_modules/local_password.o + ################################################ # Start MODULE ldb_kludge_acl [MODULE::ldb_kludge_acl] @@ -170,12 +177,12 @@ PRIVATE_DEPENDENCIES = LIBTALLOC LIBSECURITY SAMDB OUTPUT_TYPE = SHARED_LIBRARY SUBSYSTEM = LIBLDB INIT_FUNCTION = &ldb_kludge_acl_module_ops -OBJ_FILES = \ - kludge_acl.o -# + # End MODULE ldb_kludge_acl ################################################ +ldb_kludge_acl_OBJ_FILES = dsdb/samdb/ldb_modules/kludge_acl.o + ################################################ # Start MODULE ldb_extended_dn [MODULE::ldb_extended_dn] @@ -183,12 +190,11 @@ SUBSYSTEM = LIBLDB OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = LIBTALLOC LIBNDR LIBSECURITY SAMDB INIT_FUNCTION = &ldb_extended_dn_module_ops -OBJ_FILES = \ - extended_dn.o -# # End MODULE ldb_extended_dn ################################################ +ldb_extended_dn_OBJ_FILES = dsdb/samdb/ldb_modules/extended_dn.o + ################################################ # Start MODULE ldb_show_deleted [MODULE::ldb_show_deleted] @@ -196,12 +202,11 @@ SUBSYSTEM = LIBLDB OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = LIBTALLOC INIT_FUNCTION = &ldb_show_deleted_module_ops -OBJ_FILES = \ - show_deleted.o -# # End MODULE ldb_show_deleted ################################################ +ldb_show_deleted_OBJ_FILES = dsdb/samdb/ldb_modules/show_deleted.o + ################################################ # Start MODULE ldb_partition [MODULE::ldb_partition] @@ -209,12 +214,11 @@ SUBSYSTEM = LIBLDB OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = LIBTALLOC SAMDB INIT_FUNCTION = &ldb_partition_module_ops -OBJ_FILES = \ - partition.o -# # End MODULE ldb_partition ################################################ +ldb_partition_OBJ_FILES = dsdb/samdb/ldb_modules/partition.o + ################################################ # Start MODULE ldb_schema [MODULE::ldb_schema] @@ -222,12 +226,11 @@ SUBSYSTEM = LIBLDB OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = LIBTALLOC LIBLDB INIT_FUNCTION = &ldb_schema_module_ops -OBJ_FILES = \ - schema.o schema_syntax.o -# # End MODULE ldb_schema ################################################ +ldb_schema_OBJ_FILES = $(addprefix dsdb/samdb/ldb_modules/, schema.o schema_syntax.o) + ################################################ # Start MODULE ldb_update_kt [MODULE::ldb_update_keytab] @@ -236,12 +239,11 @@ OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = LIBTALLOC CREDENTIALS #Also depends on credentials, but that would loop INIT_FUNCTION = &ldb_update_kt_module_ops -OBJ_FILES = \ - update_keytab.o -# # End MODULE ldb_update_kt ################################################ +ldb_update_keytab_OBJ_FILES = dsdb/samdb/ldb_modules/update_keytab.o + ################################################ # Start MODULE ldb_objectclass [MODULE::ldb_objectclass] @@ -250,11 +252,11 @@ OUTPUT_TYPE = SHARED_LIBRARY CFLAGS = -Ilib/ldb/include PRIVATE_DEPENDENCIES = LIBTALLOC LIBSECURITY NDR_SECURITY SAMDB SUBSYSTEM = LIBLDB -OBJ_FILES = \ - objectclass.o # End MODULE ldb_objectclass ################################################ +ldb_objectclass_OBJ_FILES = dsdb/samdb/ldb_modules/objectclass.o + ################################################ # Start MODULE ldb_subtree_rename [MODULE::ldb_subtree_rename] @@ -262,11 +264,11 @@ INIT_FUNCTION = &ldb_subtree_rename_module_ops CFLAGS = -Ilib/ldb/include PRIVATE_DEPENDENCIES = LIBTALLOC SUBSYSTEM = LIBLDB -OBJ_FILES = \ - subtree_rename.o # End MODULE ldb_subtree_rename ################################################ +ldb_subtree_rename_OBJ_FILES = dsdb/samdb/ldb_modules/subtree_rename.o + ################################################ # Start MODULE ldb_subtree_rename [MODULE::ldb_subtree_delete] @@ -274,11 +276,11 @@ INIT_FUNCTION = &ldb_subtree_delete_module_ops CFLAGS = -Ilib/ldb/include PRIVATE_DEPENDENCIES = LIBTALLOC SUBSYSTEM = LIBLDB -OBJ_FILES = \ - subtree_delete.o # End MODULE ldb_subtree_rename ################################################ +ldb_subtree_delete_OBJ_FILES = dsdb/samdb/ldb_modules/subtree_delete.o + ################################################ # Start MODULE ldb_linked_attributes [MODULE::ldb_linked_attributes] @@ -287,11 +289,11 @@ CFLAGS = -Ilib/ldb/include OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = LIBTALLOC SAMDB SUBSYSTEM = LIBLDB -OBJ_FILES = \ - linked_attributes.o # End MODULE ldb_linked_attributes ################################################ +ldb_linked_attributes_OBJ_FILES = dsdb/samdb/ldb_modules/linked_attributes.o + ################################################ # Start MODULE ldb_ranged_results [MODULE::ldb_ranged_results] @@ -299,11 +301,11 @@ INIT_FUNCTION = &ldb_ranged_results_module_ops CFLAGS = -Ilib/ldb/include PRIVATE_DEPENDENCIES = LIBTALLOC SUBSYSTEM = LIBLDB -OBJ_FILES = \ - ranged_results.o # End MODULE ldb_ranged_results ################################################ +ldb_ranged_results_OBJ_FILES = dsdb/samdb/ldb_modules/ranged_results.o + ################################################ # Start MODULE ldb_anr [MODULE::ldb_anr] @@ -312,11 +314,11 @@ CFLAGS = -Ilib/ldb/include OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = LIBTALLOC LIBSAMBA-UTIL SAMDB SUBSYSTEM = LIBLDB -OBJ_FILES = \ - anr.o # End MODULE ldb_anr ################################################ +ldb_anr_OBJ_FILES = dsdb/samdb/ldb_modules/anr.o + ################################################ # Start MODULE ldb_normalise [MODULE::ldb_normalise] @@ -325,11 +327,11 @@ CFLAGS = -Ilib/ldb/include OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = LIBTALLOC LIBSAMBA-UTIL SAMDB SUBSYSTEM = LIBLDB -OBJ_FILES = \ - normalise.o # End MODULE ldb_normalise ################################################ +ldb_normalise_OBJ_FILES = dsdb/samdb/ldb_modules/normalise.o + ################################################ # Start MODULE ldb_instancetype [MODULE::ldb_instancetype] @@ -338,8 +340,8 @@ CFLAGS = -Ilib/ldb/include OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = LIBTALLOC SUBSYSTEM = LIBLDB -OBJ_FILES = \ - instancetype.o # End MODULE ldb_instancetype ################################################ +ldb_instancetype_OBJ_FILES = dsdb/samdb/ldb_modules/instancetype.o + diff --git a/source4/dynconfig.mk b/source4/dynconfig.mk index aa0565cd7a..487d924036 100644 --- a/source4/dynconfig.mk +++ b/source4/dynconfig.mk @@ -1,5 +1,6 @@ [SUBSYSTEM::DYNCONFIG] -OBJ_FILES = dynconfig.o + +DYNCONFIG_OBJ_FILES = dynconfig.o # set these to where to find various files # These can be overridden by command line switches (see smbd(8)) @@ -21,5 +22,4 @@ PATH_FLAGS = -DCONFIGFILE=\"$(CONFIGFILE)\" \ dynconfig.o: dynconfig.c Makefile @echo Compiling $< - @$(CC) $(CFLAGS) $(CPPFLAGS) $(PICFLAG) \ - $(PATH_FLAGS) -c $< -o $@ + @$(CC) $(CFLAGS) $(CPPFLAGS) $(PICFLAG) $(PATH_FLAGS) -c $< -o $@ diff --git a/source4/heimdal_build/asn1_deps.pl b/source4/heimdal_build/asn1_deps.pl index b80e00d444..a2fbb5e3d0 100755 --- a/source4/heimdal_build/asn1_deps.pl +++ b/source4/heimdal_build/asn1_deps.pl @@ -87,11 +87,14 @@ my $depstr = join(' ', @deps); print '[SUBSYSTEM::HEIMDAL_'.uc($prefix).']'."\n"; print "CFLAGS = -Iheimdal_build -Iheimdal/lib/roken -I$dirname\n"; -print "OBJ_FILES = "; +print "PUBLIC_DEPENDENCIES = $depstr\n\n"; + +print "HEIMDAL_".uc($prefix)."_OBJ_FILES = "; foreach $o_file (@o_files) { print "\\\n\t$o_file"; } -print "\nPUBLIC_DEPENDENCIES = $depstr\n\n"; + +print "\n\n"; print "clean:: \n"; print "\t\@echo \"Deleting ASN1 output files generated from $file\"\n"; diff --git a/source4/heimdal_build/config.mk b/source4/heimdal_build/config.mk index 24d50acb05..33d2edb67b 100644 --- a/source4/heimdal_build/config.mk +++ b/source4/heimdal_build/config.mk @@ -2,334 +2,343 @@ # Start SUBSYSTEM HEIMDAL_KDC [SUBSYSTEM::HEIMDAL_KDC] CFLAGS = -Iheimdal_build -Iheimdal/kdc -OBJ_FILES = \ - ../heimdal/kdc/default_config.o \ - ../heimdal/kdc/kerberos5.o \ - ../heimdal/kdc/krb5tgs.o \ - ../heimdal/kdc/pkinit.o \ - ../heimdal/kdc/log.o \ - ../heimdal/kdc/misc.o \ - ../heimdal/kdc/524.o \ - ../heimdal/kdc/kerberos4.o \ - ../heimdal/kdc/kaserver.o \ - ../heimdal/kdc/digest.o \ - ../heimdal/kdc/process.o \ - ../heimdal/kdc/windc.o \ - ../heimdal/kdc/kx509.o PRIVATE_DEPENDENCIES = HEIMDAL_ROKEN HEIMDAL_KRB5 HEIMDAL_HDB HEIMDAL_HEIM_ASN1 HEIMDAL_DIGEST_ASN1 HEIMDAL_KX509_ASN1 PUBLIC_DEPENDENCIES = HEIMDAL_NTLM HEIMDAL_HCRYPTO # End SUBSYSTEM HEIMDAL_KDC ####################### +HEIMDAL_KDC_OBJ_FILES = \ + ./heimdal/kdc/default_config.o \ + ./heimdal/kdc/kerberos5.o \ + ./heimdal/kdc/krb5tgs.o \ + ./heimdal/kdc/pkinit.o \ + ./heimdal/kdc/log.o \ + ./heimdal/kdc/misc.o \ + ./heimdal/kdc/524.o \ + ./heimdal/kdc/kerberos4.o \ + ./heimdal/kdc/kaserver.o \ + ./heimdal/kdc/digest.o \ + ./heimdal/kdc/process.o \ + ./heimdal/kdc/windc.o \ + ./heimdal/kdc/kx509.o + [SUBSYSTEM::HEIMDAL_NTLM] CFLAGS = -Iheimdal_build -Iheimdal/lib/ntlm -OBJ_FILES = \ - ../heimdal/lib/ntlm/ntlm.o PRIVATE_DEPENDENCIES = HEIMDAL_ROKEN HEIMDAL_HCRYPTO HEIMDAL_KRB5 +HEIMDAL_NTLM_OBJ_FILES = \ + ./heimdal/lib/ntlm/ntlm.o + [SUBSYSTEM::HEIMDAL_HDB_KEYS] CFLAGS = -Iheimdal_build -Iheimdal/lib/hdb -OBJ_FILES = \ - ../heimdal/lib/hdb/keys.o PRIVATE_DEPENDENCIES = HEIMDAL_ROKEN HEIMDAL_HCRYPTO HEIMDAL_KRB5 \ HEIMDAL_HDB_ASN1 +HEIMDAL_HDB_KEYS_OBJ_FILES = ./heimdal/lib/hdb/keys.o + ####################### # Start SUBSYSTEM HEIMDAL_HDB [SUBSYSTEM::HEIMDAL_HDB] CFLAGS = -Iheimdal_build -Iheimdal/lib/hdb -OBJ_FILES = \ - ../heimdal/lib/hdb/db.o \ - ../heimdal/lib/hdb/dbinfo.o \ - ../heimdal/lib/hdb/hdb.o \ - ../heimdal/lib/hdb/ext.o \ - ../heimdal/lib/hdb/keytab.o \ - ../heimdal/lib/hdb/mkey.o \ - ../heimdal/lib/hdb/ndbm.o \ - ../heimdal/lib/hdb/hdb_err.o PRIVATE_DEPENDENCIES = HDB_LDB HEIMDAL_KRB5 HEIMDAL_HDB_KEYS HEIMDAL_ROKEN HEIMDAL_HCRYPTO HEIMDAL_COM_ERR HEIMDAL_HDB_ASN1 # End SUBSYSTEM HEIMDAL_HDB ####################### +HEIMDAL_HDB_OBJ_FILES = \ + ./heimdal/lib/hdb/db.o \ + ./heimdal/lib/hdb/dbinfo.o \ + ./heimdal/lib/hdb/hdb.o \ + ./heimdal/lib/hdb/ext.o \ + ./heimdal/lib/hdb/keytab.o \ + ./heimdal/lib/hdb/mkey.o \ + ./heimdal/lib/hdb/ndbm.o \ + ./heimdal/lib/hdb/hdb_err.o + ####################### # Start SUBSYSTEM HEIMDAL_GSSAPI [SUBSYSTEM::HEIMDAL_GSSAPI] CFLAGS = -Iheimdal_build -Iheimdal/lib/gssapi -Iheimdal/lib/gssapi/gssapi -Iheimdal/lib/gssapi/spnego -Iheimdal/lib/gssapi/krb5 -Iheimdal/lib/gssapi/mech -OBJ_FILES = \ - ../heimdal/lib/gssapi/mech/context.o \ - ../heimdal/lib/gssapi/mech/gss_krb5.o \ - ../heimdal/lib/gssapi/mech/gss_mech_switch.o \ - ../heimdal/lib/gssapi/mech/gss_process_context_token.o \ - ../heimdal/lib/gssapi/mech/gss_buffer_set.o \ - ../heimdal/lib/gssapi/mech/gss_add_cred.o \ - ../heimdal/lib/gssapi/mech/gss_add_oid_set_member.o \ - ../heimdal/lib/gssapi/mech/gss_compare_name.o \ - ../heimdal/lib/gssapi/mech/gss_release_oid_set.o \ - ../heimdal/lib/gssapi/mech/gss_create_empty_oid_set.o \ - ../heimdal/lib/gssapi/mech/gss_decapsulate_token.o \ - ../heimdal/lib/gssapi/mech/gss_inquire_cred_by_oid.o \ - ../heimdal/lib/gssapi/mech/gss_canonicalize_name.o \ - ../heimdal/lib/gssapi/mech/gss_inquire_sec_context_by_oid.o \ - ../heimdal/lib/gssapi/mech/gss_inquire_names_for_mech.o \ - ../heimdal/lib/gssapi/mech/gss_inquire_mechs_for_name.o \ - ../heimdal/lib/gssapi/mech/gss_wrap_size_limit.o \ - ../heimdal/lib/gssapi/mech/gss_names.o \ - ../heimdal/lib/gssapi/mech/gss_verify.o \ - ../heimdal/lib/gssapi/mech/gss_display_name.o \ - ../heimdal/lib/gssapi/mech/gss_duplicate_oid.o \ - ../heimdal/lib/gssapi/mech/gss_display_status.o \ - ../heimdal/lib/gssapi/mech/gss_release_buffer.o \ - ../heimdal/lib/gssapi/mech/gss_release_oid.o \ - ../heimdal/lib/gssapi/mech/gss_test_oid_set_member.o \ - ../heimdal/lib/gssapi/mech/gss_release_cred.o \ - ../heimdal/lib/gssapi/mech/gss_set_sec_context_option.o \ - ../heimdal/lib/gssapi/mech/gss_export_name.o \ - ../heimdal/lib/gssapi/mech/gss_seal.o \ - ../heimdal/lib/gssapi/mech/gss_acquire_cred.o \ - ../heimdal/lib/gssapi/mech/gss_unseal.o \ - ../heimdal/lib/gssapi/mech/gss_verify_mic.o \ - ../heimdal/lib/gssapi/mech/gss_accept_sec_context.o \ - ../heimdal/lib/gssapi/mech/gss_inquire_cred_by_mech.o \ - ../heimdal/lib/gssapi/mech/gss_indicate_mechs.o \ - ../heimdal/lib/gssapi/mech/gss_delete_sec_context.o \ - ../heimdal/lib/gssapi/mech/gss_sign.o \ - ../heimdal/lib/gssapi/mech/gss_utils.o \ - ../heimdal/lib/gssapi/mech/gss_init_sec_context.o \ - ../heimdal/lib/gssapi/mech/gss_oid_equal.o \ - ../heimdal/lib/gssapi/mech/gss_oid_to_str.o \ - ../heimdal/lib/gssapi/mech/gss_context_time.o \ - ../heimdal/lib/gssapi/mech/gss_encapsulate_token.o \ - ../heimdal/lib/gssapi/mech/gss_get_mic.o \ - ../heimdal/lib/gssapi/mech/gss_import_sec_context.o \ - ../heimdal/lib/gssapi/mech/gss_inquire_cred.o \ - ../heimdal/lib/gssapi/mech/gss_wrap.o \ - ../heimdal/lib/gssapi/mech/gss_import_name.o \ - ../heimdal/lib/gssapi/mech/gss_duplicate_name.o \ - ../heimdal/lib/gssapi/mech/gss_unwrap.o \ - ../heimdal/lib/gssapi/mech/gss_export_sec_context.o \ - ../heimdal/lib/gssapi/mech/gss_inquire_context.o \ - ../heimdal/lib/gssapi/mech/gss_release_name.o \ - ../heimdal/lib/gssapi/mech/gss_set_cred_option.o \ - ../heimdal/lib/gssapi/asn1_GSSAPIContextToken.o \ - ../heimdal/lib/gssapi/spnego/init_sec_context.o \ - ../heimdal/lib/gssapi/spnego/external.o \ - ../heimdal/lib/gssapi/spnego/compat.o \ - ../heimdal/lib/gssapi/spnego/context_stubs.o \ - ../heimdal/lib/gssapi/spnego/cred_stubs.o \ - ../heimdal/lib/gssapi/spnego/accept_sec_context.o \ - ../heimdal/lib/gssapi/krb5/copy_ccache.o \ - ../heimdal/lib/gssapi/krb5/delete_sec_context.o \ - ../heimdal/lib/gssapi/krb5/init_sec_context.o \ - ../heimdal/lib/gssapi/krb5/context_time.o \ - ../heimdal/lib/gssapi/krb5/init.o \ - ../heimdal/lib/gssapi/krb5/address_to_krb5addr.o \ - ../heimdal/lib/gssapi/krb5/get_mic.o \ - ../heimdal/lib/gssapi/krb5/inquire_context.o \ - ../heimdal/lib/gssapi/krb5/add_cred.o \ - ../heimdal/lib/gssapi/krb5/inquire_cred.o \ - ../heimdal/lib/gssapi/krb5/inquire_cred_by_oid.o \ - ../heimdal/lib/gssapi/krb5/inquire_cred_by_mech.o \ - ../heimdal/lib/gssapi/krb5/inquire_mechs_for_name.o \ - ../heimdal/lib/gssapi/krb5/inquire_names_for_mech.o \ - ../heimdal/lib/gssapi/krb5/indicate_mechs.o \ - ../heimdal/lib/gssapi/krb5/inquire_sec_context_by_oid.o \ - ../heimdal/lib/gssapi/krb5/export_sec_context.o \ - ../heimdal/lib/gssapi/krb5/import_sec_context.o \ - ../heimdal/lib/gssapi/krb5/duplicate_name.o \ - ../heimdal/lib/gssapi/krb5/import_name.o \ - ../heimdal/lib/gssapi/krb5/compare_name.o \ - ../heimdal/lib/gssapi/krb5/export_name.o \ - ../heimdal/lib/gssapi/krb5/canonicalize_name.o \ - ../heimdal/lib/gssapi/krb5/unwrap.o \ - ../heimdal/lib/gssapi/krb5/wrap.o \ - ../heimdal/lib/gssapi/krb5/release_name.o \ - ../heimdal/lib/gssapi/krb5/cfx.o \ - ../heimdal/lib/gssapi/krb5/8003.o \ - ../heimdal/lib/gssapi/krb5/arcfour.o \ - ../heimdal/lib/gssapi/krb5/encapsulate.o \ - ../heimdal/lib/gssapi/krb5/display_name.o \ - ../heimdal/lib/gssapi/krb5/sequence.o \ - ../heimdal/lib/gssapi/krb5/display_status.o \ - ../heimdal/lib/gssapi/krb5/release_buffer.o \ - ../heimdal/lib/gssapi/krb5/external.o \ - ../heimdal/lib/gssapi/krb5/compat.o \ - ../heimdal/lib/gssapi/krb5/acquire_cred.o \ - ../heimdal/lib/gssapi/krb5/release_cred.o \ - ../heimdal/lib/gssapi/krb5/set_cred_option.o \ - ../heimdal/lib/gssapi/krb5/decapsulate.o \ - ../heimdal/lib/gssapi/krb5/verify_mic.o \ - ../heimdal/lib/gssapi/krb5/accept_sec_context.o \ - ../heimdal/lib/gssapi/krb5/set_sec_context_option.o \ - ../heimdal/lib/gssapi/krb5/process_context_token.o \ - ../heimdal/lib/gssapi/krb5/prf.o PRIVATE_DEPENDENCIES = HEIMDAL_HCRYPTO HEIMDAL_HEIM_ASN1 HEIMDAL_SPNEGO_ASN1 PUBLIC_DEPENDENCIES = HEIMDAL_ROKEN HEIMDAL_KRB5 # End SUBSYSTEM HEIMDAL_GSSAPI ####################### +HEIMDAL_GSSAPI_OBJ_FILES = \ + ./heimdal/lib/gssapi/mech/context.o \ + ./heimdal/lib/gssapi/mech/gss_krb5.o \ + ./heimdal/lib/gssapi/mech/gss_mech_switch.o \ + ./heimdal/lib/gssapi/mech/gss_process_context_token.o \ + ./heimdal/lib/gssapi/mech/gss_buffer_set.o \ + ./heimdal/lib/gssapi/mech/gss_add_cred.o \ + ./heimdal/lib/gssapi/mech/gss_add_oid_set_member.o \ + ./heimdal/lib/gssapi/mech/gss_compare_name.o \ + ./heimdal/lib/gssapi/mech/gss_release_oid_set.o \ + ./heimdal/lib/gssapi/mech/gss_create_empty_oid_set.o \ + ./heimdal/lib/gssapi/mech/gss_decapsulate_token.o \ + ./heimdal/lib/gssapi/mech/gss_inquire_cred_by_oid.o \ + ./heimdal/lib/gssapi/mech/gss_canonicalize_name.o \ + ./heimdal/lib/gssapi/mech/gss_inquire_sec_context_by_oid.o \ + ./heimdal/lib/gssapi/mech/gss_inquire_names_for_mech.o \ + ./heimdal/lib/gssapi/mech/gss_inquire_mechs_for_name.o \ + ./heimdal/lib/gssapi/mech/gss_wrap_size_limit.o \ + ./heimdal/lib/gssapi/mech/gss_names.o \ + ./heimdal/lib/gssapi/mech/gss_verify.o \ + ./heimdal/lib/gssapi/mech/gss_display_name.o \ + ./heimdal/lib/gssapi/mech/gss_duplicate_oid.o \ + ./heimdal/lib/gssapi/mech/gss_display_status.o \ + ./heimdal/lib/gssapi/mech/gss_release_buffer.o \ + ./heimdal/lib/gssapi/mech/gss_release_oid.o \ + ./heimdal/lib/gssapi/mech/gss_test_oid_set_member.o \ + ./heimdal/lib/gssapi/mech/gss_release_cred.o \ + ./heimdal/lib/gssapi/mech/gss_set_sec_context_option.o \ + ./heimdal/lib/gssapi/mech/gss_export_name.o \ + ./heimdal/lib/gssapi/mech/gss_seal.o \ + ./heimdal/lib/gssapi/mech/gss_acquire_cred.o \ + ./heimdal/lib/gssapi/mech/gss_unseal.o \ + ./heimdal/lib/gssapi/mech/gss_verify_mic.o \ + ./heimdal/lib/gssapi/mech/gss_accept_sec_context.o \ + ./heimdal/lib/gssapi/mech/gss_inquire_cred_by_mech.o \ + ./heimdal/lib/gssapi/mech/gss_indicate_mechs.o \ + ./heimdal/lib/gssapi/mech/gss_delete_sec_context.o \ + ./heimdal/lib/gssapi/mech/gss_sign.o \ + ./heimdal/lib/gssapi/mech/gss_utils.o \ + ./heimdal/lib/gssapi/mech/gss_init_sec_context.o \ + ./heimdal/lib/gssapi/mech/gss_oid_equal.o \ + ./heimdal/lib/gssapi/mech/gss_oid_to_str.o \ + ./heimdal/lib/gssapi/mech/gss_context_time.o \ + ./heimdal/lib/gssapi/mech/gss_encapsulate_token.o \ + ./heimdal/lib/gssapi/mech/gss_get_mic.o \ + ./heimdal/lib/gssapi/mech/gss_import_sec_context.o \ + ./heimdal/lib/gssapi/mech/gss_inquire_cred.o \ + ./heimdal/lib/gssapi/mech/gss_wrap.o \ + ./heimdal/lib/gssapi/mech/gss_import_name.o \ + ./heimdal/lib/gssapi/mech/gss_duplicate_name.o \ + ./heimdal/lib/gssapi/mech/gss_unwrap.o \ + ./heimdal/lib/gssapi/mech/gss_export_sec_context.o \ + ./heimdal/lib/gssapi/mech/gss_inquire_context.o \ + ./heimdal/lib/gssapi/mech/gss_release_name.o \ + ./heimdal/lib/gssapi/mech/gss_set_cred_option.o \ + ./heimdal/lib/gssapi/asn1_GSSAPIContextToken.o \ + ./heimdal/lib/gssapi/spnego/init_sec_context.o \ + ./heimdal/lib/gssapi/spnego/external.o \ + ./heimdal/lib/gssapi/spnego/compat.o \ + ./heimdal/lib/gssapi/spnego/context_stubs.o \ + ./heimdal/lib/gssapi/spnego/cred_stubs.o \ + ./heimdal/lib/gssapi/spnego/accept_sec_context.o \ + ./heimdal/lib/gssapi/krb5/copy_ccache.o \ + ./heimdal/lib/gssapi/krb5/delete_sec_context.o \ + ./heimdal/lib/gssapi/krb5/init_sec_context.o \ + ./heimdal/lib/gssapi/krb5/context_time.o \ + ./heimdal/lib/gssapi/krb5/init.o \ + ./heimdal/lib/gssapi/krb5/address_to_krb5addr.o \ + ./heimdal/lib/gssapi/krb5/get_mic.o \ + ./heimdal/lib/gssapi/krb5/inquire_context.o \ + ./heimdal/lib/gssapi/krb5/add_cred.o \ + ./heimdal/lib/gssapi/krb5/inquire_cred.o \ + ./heimdal/lib/gssapi/krb5/inquire_cred_by_oid.o \ + ./heimdal/lib/gssapi/krb5/inquire_cred_by_mech.o \ + ./heimdal/lib/gssapi/krb5/inquire_mechs_for_name.o \ + ./heimdal/lib/gssapi/krb5/inquire_names_for_mech.o \ + ./heimdal/lib/gssapi/krb5/indicate_mechs.o \ + ./heimdal/lib/gssapi/krb5/inquire_sec_context_by_oid.o \ + ./heimdal/lib/gssapi/krb5/export_sec_context.o \ + ./heimdal/lib/gssapi/krb5/import_sec_context.o \ + ./heimdal/lib/gssapi/krb5/duplicate_name.o \ + ./heimdal/lib/gssapi/krb5/import_name.o \ + ./heimdal/lib/gssapi/krb5/compare_name.o \ + ./heimdal/lib/gssapi/krb5/export_name.o \ + ./heimdal/lib/gssapi/krb5/canonicalize_name.o \ + ./heimdal/lib/gssapi/krb5/unwrap.o \ + ./heimdal/lib/gssapi/krb5/wrap.o \ + ./heimdal/lib/gssapi/krb5/release_name.o \ + ./heimdal/lib/gssapi/krb5/cfx.o \ + ./heimdal/lib/gssapi/krb5/8003.o \ + ./heimdal/lib/gssapi/krb5/arcfour.o \ + ./heimdal/lib/gssapi/krb5/encapsulate.o \ + ./heimdal/lib/gssapi/krb5/display_name.o \ + ./heimdal/lib/gssapi/krb5/sequence.o \ + ./heimdal/lib/gssapi/krb5/display_status.o \ + ./heimdal/lib/gssapi/krb5/release_buffer.o \ + ./heimdal/lib/gssapi/krb5/external.o \ + ./heimdal/lib/gssapi/krb5/compat.o \ + ./heimdal/lib/gssapi/krb5/acquire_cred.o \ + ./heimdal/lib/gssapi/krb5/release_cred.o \ + ./heimdal/lib/gssapi/krb5/set_cred_option.o \ + ./heimdal/lib/gssapi/krb5/decapsulate.o \ + ./heimdal/lib/gssapi/krb5/verify_mic.o \ + ./heimdal/lib/gssapi/krb5/accept_sec_context.o \ + ./heimdal/lib/gssapi/krb5/set_sec_context_option.o \ + ./heimdal/lib/gssapi/krb5/process_context_token.o \ + ./heimdal/lib/gssapi/krb5/prf.o + + ####################### # Start SUBSYSTEM HEIMDAL_KRB5 [SUBSYSTEM::HEIMDAL_KRB5] CFLAGS = -Iheimdal_build -Iheimdal/lib/krb5 PRIVATE_DEPENDENCIES = HEIMDAL_ROKEN HEIMDAL_PKINIT_ASN1 HEIMDAL_WIND PUBLIC_DEPENDENCIES = HEIMDAL_KRB5_ASN1 HEIMDAL_GLUE HEIMDAL_HX509 HEIMDAL_HCRYPTO -OBJ_FILES = \ - ../heimdal/lib/krb5/acache.o \ - ../heimdal/lib/krb5/add_et_list.o \ - ../heimdal/lib/krb5/addr_families.o \ - ../heimdal/lib/krb5/appdefault.o \ - ../heimdal/lib/krb5/asn1_glue.o \ - ../heimdal/lib/krb5/auth_context.o \ - ../heimdal/lib/krb5/build_ap_req.o \ - ../heimdal/lib/krb5/build_auth.o \ - ../heimdal/lib/krb5/cache.o \ - ../heimdal/lib/krb5/changepw.o \ - ../heimdal/lib/krb5/codec.o \ - ../heimdal/lib/krb5/config_file.o \ - ../heimdal/lib/krb5/config_file_netinfo.o \ - ../heimdal/lib/krb5/constants.o \ - ../heimdal/lib/krb5/context.o \ - ../heimdal/lib/krb5/convert_creds.o \ - ../heimdal/lib/krb5/copy_host_realm.o \ - ../heimdal/lib/krb5/crc.o \ - ../heimdal/lib/krb5/creds.o \ - ../heimdal/lib/krb5/crypto.o \ - ../heimdal/lib/krb5/data.o \ - ../heimdal/lib/krb5/eai_to_heim_errno.o \ - ../heimdal/lib/krb5/error_string.o \ - ../heimdal/lib/krb5/expand_hostname.o \ - ../heimdal/lib/krb5/fcache.o \ - ../heimdal/lib/krb5/free.o \ - ../heimdal/lib/krb5/free_host_realm.o \ - ../heimdal/lib/krb5/generate_seq_number.o \ - ../heimdal/lib/krb5/generate_subkey.o \ - ../heimdal/lib/krb5/get_cred.o \ - ../heimdal/lib/krb5/get_default_principal.o \ - ../heimdal/lib/krb5/get_default_realm.o \ - ../heimdal/lib/krb5/get_for_creds.o \ - ../heimdal/lib/krb5/get_host_realm.o \ - ../heimdal/lib/krb5/get_in_tkt.o \ - ../heimdal/lib/krb5/get_in_tkt_with_keytab.o \ - ../heimdal/lib/krb5/get_port.o \ - ../heimdal/lib/krb5/init_creds.o \ - ../heimdal/lib/krb5/init_creds_pw.o \ - ../heimdal/lib/krb5/kcm.o \ - ../heimdal/lib/krb5/keyblock.o \ - ../heimdal/lib/krb5/keytab.o \ - ../heimdal/lib/krb5/keytab_any.o \ - ../heimdal/lib/krb5/keytab_file.o \ - ../heimdal/lib/krb5/keytab_memory.o \ - ../heimdal/lib/krb5/keytab_keyfile.o \ - ../heimdal/lib/krb5/keytab_krb4.o \ - ../heimdal/lib/krb5/krbhst.o \ - ../heimdal/lib/krb5/log.o \ - ../heimdal/lib/krb5/mcache.o \ - ../heimdal/lib/krb5/misc.o \ - ../heimdal/lib/krb5/mk_error.o \ - ../heimdal/lib/krb5/mk_priv.o \ - ../heimdal/lib/krb5/mk_rep.o \ - ../heimdal/lib/krb5/mk_req.o \ - ../heimdal/lib/krb5/mk_req_ext.o \ - ../heimdal/lib/krb5/mit_glue.o \ - ../heimdal/lib/krb5/n-fold.o \ - ../heimdal/lib/krb5/padata.o \ - ../heimdal/lib/krb5/pkinit.o \ - ../heimdal/lib/krb5/plugin.o \ - ../heimdal/lib/krb5/principal.o \ - ../heimdal/lib/krb5/pac.o \ - ../heimdal/lib/krb5/prompter_posix.o \ - ../heimdal/lib/krb5/rd_cred.o \ - ../heimdal/lib/krb5/rd_error.o \ - ../heimdal/lib/krb5/rd_priv.o \ - ../heimdal/lib/krb5/rd_rep.o \ - ../heimdal/lib/krb5/rd_req.o \ - ../heimdal/lib/krb5/replay.o \ - ../heimdal/lib/krb5/send_to_kdc.o \ - ../heimdal/lib/krb5/set_default_realm.o \ - ../heimdal/lib/krb5/store.o \ - ../heimdal/lib/krb5/store_emem.o \ - ../heimdal/lib/krb5/store_fd.o \ - ../heimdal/lib/krb5/store_mem.o \ - ../heimdal/lib/krb5/ticket.o \ - ../heimdal/lib/krb5/time.o \ - ../heimdal/lib/krb5/transited.o \ - ../heimdal/lib/krb5/v4_glue.o \ - ../heimdal/lib/krb5/version.o \ - ../heimdal/lib/krb5/warn.o \ - ../heimdal/lib/krb5/krb5_err.o \ - ../heimdal/lib/krb5/heim_err.o \ - ../heimdal/lib/krb5/k524_err.o \ - ../heimdal/lib/krb5/krb_err.o # End SUBSYSTEM HEIMDAL_KRB5 ####################### +HEIMDAL_KRB5_OBJ_FILES = \ + ./heimdal/lib/krb5/acache.o \ + ./heimdal/lib/krb5/add_et_list.o \ + ./heimdal/lib/krb5/addr_families.o \ + ./heimdal/lib/krb5/appdefault.o \ + ./heimdal/lib/krb5/asn1_glue.o \ + ./heimdal/lib/krb5/auth_context.o \ + ./heimdal/lib/krb5/build_ap_req.o \ + ./heimdal/lib/krb5/build_auth.o \ + ./heimdal/lib/krb5/cache.o \ + ./heimdal/lib/krb5/changepw.o \ + ./heimdal/lib/krb5/codec.o \ + ./heimdal/lib/krb5/config_file.o \ + ./heimdal/lib/krb5/config_file_netinfo.o \ + ./heimdal/lib/krb5/constants.o \ + ./heimdal/lib/krb5/context.o \ + ./heimdal/lib/krb5/convert_creds.o \ + ./heimdal/lib/krb5/copy_host_realm.o \ + ./heimdal/lib/krb5/crc.o \ + ./heimdal/lib/krb5/creds.o \ + ./heimdal/lib/krb5/crypto.o \ + ./heimdal/lib/krb5/data.o \ + ./heimdal/lib/krb5/eai_to_heim_errno.o \ + ./heimdal/lib/krb5/error_string.o \ + ./heimdal/lib/krb5/expand_hostname.o \ + ./heimdal/lib/krb5/fcache.o \ + ./heimdal/lib/krb5/free.o \ + ./heimdal/lib/krb5/free_host_realm.o \ + ./heimdal/lib/krb5/generate_seq_number.o \ + ./heimdal/lib/krb5/generate_subkey.o \ + ./heimdal/lib/krb5/get_cred.o \ + ./heimdal/lib/krb5/get_default_principal.o \ + ./heimdal/lib/krb5/get_default_realm.o \ + ./heimdal/lib/krb5/get_for_creds.o \ + ./heimdal/lib/krb5/get_host_realm.o \ + ./heimdal/lib/krb5/get_in_tkt.o \ + ./heimdal/lib/krb5/get_in_tkt_with_keytab.o \ + ./heimdal/lib/krb5/get_port.o \ + ./heimdal/lib/krb5/init_creds.o \ + ./heimdal/lib/krb5/init_creds_pw.o \ + ./heimdal/lib/krb5/kcm.o \ + ./heimdal/lib/krb5/keyblock.o \ + ./heimdal/lib/krb5/keytab.o \ + ./heimdal/lib/krb5/keytab_any.o \ + ./heimdal/lib/krb5/keytab_file.o \ + ./heimdal/lib/krb5/keytab_memory.o \ + ./heimdal/lib/krb5/keytab_keyfile.o \ + ./heimdal/lib/krb5/keytab_krb4.o \ + ./heimdal/lib/krb5/krbhst.o \ + ./heimdal/lib/krb5/log.o \ + ./heimdal/lib/krb5/mcache.o \ + ./heimdal/lib/krb5/misc.o \ + ./heimdal/lib/krb5/mk_error.o \ + ./heimdal/lib/krb5/mk_priv.o \ + ./heimdal/lib/krb5/mk_rep.o \ + ./heimdal/lib/krb5/mk_req.o \ + ./heimdal/lib/krb5/mk_req_ext.o \ + ./heimdal/lib/krb5/mit_glue.o \ + ./heimdal/lib/krb5/n-fold.o \ + ./heimdal/lib/krb5/padata.o \ + ./heimdal/lib/krb5/pkinit.o \ + ./heimdal/lib/krb5/plugin.o \ + ./heimdal/lib/krb5/principal.o \ + ./heimdal/lib/krb5/pac.o \ + ./heimdal/lib/krb5/prompter_posix.o \ + ./heimdal/lib/krb5/rd_cred.o \ + ./heimdal/lib/krb5/rd_error.o \ + ./heimdal/lib/krb5/rd_priv.o \ + ./heimdal/lib/krb5/rd_rep.o \ + ./heimdal/lib/krb5/rd_req.o \ + ./heimdal/lib/krb5/replay.o \ + ./heimdal/lib/krb5/send_to_kdc.o \ + ./heimdal/lib/krb5/set_default_realm.o \ + ./heimdal/lib/krb5/store.o \ + ./heimdal/lib/krb5/store_emem.o \ + ./heimdal/lib/krb5/store_fd.o \ + ./heimdal/lib/krb5/store_mem.o \ + ./heimdal/lib/krb5/ticket.o \ + ./heimdal/lib/krb5/time.o \ + ./heimdal/lib/krb5/transited.o \ + ./heimdal/lib/krb5/v4_glue.o \ + ./heimdal/lib/krb5/version.o \ + ./heimdal/lib/krb5/warn.o \ + ./heimdal/lib/krb5/krb5_err.o \ + ./heimdal/lib/krb5/heim_err.o \ + ./heimdal/lib/krb5/k524_err.o \ + ./heimdal/lib/krb5/krb_err.o + ####################### # Start SUBSYSTEM HEIMDAL_HEIM_ASN1 [SUBSYSTEM::HEIMDAL_HEIM_ASN1] CFLAGS = -Iheimdal_build -Iheimdal/lib/asn1 -OBJ_FILES = \ - ../heimdal/lib/asn1/der_get.o \ - ../heimdal/lib/asn1/der_put.o \ - ../heimdal/lib/asn1/der_free.o \ - ../heimdal/lib/asn1/der_format.o \ - ../heimdal/lib/asn1/der_length.o \ - ../heimdal/lib/asn1/der_copy.o \ - ../heimdal/lib/asn1/der_cmp.o \ - ../heimdal/lib/asn1/extra.o \ - ../heimdal/lib/asn1/timegm.o \ - ../heimdal/lib/asn1/asn1_err.o PRIVATE_DEPENDENCIES = HEIMDAL_ROKEN HEIMDAL_COM_ERR # End SUBSYSTEM HEIMDAL_KRB5 ####################### +HEIMDAL_HEIM_ASN1_OBJ_FILES = \ + ./heimdal/lib/asn1/der_get.o \ + ./heimdal/lib/asn1/der_put.o \ + ./heimdal/lib/asn1/der_free.o \ + ./heimdal/lib/asn1/der_format.o \ + ./heimdal/lib/asn1/der_length.o \ + ./heimdal/lib/asn1/der_copy.o \ + ./heimdal/lib/asn1/der_cmp.o \ + ./heimdal/lib/asn1/extra.o \ + ./heimdal/lib/asn1/timegm.o \ + ./heimdal/lib/asn1/asn1_err.o + ####################### # Start SUBSYSTEM HEIMDAL_HCRYPTO_IMATH [SUBSYSTEM::HEIMDAL_HCRYPTO_IMATH] CFLAGS = -Iheimdal_build -Iheimdal/lib/hcrypto/imath PRIVATE_DEPENDENCIES = HEIMDAL_ROKEN -OBJ_FILES = \ - ../heimdal/lib/hcrypto/imath/imath.o \ - ../heimdal/lib/hcrypto/imath/iprime.o # End SUBSYSTEM HEIMDAL_HCRYPTO_IMATH ####################### +HEIMDAL_HCRYPTO_IMATH_OBJ_FILES = \ + ./heimdal/lib/hcrypto/imath/imath.o \ + ./heimdal/lib/hcrypto/imath/iprime.o + [SUBSYSTEM::HEIMDAL_HCRYPTO] CFLAGS = -Iheimdal_build -Iheimdal/lib/hcrypto -Iheimdal/lib PRIVATE_DEPENDENCIES = HEIMDAL_ROKEN HEIMDAL_HEIM_ASN1 HEIMDAL_HCRYPTO_IMATH HEIMDAL_RFC2459_ASN1 -OBJ_FILES = \ - ../heimdal/lib/hcrypto/aes.o \ - ../heimdal/lib/hcrypto/bn.o \ - ../heimdal/lib/hcrypto/dh.o \ - ../heimdal/lib/hcrypto/dh-imath.o \ - ../heimdal/lib/hcrypto/des.o \ - ../heimdal/lib/hcrypto/dsa.o \ - ../heimdal/lib/hcrypto/engine.o \ - ../heimdal/lib/hcrypto/md2.o \ - ../heimdal/lib/hcrypto/md4.o \ - ../heimdal/lib/hcrypto/md5.o \ - ../heimdal/lib/hcrypto/rsa.o \ - ../heimdal/lib/hcrypto/rsa-imath.o \ - ../heimdal/lib/hcrypto/rc2.o \ - ../heimdal/lib/hcrypto/rc4.o \ - ../heimdal/lib/hcrypto/rijndael-alg-fst.o \ - ../heimdal/lib/hcrypto/rnd_keys.o \ - ../heimdal/lib/hcrypto/sha.o \ - ../heimdal/lib/hcrypto/sha256.o \ - ../heimdal/lib/hcrypto/ui.o \ - ../heimdal/lib/hcrypto/evp.o \ - ../heimdal/lib/hcrypto/pkcs5.o \ - ../heimdal/lib/hcrypto/pkcs12.o \ - ../heimdal/lib/hcrypto/rand.o \ - ../heimdal/lib/hcrypto/rand-egd.o \ - ../heimdal/lib/hcrypto/rand-unix.o \ - ../heimdal/lib/hcrypto/rand-fortuna.o \ - ../heimdal/lib/hcrypto/rand-timer.o \ - ../heimdal/lib/hcrypto/hmac.o \ - ../heimdal/lib/hcrypto/camellia.o \ - ../heimdal/lib/hcrypto/camellia-ntt.o # End SUBSYSTEM HEIMDAL_HCRYPTO ####################### +HEIMDAL_HCRYPTO_OBJ_FILES = \ + ./heimdal/lib/hcrypto/aes.o \ + ./heimdal/lib/hcrypto/bn.o \ + ./heimdal/lib/hcrypto/dh.o \ + ./heimdal/lib/hcrypto/dh-imath.o \ + ./heimdal/lib/hcrypto/des.o \ + ./heimdal/lib/hcrypto/dsa.o \ + ./heimdal/lib/hcrypto/engine.o \ + ./heimdal/lib/hcrypto/md2.o \ + ./heimdal/lib/hcrypto/md4.o \ + ./heimdal/lib/hcrypto/md5.o \ + ./heimdal/lib/hcrypto/rsa.o \ + ./heimdal/lib/hcrypto/rsa-imath.o \ + ./heimdal/lib/hcrypto/rc2.o \ + ./heimdal/lib/hcrypto/rc4.o \ + ./heimdal/lib/hcrypto/rijndael-alg-fst.o \ + ./heimdal/lib/hcrypto/rnd_keys.o \ + ./heimdal/lib/hcrypto/sha.o \ + ./heimdal/lib/hcrypto/sha256.o \ + ./heimdal/lib/hcrypto/ui.o \ + ./heimdal/lib/hcrypto/evp.o \ + ./heimdal/lib/hcrypto/pkcs5.o \ + ./heimdal/lib/hcrypto/pkcs12.o \ + ./heimdal/lib/hcrypto/rand.o \ + ./heimdal/lib/hcrypto/rand-egd.o \ + ./heimdal/lib/hcrypto/rand-unix.o \ + ./heimdal/lib/hcrypto/rand-fortuna.o \ + ./heimdal/lib/hcrypto/rand-timer.o \ + ./heimdal/lib/hcrypto/hmac.o \ + ./heimdal/lib/hcrypto/camellia.o \ + ./heimdal/lib/hcrypto/camellia-ntt.o + ####################### # Start SUBSYSTEM HEIMDAL_HX509 [SUBSYSTEM::HEIMDAL_HX509] @@ -342,103 +351,78 @@ PRIVATE_DEPENDENCIES = \ HEIMDAL_PKCS9_ASN1 HEIMDAL_PKCS12_ASN1 \ HEIMDAL_PKINIT_ASN1 HEIMDAL_PKCS10_ASN1 \ HEIMDAL_WIND -OBJ_FILES = \ - ../heimdal/lib/hx509/ca.o \ - ../heimdal/lib/hx509/cert.o \ - ../heimdal/lib/hx509/cms.o \ - ../heimdal/lib/hx509/collector.o \ - ../heimdal/lib/hx509/crypto.o \ - ../heimdal/lib/hx509/error.o \ - ../heimdal/lib/hx509/env.o \ - ../heimdal/lib/hx509/file.o \ - ../heimdal/lib/hx509/keyset.o \ - ../heimdal/lib/hx509/ks_dir.o \ - ../heimdal/lib/hx509/ks_file.o \ - ../heimdal/lib/hx509/ks_keychain.o \ - ../heimdal/lib/hx509/ks_mem.o \ - ../heimdal/lib/hx509/ks_null.o \ - ../heimdal/lib/hx509/ks_p11.o \ - ../heimdal/lib/hx509/ks_p12.o \ - ../heimdal/lib/hx509/lock.o \ - ../heimdal/lib/hx509/name.o \ - ../heimdal/lib/hx509/peer.o \ - ../heimdal/lib/hx509/print.o \ - ../heimdal/lib/hx509/req.o \ - ../heimdal/lib/hx509/revoke.o \ - ../heimdal/lib/hx509/hx509_err.o # End SUBSYSTEM HEIMDAL_HX509 ####################### +HEIMDAL_HX509_OBJ_FILES = \ + ./heimdal/lib/hx509/ca.o \ + ./heimdal/lib/hx509/cert.o \ + ./heimdal/lib/hx509/cms.o \ + ./heimdal/lib/hx509/collector.o \ + ./heimdal/lib/hx509/crypto.o \ + ./heimdal/lib/hx509/error.o \ + ./heimdal/lib/hx509/env.o \ + ./heimdal/lib/hx509/file.o \ + ./heimdal/lib/hx509/keyset.o \ + ./heimdal/lib/hx509/ks_dir.o \ + ./heimdal/lib/hx509/ks_file.o \ + ./heimdal/lib/hx509/ks_keychain.o \ + ./heimdal/lib/hx509/ks_mem.o \ + ./heimdal/lib/hx509/ks_null.o \ + ./heimdal/lib/hx509/ks_p11.o \ + ./heimdal/lib/hx509/ks_p12.o \ + ./heimdal/lib/hx509/lock.o \ + ./heimdal/lib/hx509/name.o \ + ./heimdal/lib/hx509/peer.o \ + ./heimdal/lib/hx509/print.o \ + ./heimdal/lib/hx509/req.o \ + ./heimdal/lib/hx509/revoke.o \ + ./heimdal/lib/hx509/hx509_err.o + ####################### # Start SUBSYSTEM HEIMDAL_WIND [SUBSYSTEM::HEIMDAL_WIND] CFLAGS = -Iheimdal_build -Iheimdal/lib/wind PRIVATE_DEPENDENCIES = \ HEIMDAL_ROKEN HEIMDAL_COM_ERR -OBJ_FILES = \ - ../heimdal/lib/wind/wind_err.o \ - ../heimdal/lib/wind/stringprep.o \ - ../heimdal/lib/wind/errorlist.o \ - ../heimdal/lib/wind/errorlist_table.o \ - ../heimdal/lib/wind/normalize.o \ - ../heimdal/lib/wind/normalize_table.o \ - ../heimdal/lib/wind/combining.o \ - ../heimdal/lib/wind/combining_table.o \ - ../heimdal/lib/wind/utf8.o \ - ../heimdal/lib/wind/bidi.o \ - ../heimdal/lib/wind/bidi_table.o \ - ../heimdal/lib/wind/ldap.o \ - ../heimdal/lib/wind/map.o \ - ../heimdal/lib/wind/map_table.o + +HEIMDAL_WIND_OBJ_FILES = \ + ./heimdal/lib/wind/wind_err.o \ + ./heimdal/lib/wind/stringprep.o \ + ./heimdal/lib/wind/errorlist.o \ + ./heimdal/lib/wind/errorlist_table.o \ + ./heimdal/lib/wind/normalize.o \ + ./heimdal/lib/wind/normalize_table.o \ + ./heimdal/lib/wind/combining.o \ + ./heimdal/lib/wind/combining_table.o \ + ./heimdal/lib/wind/utf8.o \ + ./heimdal/lib/wind/bidi.o \ + ./heimdal/lib/wind/bidi_table.o \ + ./heimdal/lib/wind/ldap.o \ + ./heimdal/lib/wind/map.o \ + ./heimdal/lib/wind/map_table.o # End SUBSYSTEM HEIMDAL_WIND ####################### [SUBSYSTEM::HEIMDAL_ROKEN_GETPROGNAME] CFLAGS = -Iheimdal_build -Iheimdal/lib/roken -Ilib/socket_wrapper -OBJ_FILES = ../heimdal/lib/roken/getprogname.o + +HEIMDAL_ROKEN_GETPROGNAME_OBJ_FILES = ./heimdal/lib/roken/getprogname.o [SUBSYSTEM::HEIMDAL_ROKEN_CLOSEFROM] CFLAGS = -Iheimdal_build -Iheimdal/lib/roken -Ilib/socket_wrapper -OBJ_FILES = ../heimdal/lib/roken/closefrom.o + +HEIMDAL_ROKEN_CLOSEFROM_OBJ_FILES = ./heimdal/lib/roken/closefrom.o [SUBSYSTEM::HEIMDAL_ROKEN_GETPROGNAME_H] CFLAGS = -Iheimdal_build -Iheimdal/lib/roken -Ilib/socket_wrapper -OBJ_FILES = ../heimdal/lib/roken/getprogname.ho + +HEIMDAL_ROKEN_GETPROGNAME_H_OBJ_FILES = ./heimdal/lib/roken/getprogname.ho ####################### # Start SUBSYSTEM HEIMDAL_ROKEN [SUBSYSTEM::HEIMDAL_ROKEN] CFLAGS = -Iheimdal_build -Iheimdal/lib/roken -Ilib/socket_wrapper -OBJ_FILES = \ - ../heimdal/lib/roken/base64.o \ - ../heimdal/lib/roken/hex.o \ - ../heimdal/lib/roken/bswap.o \ - ../heimdal/lib/roken/dumpdata.o \ - ../heimdal/lib/roken/emalloc.o \ - ../heimdal/lib/roken/ecalloc.o \ - ../heimdal/lib/roken/get_window_size.o \ - ../heimdal/lib/roken/h_errno.o \ - ../heimdal/lib/roken/issuid.o \ - ../heimdal/lib/roken/net_read.o \ - ../heimdal/lib/roken/net_write.o \ - ../heimdal/lib/roken/socket.o \ - ../heimdal/lib/roken/parse_time.o \ - ../heimdal/lib/roken/parse_units.o \ - ../heimdal/lib/roken/resolve.o \ - ../heimdal/lib/roken/roken_gethostby.o \ - ../heimdal/lib/roken/signal.o \ - ../heimdal/lib/roken/vis.o \ - ../heimdal/lib/roken/strlwr.o \ - ../heimdal/lib/roken/strsep_copy.o \ - ../heimdal/lib/roken/strsep.o \ - ../heimdal/lib/roken/strupr.o \ - ../heimdal/lib/roken/strpool.o \ - ../heimdal/lib/roken/estrdup.o \ - ../heimdal/lib/roken/erealloc.o \ - ../heimdal/lib/roken/simple_exec.o \ - ../heimdal/lib/roken/strcollect.o \ - ../heimdal/lib/roken/rtbl.o \ - replace.o PUBLIC_DEPENDENCIES = \ HEIMDAL_ROKEN_GETPROGNAME \ HEIMDAL_ROKEN_CLOSEFROM \ @@ -447,64 +431,99 @@ PUBLIC_DEPENDENCIES = \ # End SUBSYSTEM HEIMDAL_ROKEN ####################### +HEIMDAL_ROKEN_OBJ_FILES = \ + ./heimdal/lib/roken/base64.o \ + ./heimdal/lib/roken/hex.o \ + ./heimdal/lib/roken/bswap.o \ + ./heimdal/lib/roken/dumpdata.o \ + ./heimdal/lib/roken/emalloc.o \ + ./heimdal/lib/roken/ecalloc.o \ + ./heimdal/lib/roken/get_window_size.o \ + ./heimdal/lib/roken/h_errno.o \ + ./heimdal/lib/roken/issuid.o \ + ./heimdal/lib/roken/net_read.o \ + ./heimdal/lib/roken/net_write.o \ + ./heimdal/lib/roken/socket.o \ + ./heimdal/lib/roken/parse_time.o \ + ./heimdal/lib/roken/parse_units.o \ + ./heimdal/lib/roken/resolve.o \ + ./heimdal/lib/roken/roken_gethostby.o \ + ./heimdal/lib/roken/signal.o \ + ./heimdal/lib/roken/vis.o \ + ./heimdal/lib/roken/strlwr.o \ + ./heimdal/lib/roken/strsep_copy.o \ + ./heimdal/lib/roken/strsep.o \ + ./heimdal/lib/roken/strupr.o \ + ./heimdal/lib/roken/strpool.o \ + ./heimdal/lib/roken/estrdup.o \ + ./heimdal/lib/roken/erealloc.o \ + ./heimdal/lib/roken/simple_exec.o \ + ./heimdal/lib/roken/strcollect.o \ + ./heimdal/lib/roken/rtbl.o \ + ./heimdal_build/replace.o + ####################### # Start SUBSYSTEM HEIMDAL_GLUE [SUBSYSTEM::HEIMDAL_GLUE] CFLAGS = -Iheimdal_build -Iheimdal/lib/krb5 -Iheimdal/lib/asn1 -Iheimdal/lib/com_err -OBJ_FILES = glue.o PUBLIC_DEPENDENCIES = LIBNETIF LIBSAMBA-HOSTCONFIG # End SUBSYSTEM HEIMDAL_GLUE ####################### +HEIMDAL_GLUE_OBJ_FILES = heimdal_build/glue.o + ####################### # Start SUBSYSTEM HEIMDAL_COM_ERR [SUBSYSTEM::HEIMDAL_COM_ERR] CFLAGS = -Iheimdal_build -Iheimdal/lib/com_err -OBJ_FILES = \ - ../heimdal/lib/com_err/com_err.o \ - ../heimdal/lib/com_err/error.o PRIVATE_DEPENDENCIES = HEIMDAL_ROKEN # End SUBSYSTEM HEIMDAL_COM_ERR ####################### +HEIMDAL_COM_ERR_OBJ_FILES = \ + ./heimdal/lib/com_err/com_err.o \ + ./heimdal/lib/com_err/error.o + ####################### # Start SUBSYSTEM HEIMDAL_ASN1_COMPILE_LEX [SUBSYSTEM::HEIMDAL_ASN1_COMPILE_LEX] CFLAGS = -Iheimdal_build -Iheimdal/lib/asn1 -Iheimdal/lib/roken -Ilib/socket_wrapper -OBJ_FILES = ../heimdal/lib/asn1/lex.ho # End SUBSYSTEM HEIMDAL_ASN1_COMPILE_LEX ####################### +HEIMDAL_ASN1_COMPILE_LEX_OBJ_FILES = ./heimdal/lib/asn1/lex.ho + ####################### # Start BINARY asn1_compile [BINARY::asn1_compile] CFLAGS = -Iheimdal_build -Iheimdal/lib/roken USE_HOSTCC = YES -OBJ_FILES = \ - ../heimdal/lib/asn1/main.ho \ - ../heimdal/lib/asn1/gen.ho \ - ../heimdal/lib/asn1/gen_copy.ho \ - ../heimdal/lib/asn1/gen_decode.ho \ - ../heimdal/lib/asn1/gen_encode.ho \ - ../heimdal/lib/asn1/gen_free.ho \ - ../heimdal/lib/asn1/gen_glue.ho \ - ../heimdal/lib/asn1/gen_length.ho \ - ../heimdal/lib/asn1/gen_seq.ho \ - ../heimdal/lib/asn1/hash.ho \ - ../heimdal/lib/asn1/parse.ho \ - ../heimdal/lib/roken/emalloc.ho \ - ../heimdal/lib/roken/getarg.ho \ - ../heimdal/lib/roken/setprogname.ho \ - ../heimdal/lib/roken/strupr.ho \ - ../heimdal/lib/roken/get_window_size.ho \ - ../heimdal/lib/roken/estrdup.ho \ - ../heimdal/lib/roken/ecalloc.ho \ - ../heimdal/lib/asn1/symbol.ho \ - ../heimdal/lib/vers/print_version.ho \ - ../lib/socket_wrapper/socket_wrapper.ho \ - replace.ho PRIVATE_DEPENDENCIES = HEIMDAL_ASN1_COMPILE_LEX HEIMDAL_ROKEN_GETPROGNAME_H LIBREPLACE_NETWORK +asn1_compile_OBJ_FILES = \ + ./heimdal/lib/asn1/main.ho \ + ./heimdal/lib/asn1/gen.ho \ + ./heimdal/lib/asn1/gen_copy.ho \ + ./heimdal/lib/asn1/gen_decode.ho \ + ./heimdal/lib/asn1/gen_encode.ho \ + ./heimdal/lib/asn1/gen_free.ho \ + ./heimdal/lib/asn1/gen_glue.ho \ + ./heimdal/lib/asn1/gen_length.ho \ + ./heimdal/lib/asn1/gen_seq.ho \ + ./heimdal/lib/asn1/hash.ho \ + ./heimdal/lib/asn1/parse.ho \ + ./heimdal/lib/roken/emalloc.ho \ + ./heimdal/lib/roken/getarg.ho \ + ./heimdal/lib/roken/setprogname.ho \ + ./heimdal/lib/roken/strupr.ho \ + ./heimdal/lib/roken/get_window_size.ho \ + ./heimdal/lib/roken/estrdup.ho \ + ./heimdal/lib/roken/ecalloc.ho \ + ./heimdal/lib/asn1/symbol.ho \ + ./heimdal/lib/vers/print_version.ho \ + ./lib/socket_wrapper/socket_wrapper.ho \ + ./heimdal_build/replace.ho + # End BINARY asn1_compile ####################### @@ -512,28 +531,31 @@ PRIVATE_DEPENDENCIES = HEIMDAL_ASN1_COMPILE_LEX HEIMDAL_ROKEN_GETPROGNAME_H LIBR # Start SUBSYSTEM HEIMDAL_COM_ERR_COMPILE_LEX [SUBSYSTEM::HEIMDAL_COM_ERR_COMPILE_LEX] CFLAGS = -Iheimdal_build -Iheimdal/lib/com_err -Iheimdal/lib/roken -Ilib/socket_wrapper -OBJ_FILES = ../heimdal/lib/com_err/lex.ho # End SUBSYSTEM HEIMDAL_COM_ERR_COMPILE_LEX ####################### +HEIMDAL_COM_ERR_COMPILE_LEX_OBJ_FILES = ./heimdal/lib/com_err/lex.ho + ####################### # Start BINARY compile_et [BINARY::compile_et] CFLAGS = -Iheimdal_build -Iheimdal/lib/roken USE_HOSTCC = YES -OBJ_FILES = ../heimdal/lib/vers/print_version.ho \ - ../heimdal/lib/com_err/parse.ho \ - ../heimdal/lib/com_err/compile_et.ho \ - ../heimdal/lib/roken/getarg.ho \ - ../heimdal/lib/roken/get_window_size.ho \ - ../heimdal/lib/roken/strupr.ho \ - ../heimdal/lib/roken/setprogname.ho \ - ../lib/socket_wrapper/socket_wrapper.ho \ - replace.ho PRIVATE_DEPENDENCIES = HEIMDAL_COM_ERR_COMPILE_LEX HEIMDAL_ROKEN_GETPROGNAME_H LIBREPLACE_NETWORK # End BINARY compile_et ####################### +compile_et_OBJ_FILES = ./heimdal/lib/vers/print_version.ho \ + ./heimdal/lib/com_err/parse.ho \ + ./heimdal/lib/com_err/compile_et.ho \ + ./heimdal/lib/roken/getarg.ho \ + ./heimdal/lib/roken/get_window_size.ho \ + ./heimdal/lib/roken/strupr.ho \ + ./heimdal/lib/roken/setprogname.ho \ + ./lib/socket_wrapper/socket_wrapper.ho \ + ./heimdal_build/replace.ho + + mkinclude perl_path_wrapper.sh asn1_deps.pl heimdal/lib/hdb/hdb.asn1 hdb_asn1 heimdal/lib/hdb | mkinclude perl_path_wrapper.sh asn1_deps.pl heimdal/lib/gssapi/spnego/spnego.asn1 spnego_asn1 heimdal/lib/gssapi --sequence=MechTypeList | mkinclude perl_path_wrapper.sh asn1_deps.pl heimdal/lib/gssapi/mech/gssapi.asn1 gssapi_asn1 heimdal/lib/gssapi| @@ -550,7 +572,7 @@ mkinclude perl_path_wrapper.sh asn1_deps.pl heimdal/lib/asn1/kx509.asn1 kx509_as mkinclude perl_path_wrapper.sh asn1_deps.pl heimdal/lib/hx509/pkcs10.asn1 pkcs10_asn1 heimdal/lib/hx509 --preserve-binary=CertificationRequestInfo| # -# Ensure to update ../static_deps.mk when you add a new entry here! +# Ensure to update ./static_deps.mk when you add a new entry here! # mkinclude perl_path_wrapper.sh et_deps.pl heimdal/lib/asn1/asn1_err.et heimdal/lib/asn1| mkinclude perl_path_wrapper.sh et_deps.pl heimdal/lib/hdb/hdb_err.et heimdal/lib/hdb| @@ -569,31 +591,25 @@ clean:: # Start SUBSYSTEM HEIMDAL [SUBSYSTEM::HEIMDAL] CFLAGS = -Iheimdal_build -OBJ_FILES = ../heimdal/lib/vers/print_version.o PUBLIC_DEPENDENCIES = \ HEIMDAL_GSSAPI HEIMDAL_KRB5 # End SUBSYSTEM HEIMDAL ####################### -####################### -# Start SUBSYSTEM KERBEROS_LIB -[SUBSYSTEM::KERBEROS_LIB] -#PUBLIC_DEPENDENCIES = EXT_KRB5 -PUBLIC_DEPENDENCIES = HEIMDAL -# End SUBSYSTEM KERBEROS_LIB -####################### +HEIMDAL_OBJ_FILES = ./heimdal/lib/vers/print_version.o ####################### # Start BINARY compile_et [BINARY::samba4kinit] CFLAGS = -Iheimdal_build -Iheimdal/lib/roken -OBJ_FILES = ../heimdal/kuser/kinit.o \ - ../heimdal/lib/vers/print_version.o \ - ../heimdal/lib/roken/setprogname.o \ - ../heimdal/lib/roken/getarg.o PRIVATE_DEPENDENCIES = HEIMDAL_KRB5 HEIMDAL_NTLM # End BINARY compile_et ####################### +samba4kinit_OBJ_FILES = ./heimdal/kuser/kinit.o \ + ./heimdal/lib/vers/print_version.o \ + ./heimdal/lib/roken/setprogname.o \ + ./heimdal/lib/roken/getarg.o + dist:: heimdal/lib/asn1/lex.c heimdal/lib/com_err/lex.c \ heimdal/lib/asn1/parse.c heimdal/lib/com_err/parse.c diff --git a/source4/kdc/config.mk b/source4/kdc/config.mk index 479cb36296..94ba933e57 100644 --- a/source4/kdc/config.mk +++ b/source4/kdc/config.mk @@ -5,25 +5,22 @@ [MODULE::KDC] INIT_FUNCTION = server_service_kdc_init SUBSYSTEM = service -OBJ_FILES = \ - kdc.o \ - kpasswdd.o PRIVATE_DEPENDENCIES = \ - LIBLDB KERBEROS_LIB HEIMDAL_KDC HEIMDAL_HDB SAMDB + LIBLDB HEIMDAL HEIMDAL_KDC HEIMDAL_HDB SAMDB # End SUBSYSTEM KDC ####################### +KDC_OBJ_FILES = $(addprefix kdc/, kdc.o kpasswdd.o) + ####################### # Start SUBSYSTEM KDC [SUBSYSTEM::HDB_LDB] CFLAGS = -Iheimdal/kdc -Iheimdal/lib/hdb PRIVATE_PROTO_HEADER = pac_glue.h -OBJ_FILES = \ - hdb-ldb.o \ - pac-glue.o PRIVATE_DEPENDENCIES = \ - LIBLDB auth_sam auth_sam_reply KERBEROS CREDENTIALS \ + LIBLDB auth_sam auth_sam_reply HEIMDAL CREDENTIALS \ HEIMDAL_HDB_ASN1 # End SUBSYSTEM KDC ####################### +HDB_LDB_OBJ_FILES = $(addprefix kdc/, hdb-ldb.o pac-glue.o) diff --git a/source4/ldap_server/config.mk b/source4/ldap_server/config.mk index 5f8c530db9..03cc41d69d 100644 --- a/source4/ldap_server/config.mk +++ b/source4/ldap_server/config.mk @@ -6,11 +6,6 @@ INIT_FUNCTION = server_service_ldap_init SUBSYSTEM = service PRIVATE_PROTO_HEADER = proto.h -OBJ_FILES = \ - ldap_server.o \ - ldap_backend.o \ - ldap_bind.o \ - ldap_extended.o PRIVATE_DEPENDENCIES = CREDENTIALS \ LIBCLI_LDAP SAMDB \ process_model \ @@ -18,3 +13,10 @@ PRIVATE_DEPENDENCIES = CREDENTIALS \ LIBSAMBA-HOSTCONFIG # End SUBSYSTEM SMB ####################### + +LDAP_OBJ_FILES = $(addprefix ldap_server/, \ + ldap_server.o \ + ldap_backend.o \ + ldap_bind.o \ + ldap_extended.o) + diff --git a/source4/lib/appweb/config.mk b/source4/lib/appweb/config.mk index df0f81dccb..c0bba35ba5 100644 --- a/source4/lib/appweb/config.mk +++ b/source4/lib/appweb/config.mk @@ -1,31 +1,25 @@ ####################### # Start SUBSYSTEM MPR [SUBSYSTEM::MPR] -OBJ_FILES = \ - mpr/miniMpr.o \ - mpr/var.o # End SUBSYSTEM MPR ####################### +MPR_OBJ_FILES = $(addprefix lib/appweb/mpr/, miniMpr.o var.o) ####################### # Start SUBSYSTEM EJS [SUBSYSTEM::EJS] -OBJ_FILES = \ - ejs/ejsLib.o \ - ejs/ejsLex.o \ - ejs/ejsParser.o \ - ejs/ejsProcs.o PUBLIC_DEPENDENCIES = MPR # End SUBSYSTEM EJS ####################### +EJS_OBJ_FILES = $(addprefix lib/appweb/ejs/, ejsLib.o ejsLex.o ejsParser.o ejsProcs.o) + ####################### # Start SUBSYSTEM ESP [SUBSYSTEM::ESP] -OBJ_FILES = \ - esp/esp.o \ - esp/espProcs.o PUBLIC_DEPENDENCIES = EJS # End SUBSYSTEM ESP ####################### + +ESP_OBJ_FILES = $(addprefix lib/appweb/esp/, esp.o espProcs.o) diff --git a/source4/lib/basic.mk b/source4/lib/basic.mk index d6e90928b0..a02151282c 100644 --- a/source4/lib/basic.mk +++ b/source4/lib/basic.mk @@ -19,26 +19,27 @@ mkinclude dbwrap/config.mk mkinclude crypto/config.mk [SUBSYSTEM::LIBCOMPRESSION] -OBJ_FILES = compression/mszip.o + +LIBCOMPRESSION_OBJ_FILES = lib/compression/mszip.o [SUBSYSTEM::GENCACHE] -OBJ_FILES = gencache/gencache.o PRIVATE_DEPENDENCIES = TDB_WRAP +GENCACHE_OBJ_FILES = gencache/gencache.o # PUBLIC_HEADERS += lib/gencache/gencache.h [SUBSYSTEM::LDB_WRAP] -OBJ_FILES = ldb_wrap.o PUBLIC_DEPENDENCIES = LIBLDB PRIVATE_DEPENDENCIES = LDBSAMBA UTIL_LDB - +LDB_WRAP_OBJ_FILES = lib/ldb_wrap.o PUBLIC_HEADERS += lib/ldb_wrap.h [SUBSYSTEM::TDB_WRAP] -OBJ_FILES = tdb_wrap.o PUBLIC_DEPENDENCIES = LIBTDB - +TDB_WRAP_OBJ_FILES = lib/tdb_wrap.o PUBLIC_HEADERS += lib/tdb_wrap.h + +SMBREADLINE_OBJ_LIST = $(SMBREADLINE_OBJ_FILES) diff --git a/source4/lib/charset/config.mk b/source4/lib/charset/config.mk index 2766784c52..e5e5bd4560 100644 --- a/source4/lib/charset/config.mk +++ b/source4/lib/charset/config.mk @@ -1,15 +1,12 @@ ################################################ # Start SUBSYSTEM CHARSET [SUBSYSTEM::CHARSET] -OBJ_FILES = \ - iconv.o \ - charcnv.o \ - util_unistr.o PRIVATE_PROTO_HEADER = charset_proto.h PUBLIC_DEPENDENCIES = ICONV PRIVATE_DEPENDENCIES = DYNCONFIG # End SUBSYSTEM CHARSET ################################################ +CHARSET_OBJ_FILES = $(addprefix lib/charset/, iconv.o charcnv.o util_unistr.o) PUBLIC_HEADERS += lib/charset/charset.h diff --git a/source4/lib/cmdline/config.mk b/source4/lib/cmdline/config.mk index 87014d4d53..f8a971a063 100644 --- a/source4/lib/cmdline/config.mk +++ b/source4/lib/cmdline/config.mk @@ -1,16 +1,19 @@ [SUBSYSTEM::LIBCMDLINE_CREDENTIALS] PRIVATE_PROTO_HEADER = credentials.h -OBJ_FILES = credentials.o PUBLIC_DEPENDENCIES = CREDENTIALS LIBPOPT +LIBCMDLINE_CREDENTIALS_OBJ_FILES = lib/cmdline/credentials.o + [SUBSYSTEM::POPT_SAMBA] -OBJ_FILES = popt_common.o PUBLIC_DEPENDENCIES = LIBPOPT +POPT_SAMBA_OBJ_FILES = lib/cmdline/popt_common.o + PUBLIC_HEADERS += lib/cmdline/popt_common.h [SUBSYSTEM::POPT_CREDENTIALS] PRIVATE_PROTO_HEADER = popt_credentials.h -OBJ_FILES = popt_credentials.o PUBLIC_DEPENDENCIES = CREDENTIALS LIBCMDLINE_CREDENTIALS LIBPOPT PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL + +POPT_CREDENTIALS_OBJ_FILES = lib/cmdline/popt_credentials.o diff --git a/source4/lib/crypto/config.mk b/source4/lib/crypto/config.mk index f7a8d20604..82dbe4a4cb 100644 --- a/source4/lib/crypto/config.mk +++ b/source4/lib/crypto/config.mk @@ -1,26 +1,19 @@ ############################## # Start SUBSYSTEM LIBCRYPTO [SUBSYSTEM::LIBCRYPTO] -OBJ_FILES = \ - crc32.o \ - md5.o \ - hmacmd5.o \ - md4.o \ - arcfour.o \ - sha1.o \ - hmacsha1.o # End SUBSYSTEM LIBCRYPTO ############################## +LIBCRYPTO_OBJ_FILES = $(addprefix lib/crypto/, \ + crc32.o md5.o hmacmd5.o md4.o \ + arcfour.o sha1.o hmacsha1.o) + + [MODULE::TORTURE_LIBCRYPTO] -OBJ_FILES = \ - md4test.o \ - md5test.o \ - hmacmd5test.o \ - sha1test.o \ - hmacsha1test.o SUBSYSTEM = torture PRIVATE_DEPENDENCIES = LIBCRYPTO PRIVATE_PROTO_HEADER = test_proto.h +TORTURE_LIBCRYPTO_OBJ_FILES = $(addprefix lib/crypto/, \ + md4test.o md5test.o hmacmd5test.o sha1test.o hmacsha1test.o) diff --git a/source4/lib/dbwrap/config.mk b/source4/lib/dbwrap/config.mk index 01ce4ddd8e..9038873d32 100644 --- a/source4/lib/dbwrap/config.mk +++ b/source4/lib/dbwrap/config.mk @@ -1,6 +1,6 @@ [SUBSYSTEM::LIBDBWRAP] -OBJ_FILES = dbwrap.o \ - dbwrap_tdb.o \ - dbwrap_ctdb.o PUBLIC_DEPENDENCIES = \ LIBTDB ctdb + +LIBDBWRAP_OBJ_FILES = $(addprefix lib/dbwrap/, dbwrap.o dbwrap_tdb.o dbwrap_ctdb.o) + diff --git a/source4/lib/events/config.mk b/source4/lib/events/config.mk index 225a23c634..e5a1316c47 100644 --- a/source4/lib/events/config.mk +++ b/source4/lib/events/config.mk @@ -1,43 +1,49 @@ ############################## [MODULE::EVENTS_AIO] -OBJ_FILES = events_aio.o PRIVATE_DEPENDENCIES = LIBAIO_LINUX SUBSYSTEM = LIBEVENTS INIT_FUNCTION = s4_events_aio_init ############################## +EVENTS_AIO_OBJ_FILES = lib/events/events_aio.o + ############################## [MODULE::EVENTS_EPOLL] -OBJ_FILES = events_epoll.o SUBSYSTEM = LIBEVENTS INIT_FUNCTION = s4_events_epoll_init ############################## +EVENTS_EPOLL_OBJ_FILES = lib/events/events_epoll.o + ############################## [MODULE::EVENTS_SELECT] -OBJ_FILES = events_select.o SUBSYSTEM = LIBEVENTS INIT_FUNCTION = s4_events_select_init ############################## +EVENTS_SELECT_OBJ_FILES = lib/events/events_select.o + ############################## [MODULE::EVENTS_STANDARD] -OBJ_FILES = events_standard.o SUBSYSTEM = LIBEVENTS INIT_FUNCTION = s4_events_standard_init ############################## +EVENTS_STANDARD_OBJ_FILES = lib/events/events_standard.o ############################## # Start SUBSYSTEM LIBEVENTS [SUBSYSTEM::LIBEVENTS] -OBJ_FILES = events.o events_timed.o events_signal.o PUBLIC_DEPENDENCIES = LIBTALLOC LIBSAMBA-UTIL # End SUBSYSTEM LIBEVENTS ############################## +LIBEVENTS_OBJ_FILES = $(addprefix lib/events/, events.o events_timed.o events_signal.o) + PUBLIC_HEADERS += $(addprefix lib/events/, events.h events_internal.h) [PYTHON::swig_events] SWIG_FILE = events.i PRIVATE_DEPENDENCIES = LIBEVENTS + +swig_events_OBJ_FILES = lib/events/events_wrap.o diff --git a/source4/lib/events/events.c b/source4/lib/events/events.c index 555a5092cc..568aadc31e 100644 --- a/source4/lib/events/events.c +++ b/source4/lib/events/events.c @@ -102,6 +102,10 @@ void event_set_default_backend(const char *backend) static void event_backend_init(void) { #if _SAMBA_BUILD_ + NTSTATUS s4_events_standard_init(void); + NTSTATUS s4_events_select_init(void); + NTSTATUS s4_events_epoll_init(void); + NTSTATUS s4_events_aio_init(void); init_module_fn static_init[] = { STATIC_LIBEVENTS_MODULES }; if (event_backends) return; run_init_functions(static_init); diff --git a/source4/lib/ldb-samba/config.mk b/source4/lib/ldb-samba/config.mk index fa3ac46021..6a0b842fff 100644 --- a/source4/lib/ldb-samba/config.mk +++ b/source4/lib/ldb-samba/config.mk @@ -4,9 +4,8 @@ PUBLIC_DEPENDENCIES = LIBLDB PRIVATE_PROTO_HEADER = ldif_handlers.h PRIVATE_DEPENDENCIES = LIBSECURITY SAMDB_SCHEMA LIBNDR NDR_MISC -OBJ_FILES = \ - ldif_handlers.o # End SUBSYSTEM LDBSAMBA ################################################ +LDBSAMBA_OBJ_FILES = lib/ldb-samba/ldif_handlers.o diff --git a/source4/lib/ldb/common/ldb_modules.c b/source4/lib/ldb/common/ldb_modules.c index 34e0afbf93..eece9af5f7 100644 --- a/source4/lib/ldb/common/ldb_modules.c +++ b/source4/lib/ldb/common/ldb_modules.c @@ -126,14 +126,16 @@ static struct ops_list_entry { struct ops_list_entry *next; } *registered_modules = NULL; +#define LDB_MODULE(name) (&ldb_ ## name ## _module_ops) + #ifndef STATIC_LIBLDB_MODULES #define STATIC_LIBLDB_MODULES \ - &ldb_operational_module_ops, \ - &ldb_rdn_name_module_ops, \ - &ldb_paged_results_module_ops, \ - &ldb_server_sort_module_ops, \ - &ldb_asq_module_ops, \ + LDB_MODULE(operational), \ + LDB_MODULE(rdn_name), \ + LDB_MODULE(paged_results), \ + LDB_MODULE(server_sort), \ + LDB_MODULE(asq), \ NULL #endif diff --git a/source4/lib/ldb/config.mk b/source4/lib/ldb/config.mk index 81fd1e9b95..25219eb8b0 100644 --- a/source4/lib/ldb/config.mk +++ b/source4/lib/ldb/config.mk @@ -5,8 +5,8 @@ PRIVATE_DEPENDENCIES = LIBTALLOC CFLAGS = -Ilib/ldb/include INIT_FUNCTION = &ldb_asq_module_ops SUBSYSTEM = LIBLDB -OBJ_FILES = \ - modules/asq.o + +ldb_asq_OBJ_FILES = lib/ldb/modules/asq.o # End MODULE ldb_asq ################################################ @@ -17,10 +17,10 @@ PRIVATE_DEPENDENCIES = LIBTALLOC CFLAGS = -Ilib/ldb/include INIT_FUNCTION = &ldb_server_sort_module_ops SUBSYSTEM = LIBLDB -OBJ_FILES = \ - modules/sort.o + # End MODULE ldb_sort ################################################ +ldb_server_sort_OBJ_FILES = lib/ldb/modules/sort.o ################################################ # Start MODULE ldb_paged_results @@ -29,11 +29,11 @@ INIT_FUNCTION = &ldb_paged_results_module_ops CFLAGS = -Ilib/ldb/include PRIVATE_DEPENDENCIES = LIBTALLOC SUBSYSTEM = LIBLDB -OBJ_FILES = \ - modules/paged_results.o # End MODULE ldb_paged_results ################################################ +ldb_paged_results_OBJ_FILES = lib/ldb/modules/paged_results.o + ################################################ # Start MODULE ldb_paged_results [MODULE::ldb_paged_searches] @@ -41,11 +41,11 @@ INIT_FUNCTION = &ldb_paged_searches_module_ops CFLAGS = -Ilib/ldb/include PRIVATE_DEPENDENCIES = LIBTALLOC SUBSYSTEM = LIBLDB -OBJ_FILES = \ - modules/paged_searches.o # End MODULE ldb_paged_results ################################################ +ldb_paged_searches_OBJ_FILES = lib/ldb/modules/paged_searches.o + ################################################ # Start MODULE ldb_operational [MODULE::ldb_operational] @@ -53,11 +53,11 @@ SUBSYSTEM = LIBLDB CFLAGS = -Ilib/ldb/include PRIVATE_DEPENDENCIES = LIBTALLOC INIT_FUNCTION = &ldb_operational_module_ops -OBJ_FILES = \ - modules/operational.o # End MODULE ldb_operational ################################################ +ldb_operational_OBJ_FILES = lib/ldb/modules/operational.o + ################################################ # Start MODULE ldb_rdn_name [MODULE::ldb_rdn_name] @@ -65,23 +65,21 @@ SUBSYSTEM = LIBLDB CFLAGS = -Ilib/ldb/include PRIVATE_DEPENDENCIES = LIBTALLOC INIT_FUNCTION = &ldb_rdn_name_module_ops -OBJ_FILES = \ - modules/rdn_name.o # End MODULE ldb_rdn_name ################################################ +ldb_rdn_name_OBJ_FILES = lib/ldb/modules/rdn_name.o + ################################################ # Start MODULE ldb_map [SUBSYSTEM::ldb_map] PRIVATE_DEPENDENCIES = LIBTALLOC CFLAGS = -Ilib/ldb/include -Ilib/ldb/ldb_map -OBJ_FILES = \ - ldb_map/ldb_map_inbound.o \ - ldb_map/ldb_map_outbound.o \ - ldb_map/ldb_map.o # End MODULE ldb_map ################################################ +ldb_map_OBJ_FILES = $(addprefix lib/ldb/ldb_map/, ldb_map_inbound.o ldb_map_outbound.o ldb_map.o) + ################################################ # Start MODULE ldb_skel [MODULE::ldb_skel] @@ -89,68 +87,55 @@ SUBSYSTEM = LIBLDB CFLAGS = -Ilib/ldb/include PRIVATE_DEPENDENCIES = LIBTALLOC INIT_FUNCTION = &ldb_skel_module_ops -OBJ_FILES = modules/skel.o # End MODULE ldb_skel ################################################ +ldb_skel_OBJ_FILES = lib/ldb/modules/skel.o + ################################################ # Start MODULE ldb_sqlite3 [MODULE::ldb_sqlite3] SUBSYSTEM = LIBLDB CFLAGS = -Ilib/ldb/include PRIVATE_DEPENDENCIES = LIBTALLOC SQLITE3 LIBTALLOC -OBJ_FILES = \ - ldb_sqlite3/ldb_sqlite3.o # End MODULE ldb_sqlite3 ################################################ +ldb_sqlite3_OBJ_FILES = lib/ldb/ldb_sqlite3/ldb_sqlite3.o + ################################################ # Start MODULE ldb_tdb [MODULE::ldb_tdb] SUBSYSTEM = LIBLDB CFLAGS = -Ilib/ldb/include -Ilib/ldb/ldb_tdb -OBJ_FILES = \ - ldb_tdb/ldb_tdb.o \ - ldb_tdb/ldb_search.o \ - ldb_tdb/ldb_pack.o \ - ldb_tdb/ldb_index.o \ - ldb_tdb/ldb_cache.o \ - ldb_tdb/ldb_tdb_wrap.o PRIVATE_DEPENDENCIES = \ LIBTDB LIBTALLOC # End MODULE ldb_tdb ################################################ +ldb_tdb_OBJ_FILES = $(addprefix lib/ldb/ldb_tdb/, ldb_tdb.o ldb_search.o ldb_pack.o ldb_index.o ldb_cache.o ldb_tdb_wrap.o) + + ################################################ # Start SUBSYSTEM ldb [LIBRARY::LIBLDB] -VERSION = 0.0.1 -SO_VERSION = 0 CFLAGS = -Ilib/ldb/include -PC_FILE = ldb.pc INIT_FUNCTION_TYPE = extern const struct ldb_module_ops -OBJ_FILES = \ - common/ldb.o \ - common/ldb_ldif.o \ - common/ldb_parse.o \ - common/ldb_msg.o \ - common/ldb_utf8.o \ - common/ldb_debug.o \ - common/ldb_modules.o \ - common/ldb_match.o \ - common/ldb_attributes.o \ - common/attrib_handlers.o \ - common/ldb_dn.o \ - common/ldb_controls.o \ - common/qsort.o PUBLIC_DEPENDENCIES = \ LIBTALLOC PRIVATE_DEPENDENCIES = \ SOCKET_WRAPPER + +PC_FILES += $(ldbdir)/ldb.pc # # End SUBSYSTEM ldb ################################################ +LIBLDB_VERSION = 0.0.1 +LIBLDB_SOVERSION = 0 + +LIBLDB_OBJ_FILES = $(addprefix lib/ldb/common/, ldb.o ldb_ldif.o ldb_parse.o ldb_msg.o ldb_utf8.o ldb_debug.o ldb_modules.o ldb_match.o ldb_attributes.o attrib_handlers.o ldb_dn.o ldb_controls.o qsort.o) + PUBLIC_HEADERS += $(ldbdir)/include/ldb.h $(ldbdir)/include/ldb_errors.h MANPAGES += $(ldbdir)/man/ldb.3 @@ -158,39 +143,38 @@ MANPAGES += $(ldbdir)/man/ldb.3 ################################################ # Start BINARY ldbtest [BINARY::ldbtest] -OBJ_FILES= \ - tools/ldbtest.o PRIVATE_DEPENDENCIES = \ LIBLDB_CMDLINE # End BINARY ldbtest ################################################ +ldbtest_OBJ_FILES = lib/ldb/tools/ldbtest.o + ################################################ # Start BINARY oLschema2ldif [BINARY::oLschema2ldif] INSTALLDIR = BINDIR -OBJ_FILES= \ - tools/convert.o \ - tools/oLschema2ldif.o PRIVATE_DEPENDENCIES = \ LIBLDB_CMDLINE # End BINARY oLschema2ldif ################################################ + +oLschema2ldif_OBJ_FILES = $(addprefix lib/ldb/tools/, convert.o oLschema2ldif.o) + MANPAGES += $(ldbdir)/man/oLschema2ldif.1 ################################################ # Start BINARY ad2oLschema [BINARY::ad2oLschema] INSTALLDIR = BINDIR -OBJ_FILES= \ - tools/convert.o \ - tools/ad2oLschema.o PRIVATE_DEPENDENCIES = \ LIBLDB_CMDLINE # End BINARY ad2oLschema ################################################ +ad2oLschema_OBJ_FILES = $(addprefix lib/ldb/tools/, convert.o ad2oLschema.o) + MANPAGES += $(ldbdir)/man/ad2oLschema.1 mkinclude tools/config.mk diff --git a/source4/lib/ldb/include/ldb_private.h b/source4/lib/ldb/include/ldb_private.h index 0ffba9d99b..ea8533bc38 100644 --- a/source4/lib/ldb/include/ldb_private.h +++ b/source4/lib/ldb/include/ldb_private.h @@ -188,8 +188,14 @@ extern const struct ldb_module_ops ldb_asq_module_ops; extern const struct ldb_module_ops ldb_server_sort_module_ops; extern const struct ldb_module_ops ldb_ldap_module_ops; extern const struct ldb_module_ops ldb_ildap_module_ops; +extern const struct ldb_module_ops ldb_paged_searches_module_ops; extern const struct ldb_module_ops ldb_tdb_module_ops; +extern const struct ldb_module_ops ldb_skel_module_ops; +extern const struct ldb_module_ops ldb_subtree_rename_module_ops; +extern const struct ldb_module_ops ldb_subtree_delete_module_ops; extern const struct ldb_module_ops ldb_sqlite3_module_ops; +extern const struct ldb_module_ops ldb_wins_ldb_module_ops; +extern const struct ldb_module_ops ldb_ranged_results_module_ops; extern const struct ldb_backend_ops ldb_tdb_backend_ops; extern const struct ldb_backend_ops ldb_sqlite3_backend_ops; diff --git a/source4/lib/ldb/ldb_ildap/config.mk b/source4/lib/ldb/ldb_ildap/config.mk index 3062dc886f..1b534645b6 100644 --- a/source4/lib/ldb/ldb_ildap/config.mk +++ b/source4/lib/ldb/ldb_ildap/config.mk @@ -6,9 +6,8 @@ CFLAGS = -Ilib/ldb/include OUTPUT_TYPE = SHARED_LIBRARY PRIVATE_DEPENDENCIES = LIBTALLOC LIBCLI_LDAP CREDENTIALS ALIASES = ldapi ldaps ldap -OBJ_FILES = \ - ldb_ildap.o # End MODULE ldb_ildap ################################################ +ldb_ildap_OBJ_FILES = lib/ldb/ldb_ildap/ldb_ildap.o diff --git a/source4/lib/ldb/python.mk b/source4/lib/ldb/python.mk index bbd4c1c5eb..448cc3ed60 100644 --- a/source4/lib/ldb/python.mk +++ b/source4/lib/ldb/python.mk @@ -2,3 +2,5 @@ PUBLIC_DEPENDENCIES = LIBLDB CFLAGS = -Ilib/ldb/include SWIG_FILE = ldb.i + +swig_ldb_OBJ_FILES = lib/ldb/ldb_wrap.o diff --git a/source4/lib/ldb/tools/config.mk b/source4/lib/ldb/tools/config.mk index 02ad84ae25..6729636434 100644 --- a/source4/lib/ldb/tools/config.mk +++ b/source4/lib/ldb/tools/config.mk @@ -2,89 +2,89 @@ # Start SUBSYSTEM LIBLDB_CMDLINE [SUBSYSTEM::LIBLDB_CMDLINE] CFLAGS = -Ilib/ldb -Ilib/ldb/include -OBJ_FILES= \ - cmdline.o PUBLIC_DEPENDENCIES = LIBLDB LIBPOPT PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL POPT_SAMBA POPT_CREDENTIALS gensec # End SUBSYSTEM LIBLDB_CMDLINE ################################################ +LIBLDB_CMDLINE_OBJ_FILES = lib/ldb/tools/cmdline.o + ################################################ # Start BINARY ldbadd [BINARY::ldbadd] INSTALLDIR = BINDIR -OBJ_FILES = \ - ldbadd.o PRIVATE_DEPENDENCIES = \ LIBLDB_CMDLINE LIBCLI_RESOLVE # End BINARY ldbadd ################################################ + +ldbadd_OBJ_FILES = lib/ldb/tools/ldbadd.o + MANPAGES += $(ldbdir)/man/ldbadd.1 ################################################ # Start BINARY ldbdel [BINARY::ldbdel] INSTALLDIR = BINDIR -OBJ_FILES= \ - ldbdel.o PRIVATE_DEPENDENCIES = \ LIBLDB_CMDLINE # End BINARY ldbdel ################################################ +ldbdel_OBJ_FILES = lib/ldb/tools/ldbdel.o + MANPAGES += $(ldbdir)/man/ldbdel.1 ################################################ # Start BINARY ldbmodify [BINARY::ldbmodify] INSTALLDIR = BINDIR -OBJ_FILES= \ - ldbmodify.o PRIVATE_DEPENDENCIES = \ LIBLDB_CMDLINE # End BINARY ldbmodify ################################################ +ldbmodify_OBJ_FILES = lib/ldb/tools/ldbmodify.o MANPAGES += $(ldbdir)/man/ldbmodify.1 ################################################ # Start BINARY ldbsearch [BINARY::ldbsearch] INSTALLDIR = BINDIR -OBJ_FILES= \ - ldbsearch.o PRIVATE_DEPENDENCIES = \ LIBLDB_CMDLINE # End BINARY ldbsearch ################################################ +ldbsearch_OBJ_FILES = lib/ldb/tools/ldbsearch.o + MANPAGES += $(ldbdir)/man/ldbsearch.1 ################################################ # Start BINARY ldbedit [BINARY::ldbedit] INSTALLDIR = BINDIR -OBJ_FILES= \ - ldbedit.o PRIVATE_DEPENDENCIES = \ LIBLDB_CMDLINE # End BINARY ldbedit ################################################ +ldbedit_OBJ_FILES = lib/ldb/tools/ldbedit.o + MANPAGES += $(ldbdir)/man/ldbedit.1 ################################################ # Start BINARY ldbrename [BINARY::ldbrename] INSTALLDIR = BINDIR -OBJ_FILES= \ - ldbrename.o PRIVATE_DEPENDENCIES = \ LIBLDB_CMDLINE # End BINARY ldbrename ################################################ +ldbrename_OBJ_FILES = lib/ldb/tools/ldbrename.o + MANPAGES += $(ldbdir)/man/ldbrename.1 diff --git a/source4/lib/messaging/config.mk b/source4/lib/messaging/config.mk index 3fec9c0c90..0a0097bdf3 100644 --- a/source4/lib/messaging/config.mk +++ b/source4/lib/messaging/config.mk @@ -2,8 +2,6 @@ ################################################ # Start SUBSYSTEM MESSAGING [SUBSYSTEM::MESSAGING] -OBJ_FILES = \ - messaging.o PUBLIC_DEPENDENCIES = \ LIBSAMBA-UTIL \ TDB_WRAP \ @@ -14,3 +12,6 @@ PUBLIC_DEPENDENCIES = \ LIBNDR # End SUBSYSTEM MESSAGING ################################################ + + +MESSAGING_OBJ_FILES = lib/messaging/messaging.o diff --git a/source4/lib/nss_wrapper/config.mk b/source4/lib/nss_wrapper/config.mk index 03c10acc7a..5f136a465d 100644 --- a/source4/lib/nss_wrapper/config.mk +++ b/source4/lib/nss_wrapper/config.mk @@ -1,6 +1,7 @@ ############################## # Start SUBSYSTEM NSS_WRAPPER [SUBSYSTEM::NSS_WRAPPER] -OBJ_FILES = nss_wrapper.o # End SUBSYSTEM NSS_WRAPPER ############################## + +NSS_WRAPPER_OBJ_FILES = lib/nss_wrapper/nss_wrapper.o diff --git a/source4/lib/policy/config.mk b/source4/lib/policy/config.mk index 6763884b48..9a8e60bfbe 100644 --- a/source4/lib/policy/config.mk +++ b/source4/lib/policy/config.mk @@ -1,12 +1,14 @@ [SUBSYSTEM::LIBPOLICY] CFLAGS = -Iheimdal/lib/roken -OBJ_FILES = lex.o parse_adm.o PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL LIBSAMBA-HOSTCONFIG LIBTALLOC CHARSET +LIBPOLICY_OBJ_FILES = lib/policy/lex.o lib/policy/parse_adm.o + lib/policy/lex.l: lib/policy/parse_adm.h lib/policy/parse_adm.h: lib/policy/parse_adm.c [BINARY::dumpadm] -OBJ_FILES = dumpadm.o PRIVATE_DEPENDENCIES = LIBPOLICY LIBPOPT LIBSAMBA-HOSTCONFIG LIBTALLOC LIBSAMBA-UTIL CHARSET + +dumpadm_OBJ_FILES = lib/policy/dumpadm.o diff --git a/source4/lib/popt/config.mk b/source4/lib/popt/config.mk index ad218517b3..86d440ac78 100644 --- a/source4/lib/popt/config.mk +++ b/source4/lib/popt/config.mk @@ -1,7 +1,5 @@ [SUBSYSTEM::LIBPOPT] -OBJ_FILES = findme.o \ - popt.o \ - poptconfig.o \ - popthelp.o \ - poptparse.o CFLAGS = -Ilib/popt + +LIBPOPT_OBJ_FILES = $(addprefix lib/popt/, findme.o popt.o poptconfig.o popthelp.o poptparse.o) + diff --git a/source4/lib/registry/config.mk b/source4/lib/registry/config.mk index 77b4ece552..ce19d8512e 100644 --- a/source4/lib/registry/config.mk +++ b/source4/lib/registry/config.mk @@ -1,6 +1,7 @@ [SUBSYSTEM::TDR_REGF] PUBLIC_DEPENDENCIES = TDR -OBJ_FILES = tdr_regf.o + +TDR_REGF_OBJ_FILES = lib/registry/tdr_regf.o # Special support for external builddirs lib/registry/regf.c: lib/registry/tdr_regf.c @@ -17,96 +18,92 @@ clean:: ################################################ # Start SUBSYSTEM registry [LIBRARY::registry] -VERSION = 0.0.1 -PC_FILE = registry.pc -SO_VERSION = 0 -OBJ_FILES = \ - interface.o \ - util.o \ - samba.o \ - patchfile_dotreg.o \ - patchfile_preg.o \ - patchfile.o \ - regf.o \ - hive.o \ - local.o \ - ldb.o \ - dir.o \ - rpc.o PUBLIC_DEPENDENCIES = \ LIBSAMBA-UTIL CHARSET TDR_REGF LIBLDB \ RPC_NDR_WINREG LDB_WRAP # End MODULE registry_ldb ################################################ +PC_FILES += lib/registry/registry.pc + +registry_VERSION = 0.0.1 +registry_SOVERSION = 0 + +registry_OBJ_FILES = $(addprefix lib/registry/, interface.o util.o samba.o \ + patchfile_dotreg.o patchfile_preg.o patchfile.o regf.o \ + hive.o local.o ldb.o dir.o rpc.o) + PUBLIC_HEADERS += lib/registry/registry.h [SUBSYSTEM::registry_common] PUBLIC_DEPENDENCIES = registry -OBJ_FILES = tools/common.o PRIVATE_PROTO_HEADER = tools/common.h +registry_common_OBJ_FILES = lib/registry/tools/common.o + ################################################ # Start BINARY regdiff [BINARY::regdiff] INSTALLDIR = BINDIR -OBJ_FILES = tools/regdiff.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG registry LIBPOPT POPT_SAMBA POPT_CREDENTIALS # End BINARY regdiff ################################################ +regdiff_OBJ_FILES = lib/registry/tools/regdiff.o + MANPAGES += lib/registry/man/regdiff.1 ################################################ # Start BINARY regpatch [BINARY::regpatch] INSTALLDIR = BINDIR -OBJ_FILES = tools/regpatch.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG registry LIBPOPT POPT_SAMBA POPT_CREDENTIALS \ registry_common # End BINARY regpatch ################################################ +regpatch_OBJ_FILES = lib/registry/tools/regpatch.o + MANPAGES += lib/registry/man/regpatch.1 ################################################ # Start BINARY regshell [BINARY::regshell] INSTALLDIR = BINDIR -OBJ_FILES = tools/regshell.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG LIBPOPT registry POPT_SAMBA POPT_CREDENTIALS \ SMBREADLINE registry_common # End BINARY regshell ################################################ +regshell_OBJ_FILES = lib/registry/tools/regshell.o + MANPAGES += lib/registry/man/regshell.1 ################################################ # Start BINARY regtree [BINARY::regtree] INSTALLDIR = BINDIR -OBJ_FILES = tools/regtree.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG LIBPOPT registry POPT_SAMBA POPT_CREDENTIALS \ registry_common # End BINARY regtree ################################################ +regtree_OBJ_FILES = lib/registry/tools/regtree.o + MANPAGES += lib/registry/man/regtree.1 [SUBSYSTEM::torture_registry] PRIVATE_DEPENDENCIES = registry PRIVATE_PROTO_HEADER = tests/proto.h -OBJ_FILES = \ - tests/generic.o \ - tests/hive.o \ - tests/diff.o \ - tests/registry.o + +torture_registry_OBJ_FILES = $(addprefix lib/registry/tests/, generic.o hive.o diff.o registry.o) [PYTHON::swig_registry] PUBLIC_DEPENDENCIES = registry SWIG_FILE = registry.i +swig_registry_OBJ_FILES = lib/registry/registry_wrap.o diff --git a/source4/lib/samba3/config.mk b/source4/lib/samba3/config.mk index 2d129c5f8c..d33b38cab0 100644 --- a/source4/lib/samba3/config.mk +++ b/source4/lib/samba3/config.mk @@ -2,7 +2,8 @@ # Start SUBSYSTEM LIBSAMBA3 [SUBSYSTEM::SMBPASSWD] PRIVATE_PROTO_HEADER = samba3_smbpasswd_proto.h -OBJ_FILES = smbpasswd.o PRIVATE_DEPENDENCIES = CHARSET LIBSAMBA-UTIL # End SUBSYSTEM LIBSAMBA3 ################################################ + +SMBPASSWD_OBJ_FILES = lib/samba3/smbpasswd.o diff --git a/source4/lib/socket/config.mk b/source4/lib/socket/config.mk index 777882f6e0..2400190175 100644 --- a/source4/lib/socket/config.mk +++ b/source4/lib/socket/config.mk @@ -2,44 +2,41 @@ # Start SUBSYSTEM LIBNETIF [SUBSYSTEM::LIBNETIF] PRIVATE_PROTO_HEADER = netif_proto.h -OBJ_FILES = \ - interface.o \ - netif.o PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL LIBREPLACE_NETWORK # End SUBSYSTEM LIBNETIF ############################## +LIBNETIF_OBJ_FILES = $(addprefix lib/socket/, interface.o netif.o) + ################################################ # Start MODULE socket_ip [MODULE::socket_ip] SUBSYSTEM = samba-socket OUTPUT_TYPE = MERGED_OBJ -OBJ_FILES = \ - socket_ip.o PRIVATE_DEPENDENCIES = LIBSAMBA-ERRORS LIBREPLACE_NETWORK # End MODULE socket_ip ################################################ +socket_ip_OBJ_FILES = lib/socket/socket_ip.o + ################################################ # Start MODULE socket_unix [MODULE::socket_unix] SUBSYSTEM = samba-socket OUTPUT_TYPE = MERGED_OBJ -OBJ_FILES = \ - socket_unix.o PRIVATE_DEPENDENCIES = LIBREPLACE_NETWORK # End MODULE socket_unix ################################################ +socket_unix_OBJ_FILES = lib/socket/socket_unix.o + ################################################ # Start SUBSYSTEM SOCKET [SUBSYSTEM::samba-socket] -OBJ_FILES = \ - socket.o \ - access.o \ - connect_multi.o \ - connect.o PUBLIC_DEPENDENCIES = LIBTALLOC PRIVATE_DEPENDENCIES = SOCKET_WRAPPER LIBCLI_COMPOSITE LIBCLI_RESOLVE # End SUBSYSTEM SOCKET ################################################ + +samba-socket_OBJ_FILES = $(addprefix lib/socket/, socket.o access.o connect_multi.o connect.o) + diff --git a/source4/lib/socket_wrapper/config.mk b/source4/lib/socket_wrapper/config.mk index 902692d9be..2067d988cb 100644 --- a/source4/lib/socket_wrapper/config.mk +++ b/source4/lib/socket_wrapper/config.mk @@ -1,7 +1,8 @@ ############################## # Start SUBSYSTEM SOCKET_WRAPPER [SUBSYSTEM::SOCKET_WRAPPER] -OBJ_FILES = socket_wrapper.o PRIVATE_DEPENDENCIES = LIBREPLACE_NETWORK # End SUBSYSTEM SOCKET_WRAPPER ############################## + +SOCKET_WRAPPER_OBJ_FILES = lib/socket_wrapper/socket_wrapper.o diff --git a/source4/lib/stream/config.mk b/source4/lib/stream/config.mk index 39e7bc739d..52c8525483 100644 --- a/source4/lib/stream/config.mk +++ b/source4/lib/stream/config.mk @@ -1,8 +1,4 @@ - -################################################ -# Start SUBSYSTEM LIBPACKET [SUBSYSTEM::LIBPACKET] -OBJ_FILES = packet.o PRIVATE_DEPENDENCIES = LIBTLS -# End SUBSYSTEM LIBPACKET -################################################ + +LIBPACKET_OBJ_FILES = lib/stream/packet.o diff --git a/source4/lib/talloc/config.mk b/source4/lib/talloc/config.mk index 42f8b38815..84848ae77a 100644 --- a/source4/lib/talloc/config.mk +++ b/source4/lib/talloc/config.mk @@ -1,4 +1,7 @@ [LIBRARY::LIBTALLOC] OUTPUT_TYPE = STATIC_LIBRARY -OBJ_FILES = talloc.o CFLAGS = -Ilib/talloc + +LIBTALLOC_OBJ_FILES = lib/talloc/talloc.o + +MANPAGES += $(tallocdir)/talloc.3 diff --git a/source4/lib/tdb/config.mk b/source4/lib/tdb/config.mk index 76342dc8fa..b9a8f80dda 100644 --- a/source4/lib/tdb/config.mk +++ b/source4/lib/tdb/config.mk @@ -2,55 +2,56 @@ # Start SUBSYSTEM LIBTDB [LIBRARY::LIBTDB] OUTPUT_TYPE = STATIC_LIBRARY -OBJ_FILES = \ - common/tdb.o common/dump.o common/io.o common/lock.o \ - common/open.o common/traverse.o common/freelist.o \ - common/error.o common/transaction.o CFLAGS = -Ilib/tdb/include # # End SUBSYSTEM ldb ################################################ +LIBTDB_OBJ_FILES = $(addprefix lib/tdb/common/, \ + tdb.o dump.o io.o lock.o \ + open.o traverse.o freelist.o \ + error.o transaction.o) + ################################################ # Start BINARY tdbtool [BINARY::tdbtool] INSTALLDIR = BINDIR -OBJ_FILES= \ - tools/tdbtool.o PRIVATE_DEPENDENCIES = \ LIBTDB # End BINARY tdbtool ################################################ +tdbtool_OBJ_FILES = lib/tdb/tools/tdbtool.o + ################################################ # Start BINARY tdbtorture [BINARY::tdbtorture] INSTALLDIR = BINDIR -OBJ_FILES= \ - tools/tdbtorture.o PRIVATE_DEPENDENCIES = \ LIBTDB # End BINARY tdbtorture ################################################ +tdbtorture_OBJ_FILES = lib/tdb/tools/tdbtorture.o + ################################################ # Start BINARY tdbdump [BINARY::tdbdump] INSTALLDIR = BINDIR -OBJ_FILES= \ - tools/tdbdump.o PRIVATE_DEPENDENCIES = \ LIBTDB # End BINARY tdbdump ################################################ +tdbdump_OBJ_FILES = lib/tdb/tools/tdbdump.o + ################################################ # Start BINARY tdbbackup [BINARY::tdbbackup] INSTALLDIR = BINDIR -OBJ_FILES= \ - tools/tdbbackup.o PRIVATE_DEPENDENCIES = \ LIBTDB # End BINARY tdbbackup ################################################ + +tdbbackup_OBJ_FILES = lib/tdb/tools/tdbbackup.o diff --git a/source4/lib/tdb/python.mk b/source4/lib/tdb/python.mk index 23b01c120c..2d61545b7f 100644 --- a/source4/lib/tdb/python.mk +++ b/source4/lib/tdb/python.mk @@ -1,3 +1,5 @@ [PYTHON::swig_tdb] SWIG_FILE = tdb.i PUBLIC_DEPENDENCIES = LIBTDB DYNCONFIG + +swig_tdb_OBJ_FILES = lib/tdb/tdb_wrap.o diff --git a/source4/lib/tdr/config.mk b/source4/lib/tdr/config.mk index eb3cde9bdf..3e05f6c30c 100644 --- a/source4/lib/tdr/config.mk +++ b/source4/lib/tdr/config.mk @@ -2,6 +2,7 @@ CFLAGS = -Ilib/tdr PRIVATE_PROTO_HEADER = tdr_proto.h PUBLIC_DEPENDENCIES = LIBTALLOC LIBSAMBA-UTIL -OBJ_FILES = tdr.o + +TDR_OBJ_FILES = lib/tdr/tdr.o PUBLIC_HEADERS += lib/tdr/tdr.h diff --git a/source4/lib/tls/config.mk b/source4/lib/tls/config.mk index 8e8330f709..e2d7cd517a 100644 --- a/source4/lib/tls/config.mk +++ b/source4/lib/tls/config.mk @@ -1,11 +1,5 @@ -################################################ -# Start SUBSYSTEM LIBTLS [SUBSYSTEM::LIBTLS] -OBJ_FILES = \ - tls.o \ - tlscert.o PUBLIC_DEPENDENCIES = \ LIBTALLOC GNUTLS LIBSAMBA-HOSTCONFIG samba-socket -# -# End SUBSYSTEM LIBTLS -################################################ + +LIBTLS_OBJ_FILES = lib/tls/tls.o lib/tls/tlscert.o diff --git a/source4/lib/util/config.mk b/source4/lib/util/config.mk index 0bf0692193..5a4b831ed5 100644 --- a/source4/lib/util/config.mk +++ b/source4/lib/util/config.mk @@ -1,7 +1,11 @@ [SUBSYSTEM::LIBSAMBA-UTIL] -#VERSION = 0.0.1 -#SO_VERSION = 0 -OBJ_FILES = xfile.o \ +PUBLIC_DEPENDENCIES = \ + LIBTALLOC LIBCRYPTO \ + SOCKET_WRAPPER LIBREPLACE_NETWORK \ + CHARSET EXECINFO + +LIBSAMBA-UTIL_OBJ_FILES = $(addprefix lib/util/, \ + xfile.o \ debug.o \ fault.o \ signal.o \ @@ -19,11 +23,7 @@ OBJ_FILES = xfile.o \ mutex.o \ idtree.o \ become_daemon.o \ - params.o -PUBLIC_DEPENDENCIES = \ - LIBTALLOC LIBCRYPTO \ - SOCKET_WRAPPER LIBREPLACE_NETWORK \ - CHARSET EXECINFO + params.o) PUBLIC_HEADERS += $(addprefix lib/util/, util.h \ attr.h \ @@ -38,31 +38,31 @@ PUBLIC_HEADERS += $(addprefix lib/util/, util.h \ [SUBSYSTEM::ASN1_UTIL] PRIVATE_PROTO_HEADER = asn1_proto.h -OBJ_FILES = asn1.o -# PUBLIC_HEADERS += lib/util/asn1.h +ASN1_UTIL_OBJ_FILES = lib/util/asn1.o [SUBSYSTEM::UNIX_PRIVS] PRIVATE_PROTO_HEADER = unix_privs.h -OBJ_FILES = unix_privs.o + +UNIX_PRIVS_OBJ_FILES = lib/util/unix_privs.o ################################################ # Start SUBSYSTEM WRAP_XATTR [SUBSYSTEM::WRAP_XATTR] -OBJ_FILES = \ - wrap_xattr.o PUBLIC_DEPENDENCIES = XATTR # # End SUBSYSTEM WRAP_XATTR ################################################ +WRAP_XATTR_OBJ_FILES = lib/util/wrap_xattr.o + [SUBSYSTEM::UTIL_TDB] PRIVATE_PROTO_HEADER = util_tdb.h -OBJ_FILES = \ - util_tdb.o PUBLIC_DEPENDENCIES = LIBTDB +UTIL_TDB_OBJ_FILES = lib/util/util_tdb.o + [SUBSYSTEM::UTIL_LDB] -OBJ_FILES = \ - util_ldb.o PUBLIC_DEPENDENCIES = LIBLDB + +UTIL_LDB_OBJ_FILES = lib/util/util_ldb.o diff --git a/source4/libcli/auth/config.mk b/source4/libcli/auth/config.mk index f786c71469..85fc4ab527 100644 --- a/source4/libcli/auth/config.mk +++ b/source4/libcli/auth/config.mk @@ -2,15 +2,16 @@ # Start SUBSYSTEM LIBCLI_AUTH [SUBSYSTEM::LIBCLI_AUTH] PRIVATE_PROTO_HEADER = proto.h -OBJ_FILES = credentials.o \ - session.o \ - smbencrypt.o \ - smbdes.o PUBLIC_DEPENDENCIES = \ MSRPC_PARSE \ LIBSAMBA-HOSTCONFIG # End SUBSYSTEM LIBCLI_AUTH ################################# +LIBCLI_AUTH_OBJ_FILES = $(addprefix libcli/auth/, \ + credentials.o \ + session.o \ + smbencrypt.o \ + smbdes.o) PUBLIC_HEADERS += libcli/auth/credentials.h diff --git a/source4/libcli/config.mk b/source4/libcli/config.mk index 0c00fa2740..95b45003be 100644 --- a/source4/libcli/config.mk +++ b/source4/libcli/config.mk @@ -4,120 +4,125 @@ mkinclude security/config.mk mkinclude wbclient/config.mk [SUBSYSTEM::LIBSAMBA-ERRORS] -OBJ_FILES = util/doserr.o \ - util/errormap.o \ - util/nterr.o \ +LIBSAMBA-ERRORS_OBJ_FILES = $(addprefix libcli/util/, doserr.o errormap.o nterr.o) PUBLIC_HEADERS += $(addprefix libcli/, util/error.h util/ntstatus.h util/doserr.h util/werror.h) [SUBSYSTEM::LIBCLI_LSA] PRIVATE_PROTO_HEADER = util/clilsa.h -OBJ_FILES = util/clilsa.o PUBLIC_DEPENDENCIES = RPC_NDR_LSA PRIVATE_DEPENDENCIES = LIBSECURITY +LIBCLI_LSA_OBJ_FILES = libcli/util/clilsa.o + [SUBSYSTEM::LIBCLI_COMPOSITE] PRIVATE_PROTO_HEADER = composite/proto.h -OBJ_FILES = \ - composite/composite.o PUBLIC_DEPENDENCIES = LIBEVENTS +LIBCLI_COMPOSITE_OBJ_FILES = libcli/composite/composite.o + [SUBSYSTEM::LIBCLI_SMB_COMPOSITE] PRIVATE_PROTO_HEADER = smb_composite/proto.h -OBJ_FILES = \ - smb_composite/loadfile.o \ - smb_composite/savefile.o \ - smb_composite/connect.o \ - smb_composite/sesssetup.o \ - smb_composite/fetchfile.o \ - smb_composite/appendacl.o \ - smb_composite/fsinfo.o PUBLIC_DEPENDENCIES = LIBCLI_COMPOSITE CREDENTIALS gensec LIBCLI_RESOLVE +LIBCLI_SMB_COMPOSITE_OBJ_FILES = $(addprefix libcli/smb_composite/, \ + loadfile.o \ + savefile.o \ + connect.o \ + sesssetup.o \ + fetchfile.o \ + appendacl.o \ + fsinfo.o) + + [SUBSYSTEM::NDR_NBT_BUF] PRIVATE_PROTO_HEADER = nbt/nbtname.h -OBJ_FILES = nbt/nbtname.o + +NDR_NBT_BUF_OBJ_FILES = libcli/nbt/nbtname.o [SUBSYSTEM::LIBCLI_NBT] -#VERSION = 0.0.1 -#SO_VERSION = 0 PRIVATE_PROTO_HEADER = nbt/nbt_proto.h -OBJ_FILES = \ - nbt/nbtsocket.o \ - nbt/namequery.o \ - nbt/nameregister.o \ - nbt/namerefresh.o \ - nbt/namerelease.o PUBLIC_DEPENDENCIES = LIBNDR NDR_NBT LIBCLI_COMPOSITE LIBEVENTS \ NDR_SECURITY samba-socket LIBSAMBA-UTIL +LIBCLI_NBT_OBJ_FILES = $(addprefix libcli/nbt/, \ + nbtsocket.o \ + namequery.o \ + nameregister.o \ + namerefresh.o \ + namerelease.o) + [PYTHON::python_libcli_nbt] SWIG_FILE = swig/libcli_nbt.i PUBLIC_DEPENDENCIES = LIBCLI_NBT DYNCONFIG LIBSAMBA-HOSTCONFIG +python_libcli_nbt_OBJ_FILES = libcli/swig/libcli_nbt_wrap.o + [PYTHON::python_libcli_smb] SWIG_FILE = swig/libcli_smb.i PUBLIC_DEPENDENCIES = LIBCLI_SMB DYNCONFIG LIBSAMBA-HOSTCONFIG +python_libcli_smb_OBJ_FILES = libcli/swig/libcli_smb_wrap.o + [SUBSYSTEM::LIBCLI_DGRAM] -OBJ_FILES = \ - dgram/dgramsocket.o \ - dgram/mailslot.o \ - dgram/netlogon.o \ - dgram/ntlogon.o \ - dgram/browse.o PUBLIC_DEPENDENCIES = LIBCLI_NBT LIBNDR LIBCLI_RESOLVE +LIBCLI_DGRAM_OBJ_FILES = $(addprefix libcli/dgram/, \ + dgramsocket.o \ + mailslot.o \ + netlogon.o \ + ntlogon.o \ + browse.o) + [SUBSYSTEM::LIBCLI_CLDAP] -OBJ_FILES = cldap/cldap.o PUBLIC_DEPENDENCIES = LIBCLI_LDAP PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL LIBLDB +LIBCLI_CLDAP_OBJ_FILES = libcli/cldap/cldap.o # PUBLIC_HEADERS += libcli/cldap/cldap.h [SUBSYSTEM::LIBCLI_WREPL] PRIVATE_PROTO_HEADER = wrepl/winsrepl_proto.h -OBJ_FILES = \ - wrepl/winsrepl.o PUBLIC_DEPENDENCIES = NDR_WINSREPL samba-socket LIBCLI_RESOLVE LIBEVENTS \ LIBPACKET LIBNDR +LIBCLI_WREPL_OBJ_FILES = libcli/wrepl/winsrepl.o + [SUBSYSTEM::LIBCLI_RESOLVE] PRIVATE_PROTO_HEADER = resolve/proto.h -OBJ_FILES = \ - resolve/resolve.o PUBLIC_DEPENDENCIES = NDR_NBT +LIBCLI_RESOLVE_OBJ_FILES = libcli/resolve/resolve.o + [SUBSYSTEM::LP_RESOLVE] PRIVATE_PROTO_HEADER = resolve/lp_proto.h -OBJ_FILES = \ - resolve/bcast.o \ - resolve/nbtlist.o \ - resolve/wins.o \ - resolve/host.o \ - resolve/resolve_lp.o PRIVATE_DEPENDENCIES = LIBCLI_NBT LIBSAMBA-HOSTCONFIG LIBNETIF +LP_RESOLVE_OBJ_FILES = $(addprefix libcli/resolve/, \ + bcast.o nbtlist.o wins.o \ + host.o resolve_lp.o) + [SUBSYSTEM::LIBCLI_FINDDCS] PRIVATE_PROTO_HEADER = finddcs.h -OBJ_FILES = \ - finddcs.o PUBLIC_DEPENDENCIES = LIBCLI_NBT MESSAGING +LIBCLI_FINDDCS_OBJ_FILES = libcli/finddcs.o + [SUBSYSTEM::LIBCLI_SMB] PRIVATE_PROTO_HEADER = libcli_proto.h -OBJ_FILES = clireadwrite.o \ +PUBLIC_DEPENDENCIES = LIBCLI_RAW LIBSAMBA-ERRORS LIBCLI_AUTH \ + LIBCLI_SMB_COMPOSITE LIBCLI_NBT LIBSECURITY LIBCLI_RESOLVE \ + LIBCLI_DGRAM LIBCLI_SMB2 LIBCLI_FINDDCS samba-socket + +LIBCLI_SMB_OBJ_FILES = $(addprefix libcli/, \ + clireadwrite.o \ cliconnect.o \ clifile.o \ clilist.o \ clitrans2.o \ climessage.o \ - clideltree.o -PUBLIC_DEPENDENCIES = LIBCLI_RAW LIBSAMBA-ERRORS LIBCLI_AUTH \ - LIBCLI_SMB_COMPOSITE LIBCLI_NBT LIBSECURITY LIBCLI_RESOLVE \ - LIBCLI_DGRAM LIBCLI_SMB2 LIBCLI_FINDDCS samba-socket - + clideltree.o) # PUBLIC_HEADERS += libcli/libcli.h @@ -126,28 +131,11 @@ PRIVATE_PROTO_HEADER = raw/raw_proto.h PRIVATE_DEPENDENCIES = LIBCLI_COMPOSITE LP_RESOLVE gensec LIBCLI_RESOLVE LIBSECURITY LIBNDR #LDFLAGS = $(LIBCLI_SMB_COMPOSITE_OUTPUT) PUBLIC_DEPENDENCIES = samba-socket LIBPACKET gensec LIBCRYPTO CREDENTIALS -OBJ_FILES = raw/rawfile.o \ - raw/smb_signing.o \ - raw/clisocket.o \ - raw/clitransport.o \ - raw/clisession.o \ - raw/clitree.o \ - raw/clierror.o \ - raw/rawrequest.o \ - raw/rawreadwrite.o \ - raw/rawsearch.o \ - raw/rawsetfileinfo.o \ - raw/raweas.o \ - raw/rawtrans.o \ - raw/clioplock.o \ - raw/rawnegotiate.o \ - raw/rawfsinfo.o \ - raw/rawfileinfo.o \ - raw/rawnotify.o \ - raw/rawioctl.o \ - raw/rawacl.o \ - raw/rawdate.o \ - raw/rawlpq.o \ - raw/rawshadow.o + +LIBCLI_RAW_OBJ_FILES = $(addprefix libcli/raw/, rawfile.o smb_signing.o clisocket.o \ + clitransport.o clisession.o clitree.o clierror.o rawrequest.o \ + rawreadwrite.o rawsearch.o rawsetfileinfo.o raweas.o rawtrans.o \ + clioplock.o rawnegotiate.o rawfsinfo.o rawfileinfo.o rawnotify.o \ + rawioctl.o rawacl.o rawdate.o rawlpq.o rawshadow.o) mkinclude smb2/config.mk diff --git a/source4/libcli/ldap/config.mk b/source4/libcli/ldap/config.mk index 0c5236c138..33e32c7417 100644 --- a/source4/libcli/ldap/config.mk +++ b/source4/libcli/ldap/config.mk @@ -1,17 +1,17 @@ [SUBSYSTEM::LIBCLI_LDAP] PRIVATE_PROTO_HEADER = ldap_proto.h -OBJ_FILES = ldap.o \ - ldap_client.o \ - ldap_bind.o \ - ldap_msg.o \ - ldap_ildap.o \ - ldap_controls.o PUBLIC_DEPENDENCIES = LIBSAMBA-ERRORS LIBEVENTS LIBPACKET PRIVATE_DEPENDENCIES = LIBCLI_COMPOSITE samba-socket NDR_SAMR LIBTLS ASN1_UTIL \ LDAP_ENCODE LIBNDR LP_RESOLVE gensec +LIBCLI_LDAP_OBJ_FILES = $(addprefix libcli/ldap/, \ + ldap.o ldap_client.o ldap_bind.o \ + ldap_msg.o ldap_ildap.o ldap_controls.o) + + PUBLIC_HEADERS += libcli/ldap/ldap.h libcli/ldap/ldap_ndr.h [SUBSYSTEM::LDAP_ENCODE] -OBJ_FILES = ldap_ndr.o # FIXME PRIVATE_DEPENDENCIES = LIBLDB + +LDAP_ENCODE_OBJ_FILES = libcli/ldap/ldap_ndr.o diff --git a/source4/libcli/ldap/ldap_ndr.h b/source4/libcli/ldap/ldap_ndr.h index dfbb723c36..ee1f702c78 100644 --- a/source4/libcli/ldap/ldap_ndr.h +++ b/source4/libcli/ldap/ldap_ndr.h @@ -1,6 +1,8 @@ #ifndef __LIBCLI_LDAP_LDAP_NDR_H__ #define __LIBCLI_LDAP_LDAP_NDR_H__ +#include "librpc/gen_ndr/ndr_misc.h" + char *ldap_encode_ndr_uint32(TALLOC_CTX *mem_ctx, uint32_t value); char *ldap_encode_ndr_dom_sid(TALLOC_CTX *mem_ctx, const struct dom_sid *sid); char *ldap_encode_ndr_GUID(TALLOC_CTX *mem_ctx, struct GUID *guid); diff --git a/source4/libcli/raw/interfaces.h b/source4/libcli/raw/interfaces.h index 3965c58204..61441b2cdc 100644 --- a/source4/libcli/raw/interfaces.h +++ b/source4/libcli/raw/interfaces.h @@ -1706,19 +1706,27 @@ union smb_read { /* static body buffer 48 (0x30) bytes */ /* uint16_t buffer_code; 0x31 = 0x30 + 1 */ - uint16_t _pad; + uint8_t _pad; + uint8_t reserved; uint32_t length; uint64_t offset; /* struct smb2_handle handle; */ - uint64_t unknown1; /* 0x0000000000000000 */ - uint64_t unknown2; /* 0x0000000000000000 */ + uint32_t min_count; + uint32_t channel; + uint32_t remaining; + /* the docs give no indication of what + these channel variables are for */ + uint16_t channel_offset; + uint16_t channel_length; } in; struct { /* static body buffer 16 (0x10) bytes */ /* uint16_t buffer_code; 0x11 = 0x10 + 1 */ - /* uint16_t data_ofs; */ + /* uint8_t data_ofs; */ + /* uint8_t reserved; */ /* uint32_t data_size; */ - uint64_t unknown1; /* 0x0000000000000000 */ + uint32_t remaining; + uint32_t reserved; /* dynamic body */ DATA_BLOB data; diff --git a/source4/libcli/security/config.mk b/source4/libcli/security/config.mk index 8c66df0325..fde065aa34 100644 --- a/source4/libcli/security/config.mk +++ b/source4/libcli/security/config.mk @@ -1,13 +1,14 @@ [SUBSYSTEM::LIBSECURITY] PRIVATE_PROTO_HEADER = proto.h -OBJ_FILES = security_token.o \ - security_descriptor.o \ - dom_sid.o \ - access_check.o \ - privilege.o \ - sddl.o PUBLIC_DEPENDENCIES = NDR_MISC LIBNDR +LIBSECURITY_OBJ_FILES = $(addprefix libcli/security/, \ + security_token.o security_descriptor.o \ + dom_sid.o access_check.o privilege.o sddl.o) + + [PYTHON::swig_security] SWIG_FILE = security.i PRIVATE_DEPENDENCIES = LIBSECURITY + +swig_security_OBJ_FILES = libcli/security/security_wrap.o diff --git a/source4/libcli/smb2/config.mk b/source4/libcli/smb2/config.mk index ab079fefde..e95997db54 100644 --- a/source4/libcli/smb2/config.mk +++ b/source4/libcli/smb2/config.mk @@ -1,25 +1,10 @@ [SUBSYSTEM::LIBCLI_SMB2] PRIVATE_PROTO_HEADER = smb2_proto.h -OBJ_FILES = \ - transport.o \ - request.o \ - negprot.o \ - session.o \ - tcon.o \ - create.o \ - close.o \ - connect.o \ - getinfo.o \ - write.o \ - read.o \ - setinfo.o \ - find.o \ - ioctl.o \ - logoff.o \ - tdis.o \ - flush.o \ - lock.o \ - notify.o \ - cancel.o \ - keepalive.o PUBLIC_DEPENDENCIES = LIBCLI_RAW LIBPACKET gensec + +LIBCLI_SMB2_OBJ_FILES = $(addprefix libcli/smb2/, \ + transport.o request.o negprot.o session.o tcon.o \ + create.o close.o connect.o getinfo.o write.o read.o \ + setinfo.o find.o ioctl.o logoff.o tdis.o flush.o \ + lock.o notify.o cancel.o keepalive.o) + diff --git a/source4/libcli/smb2/read.c b/source4/libcli/smb2/read.c index b61f918481..9d40e32a4d 100644 --- a/source4/libcli/smb2/read.c +++ b/source4/libcli/smb2/read.c @@ -33,12 +33,16 @@ struct smb2_request *smb2_read_send(struct smb2_tree *tree, struct smb2_read *io req = smb2_request_init_tree(tree, SMB2_OP_READ, 0x30, true, 0); if (req == NULL) return NULL; - SSVAL(req->out.body, 0x02, 0); /* pad */ + SCVAL(req->out.body, 0x02, 0); /* pad */ + SCVAL(req->out.body, 0x03, 0); /* reserved */ SIVAL(req->out.body, 0x04, io->in.length); SBVAL(req->out.body, 0x08, io->in.offset); smb2_push_handle(req->out.body+0x10, &io->in.file.handle); - SBVAL(req->out.body, 0x20, io->in.unknown1); - SBVAL(req->out.body, 0x28, io->in.unknown2); + SIVAL(req->out.body, 0x20, io->in.min_count); + SIVAL(req->out.body, 0x24, io->in.channel); + SIVAL(req->out.body, 0x28, io->in.remaining); + SSVAL(req->out.body, 0x2C, io->in.channel_offset); + SSVAL(req->out.body, 0x2E, io->in.channel_length); smb2_transport_send(req); @@ -67,7 +71,8 @@ NTSTATUS smb2_read_recv(struct smb2_request *req, return status; } - io->out.unknown1 = BVAL(req->in.body, 0x08); + io->out.remaining = IVAL(req->in.body, 0x08); + io->out.reserved = IVAL(req->in.body, 0x0C); return smb2_request_destroy(req); } diff --git a/source4/libcli/wbclient/config.mk b/source4/libcli/wbclient/config.mk index 9384a172ff..94e30d44f1 100644 --- a/source4/libcli/wbclient/config.mk +++ b/source4/libcli/wbclient/config.mk @@ -1,4 +1,5 @@ [SUBSYSTEM::LIBWBCLIENT] -OBJ_FILES = wbclient.o PUBLIC_DEPENDENCIES = LIBSAMBA-ERRORS LIBEVENTS PRIVATE_DEPENDENCIES = NDR_WINBIND MESSAGING + +LIBWBCLIENT_OBJ_FILES = libcli/wbclient/wbclient.o diff --git a/source4/libnet/config.mk b/source4/libnet/config.mk index 231d67cf35..243fc1813a 100644 --- a/source4/libnet/config.mk +++ b/source4/libnet/config.mk @@ -1,38 +1,16 @@ [SUBSYSTEM::LIBSAMBA-NET] PRIVATE_PROTO_HEADER = libnet_proto.h -PRIVATE_DEPENDENCIES = PROVISION -OBJ_FILES = \ - libnet.o \ - libnet_passwd.o \ - libnet_time.o \ - libnet_rpc.o \ - libnet_join.o \ - libnet_site.o \ - libnet_become_dc.o \ - libnet_unbecome_dc.o \ - libnet_vampire.o \ - libnet_samsync.o \ - libnet_samdump.o \ - libnet_samdump_keytab.o \ - libnet_samsync_ldb.o \ - libnet_user.o \ - libnet_group.o \ - libnet_share.o \ - libnet_lookup.o \ - libnet_domain.o \ - userinfo.o \ - groupinfo.o \ - userman.o \ - groupman.o \ - prereq_domain.o -PUBLIC_DEPENDENCIES = CREDENTIALS dcerpc dcerpc_samr RPC_NDR_LSA RPC_NDR_SRVSVC RPC_NDR_DRSUAPI LIBCLI_COMPOSITE LIBCLI_RESOLVE LIBCLI_FINDDCS LIBCLI_CLDAP LIBCLI_FINDDCS gensec_schannel LIBCLI_AUTH LIBNDR SMBPASSWD - -#PUBLIC_HEADERS += $(addprefix libnet/, libnet.h libnet_join.h libnet_lookup.h libnet_passwd.h \ -# libnet_rpc.h libnet_share.h libnet_time.h \ -# libnet_user.h libnet_site.h libnet_vampire.h \ -# userinfo.h userman.h) +PUBLIC_DEPENDENCIES = CREDENTIALS dcerpc dcerpc_samr RPC_NDR_LSA RPC_NDR_SRVSVC RPC_NDR_DRSUAPI LIBCLI_COMPOSITE LIBCLI_RESOLVE LIBCLI_FINDDCS LIBCLI_CLDAP LIBCLI_FINDDCS gensec_schannel LIBCLI_AUTH LIBNDR SMBPASSWD PROVISION +LIBSAMBA-NET_OBJ_FILES = $(addprefix libnet/, \ + libnet.o libnet_passwd.o libnet_time.o libnet_rpc.o \ + libnet_join.o libnet_site.o libnet_become_dc.o libnet_unbecome_dc.o \ + libnet_vampire.o libnet_samdump.o libnet_samdump_keytab.o \ + libnet_samsync_ldb.o libnet_user.o libnet_group.o libnet_share.o \ + libnet_lookup.o libnet_domain.o userinfo.o groupinfo.o userman.o \ + groupman.o prereq_domain.o libnet_samsync.o) [PYTHON::python_net] -PRIVATE_DEPENDENCIES = LIBSAMBA-NET LIBPYTHON -OBJ_FILES = py_net.o +PRIVATE_DEPENDENCIES = LIBSAMBA-NET + +python_net_OBJ_FILES = libnet/py_net.o diff --git a/source4/libnet/libnet.c b/source4/libnet/libnet.c index d1605bc17d..c966898cee 100644 --- a/source4/libnet/libnet.c +++ b/source4/libnet/libnet.c @@ -28,20 +28,17 @@ struct libnet_context *libnet_context_init(struct event_context *ev, { struct libnet_context *ctx; + /* We require an event context here */ + if (!ev) { + return NULL; + } + /* create brand new libnet context */ ctx = talloc(ev, struct libnet_context); if (!ctx) { return NULL; } - /* events */ - if (ev == NULL) { - ev = event_context_find(ctx); - if (ev == NULL) { - talloc_free(ctx); - return NULL; - } - } ctx->event_ctx = ev; ctx->lp_ctx = lp_ctx; diff --git a/source4/libnet/libnet_vampire.c b/source4/libnet/libnet_vampire.c index 9d32088fe6..1cc63a3fb0 100644 --- a/source4/libnet/libnet_vampire.c +++ b/source4/libnet/libnet_vampire.c @@ -586,6 +586,8 @@ NTSTATUS libnet_Vampire(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, return NT_STATUS_NO_MEMORY; } + s->lp_ctx = ctx->lp_ctx; + join = talloc_zero(s, struct libnet_JoinDomain); if (!join) { return NT_STATUS_NO_MEMORY; diff --git a/source4/libnet/py_net.c b/source4/libnet/py_net.c index 2fcbc5d156..cf81d8070d 100644 --- a/source4/libnet/py_net.c +++ b/source4/libnet/py_net.c @@ -22,11 +22,12 @@ #include "libnet.h" #include "param/param.h" #include "libcli/security/security.h" +#include "lib/events/events.h" -struct libnet_context *py_net_ctx(PyObject *obj) +struct libnet_context *py_net_ctx(PyObject *obj, struct event_context *ev) { /* FIXME: Use obj */ - return libnet_context_init(NULL, global_loadparm); + return libnet_context_init(ev, global_loadparm); } static PyObject *py_net_join(PyObject *cls, PyObject *args, PyObject *kwargs) @@ -35,6 +36,7 @@ static PyObject *py_net_join(PyObject *cls, PyObject *args, PyObject *kwargs) NTSTATUS status; PyObject *result; TALLOC_CTX *mem_ctx; + struct event_context *ev; struct libnet_context *libnet_ctx; const char *kwnames[] = { "domain_name", "netbios_name", "join_type", "level", NULL }; @@ -43,9 +45,12 @@ static PyObject *py_net_join(PyObject *cls, PyObject *args, PyObject *kwargs) &r.in.join_type, &r.in.level)) return NULL; - mem_ctx = talloc_new(NULL); + /* FIXME: we really need to get a context from the caller or we may end + * up with 2 event contexts */ + ev = event_context_init(NULL); + mem_ctx = talloc_new(ev); - libnet_ctx = py_net_ctx(cls); + libnet_ctx = py_net_ctx(cls, ev); status = libnet_Join(libnet_ctx, mem_ctx, &r); if (NT_STATUS_IS_ERR(status)) { diff --git a/source4/librpc/config.mk b/source4/librpc/config.mk index 0a265c7004..11a320a583 100644 --- a/source4/librpc/config.mk +++ b/source4/librpc/config.mk @@ -1,17 +1,16 @@ ################################################ # Start SUBSYSTEM LIBNDR [LIBRARY::LIBNDR] -VERSION = 0.0.1 -SO_VERSION = 0 -PC_FILE = ndr.pc PRIVATE_PROTO_HEADER = ndr/libndr_proto.h -OBJ_FILES = \ - ndr/ndr.o \ - ndr/ndr_basic.o \ - ndr/ndr_string.o \ - ndr/uuid.o PUBLIC_DEPENDENCIES = LIBSAMBA-ERRORS LIBTALLOC LIBSAMBA-UTIL CHARSET \ LIBSAMBA-HOSTCONFIG + +LIBNDR_OBJ_FILES = $(addprefix librpc/ndr/, ndr.o ndr_basic.o ndr_string.o uuid.o) + +PC_FILES += librpc/ndr.pc +LIBNDR_VERSION = 0.0.1 +LIBNDR_SOVERSION = 0 + # End SUBSYSTEM LIBNDR ################################################ @@ -21,8 +20,6 @@ PUBLIC_HEADERS += librpc/ndr/libndr.h # Start BINARY ndrdump [BINARY::ndrdump] INSTALLDIR = BINDIR -OBJ_FILES = \ - tools/ndrdump.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG \ LIBSAMBA-UTIL \ @@ -34,258 +31,317 @@ PRIVATE_DEPENDENCIES = \ # End BINARY ndrdump ################################# +ndrdump_OBJ_FILES = librpc/tools/ndrdump.o + MANPAGES += librpc/tools/ndrdump.1 ################################################ # Start SUBSYSTEM NDR_COMPRESSION [SUBSYSTEM::NDR_COMPRESSION] PRIVATE_PROTO_HEADER = ndr/ndr_compression.h -OBJ_FILES = \ - ndr/ndr_compression.o PUBLIC_DEPENDENCIES = LIBCOMPRESSION LIBSAMBA-ERRORS LIBNDR # End SUBSYSTEM NDR_COMPRESSION ################################################ +NDR_COMPRESSION_OBJ_FILES = librpc/ndr/ndr_compression.o + [SUBSYSTEM::NDR_SECURITY] -OBJ_FILES = gen_ndr/ndr_security.o ndr/ndr_sec_helper.o PUBLIC_DEPENDENCIES = NDR_MISC LIBSECURITY +NDR_SECURITY_OBJ_FILES = librpc/gen_ndr/ndr_security.o librpc/ndr/ndr_sec_helper.o + PUBLIC_HEADERS += librpc/gen_ndr/security.h [SUBSYSTEM::NDR_AUDIOSRV] -OBJ_FILES = gen_ndr/ndr_audiosrv.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_AUDIOSRV_OBJ_FILES = librpc/gen_ndr/ndr_audiosrv.o + [SUBSYSTEM::NDR_DNSSERVER] -OBJ_FILES = gen_ndr/ndr_dnsserver.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_DNSSERVER_OBJ_FILES = librpc/gen_ndr/ndr_dnsserver.o + [SUBSYSTEM::NDR_WINSTATION] -OBJ_FILES = gen_ndr/ndr_winstation.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_WINSTATION_OBJ_FILES = librpc/gen_ndr/ndr_winstation.o + [SUBSYSTEM::NDR_ECHO] -OBJ_FILES = gen_ndr/ndr_echo.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_ECHO_OBJ_FILES = librpc/gen_ndr/ndr_echo.o + [SUBSYSTEM::NDR_IRPC] -OBJ_FILES = gen_ndr/ndr_irpc.o PUBLIC_DEPENDENCIES = LIBNDR NDR_SECURITY NDR_NBT +NDR_IRPC_OBJ_FILES = librpc/gen_ndr/ndr_irpc.o + [SUBSYSTEM::NDR_DSBACKUP] -OBJ_FILES = gen_ndr/ndr_dsbackup.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_DSBACKUP_OBJ_FILES = librpc/gen_ndr/ndr_dsbackup.o + [SUBSYSTEM::NDR_EFS] -OBJ_FILES = gen_ndr/ndr_efs.o PUBLIC_DEPENDENCIES = LIBNDR NDR_SECURITY +NDR_EFS_OBJ_FILES = librpc/gen_ndr/ndr_efs.o + [SUBSYSTEM::NDR_MISC] -OBJ_FILES = gen_ndr/ndr_misc.o ndr/ndr_misc.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_MISC_OBJ_FILES = librpc/gen_ndr/ndr_misc.o librpc/ndr/ndr_misc.o + PUBLIC_HEADERS += librpc/gen_ndr/misc.h librpc/gen_ndr/ndr_misc.h [SUBSYSTEM::NDR_ROT] -OBJ_FILES = gen_ndr/ndr_rot.o PUBLIC_DEPENDENCIES = LIBNDR NDR_ORPC +NDR_ROT_OBJ_FILES = librpc/gen_ndr/ndr_rot.o + [SUBSYSTEM::NDR_LSA] -OBJ_FILES = gen_ndr/ndr_lsa.o PUBLIC_DEPENDENCIES = LIBNDR NDR_SECURITY +NDR_LSA_OBJ_FILES = librpc/gen_ndr/ndr_lsa.o + PUBLIC_HEADERS += librpc/gen_ndr/lsa.h [SUBSYSTEM::NDR_DFS] -OBJ_FILES = gen_ndr/ndr_dfs.o PUBLIC_DEPENDENCIES = LIBNDR NDR_MISC +NDR_DFS_OBJ_FILES = librpc/gen_ndr/ndr_dfs.o + [SUBSYSTEM::NDR_FRSRPC] -OBJ_FILES = gen_ndr/ndr_frsrpc.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_FRSRPC_OBJ_FILES = librpc/gen_ndr/ndr_frsrpc.o + [SUBSYSTEM::NDR_FRSAPI] -OBJ_FILES = gen_ndr/ndr_frsapi.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_FRSAPI_OBJ_FILES = librpc/gen_ndr/ndr_frsapi.o + [SUBSYSTEM::NDR_DRSUAPI] -OBJ_FILES = gen_ndr/ndr_drsuapi.o ndr/ndr_drsuapi.o PUBLIC_DEPENDENCIES = LIBNDR NDR_COMPRESSION NDR_SECURITY NDR_SAMR ASN1_UTIL +NDR_DRSUAPI_OBJ_FILES = librpc/gen_ndr/ndr_drsuapi.o librpc/ndr/ndr_drsuapi.o + [SUBSYSTEM::NDR_DRSBLOBS] -OBJ_FILES = gen_ndr/ndr_drsblobs.o PUBLIC_DEPENDENCIES = LIBNDR NDR_MISC NDR_DRSUAPI +NDR_DRSBLOBS_OBJ_FILES = librpc/gen_ndr/ndr_drsblobs.o + [SUBSYSTEM::NDR_SASL_HELPERS] -OBJ_FILES = gen_ndr/ndr_sasl_helpers.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_SASL_HELPERS_OBJ_FILES = librpc/gen_ndr/ndr_sasl_helpers.o + [SUBSYSTEM::NDR_POLICYAGENT] -OBJ_FILES = gen_ndr/ndr_policyagent.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_POLICYAGENT_OBJ_FILES = librpc/gen_ndr/ndr_policyagent.o + [SUBSYSTEM::NDR_UNIXINFO] -OBJ_FILES = gen_ndr/ndr_unixinfo.o PUBLIC_DEPENDENCIES = LIBNDR NDR_SECURITY +NDR_UNIXINFO_OBJ_FILES = librpc/gen_ndr/ndr_unixinfo.o + [SUBSYSTEM::NDR_SAMR] -OBJ_FILES = gen_ndr/ndr_samr.o PUBLIC_DEPENDENCIES = LIBNDR NDR_MISC NDR_LSA NDR_SECURITY +NDR_SAMR_OBJ_FILES = librpc/gen_ndr/ndr_samr.o + PUBLIC_HEADERS += $(addprefix librpc/, gen_ndr/samr.h gen_ndr/ndr_samr.h gen_ndr/ndr_samr_c.h) [SUBSYSTEM::NDR_NFS4ACL] -OBJ_FILES = gen_ndr/ndr_nfs4acl.o PUBLIC_DEPENDENCIES = LIBNDR NDR_MISC NDR_SECURITY +NDR_NFS4ACL_OBJ_FILES = librpc/gen_ndr/ndr_nfs4acl.o + [SUBSYSTEM::NDR_SPOOLSS] -OBJ_FILES = gen_ndr/ndr_spoolss.o PUBLIC_DEPENDENCIES = LIBNDR NDR_SPOOLSS_BUF NDR_SECURITY +NDR_SPOOLSS_OBJ_FILES = librpc/gen_ndr/ndr_spoolss.o + [SUBSYSTEM::NDR_SPOOLSS_BUF] PRIVATE_PROTO_HEADER = ndr/ndr_spoolss_buf.h -OBJ_FILES = ndr/ndr_spoolss_buf.o + +NDR_SPOOLSS_BUF_OBJ_FILES = librpc/ndr/ndr_spoolss_buf.o [SUBSYSTEM::NDR_WKSSVC] -OBJ_FILES = gen_ndr/ndr_wkssvc.o PUBLIC_DEPENDENCIES = LIBNDR NDR_SRVSVC NDR_MISC NDR_SECURITY +NDR_WKSSVC_OBJ_FILES = librpc/gen_ndr/ndr_wkssvc.o + [SUBSYSTEM::NDR_SRVSVC] -OBJ_FILES = gen_ndr/ndr_srvsvc.o PUBLIC_DEPENDENCIES = LIBNDR NDR_SVCCTL NDR_SECURITY +NDR_SRVSVC_OBJ_FILES = librpc/gen_ndr/ndr_srvsvc.o + [SUBSYSTEM::NDR_SVCCTL] -OBJ_FILES = gen_ndr/ndr_svcctl.o PUBLIC_DEPENDENCIES = LIBNDR NDR_MISC +NDR_SVCCTL_OBJ_FILES = librpc/gen_ndr/ndr_svcctl.o + PUBLIC_HEADERS += $(addprefix librpc/, gen_ndr/ndr_svcctl.h gen_ndr/svcctl.h) [SUBSYSTEM::NDR_ATSVC] -OBJ_FILES = gen_ndr/ndr_atsvc.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_ATSVC_OBJ_FILES = librpc/gen_ndr/ndr_atsvc.o + PUBLIC_HEADERS += $(addprefix librpc/, gen_ndr/atsvc.h gen_ndr/ndr_atsvc.h) [SUBSYSTEM::NDR_EVENTLOG] -OBJ_FILES = gen_ndr/ndr_eventlog.o PUBLIC_DEPENDENCIES = LIBNDR NDR_LSA +NDR_EVENTLOG_OBJ_FILES = librpc/gen_ndr/ndr_eventlog.o + [SUBSYSTEM::NDR_EPMAPPER] -OBJ_FILES = gen_ndr/ndr_epmapper.o PUBLIC_DEPENDENCIES = LIBNDR NDR_MISC +NDR_EPMAPPER_OBJ_FILES = librpc/gen_ndr/ndr_epmapper.o + [SUBSYSTEM::NDR_DBGIDL] -OBJ_FILES = gen_ndr/ndr_dbgidl.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_DBGIDL_OBJ_FILES = librpc/gen_ndr/ndr_dbgidl.o + [SUBSYSTEM::NDR_DSSETUP] -OBJ_FILES = gen_ndr/ndr_dssetup.o PUBLIC_DEPENDENCIES = LIBNDR NDR_MISC +NDR_DSSETUP_OBJ_FILES = librpc/gen_ndr/ndr_dssetup.o + [SUBSYSTEM::NDR_MSGSVC] -OBJ_FILES = gen_ndr/ndr_msgsvc.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_MSGSVC_OBJ_FILES = librpc/gen_ndr/ndr_msgsvc.o + [SUBSYSTEM::NDR_WINS] -OBJ_FILES = gen_ndr/ndr_wins.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_WINS_OBJ_FILES = librpc/gen_ndr/ndr_wins.o + [SUBSYSTEM::NDR_WINREG] -OBJ_FILES = gen_ndr/ndr_winreg.o PUBLIC_DEPENDENCIES = LIBNDR NDR_INITSHUTDOWN NDR_SECURITY NDR_MISC +NDR_WINREG_OBJ_FILES = librpc/gen_ndr/ndr_winreg.o + [SUBSYSTEM::NDR_INITSHUTDOWN] -OBJ_FILES = gen_ndr/ndr_initshutdown.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_INITSHUTDOWN_OBJ_FILES = librpc/gen_ndr/ndr_initshutdown.o + [SUBSYSTEM::NDR_MGMT] -OBJ_FILES = gen_ndr/ndr_mgmt.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_MGMT_OBJ_FILES = librpc/gen_ndr/ndr_mgmt.o + [SUBSYSTEM::NDR_PROTECTED_STORAGE] -OBJ_FILES = gen_ndr/ndr_protected_storage.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_PROTECTED_STORAGE_OBJ_FILES = librpc/gen_ndr/ndr_protected_storage.o + [SUBSYSTEM::NDR_ORPC] -OBJ_FILES = gen_ndr/ndr_orpc.o ndr/ndr_orpc.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_ORPC_OBJ_FILES = librpc/gen_ndr/ndr_orpc.o librpc/ndr/ndr_orpc.o + [SUBSYSTEM::NDR_OXIDRESOLVER] -OBJ_FILES = gen_ndr/ndr_oxidresolver.o PUBLIC_DEPENDENCIES = LIBNDR NDR_ORPC NDR_MISC +NDR_OXIDRESOLVER_OBJ_FILES = librpc/gen_ndr/ndr_oxidresolver.o + [SUBSYSTEM::NDR_REMACT] -OBJ_FILES = gen_ndr/ndr_remact.o PUBLIC_DEPENDENCIES = LIBNDR NDR_ORPC NDR_MISC +NDR_REMACT_OBJ_FILES = librpc/gen_ndr/ndr_remact.o + [SUBSYSTEM::NDR_WZCSVC] -OBJ_FILES = gen_ndr/ndr_wzcsvc.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_WZCSVC_OBJ_FILES = librpc/gen_ndr/ndr_wzcsvc.o + [SUBSYSTEM::NDR_BROWSER] -OBJ_FILES = gen_ndr/ndr_browser.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_BROWSER_OBJ_FILES = librpc/gen_ndr/ndr_browser.o + [SUBSYSTEM::NDR_W32TIME] -OBJ_FILES = gen_ndr/ndr_w32time.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_W32TIME_OBJ_FILES = librpc/gen_ndr/ndr_w32time.o + [SUBSYSTEM::NDR_SCERPC] -OBJ_FILES = gen_ndr/ndr_scerpc.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_SCERPC_OBJ_FILES = librpc/gen_ndr/ndr_scerpc.o + [SUBSYSTEM::NDR_NTSVCS] -OBJ_FILES = gen_ndr/ndr_ntsvcs.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_NTSVCS_OBJ_FILES = librpc/gen_ndr/ndr_ntsvcs.o + [SUBSYSTEM::NDR_NETLOGON] -OBJ_FILES = gen_ndr/ndr_netlogon.o PUBLIC_DEPENDENCIES = LIBNDR NDR_SAMR NDR_LSA NDR_SECURITY +NDR_NETLOGON_OBJ_FILES = librpc/gen_ndr/ndr_netlogon.o + PUBLIC_HEADERS += $(addprefix librpc/, gen_ndr/netlogon.h) [SUBSYSTEM::NDR_TRKWKS] -OBJ_FILES = gen_ndr/ndr_trkwks.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_TRKWKS_OBJ_FILES = librpc/gen_ndr/ndr_trkwks.o + [SUBSYSTEM::NDR_KEYSVC] -OBJ_FILES = gen_ndr/ndr_keysvc.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_KEYSVC_OBJ_FILES = librpc/gen_ndr/ndr_keysvc.o + [SUBSYSTEM::NDR_KRB5PAC] -OBJ_FILES = gen_ndr/ndr_krb5pac.o ndr/ndr_krb5pac.o PUBLIC_DEPENDENCIES = LIBNDR NDR_NETLOGON NDR_SECURITY +NDR_KRB5PAC_OBJ_FILES = librpc/gen_ndr/ndr_krb5pac.o librpc/ndr/ndr_krb5pac.o + [SUBSYSTEM::NDR_XATTR] -OBJ_FILES = gen_ndr/ndr_xattr.o PUBLIC_DEPENDENCIES = LIBNDR NDR_SECURITY +NDR_XATTR_OBJ_FILES = librpc/gen_ndr/ndr_xattr.o + [SUBSYSTEM::NDR_OPENDB] -OBJ_FILES = gen_ndr/ndr_opendb.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_OPENDB_OBJ_FILES = librpc/gen_ndr/ndr_opendb.o + [SUBSYSTEM::NDR_NOTIFY] -OBJ_FILES = gen_ndr/ndr_notify.o PUBLIC_DEPENDENCIES = LIBNDR +NDR_NOTIFY_OBJ_FILES = librpc/gen_ndr/ndr_notify.o + [SUBSYSTEM::NDR_SCHANNEL] -OBJ_FILES = gen_ndr/ndr_schannel.o PUBLIC_DEPENDENCIES = LIBNDR NDR_NBT +NDR_SCHANNEL_OBJ_FILES = librpc/gen_ndr/ndr_schannel.o + [SUBSYSTEM::NDR_NBT] -OBJ_FILES = gen_ndr/ndr_nbt.o PUBLIC_DEPENDENCIES = LIBNDR NDR_MISC NDR_NBT_BUF NDR_SVCCTL NDR_SECURITY +NDR_NBT_OBJ_FILES = librpc/gen_ndr/ndr_nbt.o + PUBLIC_HEADERS += librpc/gen_ndr/nbt.h [SUBSYSTEM::NDR_WINSREPL] -OBJ_FILES = gen_ndr/ndr_winsrepl.o PUBLIC_DEPENDENCIES = LIBNDR NDR_NBT +NDR_WINSREPL_OBJ_FILES = librpc/gen_ndr/ndr_winsrepl.o + [SUBSYSTEM::NDR_WINBIND] -OBJ_FILES = gen_ndr/ndr_winbind.o PUBLIC_DEPENDENCIES = LIBNDR NDR_NETLOGON +NDR_WINBIND_OBJ_FILES = librpc/gen_ndr/ndr_winbind.o +PUBLIC_HEADERS += librpc/gen_ndr/winbind.h + librpc/idl-deps: ./librpc/idl-deps.pl librpc/idl/*.idl >$@ @@ -300,7 +356,6 @@ librpc/gen_ndr/tables.c: $(IDL_NDR_PARSE_H_FILES) @mv librpc/gen_ndr/tables.x $@ [SUBSYSTEM::NDR_TABLE] -OBJ_FILES = ndr/ndr_table.o gen_ndr/tables.o PRIVATE_PROTO_HEADER = ndr/ndr_table.h PUBLIC_DEPENDENCIES = \ NDR_AUDIOSRV NDR_ECHO NDR_DCERPC \ @@ -314,184 +369,211 @@ PUBLIC_DEPENDENCIES = \ NDR_INITSHUTDOWN NDR_DNSSERVER NDR_WINSTATION NDR_IRPC NDR_OPENDB \ NDR_SASL_HELPERS NDR_NOTIFY NDR_WINBIND NDR_FRSRPC NDR_FRSAPI NDR_NFS4ACL +NDR_TABLE_OBJ_FILES = librpc/ndr/ndr_table.o librpc/gen_ndr/tables.o + [SUBSYSTEM::RPC_NDR_ROT] -OBJ_FILES = gen_ndr/ndr_rot_c.o PUBLIC_DEPENDENCIES = NDR_ROT dcerpc +RPC_NDR_ROT_OBJ_FILES = librpc/gen_ndr/ndr_rot_c.o + [SUBSYSTEM::RPC_NDR_AUDIOSRV] -OBJ_FILES = gen_ndr/ndr_audiosrv_c.o PUBLIC_DEPENDENCIES = NDR_AUDIOSRV dcerpc +RPC_NDR_AUDIOSRV_OBJ_FILES = librpc/gen_ndr/ndr_audiosrv_c.o + [SUBSYSTEM::RPC_NDR_ECHO] -OBJ_FILES = gen_ndr/ndr_echo_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_ECHO +RPC_NDR_ECHO_OBJ_FILES = librpc/gen_ndr/ndr_echo_c.o + [SUBSYSTEM::RPC_NDR_DSBACKUP] -OBJ_FILES = gen_ndr/ndr_dsbackup_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_DSBACKUP +RPC_NDR_DSBACKUP_OBJ_FILES = librpc/gen_ndr/ndr_dsbackup_c.o + [SUBSYSTEM::RPC_NDR_EFS] -OBJ_FILES = gen_ndr/ndr_efs_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_EFS +RPC_NDR_EFS_OBJ_FILES = librpc/gen_ndr/ndr_efs_c.o + [SUBSYSTEM::RPC_NDR_LSA] -OBJ_FILES = gen_ndr/ndr_lsa_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_LSA +RPC_NDR_LSA_OBJ_FILES = librpc/gen_ndr/ndr_lsa_c.o + [SUBSYSTEM::RPC_NDR_DFS] -OBJ_FILES = gen_ndr/ndr_dfs_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_DFS +RPC_NDR_DFS_OBJ_FILES = librpc/gen_ndr/ndr_dfs_c.o + [SUBSYSTEM::RPC_NDR_FRSAPI] -OBJ_FILES = gen_ndr/ndr_frsapi_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_FRSAPI +RPC_NDR_FRSAPI_OBJ_FILES = librpc/gen_ndr/ndr_frsapi_c.o + [SUBSYSTEM::RPC_NDR_DRSUAPI] -OBJ_FILES = gen_ndr/ndr_drsuapi_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_DRSUAPI +RPC_NDR_DRSUAPI_OBJ_FILES = librpc/gen_ndr/ndr_drsuapi_c.o + [SUBSYSTEM::RPC_NDR_POLICYAGENT] -OBJ_FILES = gen_ndr/ndr_policyagent_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_POLICYAGENT +RPC_NDR_POLICYAGENT_OBJ_FILES = librpc/gen_ndr/ndr_policyagent_c.o + [SUBSYSTEM::RPC_NDR_UNIXINFO] -OBJ_FILES = gen_ndr/ndr_unixinfo_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_UNIXINFO +RPC_NDR_UNIXINFO_OBJ_FILES = librpc/gen_ndr/ndr_unixinfo_c.o + [LIBRARY::dcerpc_samr] -OBJ_FILES = gen_ndr/ndr_samr_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_SAMR -PC_FILE = dcerpc_samr.pc -VERSION = 0.0.1 -SO_VERSION = 0 + +PC_FILES += librpc/dcerpc_samr.pc + +dcerpc_samr_VERSION = 0.0.1 +dcerpc_samr_SOVERSION = 0 +dcerpc_samr_OBJ_FILES = librpc/gen_ndr/ndr_samr_c.o [SUBSYSTEM::RPC_NDR_SPOOLSS] -OBJ_FILES = gen_ndr/ndr_spoolss_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_SPOOLSS +RPC_NDR_SPOOLSS_OBJ_FILES = librpc/gen_ndr/ndr_spoolss_c.o + [SUBSYSTEM::RPC_NDR_WKSSVC] -OBJ_FILES = gen_ndr/ndr_wkssvc_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_WKSSVC +RPC_NDR_WKSSVC_OBJ_FILES = librpc/gen_ndr/ndr_wkssvc_c.o + [SUBSYSTEM::RPC_NDR_SRVSVC] -OBJ_FILES = gen_ndr/ndr_srvsvc_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_SRVSVC +RPC_NDR_SRVSVC_OBJ_FILES = librpc/gen_ndr/ndr_srvsvc_c.o + [SUBSYSTEM::RPC_NDR_SVCCTL] -OBJ_FILES = gen_ndr/ndr_svcctl_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_SVCCTL +RPC_NDR_SVCCTL_OBJ_FILES = librpc/gen_ndr/ndr_svcctl_c.o + PUBLIC_HEADERS += librpc/gen_ndr/ndr_svcctl_c.h [LIBRARY::dcerpc_atsvc] -OBJ_FILES = gen_ndr/ndr_atsvc_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_ATSVC -PC_FILE = dcerpc_atsvc.pc -VERSION = 0.0.1 -SO_VERSION = 0 + +dcerpc_atsvc_VERSION = 0.0.1 +dcerpc_atsvc_SOVERSION = 0 + +dcerpc_atsvc_OBJ_FILES = librpc/gen_ndr/ndr_atsvc_c.o +PC_FILES += librpc/dcerpc_atsvc.pc PUBLIC_HEADERS += librpc/gen_ndr/ndr_atsvc_c.h [SUBSYSTEM::RPC_NDR_EVENTLOG] -OBJ_FILES = gen_ndr/ndr_eventlog_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_EVENTLOG +RPC_NDR_EVENTLOG_OBJ_FILES = librpc/gen_ndr/ndr_eventlog_c.o + [SUBSYSTEM::RPC_NDR_EPMAPPER] -OBJ_FILES = gen_ndr/ndr_epmapper_c.o PUBLIC_DEPENDENCIES = NDR_EPMAPPER +RPC_NDR_EPMAPPER_OBJ_FILES = librpc/gen_ndr/ndr_epmapper_c.o + [SUBSYSTEM::RPC_NDR_DBGIDL] -OBJ_FILES = gen_ndr/ndr_dbgidl_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_DBGIDL +RPC_NDR_DBGIDL_OBJ_FILES = librpc/gen_ndr/ndr_dbgidl_c.o + [SUBSYSTEM::RPC_NDR_DSSETUP] -OBJ_FILES = gen_ndr/ndr_dssetup_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_DSSETUP +RPC_NDR_DSSETUP_OBJ_FILES = librpc/gen_ndr/ndr_dssetup_c.o + [SUBSYSTEM::RPC_NDR_MSGSVC] -OBJ_FILES = gen_ndr/ndr_msgsvc_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_MSGSVC +RPC_NDR_MSGSVC_OBJ_FILES = librpc/gen_ndr/ndr_msgsvc_c.o + [SUBSYSTEM::RPC_NDR_WINS] -OBJ_FILES = gen_ndr/ndr_wins_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_WINS +RPC_NDR_WINS_OBJ_FILES = librpc/gen_ndr/ndr_wins_c.o + [SUBSYSTEM::RPC_NDR_WINREG] -OBJ_FILES = gen_ndr/ndr_winreg_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_WINREG +RPC_NDR_WINREG_OBJ_FILES = librpc/gen_ndr/ndr_winreg_c.o + [SUBSYSTEM::RPC_NDR_INITSHUTDOWN] -OBJ_FILES = gen_ndr/ndr_initshutdown_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_INITSHUTDOWN +RPC_NDR_INITSHUTDOWN_OBJ_FILES = librpc/gen_ndr/ndr_initshutdown_c.o + [SUBSYSTEM::RPC_NDR_MGMT] -OBJ_FILES = gen_ndr/ndr_mgmt_c.o PRIVATE_DEPENDENCIES = NDR_MGMT +RPC_NDR_MGMT_OBJ_FILES = librpc/gen_ndr/ndr_mgmt_c.o + [SUBSYSTEM::RPC_NDR_PROTECTED_STORAGE] -OBJ_FILES = gen_ndr/ndr_protected_storage_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_PROTECTED_STORAGE +RPC_NDR_PROTECTED_STORAGE_OBJ_FILES = librpc/gen_ndr/ndr_protected_storage_c.o + [SUBSYSTEM::RPC_NDR_OXIDRESOLVER] -OBJ_FILES = gen_ndr/ndr_oxidresolver_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_OXIDRESOLVER +RPC_NDR_OXIDRESOLVER_OBJ_FILES = librpc/gen_ndr/ndr_oxidresolver_c.o + [SUBSYSTEM::RPC_NDR_REMACT] -OBJ_FILES = gen_ndr/ndr_remact_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_REMACT +RPC_NDR_REMACT_OBJ_FILES = librpc/gen_ndr/ndr_remact_c.o + [SUBSYSTEM::RPC_NDR_WZCSVC] -OBJ_FILES = gen_ndr/ndr_wzcsvc_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_WZCSVC +RPC_NDR_WZCSVC_OBJ_FILES = librpc/gen_ndr/ndr_wzcsvc_c.o + [SUBSYSTEM::RPC_NDR_W32TIME] -OBJ_FILES = gen_ndr/ndr_w32time_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_W32TIME +RPC_NDR_W32TIME_OBJ_FILES = librpc/gen_ndr/ndr_w32time_c.o + [SUBSYSTEM::RPC_NDR_SCERPC] -OBJ_FILES = gen_ndr/ndr_scerpc_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_SCERPC +RPC_NDR_SCERPC_OBJ_FILES = librpc/gen_ndr/ndr_scerpc_c.o + [SUBSYSTEM::RPC_NDR_NTSVCS] -OBJ_FILES = gen_ndr/ndr_ntsvcs_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_NTSVCS +RPC_NDR_NTSVCS_OBJ_FILES = librpc/gen_ndr/ndr_ntsvcs_c.o + [SUBSYSTEM::RPC_NDR_NETLOGON] -OBJ_FILES = gen_ndr/ndr_netlogon_c.o PUBLIC_DEPENDENCIES = NDR_NETLOGON +RPC_NDR_NETLOGON_OBJ_FILES = librpc/gen_ndr/ndr_netlogon_c.o + [SUBSYSTEM::RPC_NDR_TRKWKS] -OBJ_FILES = gen_ndr/ndr_trkwks_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_TRKWKS +RPC_NDR_TRKWKS_OBJ_FILES = librpc/gen_ndr/ndr_trkwks_c.o + [SUBSYSTEM::RPC_NDR_KEYSVC] -OBJ_FILES = gen_ndr/ndr_keysvc_c.o PUBLIC_DEPENDENCIES = dcerpc NDR_KEYSVC +RPC_NDR_KEYSVC_OBJ_FILES = librpc/gen_ndr/ndr_keysvc_c.o + [SUBSYSTEM::NDR_DCERPC] -OBJ_FILES = gen_ndr/ndr_dcerpc.o PUBLIC_DEPENDENCIES = LIBNDR NDR_MISC +NDR_DCERPC_OBJ_FILES = librpc/gen_ndr/ndr_dcerpc.o + PUBLIC_HEADERS += $(addprefix librpc/, gen_ndr/dcerpc.h gen_ndr/ndr_dcerpc.h) ################################################ # Start SUBSYSTEM dcerpc [LIBRARY::dcerpc] -VERSION = 0.0.1 -SO_VERSION = 0 -PC_FILE = dcerpc.pc PRIVATE_PROTO_HEADER = rpc/dcerpc_proto.h -OBJ_FILES = \ - rpc/dcerpc.o \ - rpc/dcerpc_auth.o \ - rpc/dcerpc_schannel.o \ - rpc/dcerpc_util.o \ - rpc/dcerpc_error.o \ - rpc/dcerpc_smb.o \ - rpc/dcerpc_smb2.o \ - rpc/dcerpc_sock.o \ - rpc/dcerpc_connect.o \ - rpc/dcerpc_secondary.o PRIVATE_DEPENDENCIES = \ samba-socket LIBCLI_RESOLVE LIBCLI_SMB LIBCLI_SMB2 \ LIBNDR NDR_DCERPC RPC_NDR_EPMAPPER \ @@ -503,6 +585,15 @@ PUBLIC_DEPENDENCIES = CREDENTIALS # End SUBSYSTEM dcerpc ################################################ +PC_FILES += librpc/dcerpc.pc +dcerpc_VERSION = 0.0.1 +dcerpc_SOVERSION = 0 + +dcerpc_OBJ_FILES = $(addprefix librpc/rpc/, dcerpc.o dcerpc_auth.o dcerpc_schannel.o dcerpc_util.o \ + binding.o \ + dcerpc_error.o dcerpc_smb.o dcerpc_smb2.o dcerpc_sock.o dcerpc_connect.o dcerpc_secondary.o) + + PUBLIC_HEADERS += $(addprefix librpc/, rpc/dcerpc.h \ gen_ndr/mgmt.h gen_ndr/ndr_mgmt.h gen_ndr/ndr_mgmt_c.h \ gen_ndr/epmapper.h gen_ndr/ndr_epmapper.h gen_ndr/ndr_epmapper_c.h) @@ -510,159 +601,195 @@ PUBLIC_HEADERS += $(addprefix librpc/, rpc/dcerpc.h \ [MODULE::RPC_EJS_ECHO] INIT_FUNCTION = ejs_init_rpcecho -OBJ_FILES = gen_ndr/ndr_echo_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_ECHO EJSRPC +RPC_EJS_ECHO_OBJ_FILES = librpc/gen_ndr/ndr_echo_ejs.o + [MODULE::RPC_EJS_MISC] INIT_FUNCTION = ejs_init_misc -OBJ_FILES = gen_ndr/ndr_misc_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_MISC EJSRPC +RPC_EJS_MISC_OBJ_FILES = librpc/gen_ndr/ndr_misc_ejs.o + [MODULE::RPC_EJS_SAMR] INIT_FUNCTION = ejs_init_samr -OBJ_FILES = gen_ndr/ndr_samr_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_SAMR EJSRPC RPC_EJS_LSA RPC_EJS_SECURITY RPC_EJS_MISC +RPC_EJS_SAMR_OBJ_FILES = librpc/gen_ndr/ndr_samr_ejs.o + [MODULE::RPC_EJS_SECURITY] INIT_FUNCTION = ejs_init_security -OBJ_FILES = gen_ndr/ndr_security_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_SECURITY EJSRPC +RPC_EJS_SECURITY_OBJ_FILES = librpc/gen_ndr/ndr_security_ejs.o + [MODULE::RPC_EJS_LSA] INIT_FUNCTION = ejs_init_lsarpc -OBJ_FILES = gen_ndr/ndr_lsa_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_LSA EJSRPC RPC_EJS_SECURITY RPC_EJS_MISC +RPC_EJS_LSA_OBJ_FILES = librpc/gen_ndr/ndr_lsa_ejs.o + [MODULE::RPC_EJS_DFS] INIT_FUNCTION = ejs_init_netdfs -OBJ_FILES = gen_ndr/ndr_dfs_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_DFS EJSRPC +RPC_EJS_DFS_OBJ_FILES = librpc/gen_ndr/ndr_dfs_ejs.o + [MODULE::RPC_EJS_DRSUAPI] INIT_FUNCTION = ejs_init_drsuapi -OBJ_FILES = gen_ndr/ndr_drsuapi_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_DRSUAPI EJSRPC RPC_EJS_MISC RPC_EJS_SAMR +RPC_EJS_DRSUAPI_OBJ_FILES = librpc/gen_ndr/ndr_drsuapi_ejs.o + [MODULE::RPC_EJS_SPOOLSS] INIT_FUNCTION = ejs_init_spoolss -OBJ_FILES = gen_ndr/ndr_spoolss_ejs.o SUBSYSTEM = smbcalls ENABLE = NO PRIVATE_DEPENDENCIES = dcerpc NDR_SPOOLSS EJSRPC +RPC_EJS_SPOOLSS_OBJ_FILES = librpc/gen_ndr/ndr_spoolss_ejs.o + [MODULE::RPC_EJS_WKSSVC] INIT_FUNCTION = ejs_init_wkssvc -OBJ_FILES = gen_ndr/ndr_wkssvc_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_WKSSVC EJSRPC RPC_EJS_SRVSVC RPC_EJS_MISC +RPC_EJS_WKSSVC_OBJ_FILES = librpc/gen_ndr/ndr_wkssvc_ejs.o + [MODULE::RPC_EJS_SRVSVC] INIT_FUNCTION = ejs_init_srvsvc -OBJ_FILES = gen_ndr/ndr_srvsvc_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_SRVSVC EJSRPC RPC_EJS_MISC RPC_EJS_SVCCTL RPC_EJS_SECURITY +RPC_EJS_SRVSVC_OBJ_FILES = librpc/gen_ndr/ndr_srvsvc_ejs.o + [MODULE::RPC_EJS_EVENTLOG] INIT_FUNCTION = ejs_init_eventlog -OBJ_FILES = gen_ndr/ndr_eventlog_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_EVENTLOG EJSRPC RPC_EJS_MISC +RPC_EJS_EVENTLOG_OBJ_FILES = librpc/gen_ndr/ndr_eventlog_ejs.o + [MODULE::RPC_EJS_WINREG] INIT_FUNCTION = ejs_init_winreg -OBJ_FILES = gen_ndr/ndr_winreg_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_WINREG EJSRPC RPC_EJS_INITSHUTDOWN \ RPC_EJS_MISC RPC_EJS_SECURITY +RPC_EJS_WINREG_OBJ_FILES = librpc/gen_ndr/ndr_winreg_ejs.o + [MODULE::RPC_EJS_INITSHUTDOWN] INIT_FUNCTION = ejs_init_initshutdown -OBJ_FILES = gen_ndr/ndr_initshutdown_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_INITSHUTDOWN EJSRPC +RPC_EJS_INITSHUTDOWN_OBJ_FILES = librpc/gen_ndr/ndr_initshutdown_ejs.o + [MODULE::RPC_EJS_NETLOGON] INIT_FUNCTION = ejs_init_netlogon -OBJ_FILES = gen_ndr/ndr_netlogon_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_NETLOGON EJSRPC RPC_EJS_SAMR RPC_EJS_SECURITY RPC_EJS_MISC +RPC_EJS_NETLOGON_OBJ_FILES = librpc/gen_ndr/ndr_netlogon_ejs.o + [MODULE::RPC_EJS_SVCCTL] INIT_FUNCTION = ejs_init_svcctl -OBJ_FILES = gen_ndr/ndr_svcctl_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_SVCCTL EJSRPC RPC_EJS_MISC +RPC_EJS_SVCCTL_OBJ_FILES = librpc/gen_ndr/ndr_svcctl_ejs.o + [MODULE::RPC_EJS_IRPC] INIT_FUNCTION = ejs_init_irpc -OBJ_FILES = gen_ndr/ndr_irpc_ejs.o SUBSYSTEM = smbcalls PRIVATE_DEPENDENCIES = dcerpc NDR_IRPC EJSRPC +RPC_EJS_IRPC_OBJ_FILES = librpc/gen_ndr/ndr_irpc_ejs.o + [PYTHON::swig_dcerpc] SWIG_FILE = rpc/dcerpc.i PUBLIC_DEPENDENCIES = LIBCLI_SMB NDR_MISC LIBSAMBA-UTIL LIBSAMBA-HOSTCONFIG dcerpc_samr RPC_NDR_LSA DYNCONFIG +swig_dcerpc_OBJ_FILES = librpc/rpc/dcerpc_wrap.o + [PYTHON::python_echo] -OBJ_FILES = gen_ndr/py_echo.o -PRIVATE_DEPENDENCIES = RPC_NDR_ECHO +PRIVATE_DEPENDENCIES = RPC_NDR_ECHO PYTALLOC + +python_echo_OBJ_FILES = librpc/gen_ndr/py_echo.o [PYTHON::python_winreg] -OBJ_FILES = gen_ndr/py_winreg.o -PRIVATE_DEPENDENCIES = RPC_NDR_WINREG python_misc +PRIVATE_DEPENDENCIES = RPC_NDR_WINREG python_misc PYTALLOC + +python_winreg_OBJ_FILES = librpc/gen_ndr/py_winreg.o [PYTHON::python_dcerpc_misc] -OBJ_FILES = gen_ndr/py_misc.o +PRIVATE_DEPENDENCIES = PYTALLOC + +python_dcerpc_misc_OBJ_FILES = librpc/gen_ndr/py_misc.o [PYTHON::python_initshutdown] -OBJ_FILES = gen_ndr/py_initshutdown.o -PRIVATE_DEPENDENCIES = RPC_NDR_INITSHUTDOWN +PRIVATE_DEPENDENCIES = RPC_NDR_INITSHUTDOWN PYTALLOC + +python_initshutdown_OBJ_FILES = librpc/gen_ndr/py_initshutdown.o [PYTHON::python_epmapper] -OBJ_FILES = gen_ndr/py_epmapper.o +PRIVATE_DEPENDENCIES = PYTALLOC + +python_epmapper_OBJ_FILES = librpc/gen_ndr/py_epmapper.o [PYTHON::python_mgmt] -OBJ_FILES = gen_ndr/py_mgmt.o -PRIVATE_DEPENDENCIES = dcerpc_mgmt +PRIVATE_DEPENDENCIES = dcerpc_mgmt PYTALLOC + +python_mgmt_OBJ_FILES = librpc/gen_ndr/py_mgmt.o [PYTHON::python_atsvc] -OBJ_FILES = gen_ndr/py_atsvc.o -PRIVATE_DEPENDENCIES = dcerpc_atsvc +PRIVATE_DEPENDENCIES = dcerpc_atsvc PYTALLOC + +python_atsvc_OBJ_FILES = librpc/gen_ndr/py_atsvc.o [PYTHON::python_samr] -OBJ_FILES = gen_ndr/py_samr.o -PRIVATE_DEPENDENCIES = dcerpc_samr +PRIVATE_DEPENDENCIES = dcerpc_samr PYTALLOC + +python_samr_OBJ_FILES = librpc/gen_ndr/py_samr.o [PYTHON::python_svcctl] -OBJ_FILES = gen_ndr/py_svcctl.o -PRIVATE_DEPENDENCIES = RPC_NDR_SVCCTL +PRIVATE_DEPENDENCIES = RPC_NDR_SVCCTL PYTALLOC + +python_svcctl_OBJ_FILES = librpc/gen_ndr/py_svcctl.o [PYTHON::python_lsa] -OBJ_FILES = gen_ndr/py_lsa.o -PRIVATE_DEPENDENCIES = RPC_NDR_LSA +PRIVATE_DEPENDENCIES = RPC_NDR_LSA PYTALLOC + +python_lsa_OBJ_FILES = librpc/gen_ndr/py_lsa.o [PYTHON::python_wkssvc] -OBJ_FILES = gen_ndr/py_wkssvc.o -PRIVATE_DEPENDENCIES = RPC_NDR_WKSSVC +PRIVATE_DEPENDENCIES = RPC_NDR_WKSSVC PYTALLOC + +python_wkssvc_OBJ_FILES = librpc/gen_ndr/py_wkssvc.o [PYTHON::python_dfs] -OBJ_FILES = gen_ndr/py_dfs.o -PRIVATE_DEPENDENCIES = RPC_NDR_DFS +PRIVATE_DEPENDENCIES = RPC_NDR_DFS PYTALLOC + +python_dfs_OBJ_FILES = librpc/gen_ndr/py_dfs.o [PYTHON::python_unixinfo] -OBJ_FILES = gen_ndr/py_unixinfo.o -PRIVATE_DEPENDENCIES = RPC_NDR_UNIXINFO +PRIVATE_DEPENDENCIES = RPC_NDR_UNIXINFO PYTALLOC + +python_unixinfo_OBJ_FILES = librpc/gen_ndr/py_unixinfo.o [PYTHON::python_drsuapi] -OBJ_FILES = gen_ndr/py_drsuapi.o -PRIVATE_DEPENDENCIES = RPC_NDR_DRSUAPI +PRIVATE_DEPENDENCIES = RPC_NDR_DRSUAPI PYTALLOC + +python_drsuapi_OBJ_FILES = librpc/gen_ndr/py_drsuapi.o [PYTHON::python_dcerpc_security] -OBJ_FILES = gen_ndr/py_security.o +PRIVATE_DEPENDENCIES = PYTALLOC + +python_dcerpc_security_OBJ_FILES = librpc/gen_ndr/py_security.o diff --git a/source4/librpc/rpc/binding.c b/source4/librpc/rpc/binding.c new file mode 100644 index 0000000000..ae88dce1be --- /dev/null +++ b/source4/librpc/rpc/binding.c @@ -0,0 +1,724 @@ +/* + Unix SMB/CIFS implementation. + + dcerpc utility functions + + Copyright (C) Andrew Tridgell 2003 + Copyright (C) Jelmer Vernooij 2004 + Copyright (C) Andrew Bartlett <abartlet@samba.org> 2005 + Copyright (C) Rafal Szczesniak 2006 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "includes.h" +#include "lib/events/events.h" +#include "librpc/gen_ndr/ndr_epmapper_c.h" +#include "librpc/gen_ndr/ndr_dcerpc.h" +#include "librpc/gen_ndr/ndr_misc.h" + +#define MAX_PROTSEQ 10 + +static const struct { + const char *name; + enum dcerpc_transport_t transport; + int num_protocols; + enum epm_protocol protseq[MAX_PROTSEQ]; +} transports[] = { + { "ncacn_np", NCACN_NP, 3, + { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_SMB, EPM_PROTOCOL_NETBIOS }}, + { "ncacn_ip_tcp", NCACN_IP_TCP, 3, + { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_TCP, EPM_PROTOCOL_IP } }, + { "ncacn_http", NCACN_HTTP, 3, + { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_HTTP, EPM_PROTOCOL_IP } }, + { "ncadg_ip_udp", NCACN_IP_UDP, 3, + { EPM_PROTOCOL_NCADG, EPM_PROTOCOL_UDP, EPM_PROTOCOL_IP } }, + { "ncalrpc", NCALRPC, 2, + { EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_PIPE } }, + { "ncacn_unix_stream", NCACN_UNIX_STREAM, 2, + { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_UNIX_DS } }, + { "ncadg_unix_dgram", NCADG_UNIX_DGRAM, 2, + { EPM_PROTOCOL_NCADG, EPM_PROTOCOL_UNIX_DS } }, + { "ncacn_at_dsp", NCACN_AT_DSP, 3, + { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_APPLETALK, EPM_PROTOCOL_DSP } }, + { "ncadg_at_ddp", NCADG_AT_DDP, 3, + { EPM_PROTOCOL_NCADG, EPM_PROTOCOL_APPLETALK, EPM_PROTOCOL_DDP } }, + { "ncacn_vns_ssp", NCACN_VNS_SPP, 3, + { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_STREETTALK, EPM_PROTOCOL_VINES_SPP } }, + { "ncacn_vns_ipc", NCACN_VNS_IPC, 3, + { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_STREETTALK, EPM_PROTOCOL_VINES_IPC }, }, + { "ncadg_ipx", NCADG_IPX, 2, + { EPM_PROTOCOL_NCADG, EPM_PROTOCOL_IPX }, + }, + { "ncacn_spx", NCACN_SPX, 3, + /* I guess some MS programmer confused the identifier for + * EPM_PROTOCOL_UUID (0x0D or 13) with the one for + * EPM_PROTOCOL_SPX (0x13) here. -- jelmer*/ + { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_UUID }, + }, +}; + +static const struct { + const char *name; + uint32_t flag; +} ncacn_options[] = { + {"sign", DCERPC_SIGN}, + {"seal", DCERPC_SEAL}, + {"connect", DCERPC_CONNECT}, + {"spnego", DCERPC_AUTH_SPNEGO}, + {"ntlm", DCERPC_AUTH_NTLM}, + {"krb5", DCERPC_AUTH_KRB5}, + {"validate", DCERPC_DEBUG_VALIDATE_BOTH}, + {"print", DCERPC_DEBUG_PRINT_BOTH}, + {"padcheck", DCERPC_DEBUG_PAD_CHECK}, + {"bigendian", DCERPC_PUSH_BIGENDIAN}, + {"smb2", DCERPC_SMB2} +}; + +const char *epm_floor_string(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor) +{ + struct ndr_syntax_id syntax; + NTSTATUS status; + + switch(epm_floor->lhs.protocol) { + case EPM_PROTOCOL_UUID: + status = dcerpc_floor_get_lhs_data(epm_floor, &syntax); + if (NT_STATUS_IS_OK(status)) { + /* lhs is used: UUID */ + char *uuidstr; + + if (GUID_equal(&syntax.uuid, &ndr_transfer_syntax.uuid)) { + return "NDR"; + } + + if (GUID_equal(&syntax.uuid, &ndr64_transfer_syntax.uuid)) { + return "NDR64"; + } + + uuidstr = GUID_string(mem_ctx, &syntax.uuid); + + return talloc_asprintf(mem_ctx, " uuid %s/0x%02x", uuidstr, syntax.if_version); + } else { /* IPX */ + return talloc_asprintf(mem_ctx, "IPX:%s", + data_blob_hex_string(mem_ctx, &epm_floor->rhs.uuid.unknown)); + } + + case EPM_PROTOCOL_NCACN: + return "RPC-C"; + + case EPM_PROTOCOL_NCADG: + return "RPC"; + + case EPM_PROTOCOL_NCALRPC: + return "NCALRPC"; + + case EPM_PROTOCOL_DNET_NSP: + return "DNET/NSP"; + + case EPM_PROTOCOL_IP: + return talloc_asprintf(mem_ctx, "IP:%s", epm_floor->rhs.ip.ipaddr); + + case EPM_PROTOCOL_PIPE: + return talloc_asprintf(mem_ctx, "PIPE:%s", epm_floor->rhs.pipe.path); + + case EPM_PROTOCOL_SMB: + return talloc_asprintf(mem_ctx, "SMB:%s", epm_floor->rhs.smb.unc); + + case EPM_PROTOCOL_UNIX_DS: + return talloc_asprintf(mem_ctx, "Unix:%s", epm_floor->rhs.unix_ds.path); + + case EPM_PROTOCOL_NETBIOS: + return talloc_asprintf(mem_ctx, "NetBIOS:%s", epm_floor->rhs.netbios.name); + + case EPM_PROTOCOL_NETBEUI: + return "NETBeui"; + + case EPM_PROTOCOL_SPX: + return "SPX"; + + case EPM_PROTOCOL_NB_IPX: + return "NB_IPX"; + + case EPM_PROTOCOL_HTTP: + return talloc_asprintf(mem_ctx, "HTTP:%d", epm_floor->rhs.http.port); + + case EPM_PROTOCOL_TCP: + return talloc_asprintf(mem_ctx, "TCP:%d", epm_floor->rhs.tcp.port); + + case EPM_PROTOCOL_UDP: + return talloc_asprintf(mem_ctx, "UDP:%d", epm_floor->rhs.udp.port); + + default: + return talloc_asprintf(mem_ctx, "UNK(%02x):", epm_floor->lhs.protocol); + } +} + + +/* + form a binding string from a binding structure +*/ +_PUBLIC_ char *dcerpc_binding_string(TALLOC_CTX *mem_ctx, const struct dcerpc_binding *b) +{ + char *s = talloc_strdup(mem_ctx, ""); + int i; + const char *t_name = NULL; + + if (b->transport != NCA_UNKNOWN) { + for (i=0;i<ARRAY_SIZE(transports);i++) { + if (transports[i].transport == b->transport) { + t_name = transports[i].name; + } + } + if (!t_name) { + return NULL; + } + } + + if (!GUID_all_zero(&b->object.uuid)) { + s = talloc_asprintf(s, "%s@", + GUID_string(mem_ctx, &b->object.uuid)); + } + + if (t_name != NULL) { + s = talloc_asprintf_append_buffer(s, "%s:", t_name); + if (s == NULL) { + return NULL; + } + } + + if (b->host) { + s = talloc_asprintf_append_buffer(s, "%s", b->host); + } + + if (!b->endpoint && !b->options && !b->flags) { + return s; + } + + s = talloc_asprintf_append_buffer(s, "["); + + if (b->endpoint) { + s = talloc_asprintf_append_buffer(s, "%s", b->endpoint); + } + + /* this is a *really* inefficent way of dealing with strings, + but this is rarely called and the strings are always short, + so I don't care */ + for (i=0;b->options && b->options[i];i++) { + s = talloc_asprintf_append_buffer(s, ",%s", b->options[i]); + if (!s) return NULL; + } + + for (i=0;i<ARRAY_SIZE(ncacn_options);i++) { + if (b->flags & ncacn_options[i].flag) { + s = talloc_asprintf_append_buffer(s, ",%s", ncacn_options[i].name); + if (!s) return NULL; + } + } + + s = talloc_asprintf_append_buffer(s, "]"); + + return s; +} + +/* + parse a binding string into a dcerpc_binding structure +*/ +_PUBLIC_ NTSTATUS dcerpc_parse_binding(TALLOC_CTX *mem_ctx, const char *s, struct dcerpc_binding **b_out) +{ + struct dcerpc_binding *b; + char *options; + char *p; + int i, j, comma_count; + + b = talloc(mem_ctx, struct dcerpc_binding); + if (!b) { + return NT_STATUS_NO_MEMORY; + } + + p = strchr(s, '@'); + + if (p && PTR_DIFF(p, s) == 36) { /* 36 is the length of a UUID */ + NTSTATUS status; + + status = GUID_from_string(s, &b->object.uuid); + + if (NT_STATUS_IS_ERR(status)) { + DEBUG(0, ("Failed parsing UUID\n")); + return status; + } + + s = p + 1; + } else { + ZERO_STRUCT(b->object); + } + + b->object.if_version = 0; + + p = strchr(s, ':'); + + if (p == NULL) { + b->transport = NCA_UNKNOWN; + } else { + char *type = talloc_strndup(mem_ctx, s, PTR_DIFF(p, s)); + if (!type) { + return NT_STATUS_NO_MEMORY; + } + + for (i=0;i<ARRAY_SIZE(transports);i++) { + if (strcasecmp(type, transports[i].name) == 0) { + b->transport = transports[i].transport; + break; + } + } + + if (i==ARRAY_SIZE(transports)) { + DEBUG(0,("Unknown dcerpc transport '%s'\n", type)); + return NT_STATUS_INVALID_PARAMETER; + } + + talloc_free(type); + + s = p+1; + } + + p = strchr(s, '['); + if (p) { + b->host = talloc_strndup(b, s, PTR_DIFF(p, s)); + options = talloc_strdup(mem_ctx, p+1); + if (options[strlen(options)-1] != ']') { + return NT_STATUS_INVALID_PARAMETER; + } + options[strlen(options)-1] = 0; + } else { + b->host = talloc_strdup(b, s); + options = NULL; + } + if (!b->host) { + return NT_STATUS_NO_MEMORY; + } + + b->target_hostname = b->host; + + b->options = NULL; + b->flags = 0; + b->assoc_group_id = 0; + b->endpoint = NULL; + + if (!options) { + *b_out = b; + return NT_STATUS_OK; + } + + comma_count = count_chars(options, ','); + + b->options = talloc_array(b, const char *, comma_count+2); + if (!b->options) { + return NT_STATUS_NO_MEMORY; + } + + for (i=0; (p = strchr(options, ',')); i++) { + b->options[i] = talloc_strndup(b, options, PTR_DIFF(p, options)); + if (!b->options[i]) { + return NT_STATUS_NO_MEMORY; + } + options = p+1; + } + b->options[i] = options; + b->options[i+1] = NULL; + + /* some options are pre-parsed for convenience */ + for (i=0;b->options[i];i++) { + for (j=0;j<ARRAY_SIZE(ncacn_options);j++) { + if (strcasecmp(ncacn_options[j].name, b->options[i]) == 0) { + int k; + b->flags |= ncacn_options[j].flag; + for (k=i;b->options[k];k++) { + b->options[k] = b->options[k+1]; + } + i--; + break; + } + } + } + + if (b->options[0]) { + /* Endpoint is first option */ + b->endpoint = b->options[0]; + if (strlen(b->endpoint) == 0) b->endpoint = NULL; + + for (i=0;b->options[i];i++) { + b->options[i] = b->options[i+1]; + } + } + + if (b->options[0] == NULL) + b->options = NULL; + + *b_out = b; + return NT_STATUS_OK; +} + +_PUBLIC_ NTSTATUS dcerpc_floor_get_lhs_data(struct epm_floor *epm_floor, struct ndr_syntax_id *syntax) +{ + TALLOC_CTX *mem_ctx = talloc_init("floor_get_lhs_data"); + struct ndr_pull *ndr = ndr_pull_init_blob(&epm_floor->lhs.lhs_data, mem_ctx, NULL); + enum ndr_err_code ndr_err; + uint16_t if_version=0; + + ndr->flags |= LIBNDR_FLAG_NOALIGN; + + ndr_err = ndr_pull_GUID(ndr, NDR_SCALARS | NDR_BUFFERS, &syntax->uuid); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(mem_ctx); + return ndr_map_error2ntstatus(ndr_err); + } + + ndr_err = ndr_pull_uint16(ndr, NDR_SCALARS, &if_version); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(mem_ctx); + return ndr_map_error2ntstatus(ndr_err); + } + + syntax->if_version = if_version; + + talloc_free(mem_ctx); + + return NT_STATUS_OK; +} + +static DATA_BLOB dcerpc_floor_pack_lhs_data(TALLOC_CTX *mem_ctx, const struct ndr_syntax_id *syntax) +{ + struct ndr_push *ndr = ndr_push_init_ctx(mem_ctx, NULL); + + ndr->flags |= LIBNDR_FLAG_NOALIGN; + + ndr_push_GUID(ndr, NDR_SCALARS | NDR_BUFFERS, &syntax->uuid); + ndr_push_uint16(ndr, NDR_SCALARS, syntax->if_version); + + return ndr_push_blob(ndr); +} + +const char *dcerpc_floor_get_rhs_data(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor) +{ + switch (epm_floor->lhs.protocol) { + case EPM_PROTOCOL_TCP: + if (epm_floor->rhs.tcp.port == 0) return NULL; + return talloc_asprintf(mem_ctx, "%d", epm_floor->rhs.tcp.port); + + case EPM_PROTOCOL_UDP: + if (epm_floor->rhs.udp.port == 0) return NULL; + return talloc_asprintf(mem_ctx, "%d", epm_floor->rhs.udp.port); + + case EPM_PROTOCOL_HTTP: + if (epm_floor->rhs.http.port == 0) return NULL; + return talloc_asprintf(mem_ctx, "%d", epm_floor->rhs.http.port); + + case EPM_PROTOCOL_IP: + return talloc_strdup(mem_ctx, epm_floor->rhs.ip.ipaddr); + + case EPM_PROTOCOL_NCACN: + return NULL; + + case EPM_PROTOCOL_NCADG: + return NULL; + + case EPM_PROTOCOL_SMB: + if (strlen(epm_floor->rhs.smb.unc) == 0) return NULL; + return talloc_strdup(mem_ctx, epm_floor->rhs.smb.unc); + + case EPM_PROTOCOL_PIPE: + if (strlen(epm_floor->rhs.pipe.path) == 0) return NULL; + return talloc_strdup(mem_ctx, epm_floor->rhs.pipe.path); + + case EPM_PROTOCOL_NETBIOS: + if (strlen(epm_floor->rhs.netbios.name) == 0) return NULL; + return talloc_strdup(mem_ctx, epm_floor->rhs.netbios.name); + + case EPM_PROTOCOL_NCALRPC: + return NULL; + + case EPM_PROTOCOL_VINES_SPP: + return talloc_asprintf(mem_ctx, "%d", epm_floor->rhs.vines_spp.port); + + case EPM_PROTOCOL_VINES_IPC: + return talloc_asprintf(mem_ctx, "%d", epm_floor->rhs.vines_ipc.port); + + case EPM_PROTOCOL_STREETTALK: + return talloc_strdup(mem_ctx, epm_floor->rhs.streettalk.streettalk); + + case EPM_PROTOCOL_UNIX_DS: + if (strlen(epm_floor->rhs.unix_ds.path) == 0) return NULL; + return talloc_strdup(mem_ctx, epm_floor->rhs.unix_ds.path); + + case EPM_PROTOCOL_NULL: + return NULL; + + default: + DEBUG(0,("Unsupported lhs protocol %d\n", epm_floor->lhs.protocol)); + break; + } + + return NULL; +} + +static NTSTATUS dcerpc_floor_set_rhs_data(TALLOC_CTX *mem_ctx, + struct epm_floor *epm_floor, + const char *data) +{ + switch (epm_floor->lhs.protocol) { + case EPM_PROTOCOL_TCP: + epm_floor->rhs.tcp.port = atoi(data); + return NT_STATUS_OK; + + case EPM_PROTOCOL_UDP: + epm_floor->rhs.udp.port = atoi(data); + return NT_STATUS_OK; + + case EPM_PROTOCOL_HTTP: + epm_floor->rhs.http.port = atoi(data); + return NT_STATUS_OK; + + case EPM_PROTOCOL_IP: + epm_floor->rhs.ip.ipaddr = talloc_strdup(mem_ctx, data); + NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.ip.ipaddr); + return NT_STATUS_OK; + + case EPM_PROTOCOL_NCACN: + epm_floor->rhs.ncacn.minor_version = 0; + return NT_STATUS_OK; + + case EPM_PROTOCOL_NCADG: + epm_floor->rhs.ncadg.minor_version = 0; + return NT_STATUS_OK; + + case EPM_PROTOCOL_SMB: + epm_floor->rhs.smb.unc = talloc_strdup(mem_ctx, data); + NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.smb.unc); + return NT_STATUS_OK; + + case EPM_PROTOCOL_PIPE: + epm_floor->rhs.pipe.path = talloc_strdup(mem_ctx, data); + NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.pipe.path); + return NT_STATUS_OK; + + case EPM_PROTOCOL_NETBIOS: + epm_floor->rhs.netbios.name = talloc_strdup(mem_ctx, data); + NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.netbios.name); + return NT_STATUS_OK; + + case EPM_PROTOCOL_NCALRPC: + return NT_STATUS_OK; + + case EPM_PROTOCOL_VINES_SPP: + epm_floor->rhs.vines_spp.port = atoi(data); + return NT_STATUS_OK; + + case EPM_PROTOCOL_VINES_IPC: + epm_floor->rhs.vines_ipc.port = atoi(data); + return NT_STATUS_OK; + + case EPM_PROTOCOL_STREETTALK: + epm_floor->rhs.streettalk.streettalk = talloc_strdup(mem_ctx, data); + NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.streettalk.streettalk); + return NT_STATUS_OK; + + case EPM_PROTOCOL_UNIX_DS: + epm_floor->rhs.unix_ds.path = talloc_strdup(mem_ctx, data); + NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.unix_ds.path); + return NT_STATUS_OK; + + case EPM_PROTOCOL_NULL: + return NT_STATUS_OK; + + default: + DEBUG(0,("Unsupported lhs protocol %d\n", epm_floor->lhs.protocol)); + break; + } + + return NT_STATUS_NOT_SUPPORTED; +} + +enum dcerpc_transport_t dcerpc_transport_by_endpoint_protocol(int prot) +{ + int i; + + /* Find a transport that has 'prot' as 4th protocol */ + for (i=0;i<ARRAY_SIZE(transports);i++) { + if (transports[i].num_protocols >= 2 && + transports[i].protseq[1] == prot) { + return transports[i].transport; + } + } + + /* Unknown transport */ + return (unsigned int)-1; +} + +_PUBLIC_ enum dcerpc_transport_t dcerpc_transport_by_tower(struct epm_tower *tower) +{ + int i; + + /* Find a transport that matches this tower */ + for (i=0;i<ARRAY_SIZE(transports);i++) { + int j; + if (transports[i].num_protocols != tower->num_floors - 2) { + continue; + } + + for (j = 0; j < transports[i].num_protocols; j++) { + if (transports[i].protseq[j] != tower->floors[j+2].lhs.protocol) { + break; + } + } + + if (j == transports[i].num_protocols) { + return transports[i].transport; + } + } + + /* Unknown transport */ + return (unsigned int)-1; +} + +_PUBLIC_ NTSTATUS dcerpc_binding_from_tower(TALLOC_CTX *mem_ctx, + struct epm_tower *tower, + struct dcerpc_binding **b_out) +{ + NTSTATUS status; + struct dcerpc_binding *binding; + + binding = talloc(mem_ctx, struct dcerpc_binding); + NT_STATUS_HAVE_NO_MEMORY(binding); + + ZERO_STRUCT(binding->object); + binding->options = NULL; + binding->host = NULL; + binding->target_hostname = NULL; + binding->flags = 0; + binding->assoc_group_id = 0; + + binding->transport = dcerpc_transport_by_tower(tower); + + if (binding->transport == (unsigned int)-1) { + return NT_STATUS_NOT_SUPPORTED; + } + + if (tower->num_floors < 1) { + return NT_STATUS_OK; + } + + /* Set object uuid */ + status = dcerpc_floor_get_lhs_data(&tower->floors[0], &binding->object); + + if (!NT_STATUS_IS_OK(status)) { + DEBUG(1, ("Error pulling object uuid and version: %s", nt_errstr(status))); + return status; + } + + /* Ignore floor 1, it contains the NDR version info */ + + binding->options = NULL; + + /* Set endpoint */ + if (tower->num_floors >= 4) { + binding->endpoint = dcerpc_floor_get_rhs_data(mem_ctx, &tower->floors[3]); + } else { + binding->endpoint = NULL; + } + + /* Set network address */ + if (tower->num_floors >= 5) { + binding->host = dcerpc_floor_get_rhs_data(mem_ctx, &tower->floors[4]); + NT_STATUS_HAVE_NO_MEMORY(binding->host); + binding->target_hostname = binding->host; + } + *b_out = binding; + return NT_STATUS_OK; +} + +_PUBLIC_ NTSTATUS dcerpc_binding_build_tower(TALLOC_CTX *mem_ctx, struct dcerpc_binding *binding, struct epm_tower *tower) +{ + const enum epm_protocol *protseq = NULL; + int num_protocols = -1, i; + NTSTATUS status; + + /* Find transport */ + for (i=0;i<ARRAY_SIZE(transports);i++) { + if (transports[i].transport == binding->transport) { + protseq = transports[i].protseq; + num_protocols = transports[i].num_protocols; + break; + } + } + + if (num_protocols == -1) { + DEBUG(0, ("Unable to find transport with id '%d'\n", binding->transport)); + return NT_STATUS_UNSUCCESSFUL; + } + + tower->num_floors = 2 + num_protocols; + tower->floors = talloc_array(mem_ctx, struct epm_floor, tower->num_floors); + + /* Floor 0 */ + tower->floors[0].lhs.protocol = EPM_PROTOCOL_UUID; + + tower->floors[0].lhs.lhs_data = dcerpc_floor_pack_lhs_data(mem_ctx, &binding->object); + + tower->floors[0].rhs.uuid.unknown = data_blob_talloc_zero(mem_ctx, 2); + + /* Floor 1 */ + tower->floors[1].lhs.protocol = EPM_PROTOCOL_UUID; + + tower->floors[1].lhs.lhs_data = dcerpc_floor_pack_lhs_data(mem_ctx, + &ndr_transfer_syntax); + + tower->floors[1].rhs.uuid.unknown = data_blob_talloc_zero(mem_ctx, 2); + + /* Floor 2 to num_protocols */ + for (i = 0; i < num_protocols; i++) { + tower->floors[2 + i].lhs.protocol = protseq[i]; + tower->floors[2 + i].lhs.lhs_data = data_blob_talloc(mem_ctx, NULL, 0); + ZERO_STRUCT(tower->floors[2 + i].rhs); + dcerpc_floor_set_rhs_data(mem_ctx, &tower->floors[2 + i], ""); + } + + /* The 4th floor contains the endpoint */ + if (num_protocols >= 2 && binding->endpoint) { + status = dcerpc_floor_set_rhs_data(mem_ctx, &tower->floors[3], binding->endpoint); + if (NT_STATUS_IS_ERR(status)) { + return status; + } + } + + /* The 5th contains the network address */ + if (num_protocols >= 3 && binding->host) { + if (is_ipaddress(binding->host)) { + status = dcerpc_floor_set_rhs_data(mem_ctx, &tower->floors[4], + binding->host); + } else { + /* note that we don't attempt to resolve the + name here - when we get a hostname here we + are in the client code, and want to put in + a wildcard all-zeros IP for the server to + fill in */ + status = dcerpc_floor_set_rhs_data(mem_ctx, &tower->floors[4], + "0.0.0.0"); + } + if (NT_STATUS_IS_ERR(status)) { + return status; + } + } + + return NT_STATUS_OK; +} diff --git a/source4/librpc/rpc/dcerpc_util.c b/source4/librpc/rpc/dcerpc_util.c index 3b8768ccc2..469c83788c 100644 --- a/source4/librpc/rpc/dcerpc_util.c +++ b/source4/librpc/rpc/dcerpc_util.c @@ -97,701 +97,6 @@ NTSTATUS ncacn_push_auth(DATA_BLOB *blob, TALLOC_CTX *mem_ctx, return NT_STATUS_OK; } -#define MAX_PROTSEQ 10 - -static const struct { - const char *name; - enum dcerpc_transport_t transport; - int num_protocols; - enum epm_protocol protseq[MAX_PROTSEQ]; -} transports[] = { - { "ncacn_np", NCACN_NP, 3, - { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_SMB, EPM_PROTOCOL_NETBIOS }}, - { "ncacn_ip_tcp", NCACN_IP_TCP, 3, - { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_TCP, EPM_PROTOCOL_IP } }, - { "ncacn_http", NCACN_HTTP, 3, - { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_HTTP, EPM_PROTOCOL_IP } }, - { "ncadg_ip_udp", NCACN_IP_UDP, 3, - { EPM_PROTOCOL_NCADG, EPM_PROTOCOL_UDP, EPM_PROTOCOL_IP } }, - { "ncalrpc", NCALRPC, 2, - { EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_PIPE } }, - { "ncacn_unix_stream", NCACN_UNIX_STREAM, 2, - { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_UNIX_DS } }, - { "ncadg_unix_dgram", NCADG_UNIX_DGRAM, 2, - { EPM_PROTOCOL_NCADG, EPM_PROTOCOL_UNIX_DS } }, - { "ncacn_at_dsp", NCACN_AT_DSP, 3, - { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_APPLETALK, EPM_PROTOCOL_DSP } }, - { "ncadg_at_ddp", NCADG_AT_DDP, 3, - { EPM_PROTOCOL_NCADG, EPM_PROTOCOL_APPLETALK, EPM_PROTOCOL_DDP } }, - { "ncacn_vns_ssp", NCACN_VNS_SPP, 3, - { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_STREETTALK, EPM_PROTOCOL_VINES_SPP } }, - { "ncacn_vns_ipc", NCACN_VNS_IPC, 3, - { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_STREETTALK, EPM_PROTOCOL_VINES_IPC }, }, - { "ncadg_ipx", NCADG_IPX, 2, - { EPM_PROTOCOL_NCADG, EPM_PROTOCOL_IPX }, - }, - { "ncacn_spx", NCACN_SPX, 3, - /* I guess some MS programmer confused the identifier for - * EPM_PROTOCOL_UUID (0x0D or 13) with the one for - * EPM_PROTOCOL_SPX (0x13) here. -- jelmer*/ - { EPM_PROTOCOL_NCACN, EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_UUID }, - }, -}; - -static const struct { - const char *name; - uint32_t flag; -} ncacn_options[] = { - {"sign", DCERPC_SIGN}, - {"seal", DCERPC_SEAL}, - {"connect", DCERPC_CONNECT}, - {"spnego", DCERPC_AUTH_SPNEGO}, - {"ntlm", DCERPC_AUTH_NTLM}, - {"krb5", DCERPC_AUTH_KRB5}, - {"validate", DCERPC_DEBUG_VALIDATE_BOTH}, - {"print", DCERPC_DEBUG_PRINT_BOTH}, - {"padcheck", DCERPC_DEBUG_PAD_CHECK}, - {"bigendian", DCERPC_PUSH_BIGENDIAN}, - {"smb2", DCERPC_SMB2} -}; - -const char *epm_floor_string(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor) -{ - struct ndr_syntax_id syntax; - NTSTATUS status; - - switch(epm_floor->lhs.protocol) { - case EPM_PROTOCOL_UUID: - status = dcerpc_floor_get_lhs_data(epm_floor, &syntax); - if (NT_STATUS_IS_OK(status)) { - /* lhs is used: UUID */ - char *uuidstr; - - if (GUID_equal(&syntax.uuid, &ndr_transfer_syntax.uuid)) { - return "NDR"; - } - - if (GUID_equal(&syntax.uuid, &ndr64_transfer_syntax.uuid)) { - return "NDR64"; - } - - uuidstr = GUID_string(mem_ctx, &syntax.uuid); - - return talloc_asprintf(mem_ctx, " uuid %s/0x%02x", uuidstr, syntax.if_version); - } else { /* IPX */ - return talloc_asprintf(mem_ctx, "IPX:%s", - data_blob_hex_string(mem_ctx, &epm_floor->rhs.uuid.unknown)); - } - - case EPM_PROTOCOL_NCACN: - return "RPC-C"; - - case EPM_PROTOCOL_NCADG: - return "RPC"; - - case EPM_PROTOCOL_NCALRPC: - return "NCALRPC"; - - case EPM_PROTOCOL_DNET_NSP: - return "DNET/NSP"; - - case EPM_PROTOCOL_IP: - return talloc_asprintf(mem_ctx, "IP:%s", epm_floor->rhs.ip.ipaddr); - - case EPM_PROTOCOL_PIPE: - return talloc_asprintf(mem_ctx, "PIPE:%s", epm_floor->rhs.pipe.path); - - case EPM_PROTOCOL_SMB: - return talloc_asprintf(mem_ctx, "SMB:%s", epm_floor->rhs.smb.unc); - - case EPM_PROTOCOL_UNIX_DS: - return talloc_asprintf(mem_ctx, "Unix:%s", epm_floor->rhs.unix_ds.path); - - case EPM_PROTOCOL_NETBIOS: - return talloc_asprintf(mem_ctx, "NetBIOS:%s", epm_floor->rhs.netbios.name); - - case EPM_PROTOCOL_NETBEUI: - return "NETBeui"; - - case EPM_PROTOCOL_SPX: - return "SPX"; - - case EPM_PROTOCOL_NB_IPX: - return "NB_IPX"; - - case EPM_PROTOCOL_HTTP: - return talloc_asprintf(mem_ctx, "HTTP:%d", epm_floor->rhs.http.port); - - case EPM_PROTOCOL_TCP: - return talloc_asprintf(mem_ctx, "TCP:%d", epm_floor->rhs.tcp.port); - - case EPM_PROTOCOL_UDP: - return talloc_asprintf(mem_ctx, "UDP:%d", epm_floor->rhs.udp.port); - - default: - return talloc_asprintf(mem_ctx, "UNK(%02x):", epm_floor->lhs.protocol); - } -} - - -/* - form a binding string from a binding structure -*/ -_PUBLIC_ char *dcerpc_binding_string(TALLOC_CTX *mem_ctx, const struct dcerpc_binding *b) -{ - char *s = talloc_strdup(mem_ctx, ""); - int i; - const char *t_name = NULL; - - if (b->transport != NCA_UNKNOWN) { - for (i=0;i<ARRAY_SIZE(transports);i++) { - if (transports[i].transport == b->transport) { - t_name = transports[i].name; - } - } - if (!t_name) { - return NULL; - } - } - - if (!GUID_all_zero(&b->object.uuid)) { - s = talloc_asprintf(s, "%s@", - GUID_string(mem_ctx, &b->object.uuid)); - } - - if (t_name != NULL) { - s = talloc_asprintf_append_buffer(s, "%s:", t_name); - if (s == NULL) { - return NULL; - } - } - - if (b->host) { - s = talloc_asprintf_append_buffer(s, "%s", b->host); - } - - if (!b->endpoint && !b->options && !b->flags) { - return s; - } - - s = talloc_asprintf_append_buffer(s, "["); - - if (b->endpoint) { - s = talloc_asprintf_append_buffer(s, "%s", b->endpoint); - } - - /* this is a *really* inefficent way of dealing with strings, - but this is rarely called and the strings are always short, - so I don't care */ - for (i=0;b->options && b->options[i];i++) { - s = talloc_asprintf_append_buffer(s, ",%s", b->options[i]); - if (!s) return NULL; - } - - for (i=0;i<ARRAY_SIZE(ncacn_options);i++) { - if (b->flags & ncacn_options[i].flag) { - s = talloc_asprintf_append_buffer(s, ",%s", ncacn_options[i].name); - if (!s) return NULL; - } - } - - s = talloc_asprintf_append_buffer(s, "]"); - - return s; -} - -/* - parse a binding string into a dcerpc_binding structure -*/ -_PUBLIC_ NTSTATUS dcerpc_parse_binding(TALLOC_CTX *mem_ctx, const char *s, struct dcerpc_binding **b_out) -{ - struct dcerpc_binding *b; - char *options; - char *p; - int i, j, comma_count; - - b = talloc(mem_ctx, struct dcerpc_binding); - if (!b) { - return NT_STATUS_NO_MEMORY; - } - - p = strchr(s, '@'); - - if (p && PTR_DIFF(p, s) == 36) { /* 36 is the length of a UUID */ - NTSTATUS status; - - status = GUID_from_string(s, &b->object.uuid); - - if (NT_STATUS_IS_ERR(status)) { - DEBUG(0, ("Failed parsing UUID\n")); - return status; - } - - s = p + 1; - } else { - ZERO_STRUCT(b->object); - } - - b->object.if_version = 0; - - p = strchr(s, ':'); - - if (p == NULL) { - b->transport = NCA_UNKNOWN; - } else { - char *type = talloc_strndup(mem_ctx, s, PTR_DIFF(p, s)); - if (!type) { - return NT_STATUS_NO_MEMORY; - } - - for (i=0;i<ARRAY_SIZE(transports);i++) { - if (strcasecmp(type, transports[i].name) == 0) { - b->transport = transports[i].transport; - break; - } - } - - if (i==ARRAY_SIZE(transports)) { - DEBUG(0,("Unknown dcerpc transport '%s'\n", type)); - return NT_STATUS_INVALID_PARAMETER; - } - - talloc_free(type); - - s = p+1; - } - - p = strchr(s, '['); - if (p) { - b->host = talloc_strndup(b, s, PTR_DIFF(p, s)); - options = talloc_strdup(mem_ctx, p+1); - if (options[strlen(options)-1] != ']') { - return NT_STATUS_INVALID_PARAMETER; - } - options[strlen(options)-1] = 0; - } else { - b->host = talloc_strdup(b, s); - options = NULL; - } - if (!b->host) { - return NT_STATUS_NO_MEMORY; - } - - b->target_hostname = b->host; - - b->options = NULL; - b->flags = 0; - b->assoc_group_id = 0; - b->endpoint = NULL; - - if (!options) { - *b_out = b; - return NT_STATUS_OK; - } - - comma_count = count_chars(options, ','); - - b->options = talloc_array(b, const char *, comma_count+2); - if (!b->options) { - return NT_STATUS_NO_MEMORY; - } - - for (i=0; (p = strchr(options, ',')); i++) { - b->options[i] = talloc_strndup(b, options, PTR_DIFF(p, options)); - if (!b->options[i]) { - return NT_STATUS_NO_MEMORY; - } - options = p+1; - } - b->options[i] = options; - b->options[i+1] = NULL; - - /* some options are pre-parsed for convenience */ - for (i=0;b->options[i];i++) { - for (j=0;j<ARRAY_SIZE(ncacn_options);j++) { - if (strcasecmp(ncacn_options[j].name, b->options[i]) == 0) { - int k; - b->flags |= ncacn_options[j].flag; - for (k=i;b->options[k];k++) { - b->options[k] = b->options[k+1]; - } - i--; - break; - } - } - } - - if (b->options[0]) { - /* Endpoint is first option */ - b->endpoint = b->options[0]; - if (strlen(b->endpoint) == 0) b->endpoint = NULL; - - for (i=0;b->options[i];i++) { - b->options[i] = b->options[i+1]; - } - } - - if (b->options[0] == NULL) - b->options = NULL; - - *b_out = b; - return NT_STATUS_OK; -} - -_PUBLIC_ NTSTATUS dcerpc_floor_get_lhs_data(struct epm_floor *epm_floor, struct ndr_syntax_id *syntax) -{ - TALLOC_CTX *mem_ctx = talloc_init("floor_get_lhs_data"); - struct ndr_pull *ndr = ndr_pull_init_blob(&epm_floor->lhs.lhs_data, mem_ctx, NULL); - enum ndr_err_code ndr_err; - uint16_t if_version=0; - - ndr->flags |= LIBNDR_FLAG_NOALIGN; - - ndr_err = ndr_pull_GUID(ndr, NDR_SCALARS | NDR_BUFFERS, &syntax->uuid); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(mem_ctx); - return ndr_map_error2ntstatus(ndr_err); - } - - ndr_err = ndr_pull_uint16(ndr, NDR_SCALARS, &if_version); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(mem_ctx); - return ndr_map_error2ntstatus(ndr_err); - } - - syntax->if_version = if_version; - - talloc_free(mem_ctx); - - return NT_STATUS_OK; -} - -static DATA_BLOB dcerpc_floor_pack_lhs_data(TALLOC_CTX *mem_ctx, const struct ndr_syntax_id *syntax) -{ - struct ndr_push *ndr = ndr_push_init_ctx(mem_ctx, NULL); - - ndr->flags |= LIBNDR_FLAG_NOALIGN; - - ndr_push_GUID(ndr, NDR_SCALARS | NDR_BUFFERS, &syntax->uuid); - ndr_push_uint16(ndr, NDR_SCALARS, syntax->if_version); - - return ndr_push_blob(ndr); -} - -const char *dcerpc_floor_get_rhs_data(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor) -{ - switch (epm_floor->lhs.protocol) { - case EPM_PROTOCOL_TCP: - if (epm_floor->rhs.tcp.port == 0) return NULL; - return talloc_asprintf(mem_ctx, "%d", epm_floor->rhs.tcp.port); - - case EPM_PROTOCOL_UDP: - if (epm_floor->rhs.udp.port == 0) return NULL; - return talloc_asprintf(mem_ctx, "%d", epm_floor->rhs.udp.port); - - case EPM_PROTOCOL_HTTP: - if (epm_floor->rhs.http.port == 0) return NULL; - return talloc_asprintf(mem_ctx, "%d", epm_floor->rhs.http.port); - - case EPM_PROTOCOL_IP: - return talloc_strdup(mem_ctx, epm_floor->rhs.ip.ipaddr); - - case EPM_PROTOCOL_NCACN: - return NULL; - - case EPM_PROTOCOL_NCADG: - return NULL; - - case EPM_PROTOCOL_SMB: - if (strlen(epm_floor->rhs.smb.unc) == 0) return NULL; - return talloc_strdup(mem_ctx, epm_floor->rhs.smb.unc); - - case EPM_PROTOCOL_PIPE: - if (strlen(epm_floor->rhs.pipe.path) == 0) return NULL; - return talloc_strdup(mem_ctx, epm_floor->rhs.pipe.path); - - case EPM_PROTOCOL_NETBIOS: - if (strlen(epm_floor->rhs.netbios.name) == 0) return NULL; - return talloc_strdup(mem_ctx, epm_floor->rhs.netbios.name); - - case EPM_PROTOCOL_NCALRPC: - return NULL; - - case EPM_PROTOCOL_VINES_SPP: - return talloc_asprintf(mem_ctx, "%d", epm_floor->rhs.vines_spp.port); - - case EPM_PROTOCOL_VINES_IPC: - return talloc_asprintf(mem_ctx, "%d", epm_floor->rhs.vines_ipc.port); - - case EPM_PROTOCOL_STREETTALK: - return talloc_strdup(mem_ctx, epm_floor->rhs.streettalk.streettalk); - - case EPM_PROTOCOL_UNIX_DS: - if (strlen(epm_floor->rhs.unix_ds.path) == 0) return NULL; - return talloc_strdup(mem_ctx, epm_floor->rhs.unix_ds.path); - - case EPM_PROTOCOL_NULL: - return NULL; - - default: - DEBUG(0,("Unsupported lhs protocol %d\n", epm_floor->lhs.protocol)); - break; - } - - return NULL; -} - -static NTSTATUS dcerpc_floor_set_rhs_data(TALLOC_CTX *mem_ctx, - struct epm_floor *epm_floor, - const char *data) -{ - switch (epm_floor->lhs.protocol) { - case EPM_PROTOCOL_TCP: - epm_floor->rhs.tcp.port = atoi(data); - return NT_STATUS_OK; - - case EPM_PROTOCOL_UDP: - epm_floor->rhs.udp.port = atoi(data); - return NT_STATUS_OK; - - case EPM_PROTOCOL_HTTP: - epm_floor->rhs.http.port = atoi(data); - return NT_STATUS_OK; - - case EPM_PROTOCOL_IP: - epm_floor->rhs.ip.ipaddr = talloc_strdup(mem_ctx, data); - NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.ip.ipaddr); - return NT_STATUS_OK; - - case EPM_PROTOCOL_NCACN: - epm_floor->rhs.ncacn.minor_version = 0; - return NT_STATUS_OK; - - case EPM_PROTOCOL_NCADG: - epm_floor->rhs.ncadg.minor_version = 0; - return NT_STATUS_OK; - - case EPM_PROTOCOL_SMB: - epm_floor->rhs.smb.unc = talloc_strdup(mem_ctx, data); - NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.smb.unc); - return NT_STATUS_OK; - - case EPM_PROTOCOL_PIPE: - epm_floor->rhs.pipe.path = talloc_strdup(mem_ctx, data); - NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.pipe.path); - return NT_STATUS_OK; - - case EPM_PROTOCOL_NETBIOS: - epm_floor->rhs.netbios.name = talloc_strdup(mem_ctx, data); - NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.netbios.name); - return NT_STATUS_OK; - - case EPM_PROTOCOL_NCALRPC: - return NT_STATUS_OK; - - case EPM_PROTOCOL_VINES_SPP: - epm_floor->rhs.vines_spp.port = atoi(data); - return NT_STATUS_OK; - - case EPM_PROTOCOL_VINES_IPC: - epm_floor->rhs.vines_ipc.port = atoi(data); - return NT_STATUS_OK; - - case EPM_PROTOCOL_STREETTALK: - epm_floor->rhs.streettalk.streettalk = talloc_strdup(mem_ctx, data); - NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.streettalk.streettalk); - return NT_STATUS_OK; - - case EPM_PROTOCOL_UNIX_DS: - epm_floor->rhs.unix_ds.path = talloc_strdup(mem_ctx, data); - NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.unix_ds.path); - return NT_STATUS_OK; - - case EPM_PROTOCOL_NULL: - return NT_STATUS_OK; - - default: - DEBUG(0,("Unsupported lhs protocol %d\n", epm_floor->lhs.protocol)); - break; - } - - return NT_STATUS_NOT_SUPPORTED; -} - -enum dcerpc_transport_t dcerpc_transport_by_endpoint_protocol(int prot) -{ - int i; - - /* Find a transport that has 'prot' as 4th protocol */ - for (i=0;i<ARRAY_SIZE(transports);i++) { - if (transports[i].num_protocols >= 2 && - transports[i].protseq[1] == prot) { - return transports[i].transport; - } - } - - /* Unknown transport */ - return (unsigned int)-1; -} - -_PUBLIC_ enum dcerpc_transport_t dcerpc_transport_by_tower(struct epm_tower *tower) -{ - int i; - - /* Find a transport that matches this tower */ - for (i=0;i<ARRAY_SIZE(transports);i++) { - int j; - if (transports[i].num_protocols != tower->num_floors - 2) { - continue; - } - - for (j = 0; j < transports[i].num_protocols; j++) { - if (transports[i].protseq[j] != tower->floors[j+2].lhs.protocol) { - break; - } - } - - if (j == transports[i].num_protocols) { - return transports[i].transport; - } - } - - /* Unknown transport */ - return (unsigned int)-1; -} - -_PUBLIC_ NTSTATUS dcerpc_binding_from_tower(TALLOC_CTX *mem_ctx, - struct epm_tower *tower, - struct dcerpc_binding **b_out) -{ - NTSTATUS status; - struct dcerpc_binding *binding; - - binding = talloc(mem_ctx, struct dcerpc_binding); - NT_STATUS_HAVE_NO_MEMORY(binding); - - ZERO_STRUCT(binding->object); - binding->options = NULL; - binding->host = NULL; - binding->target_hostname = NULL; - binding->flags = 0; - binding->assoc_group_id = 0; - - binding->transport = dcerpc_transport_by_tower(tower); - - if (binding->transport == (unsigned int)-1) { - return NT_STATUS_NOT_SUPPORTED; - } - - if (tower->num_floors < 1) { - return NT_STATUS_OK; - } - - /* Set object uuid */ - status = dcerpc_floor_get_lhs_data(&tower->floors[0], &binding->object); - - if (!NT_STATUS_IS_OK(status)) { - DEBUG(1, ("Error pulling object uuid and version: %s", nt_errstr(status))); - return status; - } - - /* Ignore floor 1, it contains the NDR version info */ - - binding->options = NULL; - - /* Set endpoint */ - if (tower->num_floors >= 4) { - binding->endpoint = dcerpc_floor_get_rhs_data(mem_ctx, &tower->floors[3]); - } else { - binding->endpoint = NULL; - } - - /* Set network address */ - if (tower->num_floors >= 5) { - binding->host = dcerpc_floor_get_rhs_data(mem_ctx, &tower->floors[4]); - NT_STATUS_HAVE_NO_MEMORY(binding->host); - binding->target_hostname = binding->host; - } - *b_out = binding; - return NT_STATUS_OK; -} - -_PUBLIC_ NTSTATUS dcerpc_binding_build_tower(TALLOC_CTX *mem_ctx, struct dcerpc_binding *binding, struct epm_tower *tower) -{ - const enum epm_protocol *protseq = NULL; - int num_protocols = -1, i; - NTSTATUS status; - - /* Find transport */ - for (i=0;i<ARRAY_SIZE(transports);i++) { - if (transports[i].transport == binding->transport) { - protseq = transports[i].protseq; - num_protocols = transports[i].num_protocols; - break; - } - } - - if (num_protocols == -1) { - DEBUG(0, ("Unable to find transport with id '%d'\n", binding->transport)); - return NT_STATUS_UNSUCCESSFUL; - } - - tower->num_floors = 2 + num_protocols; - tower->floors = talloc_array(mem_ctx, struct epm_floor, tower->num_floors); - - /* Floor 0 */ - tower->floors[0].lhs.protocol = EPM_PROTOCOL_UUID; - - tower->floors[0].lhs.lhs_data = dcerpc_floor_pack_lhs_data(mem_ctx, &binding->object); - - tower->floors[0].rhs.uuid.unknown = data_blob_talloc_zero(mem_ctx, 2); - - /* Floor 1 */ - tower->floors[1].lhs.protocol = EPM_PROTOCOL_UUID; - - tower->floors[1].lhs.lhs_data = dcerpc_floor_pack_lhs_data(mem_ctx, - &ndr_transfer_syntax); - - tower->floors[1].rhs.uuid.unknown = data_blob_talloc_zero(mem_ctx, 2); - - /* Floor 2 to num_protocols */ - for (i = 0; i < num_protocols; i++) { - tower->floors[2 + i].lhs.protocol = protseq[i]; - tower->floors[2 + i].lhs.lhs_data = data_blob_talloc(mem_ctx, NULL, 0); - ZERO_STRUCT(tower->floors[2 + i].rhs); - dcerpc_floor_set_rhs_data(mem_ctx, &tower->floors[2 + i], ""); - } - - /* The 4th floor contains the endpoint */ - if (num_protocols >= 2 && binding->endpoint) { - status = dcerpc_floor_set_rhs_data(mem_ctx, &tower->floors[3], binding->endpoint); - if (NT_STATUS_IS_ERR(status)) { - return status; - } - } - - /* The 5th contains the network address */ - if (num_protocols >= 3 && binding->host) { - if (is_ipaddress(binding->host)) { - status = dcerpc_floor_set_rhs_data(mem_ctx, &tower->floors[4], - binding->host); - } else { - /* note that we don't attempt to resolve the - name here - when we get a hostname here we - are in the client code, and want to put in - a wildcard all-zeros IP for the server to - fill in */ - status = dcerpc_floor_set_rhs_data(mem_ctx, &tower->floors[4], - "0.0.0.0"); - } - if (NT_STATUS_IS_ERR(status)) { - return status; - } - } - - return NT_STATUS_OK; -} - struct epm_map_binding_state { struct dcerpc_binding *binding; diff --git a/source4/nbt_server/config.mk b/source4/nbt_server/config.mk index b510a6e2d6..cb2b47d15e 100644 --- a/source4/nbt_server/config.mk +++ b/source4/nbt_server/config.mk @@ -3,76 +3,71 @@ ####################### # Start SUBSYSTEM WINSDB [SUBSYSTEM::WINSDB] -OBJ_FILES = \ - wins/winsdb.o \ - wins/wins_hook.o PRIVATE_PROTO_HEADER = wins/winsdb_proto.h PUBLIC_DEPENDENCIES = \ LIBLDB # End SUBSYSTEM WINSDB ####################### +WINSDB_OBJ_FILES = $(addprefix nbt_server/wins/, winsdb.o wins_hook.o) + ####################### # Start MODULE ldb_wins_ldb [MODULE::ldb_wins_ldb] SUBSYSTEM = LIBLDB OUTPUT_TYPE = SHARED_LIBRARY -INIT_FUNCTION = &ldb_wins_ldb_module_ops -OBJ_FILES = \ - wins/wins_ldb.o +INIT_FUNCTION = LDB_MODULE(wins_ldb) PRIVATE_DEPENDENCIES = \ LIBNETIF LIBSAMBA-HOSTCONFIG LIBSAMBA-UTIL # End MODULE ldb_wins_ldb ####################### +ldb_wins_ldb_OBJ_FILES = nbt_server/wins/wins_ldb.o + ####################### # Start SUBSYSTEM NBTD_WINS [SUBSYSTEM::NBTD_WINS] -OBJ_FILES = \ - wins/winsserver.o \ - wins/winsclient.o \ - wins/winswack.o \ - wins/wins_dns_proxy.o PRIVATE_PROTO_HEADER = wins/winsserver_proto.h PRIVATE_DEPENDENCIES = \ LIBCLI_NBT WINSDB # End SUBSYSTEM NBTD_WINS ####################### +NBTD_WINS_OBJ_FILES = $(addprefix nbt_server/wins/, winsserver.o winsclient.o winswack.o wins_dns_proxy.o) + ####################### # Start SUBSYSTEM NBTD_DGRAM [SUBSYSTEM::NBTD_DGRAM] PRIVATE_PROTO_HEADER = dgram/proto.h -OBJ_FILES = \ - dgram/request.o \ - dgram/netlogon.o \ - dgram/ntlogon.o \ - dgram/browse.o PRIVATE_DEPENDENCIES = \ LIBCLI_DGRAM # End SUBSYSTEM NBTD_DGRAM ####################### +NBTD_DGRAM_OBJ_FILES = $(addprefix nbt_server/dgram/, request.o netlogon.o ntlogon.o browse.o) + ####################### # Start SUBSYSTEM NBTD [SUBSYSTEM::NBT_SERVER] -OBJ_FILES = \ +PRIVATE_PROTO_HEADER = nbt_server_proto.h +PRIVATE_DEPENDENCIES = \ + LIBCLI_NBT NBTD_WINS NBTD_DGRAM +# End SUBSYSTEM NBTD +####################### + +NBT_SERVER_OBJ_FILES = $(addprefix nbt_server/, \ interfaces.o \ register.o \ query.o \ nodestatus.o \ defense.o \ packet.o \ - irpc.o -PRIVATE_PROTO_HEADER = nbt_server_proto.h -PRIVATE_DEPENDENCIES = \ - LIBCLI_NBT NBTD_WINS NBTD_DGRAM -# End SUBSYSTEM NBTD -####################### + irpc.o) [MODULE::service_nbtd] INIT_FUNCTION = server_service_nbtd_init SUBSYSTEM = service -OBJ_FILES = \ - nbt_server.o PRIVATE_DEPENDENCIES = NBT_SERVER process_model + +service_nbtd_OBJ_FILES = \ + nbt_server/nbt_server.o diff --git a/source4/nsswitch/config.m4 b/source4/nsswitch/config.m4 index a3b7412841..207b7fa53f 100644 --- a/source4/nsswitch/config.m4 +++ b/source4/nsswitch/config.m4 @@ -4,8 +4,7 @@ case "$host_os" in *linux*) SMB_LIBRARY(nss_winbind, [nsswitch/winbind_nss_linux.o], - [LIBWINBIND-CLIENT], - [2],[2]) + [LIBWINBIND-CLIENT]) ;; *) ;; diff --git a/source4/nsswitch/config.mk b/source4/nsswitch/config.mk index c7c70c141e..a0ceff0033 100644 --- a/source4/nsswitch/config.mk +++ b/source4/nsswitch/config.mk @@ -1,13 +1,12 @@ [SUBSYSTEM::LIBWINBIND-CLIENT] -OBJ_FILES = wb_common.o PRIVATE_DEPENDENCIES = SOCKET_WRAPPER +LIBWINBIND-CLIENT_OBJ_FILES = nsswitch/wb_common.o + ################################# # Start BINARY nsstest [BINARY::nsstest] INSTALLDIR = BINDIR -OBJ_FILES = \ - nsstest.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-UTIL \ LIBREPLACE_EXT \ @@ -15,12 +14,12 @@ PRIVATE_DEPENDENCIES = \ # End BINARY nsstest ################################# +nsstest_OBJ_FILES = nsswitch/nsstest.o + ################################# # Start BINARY wbinfo [BINARY::wbinfo] INSTALLDIR = BINDIR -OBJ_FILES = \ - wbinfo.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-UTIL \ LIBREPLACE_EXT \ @@ -30,3 +29,6 @@ PRIVATE_DEPENDENCIES = \ LIBWINBIND-CLIENT # End BINARY nsstest ################################# + +wbinfo_OBJ_FILES = \ + nsswitch/wbinfo.o diff --git a/source4/ntptr/config.mk b/source4/ntptr/config.mk index 4c1f46ff17..dda4c29444 100644 --- a/source4/ntptr/config.mk +++ b/source4/ntptr/config.mk @@ -5,21 +5,22 @@ [MODULE::ntptr_simple_ldb] INIT_FUNCTION = ntptr_simple_ldb_init SUBSYSTEM = ntptr -OBJ_FILES = \ - simple_ldb/ntptr_simple_ldb.o PRIVATE_DEPENDENCIES = \ LIBLDB NDR_SPOOLSS DCERPC_COMMON # End MODULE ntptr_simple_ldb ################################################ +ntptr_simple_ldb_OBJ_FILES = ntptr/simple_ldb/ntptr_simple_ldb.o + ################################################ # Start SUBSYSTEM ntptr [SUBSYSTEM::ntptr] PRIVATE_PROTO_HEADER = ntptr_proto.h -OBJ_FILES = \ - ntptr_base.o \ - ntptr_interface.o PUBLIC_DEPENDENCIES = DCERPC_COMMON # # End SUBSYSTEM ntptr ################################################ + +ntptr_OBJ_FILES = \ + ntptr/ntptr_base.o \ + ntptr/ntptr_interface.o diff --git a/source4/ntptr/ntptr_base.c b/source4/ntptr/ntptr_base.c index 26e192d64b..0000337cb0 100644 --- a/source4/ntptr/ntptr_base.c +++ b/source4/ntptr/ntptr_base.c @@ -71,6 +71,7 @@ NTSTATUS ntptr_register(const void *_ops) NTSTATUS ntptr_init(struct loadparm_context *lp_ctx) { + extern NTSTATUS ntptr_simple_ldb_init(void); init_module_fn static_init[] = { STATIC_ntptr_MODULES }; init_module_fn *shared_init = load_samba_modules(NULL, lp_ctx, "ntptr"); diff --git a/source4/ntvfs/common/config.mk b/source4/ntvfs/common/config.mk index 3963ebcdee..c66257b73f 100644 --- a/source4/ntvfs/common/config.mk +++ b/source4/ntvfs/common/config.mk @@ -2,17 +2,10 @@ # Start LIBRARY ntvfs_common [SUBSYSTEM::ntvfs_common] PRIVATE_PROTO_HEADER = proto.h -OBJ_FILES = \ - init.o \ - brlock.o \ - brlock_tdb.o \ - opendb.o \ - opendb_tdb.o \ - notify.o -PUBLIC_DEPENDENCIES = \ - NDR_OPENDB NDR_NOTIFY \ - sys_notify sys_lease \ - share LIBDBWRAP +PUBLIC_DEPENDENCIES = NDR_OPENDB NDR_NOTIFY sys_notify sys_lease share LIBDBWRAP PRIVATE_DEPENDENCIES = brlock_ctdb opendb_ctdb # End LIBRARY ntvfs_common ################################################ + +ntvfs_common_OBJ_FILES = $(addprefix ntvfs/common/, init.o brlock.o brlock_tdb.o opendb.o opendb_tdb.o notify.o) + diff --git a/source4/ntvfs/config.mk b/source4/ntvfs/config.mk index 2f57c787ef..93cbf64d8f 100644 --- a/source4/ntvfs/config.mk +++ b/source4/ntvfs/config.mk @@ -9,25 +9,24 @@ mkinclude sysdep/config.mk [MODULE::ntvfs_cifs] INIT_FUNCTION = ntvfs_cifs_init SUBSYSTEM = ntvfs -OBJ_FILES = \ - cifs/vfs_cifs.o PRIVATE_DEPENDENCIES = \ LIBCLI_SMB LIBCLI_RAW # End MODULE ntvfs_cifs ################################################ +ntvfs_cifs_OBJ_FILES = ntvfs/cifs/vfs_cifs.o + ################################################ # Start MODULE ntvfs_simple [MODULE::ntvfs_simple] INIT_FUNCTION = ntvfs_simple_init SUBSYSTEM = ntvfs PRIVATE_PROTO_HEADER = simple/proto.h -OBJ_FILES = \ - simple/vfs_simple.o \ - simple/svfs_util.o # End MODULE ntvfs_simple ################################################ +ntvfs_simple_OBJ_FILES = $(addprefix ntvfs/simple/, vfs_simple.o svfs_util.o) + ################################################ # Start MODULE ntvfs_cifsposix [MODULE::ntvfs_cifsposix] @@ -35,57 +34,50 @@ OBJ_FILES = \ INIT_FUNCTION = ntvfs_cifs_posix_init SUBSYSTEM = ntvfs PRIVATE_PROTO_HEADER = cifs_posix_cli/proto.h -OBJ_FILES = \ - cifs_posix_cli/vfs_cifs_posix.o \ - cifs_posix_cli/svfs_util.o # End MODULE ntvfs_cifsposix ################################################ +ntvfs_cifsposix_OBJ_FILES = \ + $(addprefix ntvfs/cifs_posix_cli/, vfs_cifs_posix.o svfs_util.o) + ################################################ # Start MODULE ntvfs_print [MODULE::ntvfs_print] INIT_FUNCTION = ntvfs_print_init SUBSYSTEM = ntvfs -OBJ_FILES = \ - print/vfs_print.o # End MODULE ntvfs_print ################################################ +ntvfs_print_OBJ_FILES = ntvfs/print/vfs_print.o + ################################################ # Start MODULE ntvfs_ipc [MODULE::ntvfs_ipc] SUBSYSTEM = ntvfs INIT_FUNCTION = ntvfs_ipc_init PRIVATE_PROTO_HEADER = ipc/proto.h -OBJ_FILES = \ - ipc/vfs_ipc.o \ - ipc/ipc_rap.o \ - ipc/rap_server.o PRIVATE_DEPENDENCIES = dcerpc_server DCERPC_COMMON # End MODULE ntvfs_ipc ################################################ +ntvfs_ipc_OBJ_FILES = $(addprefix ntvfs/ipc/, vfs_ipc.o ipc_rap.o rap_server.o) ################################################ # Start MODULE ntvfs_nbench [MODULE::ntvfs_nbench] SUBSYSTEM = ntvfs INIT_FUNCTION = ntvfs_nbench_init -OBJ_FILES = \ - nbench/vfs_nbench.o # End MODULE ntvfs_nbench ################################################ +ntvfs_nbench_OBJ_FILES = ntvfs/nbench/vfs_nbench.o ################################################ # Start SUBSYSTEM NTVFS [SUBSYSTEM::ntvfs] PRIVATE_PROTO_HEADER = ntvfs_proto.h -OBJ_FILES = \ - ntvfs_base.o \ - ntvfs_generic.o \ - ntvfs_interface.o \ - ntvfs_util.o + +ntvfs_OBJ_FILES = $(addprefix ntvfs/, ntvfs_base.o ntvfs_generic.o ntvfs_interface.o ntvfs_util.o) # PUBLIC_HEADERS += ntvfs/ntvfs.h # diff --git a/source4/ntvfs/ntvfs_base.c b/source4/ntvfs/ntvfs_base.c index 51faa44372..8f574fa96b 100644 --- a/source4/ntvfs/ntvfs_base.c +++ b/source4/ntvfs/ntvfs_base.c @@ -204,6 +204,16 @@ NTSTATUS ntvfs_init_connection(TALLOC_CTX *mem_ctx, struct share_config *scfg, e NTSTATUS ntvfs_init(struct loadparm_context *lp_ctx) { static bool initialized = false; + extern NTSTATUS ntvfs_posix_init(void); + extern NTSTATUS ntvfs_cifs_init(void); + extern NTSTATUS ntvfs_nbench_init(void); + extern NTSTATUS ntvfs_unixuid_init(void); + extern NTSTATUS ntvfs_ipc_init(void); + extern NTSTATUS pvfs_acl_nfs4_init(void); + extern NTSTATUS pvfs_acl_xattr_init(void); + extern NTSTATUS ntvfs_print_init(void); + extern NTSTATUS ntvfs_simple_init(void); + extern NTSTATUS ntvfs_cifs_posix_init(void); init_module_fn static_init[] = { STATIC_ntvfs_MODULES }; init_module_fn *shared_init; diff --git a/source4/ntvfs/ntvfs_generic.c b/source4/ntvfs/ntvfs_generic.c index e1a86c07c0..fee3269eaf 100644 --- a/source4/ntvfs/ntvfs_generic.c +++ b/source4/ntvfs/ntvfs_generic.c @@ -1214,7 +1214,8 @@ static NTSTATUS ntvfs_map_read_finish(struct ntvfs_module_context *ntvfs, break; case RAW_READ_SMB2: rd->smb2.out.data.length= rd2->generic.out.nread; - rd->smb2.out.unknown1 = 0; + rd->smb2.out.remaining = 0; + rd->smb2.out.reserved = 0; break; default: return NT_STATUS_INVALID_LEVEL; diff --git a/source4/ntvfs/posix/config.mk b/source4/ntvfs/posix/config.mk index 88048c2af7..865a0ffd4a 100644 --- a/source4/ntvfs/posix/config.mk +++ b/source4/ntvfs/posix/config.mk @@ -3,30 +3,31 @@ [MODULE::pvfs_acl_xattr] INIT_FUNCTION = pvfs_acl_xattr_init SUBSYSTEM = ntvfs -OBJ_FILES = \ - pvfs_acl_xattr.o PRIVATE_DEPENDENCIES = NDR_XATTR ntvfs_posix # End MODULE pvfs_acl_xattr ################################################ +pvfs_acl_xattr_OBJ_FILES = ntvfs/posix/pvfs_acl_xattr.o + ################################################ # Start MODULE pvfs_acl_nfs4 [MODULE::pvfs_acl_nfs4] INIT_FUNCTION = pvfs_acl_nfs4_init SUBSYSTEM = ntvfs -OBJ_FILES = \ - pvfs_acl_nfs4.o PRIVATE_DEPENDENCIES = NDR_NFS4ACL SAMDB ntvfs_posix # End MODULE pvfs_acl_nfs4 ################################################ +pvfs_acl_nfs4_OBJ_FILES = ntvfs/posix/pvfs_acl_nfs4.o + ################################################ [MODULE::pvfs_aio] SUBSYSTEM = ntvfs -OBJ_FILES = pvfs_aio.o PRIVATE_DEPENDENCIES = LIBAIO_LINUX ################################################ +pvfs_aio_OBJ_FILES = ntvfs/posix/pvfs_aio.o + ################################################ # Start MODULE ntvfs_posix [MODULE::ntvfs_posix] @@ -34,7 +35,13 @@ SUBSYSTEM = ntvfs OUTPUT_TYPE = MERGED_OBJ INIT_FUNCTION = ntvfs_posix_init PRIVATE_PROTO_HEADER = vfs_posix_proto.h -OBJ_FILES = \ +#PRIVATE_DEPENDENCIES = pvfs_acl_xattr pvfs_acl_nfs4 +PRIVATE_DEPENDENCIES = NDR_XATTR WRAP_XATTR BLKID ntvfs_common MESSAGING pvfs_aio \ + LIBWBCLIENT +# End MODULE ntvfs_posix +################################################ + +ntvfs_posix_OBJ_FILES = $(addprefix ntvfs/posix/, \ vfs_posix.o \ pvfs_util.o \ pvfs_search.o \ @@ -62,8 +69,5 @@ OBJ_FILES = \ pvfs_acl.o \ pvfs_notify.o \ xattr_system.o \ - xattr_tdb.o -#PRIVATE_DEPENDENCIES = pvfs_acl_xattr pvfs_acl_nfs4 -PRIVATE_DEPENDENCIES = NDR_XATTR WRAP_XATTR BLKID ntvfs_common MESSAGING pvfs_aio -# End MODULE ntvfs_posix -################################################ + xattr_tdb.o) + diff --git a/source4/ntvfs/sysdep/config.mk b/source4/ntvfs/sysdep/config.mk index 048226efad..de445bff7b 100644 --- a/source4/ntvfs/sysdep/config.mk +++ b/source4/ntvfs/sysdep/config.mk @@ -3,34 +3,24 @@ [MODULE::sys_notify_inotify] SUBSYSTEM = sys_notify INIT_FUNCTION = sys_notify_inotify_init -OBJ_FILES = \ - inotify.o # End MODULE sys_notify_inotify ################################################ +sys_notify_inotify_OBJ_FILES = ntvfs/sysdep/inotify.o + ################################################ # Start SUBSYSTEM sys_notify [SUBSYSTEM::sys_notify] -OBJ_FILES = \ - sys_notify.o -PUBLIC_DEPENDENCIES = # End SUBSYSTEM sys_notify ################################################ -################################################ -# Start MODULE sys_lease_linux +sys_notify_OBJ_FILES = ntvfs/sysdep/sys_notify.o + [MODULE::sys_lease_linux] SUBSYSTEM = sys_lease -INIT_FUNCTION = sys_lease_linux_init -OBJ_FILES = \ - sys_lease_linux.o -# End MODULE sys_lease_linux -################################################ -################################################ -# Start SUBSYSTEM sys_lease +sys_lease_linux_OBJ_FILES = ntvfs/sysdep/sys_lease_linux.o + [SUBSYSTEM::sys_lease] -OBJ_FILES = \ - sys_lease.o -# End SUBSYSTEM sys_lease -################################################ + +sys_lease_OBJ_FILES = ntvfs/sysdep/sys_lease.o diff --git a/source4/ntvfs/sysdep/sys_lease.c b/source4/ntvfs/sysdep/sys_lease.c index 28dd27a708..b8a165aa51 100644 --- a/source4/ntvfs/sysdep/sys_lease.c +++ b/source4/ntvfs/sysdep/sys_lease.c @@ -112,6 +112,7 @@ _PUBLIC_ NTSTATUS sys_lease_register(const struct sys_lease_ops *backend) _PUBLIC_ NTSTATUS sys_lease_init(void) { static bool initialized = false; + extern NTSTATUS sys_lease_linux_init(void); init_module_fn static_init[] = { STATIC_sys_lease_MODULES }; diff --git a/source4/ntvfs/sysdep/sys_notify.c b/source4/ntvfs/sysdep/sys_notify.c index 84ba745f5b..eb5cc3793f 100644 --- a/source4/ntvfs/sysdep/sys_notify.c +++ b/source4/ntvfs/sysdep/sys_notify.c @@ -124,6 +124,7 @@ _PUBLIC_ NTSTATUS sys_notify_register(struct sys_notify_backend *backend) _PUBLIC_ NTSTATUS sys_notify_init(void) { static bool initialized = false; + extern NTSTATUS sys_notify_inotify_init(void); init_module_fn static_init[] = { STATIC_sys_notify_MODULES }; diff --git a/source4/ntvfs/unixuid/config.mk b/source4/ntvfs/unixuid/config.mk index 91976c6811..968e56bde4 100644 --- a/source4/ntvfs/unixuid/config.mk +++ b/source4/ntvfs/unixuid/config.mk @@ -3,8 +3,8 @@ [MODULE::ntvfs_unixuid] INIT_FUNCTION = ntvfs_unixuid_init SUBSYSTEM = ntvfs -OBJ_FILES = \ - vfs_unixuid.o PRIVATE_DEPENDENCIES = SAMDB NSS_WRAPPER # End MODULE ntvfs_unixuid ################################################ + +ntvfs_unixuid_OBJ_FILES = ntvfs/unixuid/vfs_unixuid.o diff --git a/source4/param/config.mk b/source4/param/config.mk index b4182480a9..42cb6f3c1c 100644 --- a/source4/param/config.mk +++ b/source4/param/config.mk @@ -1,30 +1,34 @@ [LIBRARY::LIBSAMBA-HOSTCONFIG] -VERSION = 0.0.1 -SO_VERSION = 0 -OBJ_FILES = loadparm.o \ - generic.o \ - util.o \ - ../lib/version.o -PC_FILE = samba-hostconfig.pc PUBLIC_DEPENDENCIES = LIBSAMBA-UTIL PRIVATE_DEPENDENCIES = DYNCONFIG LIBREPLACE_EXT CHARSET -PRIVATE_PROTO_HEADER = proto.h + +LIBSAMBA-HOSTCONFIG_VERSION = 0.0.1 +LIBSAMBA-HOSTCONFIG-SOVERSION = 0 + +LIBSAMBA-HOSTCONFIG_OBJ_FILES = param/loadparm.o \ + param/generic.o \ + param/util.o \ + lib/version.o PUBLIC_HEADERS += param/param.h +PC_FILES += param/samba-hostconfig.pc + [SUBSYSTEM::PROVISION] -OBJ_FILES = provision.o PRIVATE_DEPENDENCIES = LIBPYTHON +PROVISION_OBJ_FILES = param/provision.o + ################################# # Start SUBSYSTEM share [SUBSYSTEM::share] PRIVATE_PROTO_HEADER = share_proto.h -OBJ_FILES = share.o PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL # End SUBSYSTEM share ################################# +share_OBJ_FILES = param/share.o + PUBLIC_HEADERS += param/share.h ################################################ @@ -32,25 +36,30 @@ PUBLIC_HEADERS += param/share.h [MODULE::share_classic] SUBSYSTEM = share INIT_FUNCTION = share_classic_init -OBJ_FILES = share_classic.o PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL # End MODULE share_classic ################################################ +share_classic_OBJ_FILES = param/share_classic.o + ################################################ # Start MODULE share_ldb [MODULE::share_ldb] SUBSYSTEM = share INIT_FUNCTION = share_ldb_init -OBJ_FILES = share_ldb.o PRIVATE_DEPENDENCIES = LIBLDB LDB_WRAP # End MODULE share_ldb ################################################ +share_ldb_OBJ_FILES = param/share_ldb.o + [SUBSYSTEM::SECRETS] -OBJ_FILES = secrets.o PRIVATE_DEPENDENCIES = LIBLDB TDB_WRAP UTIL_TDB NDR_SECURITY +SECRETS_OBJ_FILES = param/secrets.o + [PYTHON::param] SWIG_FILE = param.i PRIVATE_DEPENDENCIES = LIBSAMBA-HOSTCONFIG + +param_OBJ_FILES = param/param_wrap.o diff --git a/source4/param/provision.c b/source4/param/provision.c index 70ef618b6e..0e54acf9e4 100644 --- a/source4/param/provision.c +++ b/source4/param/provision.c @@ -76,6 +76,9 @@ NTSTATUS provision_bare(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, settings->targetdir)); parameters = PyDict_New(); + PyDict_SetItemString(parameters, "smbconf", + PyString_FromString(lp_configfile(lp_ctx))); + PyDict_SetItemString(parameters, "rootdn", PyString_FromString(settings->root_dn_str)); if (settings->targetdir != NULL) @@ -129,7 +132,6 @@ NTSTATUS provision_bare(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, result->domaindn = talloc_strdup(mem_ctx, PyString_AsString(PyObject_GetAttrString(py_result, "domaindn"))); /* FIXME paths */ - /* FIXME samdb */ result->lp_ctx = lp_from_py_object(PyObject_GetAttrString(py_result, "lp")); result->samdb = ldb_context_from_py_object(PyObject_GetAttrString(py_result, "samdb")); diff --git a/source4/param/share.c b/source4/param/share.c index bc2999b03d..51134d8970 100644 --- a/source4/param/share.c +++ b/source4/param/share.c @@ -146,6 +146,8 @@ NTSTATUS share_get_context_by_name(TALLOC_CTX *mem_ctx, const char *backend_name */ NTSTATUS share_init(void) { + extern NTSTATUS share_ldb_init(void); + extern NTSTATUS share_classic_init(void); init_module_fn static_init[] = { STATIC_share_MODULES }; run_init_functions(static_init); diff --git a/source4/pidl/config.mk b/source4/pidl/config.mk index cdc3843d28..25cea495a7 100644 --- a/source4/pidl/config.mk +++ b/source4/pidl/config.mk @@ -1,11 +1,16 @@ pidl/Makefile: pidl/Makefile.PL - cd pidl && $(PERL) Makefile.PL + cd pidl && $(PERL) Makefile.PL PREFIX=$(prefix) pidl-testcov: pidl/Makefile cd pidl && cover -test installpidl:: pidl/Makefile - $(MAKE) -C pidl install_vendor VENDORPREFIX=$(prefix) + $(MAKE) -C pidl install_vendor VENDORPREFIX=$(prefix) \ + INSTALLVENDORLIB=$(libdir) \ + INSTALLVENDORBIN=$(bindir) \ + INSTALLVENDORSCRIPT=$(bindir) \ + INSTALLVENDORMAN1DIR=$(mandir)/man1 \ + INSTALLVENDORMAN3DIR=$(mandir)/man3 ifeq ($(HAVE_PERL_EXTUTILS_MAKEMAKER),1) install:: installpidl diff --git a/source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm b/source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm index 7a2575b897..87ed29b54e 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm @@ -9,7 +9,7 @@ package Parse::Pidl::Samba3::ClientNDR; use Exporter; @ISA = qw(Exporter); -@EXPORT_OK = qw(ParseFunction $res $res_hdr); +@EXPORT_OK = qw(ParseFunction $res $res_hdr ParseOutputArgument); use strict; use Parse::Pidl qw(fatal warning); @@ -73,6 +73,40 @@ sub HeaderProperties($$) } } +sub ParseOutputArgument($$$) +{ + my ($self, $fn, $e) = @_; + my $level = 0; + + fatal($e->{ORIGINAL}, "[out] argument is not a pointer or array") if ($e->{LEVELS}[0]->{TYPE} ne "POINTER" and $e->{LEVELS}[0]->{TYPE} ne "ARRAY"); + + if ($e->{LEVELS}[0]->{TYPE} eq "POINTER") { + $level = 1; + if ($e->{LEVELS}[0]->{POINTER_TYPE} ne "ref") { + $self->pidl("if ($e->{NAME} && r.out.$e->{NAME}) {"); + $self->indent; + } + } + + if ($e->{LEVELS}[$level]->{TYPE} eq "ARRAY") { + # This is a call to GenerateFunctionInEnv intentionally. + # Since the data is being copied into a user-provided data + # structure, the user should be able to know the size beforehand + # to allocate a structure of the right size. + my $env = GenerateFunctionInEnv($fn, "r."); + my $size_is = ParseExpr($e->{LEVELS}[$level]->{SIZE_IS}, $env, $e->{ORIGINAL}); + $self->pidl("memcpy($e->{NAME}, r.out.$e->{NAME}, $size_is * sizeof(*$e->{NAME}));"); + } else { + $self->pidl("*$e->{NAME} = *r.out.$e->{NAME};"); + } + + if ($e->{LEVELS}[0]->{TYPE} eq "POINTER") { + if ($e->{LEVELS}[0]->{POINTER_TYPE} ne "ref") { + $self->deindent; + $self->pidl("}"); + } + } +} sub ParseFunction($$$) { @@ -147,36 +181,9 @@ sub ParseFunction($$$) $self->pidl("/* Return variables */"); foreach my $e (@{$fn->{ELEMENTS}}) { next unless (grep(/out/, @{$e->{DIRECTION}})); - my $level = 0; - fatal($e->{ORIGINAL}, "[out] argument is not a pointer or array") if ($e->{LEVELS}[0]->{TYPE} ne "POINTER" and $e->{LEVELS}[0]->{TYPE} ne "ARRAY"); - - if ($e->{LEVELS}[0]->{TYPE} eq "POINTER") { - $level = 1; - if ($e->{LEVELS}[0]->{POINTER_TYPE} ne "ref") { - $self->pidl("if ($e->{NAME} && r.out.$e->{NAME}) {"); - $self->indent; - } - } + $self->ParseOutputArgument($fn, $e); - if ($e->{LEVELS}[$level]->{TYPE} eq "ARRAY") { - # This is a call to GenerateFunctionInEnv intentionally. - # Since the data is being copied into a user-provided data - # structure, the user should be able to know the size beforehand - # to allocate a structure of the right size. - my $env = GenerateFunctionInEnv($fn, "r."); - my $size_is = ParseExpr($e->{LEVELS}[$level]->{SIZE_IS}, $env, $e->{ORIGINAL}); - $self->pidl("memcpy($e->{NAME}, r.out.$e->{NAME}, $size_is);"); - } else { - $self->pidl("*$e->{NAME} = *r.out.$e->{NAME};"); - } - - if ($e->{LEVELS}[0]->{TYPE} eq "POINTER") { - if ($e->{LEVELS}[0]->{POINTER_TYPE} ne "ref") { - $self->deindent; - $self->pidl("}"); - } - } } $self->pidl(""); diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm b/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm index acaea99f6d..2d12da358c 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm @@ -952,16 +952,15 @@ sub ConvertObjectToPythonLevel($$$$$) $self->pidl("}"); } } elsif ($l->{TYPE} eq "ARRAY") { - if (is_charset_array($e, $l)) { + my $pl = GetPrevLevel($e, $l); + if ($pl && $pl->{TYPE} eq "POINTER") { $var_name = get_pointer_to($var_name); + } + + if (is_charset_array($e, $l)) { # FIXME: Use Unix charset setting rather than utf-8 $self->pidl("$py_var = PyUnicode_Decode($var_name, strlen($var_name), \"utf-8\", \"ignore\");"); } else { - my $pl = GetPrevLevel($e, $l); - if ($pl && $pl->{TYPE} eq "POINTER") { - $var_name = get_pointer_to($var_name); - } - die("No SIZE_IS for array $var_name") unless (defined($l->{SIZE_IS})); my $length = $l->{SIZE_IS}; if (defined($l->{LENGTH_IS})) { diff --git a/source4/pidl/tests/samba3-cli.pl b/source4/pidl/tests/samba3-cli.pl index f5b51b7d34..80725d28cf 100755 --- a/source4/pidl/tests/samba3-cli.pl +++ b/source4/pidl/tests/samba3-cli.pl @@ -4,12 +4,12 @@ use strict; use warnings; -use Test::More tests => 8; +use Test::More tests => 9; use FindBin qw($RealBin); use lib "$RealBin"; use Util; use Parse::Pidl::Util qw(MyDumper); -use Parse::Pidl::Samba3::ClientNDR qw(ParseFunction); +use Parse::Pidl::Samba3::ClientNDR qw(ParseFunction ParseOutputArgument); use Parse::Pidl::Samba4::Header qw(GenerateFunctionInEnv GenerateFunctionOutEnv); # Make sure GenerateFunctionInEnv and GenerateFunctionOutEnv work @@ -117,3 +117,12 @@ is($x->{res}, } "); + +$x = new Parse::Pidl::Samba3::ClientNDR(); + +$fn = { NAME => "bar", ELEMENTS => [ ], RETURN_TYPE => "WERROR" }; +my $e = { NAME => "foo", ORIGINAL => { FILE => "f", LINE => -1 }, + LEVELS => [ { TYPE => "ARRAY", SIZE_IS => "mysize" }, { TYPE => "DATA", DATA_TYPE => "int" } ]}; + +$x->ParseOutputArgument($fn, $e); +is($x->{res}, "memcpy(foo, r.out.foo, mysize * sizeof(*foo));\n"); diff --git a/source4/rpc_server/config.mk b/source4/rpc_server/config.mk index d6d77dd0d9..807853fa16 100644 --- a/source4/rpc_server/config.mk +++ b/source4/rpc_server/config.mk @@ -4,80 +4,78 @@ # Start SUBSYSTEM DCERPC_COMMON [SUBSYSTEM::DCERPC_COMMON] PRIVATE_PROTO_HEADER = common/proto.h -OBJ_FILES = \ - common/server_info.o \ - common/share_info.o # # End SUBSYSTEM DCERPC_COMMON ################################################ +DCERPC_COMMON_OBJ_FILES = $(addprefix rpc_server/common/, server_info.o share_info.o) + +PUBLIC_HEADERS += rpc_server/common/common.h + ################################################ # Start MODULE dcerpc_rpcecho [MODULE::dcerpc_rpcecho] INIT_FUNCTION = dcerpc_server_rpcecho_init SUBSYSTEM = dcerpc_server -OBJ_FILES = \ - echo/rpc_echo.o PRIVATE_DEPENDENCIES = NDR_ECHO # End MODULE dcerpc_rpcecho ################################################ +dcerpc_rpcecho_OBJ_FILES = rpc_server/echo/rpc_echo.o + ################################################ # Start MODULE dcerpc_epmapper [MODULE::dcerpc_epmapper] INIT_FUNCTION = dcerpc_server_epmapper_init SUBSYSTEM = dcerpc_server -OBJ_FILES = \ - epmapper/rpc_epmapper.o PRIVATE_DEPENDENCIES = NDR_EPMAPPER # End MODULE dcerpc_epmapper ################################################ +dcerpc_epmapper_OBJ_FILES = rpc_server/epmapper/rpc_epmapper.o + ################################################ # Start MODULE dcerpc_remote [MODULE::dcerpc_remote] INIT_FUNCTION = dcerpc_server_remote_init SUBSYSTEM = dcerpc_server -OBJ_FILES = \ - remote/dcesrv_remote.o PRIVATE_DEPENDENCIES = \ LIBCLI_SMB NDR_TABLE # End MODULE dcerpc_remote ################################################ +dcerpc_remote_OBJ_FILES = rpc_server/remote/dcesrv_remote.o + ################################################ # Start MODULE dcerpc_srvsvc [MODULE::dcerpc_srvsvc] INIT_FUNCTION = dcerpc_server_srvsvc_init PRIVATE_PROTO_HEADER = srvsvc/proto.h SUBSYSTEM = dcerpc_server -OBJ_FILES = \ - srvsvc/dcesrv_srvsvc.o \ - srvsvc/srvsvc_ntvfs.o PRIVATE_DEPENDENCIES = \ DCERPC_COMMON NDR_SRVSVC share # End MODULE dcerpc_srvsvc ################################################ +dcerpc_srvsvc_OBJ_FILES = $(addprefix rpc_server/srvsvc/, dcesrv_srvsvc.o srvsvc_ntvfs.o) + ################################################ # Start MODULE dcerpc_wkssvc [MODULE::dcerpc_wkssvc] INIT_FUNCTION = dcerpc_server_wkssvc_init SUBSYSTEM = dcerpc_server -OBJ_FILES = \ - wkssvc/dcesrv_wkssvc.o PRIVATE_DEPENDENCIES = \ DCERPC_COMMON NDR_WKSSVC # End MODULE dcerpc_wkssvc ################################################ +dcerpc_wkssvc_OBJ_FILES = rpc_server/wkssvc/dcesrv_wkssvc.o + ################################################ # Start MODULE dcerpc_unixinfo [MODULE::dcerpc_unixinfo] INIT_FUNCTION = dcerpc_server_unixinfo_init SUBSYSTEM = dcerpc_server -OBJ_FILES = \ - unixinfo/dcesrv_unixinfo.o PRIVATE_DEPENDENCIES = \ DCERPC_COMMON \ SAMDB \ @@ -87,15 +85,14 @@ PRIVATE_DEPENDENCIES = \ # End MODULE dcerpc_unixinfo ################################################ +dcerpc_unixinfo_OBJ_FILES = rpc_server/unixinfo/dcesrv_unixinfo.o + ################################################ # Start MODULE dcesrv_samr [MODULE::dcesrv_samr] INIT_FUNCTION = dcerpc_server_samr_init PRIVATE_PROTO_HEADER = samr/proto.h SUBSYSTEM = dcerpc_server -OBJ_FILES = \ - samr/dcesrv_samr.o \ - samr/samr_password.o PRIVATE_DEPENDENCIES = \ SAMDB \ DCERPC_COMMON \ @@ -103,26 +100,26 @@ PRIVATE_DEPENDENCIES = \ # End MODULE dcesrv_samr ################################################ +dcesrv_samr_OBJ_FILES = $(addprefix rpc_server/samr/, dcesrv_samr.o samr_password.o) + ################################################ # Start MODULE dcerpc_winreg [MODULE::dcerpc_winreg] INIT_FUNCTION = dcerpc_server_winreg_init SUBSYSTEM = dcerpc_server OUTPUT_TYPE = MERGED_OBJ -OBJ_FILES = \ - winreg/rpc_winreg.o PRIVATE_DEPENDENCIES = \ registry NDR_WINREG # End MODULE dcerpc_winreg ################################################ +dcerpc_winreg_OBJ_FILES = rpc_server/winreg/rpc_winreg.o + ################################################ # Start MODULE dcerpc_netlogon [MODULE::dcerpc_netlogon] INIT_FUNCTION = dcerpc_server_netlogon_init SUBSYSTEM = dcerpc_server -OBJ_FILES = \ - netlogon/dcerpc_netlogon.o PRIVATE_DEPENDENCIES = \ DCERPC_COMMON \ SCHANNELDB \ @@ -131,16 +128,14 @@ PRIVATE_DEPENDENCIES = \ # End MODULE dcerpc_netlogon ################################################ +dcerpc_netlogon_OBJ_FILES = rpc_server/netlogon/dcerpc_netlogon.o + ################################################ # Start MODULE dcerpc_lsa [MODULE::dcerpc_lsarpc] INIT_FUNCTION = dcerpc_server_lsa_init SUBSYSTEM = dcerpc_server PRIVATE_PROTO_HEADER= lsa/proto.h -OBJ_FILES = \ - lsa/dcesrv_lsa.o \ - lsa/lsa_init.o \ - lsa/lsa_lookup.o PRIVATE_DEPENDENCIES = \ SAMDB \ DCERPC_COMMON \ @@ -150,14 +145,15 @@ PRIVATE_DEPENDENCIES = \ # End MODULE dcerpc_lsa ################################################ +dcerpc_lsarpc_OBJ_FILES = $(addprefix rpc_server/lsa/, dcesrv_lsa.o lsa_init.o lsa_lookup.o) + + ################################################ # Start MODULE dcerpc_spoolss [MODULE::dcerpc_spoolss] INIT_FUNCTION = dcerpc_server_spoolss_init SUBSYSTEM = dcerpc_server OUTPUT_TYPE = MERGED_OBJ -OBJ_FILES = \ - spoolss/dcesrv_spoolss.o PRIVATE_DEPENDENCIES = \ DCERPC_COMMON \ NDR_SPOOLSS \ @@ -166,13 +162,13 @@ PRIVATE_DEPENDENCIES = \ # End MODULE dcerpc_spoolss ################################################ +dcerpc_spoolss_OBJ_FILES = rpc_server/spoolss/dcesrv_spoolss.o + ################################################ # Start MODULE dcerpc_drsuapi [MODULE::dcerpc_drsuapi] INIT_FUNCTION = dcerpc_server_drsuapi_init SUBSYSTEM = dcerpc_server -OBJ_FILES = \ - drsuapi/dcesrv_drsuapi.o PRIVATE_DEPENDENCIES = \ SAMDB \ DCERPC_COMMON \ @@ -180,20 +176,23 @@ PRIVATE_DEPENDENCIES = \ # End MODULE dcerpc_drsuapi ################################################ +dcerpc_drsuapi_OBJ_FILES = rpc_server/drsuapi/dcesrv_drsuapi.o + ################################################ # Start SUBSYSTEM dcerpc_server [SUBSYSTEM::dcerpc_server] PRIVATE_PROTO_HEADER = dcerpc_server_proto.h -OBJ_FILES = \ - dcerpc_server.o \ - dcesrv_auth.o \ - dcesrv_mgmt.o \ - handles.o PRIVATE_DEPENDENCIES = \ LIBCLI_AUTH \ LIBNDR \ dcerpc -# + +dcerpc_server_OBJ_FILES = $(addprefix rpc_server/, \ + dcerpc_server.o \ + dcesrv_auth.o \ + dcesrv_mgmt.o \ + handles.o) + # End SUBSYSTEM DCERPC ################################################ @@ -201,6 +200,7 @@ PUBLIC_HEADERS += rpc_server/dcerpc_server.h [MODULE::DCESRV] INIT_FUNCTION = server_service_rpc_init -OBJ_FILES = service_rpc.o SUBSYSTEM = service PRIVATE_DEPENDENCIES = dcerpc_server + +DCESRV_OBJ_FILES = rpc_server/service_rpc.o diff --git a/source4/rpc_server/service_rpc.c b/source4/rpc_server/service_rpc.c index ddcf1c2a99..e81b8cd0aa 100644 --- a/source4/rpc_server/service_rpc.c +++ b/source4/rpc_server/service_rpc.c @@ -459,6 +459,18 @@ failed: NTSTATUS server_service_rpc_init(void) { + extern NTSTATUS dcerpc_server_wkssvc_init(void); + extern NTSTATUS dcerpc_server_drsuapi_init(void); + extern NTSTATUS dcerpc_server_winreg_init(void); + extern NTSTATUS dcerpc_server_spoolss_init(void); + extern NTSTATUS dcerpc_server_epmapper_init(void); + extern NTSTATUS dcerpc_server_srvsvc_init(void); + extern NTSTATUS dcerpc_server_netlogon_init(void); + extern NTSTATUS dcerpc_server_rpcecho_init(void); + extern NTSTATUS dcerpc_server_unixinfo_init(void); + extern NTSTATUS dcerpc_server_samr_init(void); + extern NTSTATUS dcerpc_server_remote_init(void); + extern NTSTATUS dcerpc_server_lsa_init(void); init_module_fn static_init[] = { STATIC_dcerpc_server_MODULES }; init_module_fn *shared_init = load_samba_modules(NULL, global_loadparm, "dcerpc_server"); diff --git a/source4/scripting/bin/subunitrun b/source4/scripting/bin/subunitrun index 11ac426589..fbbffde42c 100755 --- a/source4/scripting/bin/subunitrun +++ b/source4/scripting/bin/subunitrun @@ -20,6 +20,25 @@ from subunit import SubunitTestRunner import sys from unittest import TestProgram +import optparse +import os +import param +import samba.getopt as options +import samba.tests + +parser = optparse.OptionParser("subunitrun [options] <tests>") +credopts = options.CredentialsOptions(parser) +parser.add_option_group(credopts) +sambaopts = options.SambaOptions(parser) +parser.add_option_group(sambaopts) +parser.add_option_group(options.VersionOptions(parser)) + +args = parser.parse_args()[1] + +samba.tests.cmdline_loadparm = sambaopts.get_loadparm() +samba.tests.cmdline_credentials = credopts.get_credentials(samba.tests.cmdline_loadparm) + +param.cvar.default_config = samba.tests.cmdline_loadparm runner = SubunitTestRunner() -TestProgram(module=None, argv=sys.argv, testRunner=runner) +program = TestProgram(module=None, argv=[sys.argv[0]] + args, testRunner=runner) diff --git a/source4/scripting/ejs/config.mk b/source4/scripting/ejs/config.mk index ea64d24eea..cadd71673c 100644 --- a/source4/scripting/ejs/config.mk +++ b/source4/scripting/ejs/config.mk @@ -1,84 +1,85 @@ [SUBSYSTEM::EJSRPC] -OBJ_FILES = \ - ejsrpc.o + +EJSRPC_OBJ_FILES = scripting/ejs/ejsrpc.o [MODULE::smbcalls_config] -OBJ_FILES = smbcalls_config.o OUTPUT_TYPE = MERGED_OBJ SUBSYSTEM = smbcalls INIT_FUNCTION = smb_setup_ejs_config +smbcalls_config_OBJ_FILES = scripting/ejs/smbcalls_config.o + [MODULE::smbcalls_ldb] -OBJ_FILES = smbcalls_ldb.o OUTPUT_TYPE = MERGED_OBJ SUBSYSTEM = smbcalls INIT_FUNCTION = smb_setup_ejs_ldb PRIVATE_DEPENDENCIES = LIBLDB SAMDB LIBNDR +smbcalls_ldb_OBJ_FILES = scripting/ejs/smbcalls_ldb.o + [MODULE::smbcalls_reg] -OBJ_FILES = smbcalls_reg.o SUBSYSTEM = smbcalls OUTPUT_TYPE = MERGED_OBJ INIT_FUNCTION = smb_setup_ejs_reg PRIVATE_DEPENDENCIES = registry SAMDB LIBNDR +smbcalls_reg_OBJ_FILES = scripting/ejs/smbcalls_reg.o + [MODULE::smbcalls_nbt] -OBJ_FILES = smbcalls_nbt.o SUBSYSTEM = smbcalls OUTPUT_TYPE = MERGED_OBJ INIT_FUNCTION = smb_setup_ejs_nbt +smbcalls_nbt_OBJ_FILES = scripting/ejs/smbcalls_nbt.o + [MODULE::smbcalls_rand] -OBJ_FILES = smbcalls_rand.o SUBSYSTEM = smbcalls OUTPUT_TYPE = MERGED_OBJ INIT_FUNCTION = smb_setup_ejs_random +smbcalls_rand_OBJ_FILES = scripting/ejs/smbcalls_rand.o + [MODULE::smbcalls_nss] -OBJ_FILES = smbcalls_nss.o SUBSYSTEM = smbcalls OUTPUT_TYPE = MERGED_OBJ INIT_FUNCTION = smb_setup_ejs_nss PRIVATE_DEPENDENCIES = NSS_WRAPPER +smbcalls_nss_OBJ_FILES = scripting/ejs/smbcalls_nss.o + [MODULE::smbcalls_data] -OBJ_FILES = smbcalls_data.o SUBSYSTEM = smbcalls OUTPUT_TYPE = MERGED_OBJ INIT_FUNCTION = smb_setup_ejs_datablob +smbcalls_data_OBJ_FILES = scripting/ejs/smbcalls_data.o + [MODULE::smbcalls_auth] -OBJ_FILES = smbcalls_auth.o OUTPUT_TYPE = MERGED_OBJ SUBSYSTEM = smbcalls INIT_FUNCTION = smb_setup_ejs_auth PRIVATE_DEPENDENCIES = auth +smbcalls_auth_OBJ_FILES = scripting/ejs/smbcalls_auth.o + [MODULE::smbcalls_string] -OBJ_FILES = smbcalls_string.o SUBSYSTEM = smbcalls OUTPUT_TYPE = MERGED_OBJ INIT_FUNCTION = smb_setup_ejs_string +smbcalls_string_OBJ_FILES = scripting/ejs/smbcalls_string.o + [MODULE::smbcalls_sys] -OBJ_FILES = smbcalls_sys.o SUBSYSTEM = smbcalls OUTPUT_TYPE = MERGED_OBJ INIT_FUNCTION = smb_setup_ejs_system +smbcalls_sys_OBJ_FILES = scripting/ejs/smbcalls_sys.o + mkinclude ejsnet/config.mk [SUBSYSTEM::smbcalls] PRIVATE_PROTO_HEADER = proto.h -OBJ_FILES = \ - smbcalls.o \ - smbcalls_cli.o \ - smbcalls_rpc.o \ - smbcalls_options.o \ - smbcalls_creds.o \ - smbcalls_param.o \ - mprutil.o \ - literal.o PRIVATE_DEPENDENCIES = \ EJS LIBSAMBA-UTIL \ EJSRPC MESSAGING \ @@ -87,11 +88,21 @@ PRIVATE_DEPENDENCIES = \ dcerpc \ NDR_TABLE +smbcalls_OBJ_FILES = $(addprefix scripting/ejs/, \ + smbcalls.o \ + smbcalls_cli.o \ + smbcalls_rpc.o \ + smbcalls_options.o \ + smbcalls_creds.o \ + smbcalls_param.o \ + mprutil.o \ + literal.o) + ####################### # Start BINARY SMBSCRIPT [BINARY::smbscript] -OBJ_FILES = \ - smbscript.o PRIVATE_DEPENDENCIES = EJS LIBSAMBA-UTIL smbcalls LIBSAMBA-HOSTCONFIG # End BINARY SMBSCRIPT ####################### + +smbscript_OBJ_FILES = scripting/ejs/smbscript.o diff --git a/source4/scripting/ejs/ejsnet/config.mk b/source4/scripting/ejs/ejsnet/config.mk index 249a33121d..85a5b2bf09 100644 --- a/source4/scripting/ejs/ejsnet/config.mk +++ b/source4/scripting/ejs/ejsnet/config.mk @@ -1,11 +1,13 @@ [MODULE::smbcalls_net] -OBJ_FILES = \ - net_ctx.o \ - net_user.o \ - mpr_user.o \ - net_host.o \ - mpr_host.o SUBSYSTEM = smbcalls INIT_FUNCTION = smb_setup_ejs_net PRIVATE_PROTO_HEADER = proto.h PRIVATE_DEPENDENCIES = LIBSAMBA-NET LIBCLI_SMB CREDENTIALS + +smbcalls_net_OBJ_FILES = $(addprefix scripting/ejs/ejsnet/, \ + net_ctx.o \ + net_user.o \ + mpr_user.o \ + net_host.o \ + mpr_host.o) + diff --git a/source4/scripting/ejs/smbcalls.c b/source4/scripting/ejs/smbcalls.c index 63a80e17db..b1a2f6a37b 100644 --- a/source4/scripting/ejs/smbcalls.c +++ b/source4/scripting/ejs/smbcalls.c @@ -173,6 +173,32 @@ _PUBLIC_ void ejs_exception(const char *reason) */ void smb_setup_ejs_functions(void (*exception_handler)(const char *)) { + extern NTSTATUS ejs_init_security(void); + extern NTSTATUS ejs_init_initshutdown(void); + extern NTSTATUS smb_setup_ejs_reg(void); + extern NTSTATUS smb_setup_ejs_string(void); + extern NTSTATUS ejs_init_lsarpc(void); + extern NTSTATUS ejs_init_rpcecho(void); + extern NTSTATUS ejs_init_winreg(void); + extern NTSTATUS smb_setup_ejs_random(void); + extern NTSTATUS smb_setup_ejs_config(void); + extern NTSTATUS ejs_init_misc(void); + extern NTSTATUS ejs_init_netdfs(void); + extern NTSTATUS smb_setup_ejs_datablob(void); + extern NTSTATUS smb_setup_ejs_auth(void); + extern NTSTATUS smb_setup_ejs_nss(void); + extern NTSTATUS ejs_init_samr(void); + extern NTSTATUS ejs_init_wkssvc(void); + extern NTSTATUS smb_setup_ejs_system(void); + extern NTSTATUS smb_setup_ejs_ldb(void); + extern NTSTATUS ejs_init_svcctl(void); + extern NTSTATUS smb_setup_ejs_nbt(void); + extern NTSTATUS smb_setup_ejs_net(void); + extern NTSTATUS ejs_init_srvsvc(void); + extern NTSTATUS ejs_init_netlogon(void); + extern NTSTATUS ejs_init_drsuapi(void); + extern NTSTATUS ejs_init_irpc(void); + extern NTSTATUS ejs_init_eventlog(void); init_module_fn static_init[] = { STATIC_smbcalls_MODULES }; init_module_fn *shared_init; diff --git a/source4/scripting/python/config.mk b/source4/scripting/python/config.mk index 09c77813ca..59f628fe18 100644 --- a/source4/scripting/python/config.mk +++ b/source4/scripting/python/config.mk @@ -1,49 +1,29 @@ [BINARY::smbpython] PRIVATE_DEPENDENCIES = LIBPYTHON -OBJ_FILES = smbpython.o + +smbpython_OBJ_FILES = scripting/python/smbpython.o [SUBSYSTEM::LIBPYTHON] PUBLIC_DEPENDENCIES = EXT_LIB_PYTHON INIT_FUNCTION_SENTINEL = { NULL, NULL } -OBJ_FILES = modules.o pytalloc.o + +LIBPYTHON_OBJ_FILES = $(addprefix scripting/python/, modules.o pytalloc.o) [PYTHON::python_uuid] PRIVATE_DEPENDENCIES = LIBNDR -OBJ_FILES = uuidmodule.o + +python_uuid_OBJ_FILES = scripting/python/uuidmodule.o [PYTHON::python_misc] PRIVATE_DEPENDENCIES = LIBNDR LIBLDB SAMDB CREDENTIALS SWIG_FILE = misc.i -# Swig extensions -swig:: pythonmods - -.SUFFIXES: _wrap.c .i - -.i_wrap.c: - [ "$(SWIG)" = "no" ] || $(SWIG) -O -Wall -I$(srcdir)/scripting/swig -python -keyword $< - -realdistclean:: - @echo "Removing SWIG output files" - # FIXME: Remove _wrap.c files - -pythonmods:: $(PYTHON_DSOS) $(PYTHON_PYS) +python_misc_OBJ_FILES = scripting/python/misc_wrap.o PYDOCTOR_MODULES=bin/python/ldb.py bin/python/auth.py bin/python/credentials.py bin/python/registry.py bin/python/tdb.py bin/python/security.py bin/python/events.py bin/python/net.py -pydoctor:: pythonmods - LD_LIBRARY_PATH=bin/shared PYTHONPATH=bin/python pydoctor --project-name=Samba --make-html --docformat=restructuredtext --add-package scripting/python/samba/ $(addprefix --add-module , $(PYDOCTOR_MODULES)) - -bin/python/%.py: - mkdir -p $(@D) - cp $< $@ - installpython:: pythonmods @$(SHELL) $(srcdir)/script/installpython.sh \ $(INSTALLPERMS) \ $(DESTDIR)$(PYTHONDIR) \ scripting/python bin/python - -clean:: - @echo "Removing python modules" - @rm -rf bin/python/* diff --git a/source4/scripting/python/misc.i b/source4/scripting/python/misc.i index e04e6a6906..6fa3bc93e3 100644 --- a/source4/scripting/python/misc.i +++ b/source4/scripting/python/misc.i @@ -78,3 +78,8 @@ bool dsdb_set_ntds_invocation_id(struct ldb_context *ldb, const char *guid) return samdb_set_ntds_invocation_id(ldb, &invocation_id_in); } %} + +char *private_path(TALLOC_CTX* mem_ctx, + struct loadparm_context *lp_ctx, + const char *name); + diff --git a/source4/scripting/python/misc.py b/source4/scripting/python/misc.py index 2fc7fe37e7..f1da4c687a 100644 --- a/source4/scripting/python/misc.py +++ b/source4/scripting/python/misc.py @@ -71,5 +71,6 @@ version = _misc.version dsdb_set_global_schema = _misc.dsdb_set_global_schema ldb_register_samba_handlers = _misc.ldb_register_samba_handlers dsdb_set_ntds_invocation_id = _misc.dsdb_set_ntds_invocation_id +private_path = _misc.private_path diff --git a/source4/scripting/python/misc_wrap.c b/source4/scripting/python/misc_wrap.c index 579d1f379f..4944515d15 100644 --- a/source4/scripting/python/misc_wrap.c +++ b/source4/scripting/python/misc_wrap.c @@ -3153,6 +3153,50 @@ fail: } +SWIGINTERN PyObject *_wrap_private_path(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + TALLOC_CTX *arg1 = (TALLOC_CTX *) 0 ; + struct loadparm_context *arg2 = (struct loadparm_context *) 0 ; + char *arg3 = (char *) 0 ; + char *result = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "lp_ctx",(char *) "name", NULL + }; + + arg2 = loadparm_init(NULL); + arg1 = NULL; + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"|OO:private_path",kwnames,&obj0,&obj1)) SWIG_fail; + if (obj0) { + res2 = SWIG_ConvertPtr(obj0, &argp2,SWIGTYPE_p_loadparm_context, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "private_path" "', argument " "2"" of type '" "struct loadparm_context *""'"); + } + arg2 = (struct loadparm_context *)(argp2); + } + if (obj1) { + res3 = SWIG_AsCharPtrAndSize(obj1, &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "private_path" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = (char *)(buf3); + } + result = (char *)private_path(arg1,arg2,(char const *)arg3); + resultobj = SWIG_FromCharPtr((const char *)result); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return resultobj; +fail: + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return NULL; +} + + static PyMethodDef SwigMethods[] = { { (char *)"random_password", (PyCFunction) _wrap_random_password, METH_VARARGS | METH_KEYWORDS, NULL}, { (char *)"ldb_set_credentials", (PyCFunction) _wrap_ldb_set_credentials, METH_VARARGS | METH_KEYWORDS, NULL}, @@ -3164,6 +3208,7 @@ static PyMethodDef SwigMethods[] = { { (char *)"dsdb_set_global_schema", (PyCFunction) _wrap_dsdb_set_global_schema, METH_VARARGS | METH_KEYWORDS, NULL}, { (char *)"ldb_register_samba_handlers", (PyCFunction) _wrap_ldb_register_samba_handlers, METH_VARARGS | METH_KEYWORDS, NULL}, { (char *)"dsdb_set_ntds_invocation_id", (PyCFunction) _wrap_dsdb_set_ntds_invocation_id, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"private_path", (PyCFunction) _wrap_private_path, METH_VARARGS | METH_KEYWORDS, NULL}, { NULL, NULL, 0, NULL } }; diff --git a/source4/scripting/python/pytalloc.c b/source4/scripting/python/pytalloc.c index d8d3efe69c..aa0ae9bf90 100644 --- a/source4/scripting/python/pytalloc.c +++ b/source4/scripting/python/pytalloc.c @@ -39,7 +39,7 @@ PyObject *py_talloc_import_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, PyObject *py_talloc_default_repr(PyObject *py_obj) { py_talloc_Object *obj = (py_talloc_Object *)py_obj; + PyTypeObject *type = (PyTypeObject*)PyObject_Type((PyObject *)obj); - return PyString_FromFormat("<talloc: %s>", - talloc_get_name(obj->talloc_ctx)); + return PyString_FromFormat("<%s>", type->tp_name); } diff --git a/source4/scripting/python/samba/getopt.py b/source4/scripting/python/samba/getopt.py index 82cb004b62..7ec684a9d6 100644 --- a/source4/scripting/python/samba/getopt.py +++ b/source4/scripting/python/samba/getopt.py @@ -35,12 +35,14 @@ class SambaOptions(optparse.OptionGroup): self._configfile = arg def get_loadparm(self): - import param + import os, param lp = param.LoadParm() - if self._configfile is None: - lp.load_default() - else: + if self._configfile is not None: lp.load(self._configfile) + elif os.getenv("SMB_CONF_PATH") is not None: + lp.load(os.getenv("SMB_CONF_PATH")) + else: + lp.load_default() return lp class VersionOptions(optparse.OptionGroup): diff --git a/source4/scripting/python/samba/idmap.py b/source4/scripting/python/samba/idmap.py index 355565968a..16efcd0470 100644 --- a/source4/scripting/python/samba/idmap.py +++ b/source4/scripting/python/samba/idmap.py @@ -21,6 +21,7 @@ """Convenience functions for using the idmap database.""" import samba +import misc import ldb class IDmapDB(samba.Ldb): @@ -37,11 +38,17 @@ class IDmapDB(samba.Ldb): :param url: URL of the database. """ + self.lp = lp + super(IDmapDB, self).__init__(session_info=session_info, credentials=credentials, modules_dir=modules_dir, lp=lp) if url: self.connect(url) + else: + self.connect(lp.get("idmap database")) + def connect(self, url): + super(IDmapDB, self).connect(misc.private_path(self.lp, url)) def setup_name_mapping(self, sid, type, unixid): """Setup a mapping between a sam name and a unix name. diff --git a/source4/scripting/python/samba/provision.py b/source4/scripting/python/samba/provision.py index a8d188e7a3..0e8840646c 100644 --- a/source4/scripting/python/samba/provision.py +++ b/source4/scripting/python/samba/provision.py @@ -1166,6 +1166,7 @@ def provision_backend(setup_dir=None, message=None, "NETBIOSNAME": names.netbiosname, "DEFAULTSITE": DEFAULTSITE, "CONFIGDN": names.configdn, + "SERVERDN": names.serverdn }) setup_add_ldif(schemadb, setup_path("schema_samba4.ldif"), @@ -1241,9 +1242,9 @@ refint_attributes""" + refint_attributes + "\n"; setup_file(setup_path("modules.conf"), paths.modulesconf, {"REALM": names.realm}) - setup_db_config(setup_path, file, os.path.join(paths.ldapdir, "user")) - setup_db_config(setup_path, file, os.path.join(paths.ldapdir, "config")) - setup_db_config(setup_path, file, os.path.join(paths.ldapdir, "schema")) + setup_db_config(setup_path, os.path.join(paths.ldapdir, os.path.join("db", "user"))) + setup_db_config(setup_path, os.path.join(paths.ldapdir, os.path.join("db", "config"))) + setup_db_config(setup_path, os.path.join(paths.ldapdir, os.path.join("db", "schema"))) mapping = "schema-map-openldap-2.3" backend_schema = "backend-schema.schema" diff --git a/source4/scripting/python/samba/samdb.py b/source4/scripting/python/samba/samdb.py index bc3eef7879..198d1e9f5c 100644 --- a/source4/scripting/python/samba/samdb.py +++ b/source4/scripting/python/samba/samdb.py @@ -25,20 +25,29 @@ import samba import misc import ldb +from samba.idmap import IDmapDB +import pwd class SamDB(samba.Ldb): """The SAM database.""" + def __init__(self, url=None, session_info=None, credentials=None, modules_dir=None, lp=None): """Open the Sam Database. :param url: URL of the database. """ + self.lp = lp super(SamDB, self).__init__(session_info=session_info, credentials=credentials, modules_dir=modules_dir, lp=lp) assert misc.dsdb_set_global_schema(self) == 0 if url: self.connect(url) + else: + self.connect(lp.get("sam database")) + + def connect(self, url): + super(SamDB, self).connect(misc.private_path(self.lp, url)) def add_foreign(self, domaindn, sid, desc): """Add a foreign security principle.""" @@ -101,10 +110,27 @@ userAccountControl: %u # now the real work self.add({"dn": user_dn, "sAMAccountName": username, - "unixName": unixname, "sambaPassword": password, "objectClass": "user"}) + res = self.search(user_dn, scope=ldb.SCOPE_BASE, + expression="objectclass=*", + attrs=["objectSid"]) + assert(len(res) == 1) + user_sid = self.schema_format_value("objectSid", res[0]["objectSid"][0]) + + + try: + idmap = IDmapDB(lp=self.lp) + + user = pwd.getpwnam(unixname) + # setup ID mapping for this UID + + idmap.setup_name_mapping(user_sid, idmap.TYPE_UID, user[2]) + + except KeyError: + pass + # modify the userAccountControl to remove the disabled bit self.enable_account(user_dn) self.transaction_commit() diff --git a/source4/scripting/python/samba/tests/__init__.py b/source4/scripting/python/samba/tests/__init__.py index c8673d3fae..e29b4a87d5 100644 --- a/source4/scripting/python/samba/tests/__init__.py +++ b/source4/scripting/python/samba/tests/__init__.py @@ -85,8 +85,13 @@ class LdbExtensionTests(TestCaseInTempDir): os.unlink(path) -def get_loadparm(): - import param - lp = param.LoadParm() - lp.load(os.getenv("SMB_CONF_PATH")) - return lp +cmdline_loadparm = None +cmdline_credentials = None + +class RpcInterfaceTestCase(unittest.TestCase): + def get_loadparm(self): + assert cmdline_loadparm is not None + return cmdline_loadparm + + def get_credentials(self): + return cmdline_credentials diff --git a/source4/scripting/python/samba/tests/dcerpc/registry.py b/source4/scripting/python/samba/tests/dcerpc/registry.py index 147acc5098..1afdc582a7 100644 --- a/source4/scripting/python/samba/tests/dcerpc/registry.py +++ b/source4/scripting/python/samba/tests/dcerpc/registry.py @@ -18,14 +18,13 @@ # import winreg -from param import LoadParm import unittest -from samba.tests import get_loadparm +from samba.tests import RpcInterfaceTestCase -class WinregTests(unittest.TestCase): +class WinregTests(RpcInterfaceTestCase): def setUp(self): - lp_ctx = get_loadparm() - self.conn = winreg.winreg("ncalrpc:", lp_ctx) + self.conn = winreg.winreg("ncalrpc:", self.get_loadparm(), + self.get_credentials()) def get_hklm(self): return self.conn.OpenHKLM(None, diff --git a/source4/scripting/python/samba/tests/dcerpc/rpcecho.py b/source4/scripting/python/samba/tests/dcerpc/rpcecho.py index 484af9490c..6c43632d97 100644 --- a/source4/scripting/python/samba/tests/dcerpc/rpcecho.py +++ b/source4/scripting/python/samba/tests/dcerpc/rpcecho.py @@ -19,12 +19,11 @@ import echo import unittest -from samba.tests import get_loadparm +from samba.tests import RpcInterfaceTestCase -class RpcEchoTests(unittest.TestCase): +class RpcEchoTests(RpcInterfaceTestCase): def setUp(self): - lp_ctx = get_loadparm() - self.conn = echo.rpcecho("ncalrpc:", lp_ctx) + self.conn = echo.rpcecho("ncalrpc:", self.get_loadparm()) def test_addone(self): self.assertEquals(2, self.conn.AddOne(1)) diff --git a/source4/scripting/python/samba/tests/dcerpc/sam.py b/source4/scripting/python/samba/tests/dcerpc/sam.py index 96348f2f69..8ef12dad86 100644 --- a/source4/scripting/python/samba/tests/dcerpc/sam.py +++ b/source4/scripting/python/samba/tests/dcerpc/sam.py @@ -18,12 +18,11 @@ # import samr -import unittest -from samba.tests import get_loadparm +from samba.tests import RpcInterfaceTestCase -class SamrTests(unittest.TestCase): +class SamrTests(RpcInterfaceTestCase): def setUp(self): - self.conn = samr.samr("ncalrpc:", get_loadparm()) + self.conn = samr.samr("ncalrpc:", self.get_loadparm()) def test_connect5(self): (level, info, handle) = self.conn.Connect5(None, 0, 1, samr.ConnectInfo1()) diff --git a/source4/scripting/python/samba/tests/dcerpc/unix.py b/source4/scripting/python/samba/tests/dcerpc/unix.py index b2577ec898..43978ac9dc 100644 --- a/source4/scripting/python/samba/tests/dcerpc/unix.py +++ b/source4/scripting/python/samba/tests/dcerpc/unix.py @@ -18,16 +18,17 @@ # import unixinfo -import unittest -from samba.tests import get_loadparm +from samba.tests import RpcInterfaceTestCase -class UnixinfoTests(unittest.TestCase): +class UnixinfoTests(RpcInterfaceTestCase): def setUp(self): - self.conn = unixinfo.unixinfo("ncalrpc:", get_loadparm()) + self.conn = unixinfo.unixinfo("ncalrpc:", self.get_loadparm()) def test_getpwuid(self): infos = self.conn.GetPWUid(range(512)) self.assertEquals(512, len(infos)) + self.assertEquals("", infos[0].shell) + self.assertEquals("", infos[0].homedir) def test_gidtosid(self): self.conn.GidToSid(1000) diff --git a/source4/scripting/python/samba/tests/provision.py b/source4/scripting/python/samba/tests/provision.py index 514582cbe4..b9e0e16d3c 100644 --- a/source4/scripting/python/samba/tests/provision.py +++ b/source4/scripting/python/samba/tests/provision.py @@ -24,7 +24,7 @@ from ldb import Dn import param import unittest -lp = samba.tests.get_loadparm() +lp = samba.tests.cmdline_loadparm setup_dir = "setup" def setup_path(file): diff --git a/source4/scripting/python/samba/tests/samdb.py b/source4/scripting/python/samba/tests/samdb.py index 3745dba6fc..0e175bf936 100644 --- a/source4/scripting/python/samba/tests/samdb.py +++ b/source4/scripting/python/samba/tests/samdb.py @@ -21,7 +21,7 @@ from credentials import Credentials import os from samba.provision import setup_samdb from samba.samdb import SamDB -from samba.tests import get_loadparm, TestCaseInTempDir +from samba.tests import cmdline_loadparm, TestCaseInTempDir import security from unittest import TestCase import uuid @@ -43,7 +43,7 @@ class SamDBTestCase(TestCaseInTempDir): hostguid = uuid.random() path = os.path.join(self.tempdir, "samdb.ldb") self.samdb = setup_samdb(path, setup_path, system_session(), creds, - get_loadparm(), schemadn, configdn, + cmdline_loadparm, schemadn, configdn, self.domaindn, "example.com", "EXAMPLE.COM", "FOO", lambda x: None, "foo", domaindn, False, domainsid, "# no aci", domainguid, diff --git a/source4/scripting/python/uuidmodule.c b/source4/scripting/python/uuidmodule.c index cd9a1cb4d5..18cfb6ce32 100644 --- a/source4/scripting/python/uuidmodule.c +++ b/source4/scripting/python/uuidmodule.c @@ -27,7 +27,7 @@ static PyObject *uuid_random(PyObject *self, PyObject *args) PyObject *pyobj; char *str; - if (!PyArg_ParseTuple(args, (char *)"")) + if (!PyArg_ParseTuple(args, "")) return NULL; guid = GUID_random(); @@ -52,7 +52,7 @@ static PyMethodDef methods[] = { void inituuid(void) { - PyObject *mod = Py_InitModule3((char *)"uuid", methods, "UUID helper routines"); + PyObject *mod = Py_InitModule3("uuid", methods, "UUID helper routines"); if (mod == NULL) return; } diff --git a/source4/selftest/samba4_tests.sh b/source4/selftest/samba4_tests.sh index 7e545664d1..3a3e1f91b1 100755 --- a/source4/selftest/samba4_tests.sh +++ b/source4/selftest/samba4_tests.sh @@ -265,6 +265,7 @@ fi bbdir=$incdir/../../testprogs/blackbox +plantest "blackbox.ndrdump" dc $bbdir/test_ndrdump.sh plantest "blackbox.smbclient" dc $bbdir/test_smbclient.sh "\$SERVER" "\$USERNAME" "\$PASSWORD" "\$DOMAIN" "$PREFIX" plantest "blackbox.kinit" dc $bbdir/test_kinit.sh "\$SERVER" "\$USERNAME" "\$PASSWORD" "\$REALM" "\$DOMAIN" "$PREFIX" $CONFIGURATION plantest "blackbox.cifsdd" dc $bbdir/test_cifsdd.sh "\$SERVER" "\$USERNAME" "\$PASSWORD" "\$DOMAIN" @@ -301,7 +302,7 @@ done WB_OPTS="--option=\"torture:strict mode=yes\"" WB_OPTS="${WB_OPTS} --option=\"torture:timelimit=1\"" -WB_OPTS="${WB_OPTS} --option=\"torture:winbindd separator=\\\\\"" +WB_OPTS="${WB_OPTS} --option=\"torture:winbindd separator=/\"" WB_OPTS="${WB_OPTS} --option=\"torture:winbindd private pipe dir=\$WINBINDD_PRIV_PIPE_DIR\"" WB_OPTS="${WB_OPTS} --option=\"torture:winbindd netbios name=\$SERVER\"" WB_OPTS="${WB_OPTS} --option=\"torture:winbindd netbios domain=\$DOMAIN\"" @@ -342,7 +343,7 @@ plantest "unixinfo.python" dc $SUBUNITRUN samba.tests.dcerpc.unix plantest "events.python" none PYTHONPATH="$PYTHONPATH:lib/events" $SUBUNITRUN tests plantest "samba3sam.python" none PYTHONPATH="$PYTHONPATH:dsdb/samdb/ldb_modules/tests" $SUBUNITRUN samba3sam plantest "rpcecho.python" dc $SUBUNITRUN samba.tests.dcerpc.rpcecho -plantest "winreg.python" dc $SUBUNITRUN samba.tests.dcerpc.registry +plantest "winreg.python" dc $SUBUNITRUN -U\$USERNAME%\$PASSWORD samba.tests.dcerpc.registry plantest "ldap.python" dc $PYTHON $samba4srcdir/lib/ldb/tests/python/ldap.py $CONFIGURATION \$SERVER -U\$USERNAME%\$PASSWORD -W \$DOMAIN plantest "blackbox.samba3dump" none $PYTHON scripting/bin/samba3dump $samba4srcdir/../testdata/samba3 rm -rf $PREFIX/upgrade diff --git a/source4/selftest/target/Samba4.pm b/source4/selftest/target/Samba4.pm index 552f6535af..069aff73cf 100644 --- a/source4/selftest/target/Samba4.pm +++ b/source4/selftest/target/Samba4.pm @@ -521,7 +521,7 @@ sub provision($$$$$$) my $ncalrpcdir = "$prefix_abs/ncalrpc"; my $lockdir = "$prefix_abs/lockdir"; my $winbindd_socket_dir = "$prefix_abs/winbind_socket"; - my $winbindd_priv_pipe_dir = "$piddir/smbd.tmp/winbind_pipe"; + my $winbindd_priv_pipe_dir = "$privatedir/smbd.tmp/winbind_pipe"; my $nsswrap_passwd = "$etcdir/passwd"; my $nsswrap_group = "$etcdir/group"; diff --git a/source4/setup/newuser b/source4/setup/newuser index f622058a5d..04a5440ee1 100755 --- a/source4/setup/newuser +++ b/source4/setup/newuser @@ -45,15 +45,9 @@ else: if opts.unixname is None: opts.unixname = username -try: - pwd.getpwnam(opts.unixname) -except KeyError: - print "ERROR: Unix user '%s' does not exist" % opts.unixname - sys.exit(1) - -creds = credopts.get_credentials() - lp = sambaopts.get_loadparm() +creds = credopts.get_credentials(lp) + samdb = SamDB(url=lp.get("sam database"), session_info=system_session(), credentials=creds, lp=lp) samdb.newuser(username, opts.unixname, password) diff --git a/source4/setup/setpassword b/source4/setup/setpassword index 31b2f73a25..977a6a5ee8 100644 --- a/source4/setup/setpassword +++ b/source4/setup/setpassword @@ -36,7 +36,7 @@ if len(args) == 0: parser.print_usage() sys.exit(1) -password = opts.password; +password = opts.newpassword; if password is None: password = getpass("New Password: ") @@ -47,12 +47,12 @@ if filter is None: if username is None: print "Either username or --filter must be specified" - filter = "(&(objectclass=user)(samAccountName=" + username + "))" + filter = "(&(objectclass=user)(samAccountName=%s))" % (username) -creds = credopts.get_credentials() - lp = sambaopts.get_loadparm() +creds = credopts.get_credentials(lp) + samdb = SamDB(url=lp.get("sam database"), session_info=system_session(), credentials=creds, lp=lp) samdb.setpassword(filter, password) diff --git a/source4/setup/tests/blackbox_provision.sh b/source4/setup/tests/blackbox_provision.sh index 4db226778c..19f37cef2d 100755 --- a/source4/setup/tests/blackbox_provision.sh +++ b/source4/setup/tests/blackbox_provision.sh @@ -31,8 +31,11 @@ testit "simple-default" $PYTHON ./setup/provision $CONFIGURATION --domain=FOO -- testit "simple-dc" $PYTHON ./setup/provision $CONFIGURATION --server-role="dc" --domain=FOO --realm=foo.example.com --domain-sid=S-1-5-21-4177067393-1453636373-93818738 --targetdir=$PREFIX/simple-dc testit "simple-member" $PYTHON ./setup/provision $CONFIGURATION --server-role="member" --domain=FOO --realm=foo.example.com --targetdir=$PREFIX/simple-member testit "simple-standalone" $PYTHON ./setup/provision $CONFIGURATION --server-role="standalone" --domain=FOO --realm=foo.example.com --targetdir=$PREFIX/simple-standalone -testit "blank-dc" $PYTHON ./setup/provision $CONFIGURATION --server-role="dc" --domain=FOO --realm=foo.example.com --domain-sid=S-1-5-21-4177067393-1453636373-93818738 --targetdir=$PREFIX/simple-dc --blank -testit "partitions-only-dc" $PYTHON ./setup/provision $CONFIGURATION --server-role="dc" --domain=FOO --realm=foo.example.com --domain-sid=S-1-5-21-4177067393-1453636373-93818738 --targetdir=$PREFIX/simple-dc --partitions-only +testit "blank-dc" $PYTHON ./setup/provision $CONFIGURATION --server-role="dc" --domain=FOO --realm=foo.example.com --domain-sid=S-1-5-21-4177067393-1453636373-93818738 --targetdir=$PREFIX/blank-dc --blank +testit "partitions-only-dc" $PYTHON ./setup/provision $CONFIGURATION --server-role="dc" --domain=FOO --realm=foo.example.com --domain-sid=S-1-5-21-4177067393-1453636373-93818738 --targetdir=$PREFIX/partitions-only-dc --partitions-only + +testit "newuser" $PYTHON ./setup/newuser --configfile=$PREFIX/simple-dc/etc/smb.conf testuser testpass +testit "setpassword" $PYTHON ./setup/setpassword --configfile=$PREFIX/simple-dc/etc/smb.conf testuser --newpassword=testpass reprovision() { $PYTHON ./setup/provision $CONFIGURATION --domain=FOO --realm=foo.example.com --targetdir="$PREFIX/reprovision" diff --git a/source4/smb_server/config.mk b/source4/smb_server/config.mk index 85c969df59..8b6ae308f9 100644 --- a/source4/smb_server/config.mk +++ b/source4/smb_server/config.mk @@ -3,19 +3,14 @@ [MODULE::SERVICE_SMB] INIT_FUNCTION = server_service_smb_init SUBSYSTEM = service -OBJ_FILES = smb_server.o PRIVATE_PROTO_HEADER = service_smb_proto.h PRIVATE_DEPENDENCIES = SMB_SERVER +SERVICE_SMB_OBJ_FILES = smb_server/smb_server.o + ####################### # Start SUBSYSTEM SMB [SUBSYSTEM::SMB_SERVER] -OBJ_FILES = \ - handle.o \ - tcon.o \ - session.o \ - blob.o \ - management.o PRIVATE_PROTO_HEADER = smb_server_proto.h PUBLIC_DEPENDENCIES = \ share \ @@ -25,5 +20,12 @@ PUBLIC_DEPENDENCIES = \ # End SUBSYSTEM SMB ####################### +SMB_SERVER_OBJ_FILES = $(addprefix smb_server/, \ + handle.o \ + tcon.o \ + session.o \ + blob.o \ + management.o) + mkinclude smb/config.mk mkinclude smb2/config.mk diff --git a/source4/smb_server/smb/config.mk b/source4/smb_server/smb/config.mk index 7927f295b9..3d4aa8ba38 100644 --- a/source4/smb_server/smb/config.mk +++ b/source4/smb_server/smb/config.mk @@ -2,7 +2,12 @@ # Start SUBSYSTEM SMB_PROTOCOL [SUBSYSTEM::SMB_PROTOCOL] PRIVATE_PROTO_HEADER = smb_proto.h -OBJ_FILES = \ +PUBLIC_DEPENDENCIES = \ + ntvfs LIBPACKET CREDENTIALS +# End SUBSYSTEM SMB_PROTOCOL +####################### + +SMB_PROTOCOL_OBJ_FILES = $(addprefix smb_server/smb/, \ receive.o \ negprot.o \ nttrans.o \ @@ -13,8 +18,5 @@ OBJ_FILES = \ sesssetup.o \ srvtime.o \ trans2.o \ - signing.o -PUBLIC_DEPENDENCIES = \ - ntvfs LIBPACKET CREDENTIALS -# End SUBSYSTEM SMB_PROTOCOL -####################### + signing.o) + diff --git a/source4/smb_server/smb2/config.mk b/source4/smb_server/smb2/config.mk index d5ba43b3a8..c9ba3269fa 100644 --- a/source4/smb_server/smb2/config.mk +++ b/source4/smb_server/smb2/config.mk @@ -2,7 +2,12 @@ # Start SUBSYSTEM SMB2_PROTOCOL [SUBSYSTEM::SMB2_PROTOCOL] PRIVATE_PROTO_HEADER = smb2_proto.h -OBJ_FILES = \ +PUBLIC_DEPENDENCIES = \ + ntvfs LIBPACKET LIBCLI_SMB2 +# End SUBSYSTEM SMB2_PROTOCOL +####################### + +SMB2_PROTOCOL_OBJ_FILES = $(addprefix smb_server/smb2/, \ receive.o \ negprot.o \ sesssetup.o \ @@ -10,8 +15,5 @@ OBJ_FILES = \ fileio.o \ fileinfo.o \ find.o \ - keepalive.o -PUBLIC_DEPENDENCIES = \ - ntvfs LIBPACKET LIBCLI_SMB2 -# End SUBSYSTEM SMB2_PROTOCOL -####################### + keepalive.o) + diff --git a/source4/smb_server/smb2/fileio.c b/source4/smb_server/smb2/fileio.c index 0e3df56b42..8f8b4e771c 100644 --- a/source4/smb_server/smb2/fileio.c +++ b/source4/smb_server/smb2/fileio.c @@ -167,7 +167,8 @@ static void smb2srv_read_send(struct ntvfs_request *ntvfs) /* TODO: avoid the memcpy */ SMB2SRV_CHECK(smb2_push_o16s32_blob(&req->out, 0x02, io->smb2.out.data)); - SBVAL(req->out.body, 0x08, io->smb2.out.unknown1); + SIVAL(req->out.body, 0x08, io->smb2.out.remaining); + SIVAL(req->out.body, 0x0C, io->smb2.out.reserved); smb2srv_send_reply(req); } @@ -185,8 +186,11 @@ void smb2srv_read_recv(struct smb2srv_request *req) io->smb2.in.length = IVAL(req->in.body, 0x04); io->smb2.in.offset = BVAL(req->in.body, 0x08); io->smb2.in.file.ntvfs = smb2srv_pull_handle(req, req->in.body, 0x10); - io->smb2.in.unknown1 = BVAL(req->in.body, 0x20); - io->smb2.in.unknown2 = BVAL(req->in.body, 0x28); + io->smb2.in.min_count = IVAL(req->in.body, 0x20); + io->smb2.in.channel = IVAL(req->in.body, 0x24); + io->smb2.in.remaining = IVAL(req->in.body, 0x28); + io->smb2.in.channel_offset = SVAL(req->in.body, 0x2C); + io->smb2.in.channel_length = SVAL(req->in.body, 0x2E); SMB2SRV_CHECK_FILE_HANDLE(io->smb2.in.file.ntvfs); diff --git a/source4/smbd/config.mk b/source4/smbd/config.mk index 6cbfa16045..006135f818 100644 --- a/source4/smbd/config.mk +++ b/source4/smbd/config.mk @@ -1,34 +1,24 @@ # server subsystem -################################################ -# Start MODULE service_auth -[MODULE::service_auth] -INIT_FUNCTION = server_service_auth_init -SUBSYSTEM = service -PRIVATE_DEPENDENCIES = \ - auth -# End MODULE server_auth -################################################ - [SUBSYSTEM::service] PRIVATE_PROTO_HEADER = service_proto.h -OBJ_FILES = \ - service.o \ - service_stream.o \ - service_task.o PRIVATE_DEPENDENCIES = \ MESSAGING samba-socket +service_OBJ_FILES = $(addprefix smbd/, \ + service.o \ + service_stream.o \ + service_task.o) + [SUBSYSTEM::PIDFILE] -OBJ_FILES = pidfile.o PRIVATE_PROTO_HEADER = pidfile.h +PIDFILE_OBJ_FILES = smbd/pidfile.o + ################################# # Start BINARY smbd [BINARY::smbd] INSTALLDIR = SBINDIR -OBJ_FILES = \ - server.o PRIVATE_DEPENDENCIES = \ process_model \ service \ @@ -44,6 +34,8 @@ PRIVATE_DEPENDENCIES = \ share \ CLUSTER +smbd_OBJ_FILES = smbd/server.o + MANPAGES += smbd/smbd.8 # End BINARY smbd ################################# diff --git a/source4/smbd/process_model.c b/source4/smbd/process_model.c index fcbe2d9872..2cb551a520 100644 --- a/source4/smbd/process_model.c +++ b/source4/smbd/process_model.c @@ -82,6 +82,9 @@ _PUBLIC_ NTSTATUS register_process_model(const void *_ops) _PUBLIC_ NTSTATUS process_model_init(struct loadparm_context *lp_ctx) { + extern NTSTATUS process_model_standard_init(void); + extern NTSTATUS process_model_prefork_init(void); + extern NTSTATUS process_model_single_init(void); init_module_fn static_init[] = { STATIC_process_model_MODULES }; init_module_fn *shared_init = load_samba_modules(NULL, lp_ctx, "process_model"); diff --git a/source4/smbd/process_model.mk b/source4/smbd/process_model.mk index d559ce1577..48899078f7 100644 --- a/source4/smbd/process_model.mk +++ b/source4/smbd/process_model.mk @@ -5,45 +5,45 @@ [MODULE::process_model_single] INIT_FUNCTION = process_model_single_init SUBSYSTEM = process_model -OBJ_FILES = \ - process_single.o # End MODULE process_model_single ################################################ +process_model_single_OBJ_FILES = smbd/process_single.o + ################################################ # Start MODULE process_model_standard [MODULE::process_model_standard] INIT_FUNCTION = process_model_standard_init SUBSYSTEM = process_model -OBJ_FILES = \ - process_standard.o PRIVATE_DEPENDENCIES = SETPROCTITLE # End MODULE process_model_standard ################################################ +process_model_standard_OBJ_FILES = smbd/process_standard.o + ################################################ # Start MODULE process_model_thread [MODULE::process_model_thread] INIT_FUNCTION = process_model_thread_init SUBSYSTEM = process_model -OBJ_FILES = \ - process_thread.o PRIVATE_DEPENDENCIES = PTHREAD # End MODULE process_model_thread ################################################ +process_model_thread_OBJ_FILES = smbd/process_thread.o + ################################################ # Start MODULE process_model_prefork [MODULE::process_model_prefork] INIT_FUNCTION = process_model_prefork_init SUBSYSTEM = process_model -OBJ_FILES = \ - process_prefork.o # End MODULE process_model_thread ################################################ +process_model_prefork_OBJ_FILES = smbd/process_prefork.o + [SUBSYSTEM::process_model] PRIVATE_PROTO_HEADER = process_model_proto.h -OBJ_FILES = \ - process_model.o PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL LIBSAMBA-HOSTCONFIG + +process_model_OBJ_FILES = smbd/process_model.o diff --git a/source4/smbd/server.c b/source4/smbd/server.c index d6e2fb19e4..3f6cb48013 100644 --- a/source4/smbd/server.c +++ b/source4/smbd/server.c @@ -187,6 +187,18 @@ static int binary_smbd_main(const char *binary_name, int argc, const char *argv[ bool opt_interactive = false; int opt; poptContext pc; + extern NTSTATUS server_service_wrepl_init(void); + extern NTSTATUS server_service_kdc_init(void); + extern NTSTATUS server_service_ldap_init(void); + extern NTSTATUS server_service_web_init(void); + extern NTSTATUS server_service_ldap_init(void); + extern NTSTATUS server_service_winbind_init(void); + extern NTSTATUS server_service_nbtd_init(void); + extern NTSTATUS server_service_auth_init(void); + extern NTSTATUS server_service_cldapd_init(void); + extern NTSTATUS server_service_smb_init(void); + extern NTSTATUS server_service_drepl_init(void); + extern NTSTATUS server_service_rpc_init(void); init_module_fn static_init[] = { STATIC_service_MODULES }; init_module_fn *shared_init; struct event_context *event_ctx; diff --git a/source4/static_deps.mk b/source4/static_deps.mk index ade41614c2..a442b01025 100644 --- a/source4/static_deps.mk +++ b/source4/static_deps.mk @@ -11,7 +11,6 @@ lib/charset/charset.h: lib/charset/charset_proto.h include/includes.h: \ include/config.h \ lib/charset/charset.h \ - param/proto.h \ librpc/gen_ndr/misc.h heimdal_basics: \ diff --git a/source4/torture/config.mk b/source4/torture/config.mk index 7acb1e0792..e6c54022c2 100644 --- a/source4/torture/config.mk +++ b/source4/torture/config.mk @@ -1,25 +1,23 @@ # TORTURE subsystem [LIBRARY::torture] -SO_VERSION = 0 -VERSION = 0.0.1 -PC_FILE = torture.pc PRIVATE_PROTO_HEADER = proto.h -OBJ_FILES = \ - torture.o \ - ui.o PUBLIC_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG \ LIBSAMBA-UTIL \ LIBTALLOC \ LIBPOPT +PC_FILES += torture/torture.pc +torture_OBJ_FILES = $(addprefix torture/, torture.o ui.o) + PUBLIC_HEADERS += torture/torture.h torture/ui.h [SUBSYSTEM::TORTURE_UTIL] -OBJ_FILES = util_smb.o PRIVATE_DEPENDENCIES = LIBCLI_RAW LIBPYTHON smbcalls PROVISION PUBLIC_DEPENDENCIES = POPT_CREDENTIALS +TORTURE_UTIL_OBJ_FILES = $(addprefix torture/, util_smb.o) + ################################# # Start SUBSYSTEM TORTURE_BASIC [MODULE::TORTURE_BASIC] @@ -27,25 +25,6 @@ SUBSYSTEM = torture INIT_FUNCTION = torture_base_init PRIVATE_PROTO_HEADER = \ basic/proto.h -OBJ_FILES = \ - basic/base.o \ - basic/misc.o \ - basic/scanner.o \ - basic/utable.o \ - basic/charset.o \ - basic/mangle_test.o \ - basic/denytest.o \ - basic/aliases.o \ - basic/locking.o \ - basic/secleak.o \ - basic/rename.o \ - basic/dir.o \ - basic/delete.o \ - basic/unlink.o \ - basic/disconnect.o \ - basic/delaywrite.o \ - basic/attr.o \ - basic/properties.o PRIVATE_DEPENDENCIES = \ LIBCLI_SMB POPT_CREDENTIALS \ TORTURE_UTIL LIBCLI_RAW \ @@ -53,6 +32,27 @@ PRIVATE_DEPENDENCIES = \ # End SUBSYSTEM TORTURE_BASIC ################################# +TORTURE_BASIC_OBJ_FILES = $(addprefix torture/basic/, \ + base.o \ + misc.o \ + scanner.o \ + utable.o \ + charset.o \ + mangle_test.o \ + denytest.o \ + aliases.o \ + locking.o \ + secleak.o \ + rename.o \ + dir.o \ + delete.o \ + unlink.o \ + disconnect.o \ + delaywrite.o \ + attr.o \ + properties.o) + + ################################# # Start SUBSYSTEM TORTURE_RAW [MODULE::TORTURE_RAW] @@ -60,58 +60,52 @@ SUBSYSTEM = torture INIT_FUNCTION = torture_raw_init PRIVATE_PROTO_HEADER = \ raw/proto.h -OBJ_FILES = \ - raw/qfsinfo.o \ - raw/qfileinfo.o \ - raw/setfileinfo.o \ - raw/search.o \ - raw/close.o \ - raw/open.o \ - raw/mkdir.o \ - raw/oplock.o \ - raw/notify.o \ - raw/mux.o \ - raw/ioctl.o \ - raw/chkpath.o \ - raw/unlink.o \ - raw/read.o \ - raw/context.o \ - raw/write.o \ - raw/lock.o \ - raw/pingpong.o \ - raw/lockbench.o \ - raw/openbench.o \ - raw/rename.o \ - raw/eas.o \ - raw/streams.o \ - raw/acls.o \ - raw/seek.o \ - raw/samba3hide.o \ - raw/samba3misc.o \ - raw/composite.o \ - raw/raw.o \ - raw/offline.o PRIVATE_DEPENDENCIES = \ LIBCLI_SMB LIBCLI_LSA LIBCLI_SMB_COMPOSITE \ POPT_CREDENTIALS TORTURE_UTIL # End SUBSYSTEM TORTURE_RAW ################################# +TORTURE_RAW_OBJ_FILES = $(addprefix torture/raw/, \ + qfsinfo.o \ + qfileinfo.o \ + setfileinfo.o \ + search.o \ + close.o \ + open.o \ + mkdir.o \ + oplock.o \ + notify.o \ + mux.o \ + ioctl.o \ + chkpath.o \ + unlink.o \ + read.o \ + context.o \ + write.o \ + lock.o \ + pingpong.o \ + lockbench.o \ + openbench.o \ + rename.o \ + eas.o \ + streams.o \ + acls.o \ + seek.o \ + samba3hide.o \ + samba3misc.o \ + composite.o \ + raw.o \ + offline.o) + + mkinclude smb2/config.mk mkinclude winbind/config.mk [SUBSYSTEM::TORTURE_NDR] PRIVATE_PROTO_HEADER = ndr/proto.h -OBJ_FILES = ndr/ndr.o \ - ndr/winreg.o \ - ndr/atsvc.o \ - ndr/lsa.o \ - ndr/epmap.o \ - ndr/dfs.o \ - ndr/netlogon.o \ - ndr/drsuapi.o \ - ndr/spoolss.o \ - ndr/samr.o + +TORTURE_NDR_OBJ_FILES = $(addprefix torture/ndr/, ndr.o winreg.o atsvc.o lsa.o epmap.o dfs.o netlogon.o drsuapi.o spoolss.o samr.o) [MODULE::torture_rpc] # TORTURE_NET and TORTURE_NBT use functions from torture_rpc... @@ -120,50 +114,6 @@ SUBSYSTEM = torture INIT_FUNCTION = torture_rpc_init PRIVATE_PROTO_HEADER = \ rpc/proto.h -OBJ_FILES = \ - rpc/join.o \ - rpc/lsa.o \ - rpc/lsa_lookup.o \ - rpc/session_key.o \ - rpc/echo.o \ - rpc/dfs.o \ - rpc/drsuapi.o \ - rpc/drsuapi_cracknames.o \ - rpc/dssync.o \ - rpc/spoolss.o \ - rpc/spoolss_notify.o \ - rpc/spoolss_win.o \ - rpc/unixinfo.o \ - rpc/samr.o \ - rpc/samr_accessmask.o \ - rpc/wkssvc.o \ - rpc/srvsvc.o \ - rpc/svcctl.o \ - rpc/atsvc.o \ - rpc/eventlog.o \ - rpc/epmapper.o \ - rpc/winreg.o \ - rpc/initshutdown.o \ - rpc/oxidresolve.o \ - rpc/remact.o \ - rpc/mgmt.o \ - rpc/scanner.o \ - rpc/autoidl.o \ - rpc/countcalls.o \ - rpc/testjoin.o \ - rpc/schannel.o \ - rpc/netlogon.o \ - rpc/samlogon.o \ - rpc/samsync.o \ - rpc/bind.o \ - rpc/dssetup.o \ - rpc/alter_context.o \ - rpc/bench.o \ - rpc/samba3rpc.o \ - rpc/rpc.o \ - rpc/async_bind.o \ - rpc/handles.o \ - rpc/frsapi.o PRIVATE_DEPENDENCIES = \ NDR_TABLE RPC_NDR_UNIXINFO dcerpc_samr RPC_NDR_WINREG RPC_NDR_INITSHUTDOWN \ RPC_NDR_OXIDRESOLVER RPC_NDR_EVENTLOG RPC_NDR_ECHO RPC_NDR_SVCCTL \ @@ -172,7 +122,16 @@ PRIVATE_DEPENDENCIES = \ RPC_NDR_SRVSVC RPC_NDR_WKSSVC RPC_NDR_ROT RPC_NDR_DSSETUP \ RPC_NDR_REMACT RPC_NDR_OXIDRESOLVER WB_HELPER LIBSAMBA-NET \ LIBCLI_AUTH POPT_CREDENTIALS TORTURE_LDAP TORTURE_UTIL TORTURE_RAP \ - dcerpc_server service process_model + dcerpc_server service process_model ntvfs SERVICE_SMB + +torture_rpc_OBJ_FILES = $(addprefix torture/rpc/, \ + join.o lsa.o lsa_lookup.o session_key.o echo.o dfs.o drsuapi.o \ + drsuapi_cracknames.o dssync.o spoolss.o spoolss_notify.o spoolss_win.o \ + unixinfo.o samr.o samr_accessmask.o wkssvc.o srvsvc.o svcctl.o atsvc.o \ + eventlog.o epmapper.o winreg.o initshutdown.o oxidresolve.o remact.o mgmt.o \ + scanner.o autoidl.o countcalls.o testjoin.o schannel.o netlogon.o samlogon.o \ + samsync.o bind.o dssetup.o alter_context.o bench.o samba3rpc.o rpc.o async_bind.o \ + handles.o frsapi.o) ################################# # Start SUBSYSTEM TORTURE_RAP @@ -181,27 +140,26 @@ SUBSYSTEM = torture INIT_FUNCTION = torture_rap_init PRIVATE_PROTO_HEADER = \ rap/proto.h -OBJ_FILES = \ - rap/rap.o PRIVATE_DEPENDENCIES = TORTURE_UTIL LIBCLI_SMB # End SUBSYSTEM TORTURE_RAP ################################# +TORTURE_RAP_OBJ_FILES = torture/rap/rap.o + ################################# # Start SUBSYSTEM TORTURE_AUTH [MODULE::TORTURE_AUTH] SUBSYSTEM = torture PRIVATE_PROTO_HEADER = \ auth/proto.h -OBJ_FILES = \ - auth/ntlmssp.o \ - auth/pac.o PRIVATE_DEPENDENCIES = \ LIBCLI_SMB gensec auth KERBEROS \ POPT_CREDENTIALS SMBPASSWD # End SUBSYSTEM TORTURE_AUTH ################################# +TORTURE_AUTH_OBJ_FILES = $(addprefix torture/auth/, ntlmssp.o pac.o) + mkinclude local/config.mk ################################# @@ -212,12 +170,11 @@ INIT_FUNCTION = torture_nbench_init PRIVATE_DEPENDENCIES = TORTURE_UTIL PRIVATE_PROTO_HEADER = \ nbench/proto.h -OBJ_FILES = \ - nbench/nbio.o \ - nbench/nbench.o # End MODULE TORTURE_NBENCH ################################# +TORTURE_NBENCH_OBJ_FILES = $(addprefix torture/nbench/, nbio.o nbench.o) + ################################# # Start MODULE TORTURE_UNIX [MODULE::TORTURE_UNIX] @@ -226,13 +183,11 @@ INIT_FUNCTION = torture_unix_init PRIVATE_DEPENDENCIES = TORTURE_UTIL PRIVATE_PROTO_HEADER = \ unix/proto.h -OBJ_FILES = \ - unix/unix.o \ - unix/whoami.o \ - unix/unix_info2.o # End MODULE TORTURE_UNIX ################################# +TORTURE_UNIX_OBJ_FILES = $(addprefix torture/unix/, unix.o whoami.o unix_info2.o) + ################################# # Start SUBSYSTEM TORTURE_LDAP [MODULE::TORTURE_LDAP] @@ -240,18 +195,14 @@ SUBSYSTEM = torture INIT_FUNCTION = torture_ldap_init PRIVATE_PROTO_HEADER = \ ldap/proto.h -OBJ_FILES = \ - ldap/common.o \ - ldap/basic.o \ - ldap/schema.o \ - ldap/uptodatevector.o \ - ldap/cldap.o \ - ldap/cldapbench.o PRIVATE_DEPENDENCIES = \ LIBCLI_LDAP LIBCLI_CLDAP SAMDB POPT_CREDENTIALS # End SUBSYSTEM TORTURE_LDAP ################################# +TORTURE_LDAP_OBJ_FILES = $(addprefix torture/ldap/, common.o basic.o schema.o uptodatevector.o cldap.o cldapbench.o) + + ################################# # Start SUBSYSTEM TORTURE_NBT [MODULE::TORTURE_NBT] @@ -259,19 +210,15 @@ SUBSYSTEM = torture INIT_FUNCTION = torture_nbt_init PRIVATE_PROTO_HEADER = \ nbt/proto.h -OBJ_FILES = \ - nbt/query.o \ - nbt/register.o \ - nbt/wins.o \ - nbt/winsbench.o \ - nbt/winsreplication.o \ - nbt/dgram.o \ - nbt/nbt.o PRIVATE_DEPENDENCIES = \ LIBCLI_SMB LIBCLI_NBT LIBCLI_DGRAM LIBCLI_WREPL torture_rpc # End SUBSYSTEM TORTURE_NBT ################################# +TORTURE_NBT_OBJ_FILES = $(addprefix torture/nbt/, query.o register.o \ + wins.o winsbench.o winsreplication.o dgram.o nbt.o) + + ################################# # Start SUBSYSTEM TORTURE_NET [MODULE::TORTURE_NET] @@ -279,21 +226,6 @@ SUBSYSTEM = torture INIT_FUNCTION = torture_net_init PRIVATE_PROTO_HEADER = \ libnet/proto.h -OBJ_FILES = \ - libnet/libnet.o \ - libnet/utils.o \ - libnet/userinfo.o \ - libnet/userman.o \ - libnet/groupinfo.o \ - libnet/groupman.o \ - libnet/domain.o \ - libnet/libnet_lookup.o \ - libnet/libnet_user.o \ - libnet/libnet_group.o \ - libnet/libnet_share.o \ - libnet/libnet_rpc.o \ - libnet/libnet_domain.o \ - libnet/libnet_BecomeDC.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-NET \ POPT_CREDENTIALS \ @@ -301,12 +233,16 @@ PRIVATE_DEPENDENCIES = \ # End SUBSYSTEM TORTURE_NET ################################# +TORTURE_NET_OBJ_FILES = $(addprefix torture/libnet/, libnet.o \ + utils.o userinfo.o userman.o groupinfo.o groupman.o \ + domain.o libnet_lookup.o libnet_user.o libnet_group.o \ + libnet_share.o libnet_rpc.o libnet_domain.o libnet_BecomeDC.o) + + ################################# # Start BINARY smbtorture [BINARY::smbtorture] INSTALLDIR = BINDIR -OBJ_FILES = \ - smbtorture.o PRIVATE_DEPENDENCIES = \ torture \ LIBPOPT \ @@ -318,14 +254,14 @@ PRIVATE_DEPENDENCIES = \ # End BINARY smbtorture ################################# +smbtorture_OBJ_FILES = torture/smbtorture.o + MANPAGES += torture/man/smbtorture.1 ################################# # Start BINARY gentest [BINARY::gentest] INSTALLDIR = BINDIR -OBJ_FILES = \ - gentest.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG \ LIBSAMBA-UTIL \ @@ -337,14 +273,14 @@ PRIVATE_DEPENDENCIES = \ # End BINARY gentest ################################# +gentest_OBJ_FILES = torture/gentest.o + MANPAGES += torture/man/gentest.1 ################################# # Start BINARY masktest [BINARY::masktest] INSTALLDIR = BINDIR -OBJ_FILES = \ - masktest.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG \ LIBSAMBA-UTIL \ @@ -355,14 +291,14 @@ PRIVATE_DEPENDENCIES = \ # End BINARY masktest ################################# +masktest_OBJ_FILES = torture/masktest.o + MANPAGES += torture/man/masktest.1 ################################# # Start BINARY locktest [BINARY::locktest] INSTALLDIR = BINDIR -OBJ_FILES = \ - locktest.o PRIVATE_DEPENDENCIES = \ LIBPOPT \ POPT_SAMBA \ @@ -373,6 +309,8 @@ PRIVATE_DEPENDENCIES = \ # End BINARY locktest ################################# +locktest_OBJ_FILES = torture/locktest.o + MANPAGES += torture/man/locktest.1 COV_TARGET = test diff --git a/source4/torture/libnet/libnet_domain.c b/source4/torture/libnet/libnet_domain.c index 3c8d574f0e..eb6abc45d5 100644 --- a/source4/torture/libnet/libnet_domain.c +++ b/source4/torture/libnet/libnet_domain.c @@ -136,7 +136,7 @@ bool torture_domain_open_lsa(struct torture_context *torture) of specific server name. */ domain_name = lp_workgroup(torture->lp_ctx); - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); if (ctx == NULL) { d_printf("failed to create libnet context\n"); return false; @@ -190,7 +190,7 @@ bool torture_domain_close_lsa(struct torture_context *torture) return false; } - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); if (ctx == NULL) { d_printf("failed to create libnet context\n"); ret = false; @@ -245,7 +245,6 @@ bool torture_domain_open_samr(struct torture_context *torture) { NTSTATUS status; struct libnet_context *ctx; - struct event_context *evt_ctx=NULL; TALLOC_CTX *mem_ctx; struct policy_handle domain_handle, handle; struct libnet_DomainOpen io; @@ -255,7 +254,7 @@ bool torture_domain_open_samr(struct torture_context *torture) mem_ctx = talloc_init("test_domainopen_lsa"); - ctx = libnet_context_init(evt_ctx, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; /* we're accessing domain controller so the domain name should be @@ -320,7 +319,7 @@ bool torture_domain_close_samr(struct torture_context *torture) return false; } - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); if (ctx == NULL) { d_printf("failed to create libnet context\n"); ret = false; @@ -388,7 +387,7 @@ bool torture_domain_list(struct torture_context *torture) return false; } - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); if (ctx == NULL) { d_printf("failed to create libnet context\n"); ret = false; diff --git a/source4/torture/libnet/libnet_group.c b/source4/torture/libnet/libnet_group.c index cabccdbe66..12b8167a86 100644 --- a/source4/torture/libnet/libnet_group.c +++ b/source4/torture/libnet/libnet_group.c @@ -235,7 +235,7 @@ bool torture_groupinfo_api(struct torture_context *torture) prep_mem_ctx = talloc_init("prepare torture group info"); - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; status = torture_rpc_connection(torture, @@ -300,7 +300,7 @@ bool torture_grouplist(struct torture_context *torture) struct libnet_GroupList req; int i; - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; domain_name.string = lp_workgroup(torture->lp_ctx); @@ -361,7 +361,7 @@ bool torture_creategroup(struct torture_context *torture) mem_ctx = talloc_init("test_creategroup"); - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; req.in.group_name = TEST_GROUPNAME; diff --git a/source4/torture/libnet/libnet_lookup.c b/source4/torture/libnet/libnet_lookup.c index 9167d1de3e..b25b51b7d9 100644 --- a/source4/torture/libnet/libnet_lookup.c +++ b/source4/torture/libnet/libnet_lookup.c @@ -40,7 +40,7 @@ bool torture_lookup(struct torture_context *torture) mem_ctx = talloc_init("test_lookup"); - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; lookup.in.hostname = torture_setting_string(torture, "host", NULL); @@ -84,7 +84,7 @@ bool torture_lookup_host(struct torture_context *torture) mem_ctx = talloc_init("test_lookup_host"); - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; lookup.in.hostname = torture_setting_string(torture, "host", NULL); @@ -127,7 +127,7 @@ bool torture_lookup_pdc(struct torture_context *torture) mem_ctx = talloc_init("test_lookup_pdc"); - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; talloc_steal(ctx, mem_ctx); @@ -171,7 +171,7 @@ bool torture_lookup_sam_name(struct torture_context *torture) struct libnet_context *ctx; struct libnet_LookupName r; - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; mem_ctx = talloc_init("torture lookup sam name"); diff --git a/source4/torture/libnet/libnet_rpc.c b/source4/torture/libnet/libnet_rpc.c index 282837d3fe..f25c1ecc48 100644 --- a/source4/torture/libnet/libnet_rpc.c +++ b/source4/torture/libnet/libnet_rpc.c @@ -89,7 +89,7 @@ static bool torture_rpc_connect(struct torture_context *torture, { struct libnet_context *ctx; - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; d_printf("Testing connection to LSA interface\n"); diff --git a/source4/torture/libnet/libnet_share.c b/source4/torture/libnet/libnet_share.c index eb1edff18d..6bc5be40a6 100644 --- a/source4/torture/libnet/libnet_share.c +++ b/source4/torture/libnet/libnet_share.c @@ -131,7 +131,7 @@ bool torture_listshares(struct torture_context *torture) goto done; } - libnetctx = libnet_context_init(NULL, torture->lp_ctx); + libnetctx = libnet_context_init(torture->ev, torture->lp_ctx); if (!libnetctx) { printf("Couldn't allocate libnet context\n"); ret = false; @@ -210,7 +210,7 @@ bool torture_delshare(struct torture_context *torture) status = torture_rpc_binding(torture, &binding); torture_assert_ntstatus_ok(torture, status, "Failed to get binding"); - libnetctx = libnet_context_init(NULL, torture->lp_ctx); + libnetctx = libnet_context_init(torture->ev, torture->lp_ctx); libnetctx->cred = cmdline_credentials; status = torture_rpc_connection(torture, diff --git a/source4/torture/libnet/libnet_user.c b/source4/torture/libnet/libnet_user.c index 5446087034..15e3f03506 100644 --- a/source4/torture/libnet/libnet_user.c +++ b/source4/torture/libnet/libnet_user.c @@ -241,7 +241,7 @@ bool torture_createuser(struct torture_context *torture) mem_ctx = talloc_init("test_createuser"); - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; req.in.user_name = TEST_USERNAME; @@ -287,7 +287,7 @@ bool torture_deleteuser(struct torture_context *torture) prep_mem_ctx = talloc_init("prepare test_deleteuser"); - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; req.in.user_name = TEST_USERNAME; @@ -482,7 +482,7 @@ bool torture_modifyuser(struct torture_context *torture) prep_mem_ctx = talloc_init("prepare test_deleteuser"); - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; status = torture_rpc_connection(torture, @@ -616,7 +616,7 @@ bool torture_userinfo_api(struct torture_context *torture) prep_mem_ctx = talloc_init("prepare torture user info"); - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; status = torture_rpc_connection(torture, @@ -681,7 +681,7 @@ bool torture_userlist(struct torture_context *torture) struct libnet_UserList req; int i; - ctx = libnet_context_init(NULL, torture->lp_ctx); + ctx = libnet_context_init(torture->ev, torture->lp_ctx); ctx->cred = cmdline_credentials; domain_name.string = lp_workgroup(torture->lp_ctx); diff --git a/source4/torture/local/config.mk b/source4/torture/local/config.mk index 4143d415cf..efdea7f66a 100644 --- a/source4/torture/local/config.mk +++ b/source4/torture/local/config.mk @@ -5,35 +5,6 @@ SUBSYSTEM = torture INIT_FUNCTION = torture_local_init PRIVATE_PROTO_HEADER = \ proto.h -OBJ_FILES = \ - ../../lib/charset/tests/iconv.o \ - ../../lib/talloc/testsuite.o \ - ../../lib/replace/test/getifaddrs.o \ - ../../lib/replace/test/os2_delete.o \ - ../../lib/replace/test/strptime.o \ - ../../lib/replace/test/testsuite.o \ - ../../lib/messaging/tests/messaging.o \ - ../../lib/messaging/tests/irpc.o \ - ../../librpc/tests/binding_string.o \ - ../../lib/util/tests/idtree.o \ - ../../lib/socket/testsuite.o \ - ../../lib/socket_wrapper/testsuite.o \ - ../../libcli/resolve/testsuite.o \ - ../../lib/util/tests/strlist.o \ - ../../lib/util/tests/str.o \ - ../../lib/util/tests/file.o \ - ../../lib/util/tests/genrand.o \ - ../../lib/compression/testsuite.o \ - ../../lib/charset/tests/charset.o \ - ../../libcli/security/tests/sddl.o \ - ../../lib/tdr/testsuite.o \ - ../../lib/events/testsuite.o \ - ../../param/tests/share.o \ - ../../param/tests/loadparm.o \ - ../../auth/credentials/tests/simple.o \ - local.o \ - dbspeed.o \ - torture.o PRIVATE_DEPENDENCIES = \ RPC_NDR_ECHO \ TDR \ @@ -48,3 +19,34 @@ PRIVATE_DEPENDENCIES = \ torture_registry # End SUBSYSTEM TORTURE_LOCAL ################################# + +TORTURE_LOCAL_OBJ_FILES = \ + lib/charset/tests/iconv.o \ + lib/talloc/testsuite.o \ + lib/replace/test/getifaddrs.o \ + lib/replace/test/os2_delete.o \ + lib/replace/test/strptime.o \ + lib/replace/test/testsuite.o \ + lib/messaging/tests/messaging.o \ + lib/messaging/tests/irpc.o \ + librpc/tests/binding_string.o \ + lib/util/tests/idtree.o \ + lib/socket/testsuite.o \ + lib/socket_wrapper/testsuite.o \ + libcli/resolve/testsuite.o \ + lib/util/tests/strlist.o \ + lib/util/tests/str.o \ + lib/util/tests/file.o \ + lib/util/tests/genrand.o \ + lib/compression/testsuite.o \ + lib/charset/tests/charset.o \ + libcli/security/tests/sddl.o \ + lib/tdr/testsuite.o \ + lib/events/testsuite.o \ + param/tests/share.o \ + param/tests/loadparm.o \ + auth/credentials/tests/simple.o \ + torture/local/local.o \ + torture/local/dbspeed.o \ + torture/local/torture.o + diff --git a/source4/torture/ndr/netlogon.c b/source4/torture/ndr/netlogon.c index f498335bda..a5221f71e9 100644 --- a/source4/torture/ndr/netlogon.c +++ b/source4/torture/ndr/netlogon.c @@ -80,7 +80,7 @@ static const uint8_t netrserverreqchallenge_in_data[] = { }; static bool netrserverreqchallenge_in_check(struct torture_context *tctx, - struct netr_ServerReqChallenge *r) + struct netr_ServerReqChallenge *r) { uint8_t cred_expected[8] = { 0xa3, 0x2c, 0xa2, 0x95, 0x40, 0xcc, 0xb7, 0xbb }; torture_assert_str_equal(tctx, r->in.server_name, "\\\\NATIVE-DC.NATIVE.BASE", "server name"); @@ -95,7 +95,7 @@ static const uint8_t netrserverreqchallenge_out_data[] = { }; static bool netrserverreqchallenge_out_check(struct torture_context *tctx, - struct netr_ServerReqChallenge *r) + struct netr_ServerReqChallenge *r) { uint8_t cred_expected[8] = { 0x22, 0xfc, 0xc1, 0x17, 0xc0, 0xae, 0x27, 0x8e }; torture_assert_mem_equal(tctx, cred_expected, r->out.credentials->data, 8, "credentials"); diff --git a/source4/torture/rpc/dfs.c b/source4/torture/rpc/dfs.c index 9cfdd80578..5656476922 100644 --- a/source4/torture/rpc/dfs.c +++ b/source4/torture/rpc/dfs.c @@ -56,7 +56,7 @@ static bool test_NetShareAdd(TALLOC_CTX *mem_ctx, printf("Creating share %s\n", sharename); - if (!(libnetctx = libnet_context_init(NULL, tctx->lp_ctx))) { + if (!(libnetctx = libnet_context_init(tctx->ev, tctx->lp_ctx))) { return false; } @@ -96,7 +96,7 @@ static bool test_NetShareDel(TALLOC_CTX *mem_ctx, printf("Deleting share %s\n", sharename); - if (!(libnetctx = libnet_context_init(NULL, tctx->lp_ctx))) { + if (!(libnetctx = libnet_context_init(tctx->ev, tctx->lp_ctx))) { return false; } diff --git a/source4/torture/rpc/testjoin.c b/source4/torture/rpc/testjoin.c index 892886c08c..100e7cead2 100644 --- a/source4/torture/rpc/testjoin.c +++ b/source4/torture/rpc/testjoin.c @@ -311,7 +311,7 @@ _PUBLIC_ struct test_join *torture_join_domain(struct torture_context *tctx, struct samr_SetUserInfo s; union samr_UserInfo u; - tj = talloc(NULL, struct test_join); + tj = talloc(tctx, struct test_join); if (!tj) return NULL; libnet_r = talloc(tj, struct libnet_JoinDomain); @@ -320,7 +320,7 @@ _PUBLIC_ struct test_join *torture_join_domain(struct torture_context *tctx, return NULL; } - libnet_ctx = libnet_context_init(NULL, tctx->lp_ctx); + libnet_ctx = libnet_context_init(tctx->ev, tctx->lp_ctx); if (!libnet_ctx) { talloc_free(tj); return NULL; diff --git a/source4/torture/smb2/config.mk b/source4/torture/smb2/config.mk index 7463a31318..379632f0e7 100644 --- a/source4/torture/smb2/config.mk +++ b/source4/torture/smb2/config.mk @@ -6,7 +6,12 @@ SUBSYSTEM = torture INIT_FUNCTION = torture_smb2_init PRIVATE_PROTO_HEADER = \ proto.h -OBJ_FILES = \ +PRIVATE_DEPENDENCIES = \ + LIBCLI_SMB2 POPT_CREDENTIALS +# End SUBSYSTEM TORTURE_SMB2 +################################# + +TORTURE_SMB2_OBJ_FILES = $(addprefix torture/smb2/, \ connect.o \ scan.o \ util.o \ @@ -15,8 +20,5 @@ OBJ_FILES = \ find.o \ lock.o \ notify.o \ - smb2.o -PRIVATE_DEPENDENCIES = \ - LIBCLI_SMB2 POPT_CREDENTIALS -# End SUBSYSTEM TORTURE_SMB2 -################################# + smb2.o) + diff --git a/source4/torture/smbtorture.c b/source4/torture/smbtorture.c index 4eeea73003..faae784e4b 100644 --- a/source4/torture/smbtorture.c +++ b/source4/torture/smbtorture.c @@ -36,6 +36,8 @@ #include "librpc/rpc/dcerpc.h" #include "param/param.h" +#include "auth/credentials/credentials.h" + static bool run_matching(struct torture_context *torture, const char *prefix, const char *expr, @@ -673,7 +675,7 @@ int main(int argc,char *argv[]) exit(1); } - torture = torture_context_init(talloc_autofree_context(), ui_ops); + torture = torture_context_init(cli_credentials_get_event_context(cmdline_credentials), ui_ops); if (basedir != NULL) { if (basedir[0] != '/') { fprintf(stderr, "Please specify an absolute path to --basedir\n"); diff --git a/source4/torture/torture.c b/source4/torture/torture.c index ea8efaa8c3..8a41b72249 100644 --- a/source4/torture/torture.c +++ b/source4/torture/torture.c @@ -48,6 +48,18 @@ bool torture_register_suite(struct torture_suite *suite) _PUBLIC_ int torture_init(void) { + extern NTSTATUS torture_base_init(void); + extern NTSTATUS torture_ldap_init(void); + extern NTSTATUS torture_local_init(void); + extern NTSTATUS torture_nbt_init(void); + extern NTSTATUS torture_nbench_init(void); + extern NTSTATUS torture_rap_init(void); + extern NTSTATUS torture_rpc_init(void); + extern NTSTATUS torture_smb2_init(void); + extern NTSTATUS torture_net_init(void); + extern NTSTATUS torture_raw_init(void); + extern NTSTATUS torture_unix_init(void); + extern NTSTATUS torture_winbind_init(void); init_module_fn static_init[] = { STATIC_torture_MODULES }; init_module_fn *shared_init = load_samba_modules(NULL, cmdline_lp_ctx, "torture"); diff --git a/source4/torture/ui.c b/source4/torture/ui.c index a7025aac95..efa584ebea 100644 --- a/source4/torture/ui.c +++ b/source4/torture/ui.c @@ -27,14 +27,14 @@ #include "auth/credentials/credentials.h" #include "lib/cmdline/popt_common.h" -struct torture_context *torture_context_init(TALLOC_CTX *mem_ctx, +struct torture_context *torture_context_init(struct event_context *event_ctx, const struct torture_ui_ops *ui_ops) { - struct torture_context *torture = talloc_zero(mem_ctx, + struct torture_context *torture = talloc_zero(event_ctx, struct torture_context); torture->ui_ops = ui_ops; torture->returncode = true; - torture->ev = cli_credentials_get_event_context(cmdline_credentials); + torture->ev = event_ctx; if (ui_ops->init) ui_ops->init(torture); diff --git a/source4/torture/ui.h b/source4/torture/ui.h index ec4a658d74..15b04c2397 100644 --- a/source4/torture/ui.h +++ b/source4/torture/ui.h @@ -390,7 +390,7 @@ bool torture_suite_init_tcase(struct torture_suite *suite, struct torture_tcase *tcase, const char *name); -struct torture_context *torture_context_init(TALLOC_CTX *mem_ctx, +struct torture_context *torture_context_init(struct event_context *event_ctx, const struct torture_ui_ops *ui_ops); #endif /* __TORTURE_UI_H__ */ diff --git a/source4/torture/util_smb.c b/source4/torture/util_smb.c index 513070500e..c1a20094f3 100644 --- a/source4/torture/util_smb.c +++ b/source4/torture/util_smb.c @@ -553,8 +553,7 @@ _PUBLIC_ bool torture_open_connection_ev(struct smbcli_state **c, _PUBLIC_ bool torture_open_connection(struct smbcli_state **c, struct torture_context *tctx, int conn_index) { - return torture_open_connection_ev(c, conn_index, tctx, - cli_credentials_get_event_context(cmdline_credentials)); + return torture_open_connection_ev(c, conn_index, tctx, tctx->ev); } diff --git a/source4/torture/winbind/config.mk b/source4/torture/winbind/config.mk index b64b0647fc..155766a677 100644 --- a/source4/torture/winbind/config.mk +++ b/source4/torture/winbind/config.mk @@ -6,10 +6,10 @@ SUBSYSTEM = torture INIT_FUNCTION = torture_winbind_init PRIVATE_PROTO_HEADER = \ proto.h -OBJ_FILES = \ - winbind.o \ - struct_based.o PRIVATE_DEPENDENCIES = \ LIBWINBIND-CLIENT # End SUBSYSTEM TORTURE_WINBIND ################################# + +TORTURE_WINBIND_OBJ_FILES = $(addprefix torture/winbind/, winbind.o struct_based.o) + diff --git a/source4/torture/winbind/struct_based.c b/source4/torture/winbind/struct_based.c index 0fe2148b75..51ac0e622a 100644 --- a/source4/torture/winbind/struct_based.c +++ b/source4/torture/winbind/struct_based.c @@ -181,7 +181,8 @@ static bool torture_winbind_struct_netbios_name(struct torture_context *torture) expected = torture_setting_string(torture, "winbindd netbios name", lp_netbios_name(torture->lp_ctx)); - + expected = strupper_talloc(torture, expected); + torture_assert_str_equal(torture, rep.data.netbios_name, expected, "winbindd's netbios name doesn't match"); diff --git a/source4/utils/config.mk b/source4/utils/config.mk index 9dea2c5af3..a7d82684e4 100644 --- a/source4/utils/config.mk +++ b/source4/utils/config.mk @@ -4,8 +4,6 @@ # Start BINARY ntlm_auth [BINARY::ntlm_auth] INSTALLDIR = BINDIR -OBJ_FILES = \ - ntlm_auth.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG \ LIBSAMBA-UTIL \ @@ -20,14 +18,14 @@ PRIVATE_DEPENDENCIES = \ # End BINARY ntlm_auth ################################# +ntlm_auth_OBJ_FILES = utils/ntlm_auth.o + MANPAGES += utils/man/ntlm_auth.1 ################################# # Start BINARY getntacl [BINARY::getntacl] INSTALLDIR = BINDIR -OBJ_FILES = \ - getntacl.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG \ LIBSAMBA-UTIL \ @@ -35,6 +33,8 @@ PRIVATE_DEPENDENCIES = \ WRAP_XATTR \ LIBSAMBA-ERRORS +getntacl_OBJ_FILES = utils/getntacl.o + # End BINARY getntacl ################################# @@ -45,27 +45,25 @@ MANPAGES += utils/man/getntacl.1 [BINARY::setntacl] # disabled until rewritten #INSTALLDIR = BINDIR -OBJ_FILES = \ - setntacl.o # End BINARY setntacl ################################# +setntacl_OBJ_FILES = utils/setntacl.o + ################################# # Start BINARY setnttoken [BINARY::setnttoken] INSTALLDIR = BINDIR -OBJ_FILES = \ - setnttoken.o PRIVATE_DEPENDENCIES = # End BINARY setnttoken ################################# +setnttoken_OBJ_FILES = utils/setnttoken.o + ################################# # Start BINARY nmblookup [BINARY::nmblookup] INSTALLDIR = BINDIR -OBJ_FILES = \ - nmblookup.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG \ LIBSAMBA-UTIL \ @@ -77,12 +75,12 @@ PRIVATE_DEPENDENCIES = \ # End BINARY nmblookup ################################# +nmblookup_OBJ_FILES = utils/nmblookup.o + ################################# # Start BINARY testparm [BINARY::testparm] INSTALLDIR = BINDIR -OBJ_FILES = \ - testparm.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG \ LIBSAMBA-UTIL \ @@ -93,3 +91,5 @@ PRIVATE_DEPENDENCIES = \ CHARSET # End BINARY testparm ################################# + +testparm_OBJ_FILES = utils/testparm.o diff --git a/source4/utils/net/config.mk b/source4/utils/net/config.mk index ced0710ae0..4423c44c15 100644 --- a/source4/utils/net/config.mk +++ b/source4/utils/net/config.mk @@ -5,13 +5,6 @@ [BINARY::net] INSTALLDIR = BINDIR PRIVATE_PROTO_HEADER = net_proto.h -OBJ_FILES = \ - net.o \ - net_password.o \ - net_time.o \ - net_join.o \ - net_vampire.o \ - net_user.o PRIVATE_DEPENDENCIES = \ LIBSAMBA-HOSTCONFIG \ LIBSAMBA-UTIL \ @@ -21,3 +14,12 @@ PRIVATE_DEPENDENCIES = \ POPT_CREDENTIALS # End BINARY net ################################# + +net_OBJ_FILES = $(addprefix utils/net/, \ + net.o \ + net_password.o \ + net_time.o \ + net_join.o \ + net_vampire.o \ + net_user.o) + diff --git a/source4/utils/net/net.c b/source4/utils/net/net.c index c908ea6279..6086a4ce32 100644 --- a/source4/utils/net/net.c +++ b/source4/utils/net/net.c @@ -46,6 +46,8 @@ #include "lib/ldb/include/ldb.h" #include "librpc/rpc/dcerpc.h" #include "param/param.h" +#include "lib/events/events.h" +#include "auth/credentials/credentials.h" /* run a function from a function table. If not found then @@ -140,7 +142,7 @@ static int binary_net(int argc, const char **argv) int rc; int argc_new; const char **argv_new; - TALLOC_CTX *mem_ctx; + struct event_context *ev; struct net_context *ctx = NULL; poptContext pc; struct poptOption long_options[] = { @@ -183,17 +185,21 @@ static int binary_net(int argc, const char **argv) dcerpc_init(); - mem_ctx = talloc_init("net_context"); - ctx = talloc(mem_ctx, struct net_context); + ev = event_context_init(NULL); + if (!ev) { + d_printf("Failed to create an event context\n"); + exit(1); + } + ctx = talloc(ev, struct net_context); if (!ctx) { - d_printf("talloc_init(net_context) failed\n"); + d_printf("Failed to talloc a net_context\n"); exit(1); } ZERO_STRUCTP(ctx); - ctx->mem_ctx = mem_ctx; ctx->lp_ctx = cmdline_lp_ctx; ctx->credentials = cmdline_credentials; + cli_credentials_set_event_context(ctx->credentials, ev); rc = net_run_function(ctx, argc_new-1, argv_new+1, net_functable, net_usage); @@ -201,7 +207,7 @@ static int binary_net(int argc, const char **argv) DEBUG(0,("return code = %d\n", rc)); } - talloc_free(mem_ctx); + talloc_free(ev); return rc; } diff --git a/source4/utils/net/net.h b/source4/utils/net/net.h index 8c4fbd7fdd..17388079dd 100644 --- a/source4/utils/net/net.h +++ b/source4/utils/net/net.h @@ -22,7 +22,6 @@ #define _UTIL_NET_H struct net_context { - TALLOC_CTX *mem_ctx; struct cli_credentials *credentials; struct loadparm_context *lp_ctx; }; diff --git a/source4/utils/net/net_join.c b/source4/utils/net/net_join.c index abdcbf6027..37b3c21fcf 100644 --- a/source4/utils/net/net_join.c +++ b/source4/utils/net/net_join.c @@ -24,6 +24,7 @@ #include "libnet/libnet.h" #include "libcli/security/security.h" #include "param/param.h" +#include "lib/events/events.h" int net_join(struct net_context *ctx, int argc, const char **argv) { @@ -38,10 +39,10 @@ int net_join(struct net_context *ctx, int argc, const char **argv) case 0: /* no args -> fail */ return net_join_usage(ctx, argc, argv); case 1: /* only DOMAIN */ - tmp = talloc_strdup(ctx->mem_ctx, argv[0]); + tmp = talloc_strdup(ctx, argv[0]); break; case 2: /* DOMAIN and role */ - tmp = talloc_strdup(ctx->mem_ctx, argv[0]); + tmp = talloc_strdup(ctx, argv[0]); if (strcasecmp(argv[1], "BDC") == 0) { secure_channel_type = SEC_CHAN_BDC; } else if (strcasecmp(argv[1], "MEMBER") == 0) { @@ -57,12 +58,12 @@ int net_join(struct net_context *ctx, int argc, const char **argv) domain_name = tmp; - libnetctx = libnet_context_init(NULL, ctx->lp_ctx); + libnetctx = libnet_context_init(event_context_find(ctx), ctx->lp_ctx); if (!libnetctx) { return -1; } libnetctx->cred = ctx->credentials; - r = talloc(ctx->mem_ctx, struct libnet_Join); + r = talloc(ctx, struct libnet_Join); if (!r) { return -1; } @@ -83,7 +84,7 @@ int net_join(struct net_context *ctx, int argc, const char **argv) talloc_free(libnetctx); return -1; } - d_printf("Joined domain %s (%s)\n", r->out.domain_name, dom_sid_string(ctx->mem_ctx, r->out.domain_sid)); + d_printf("Joined domain %s (%s)\n", r->out.domain_name, dom_sid_string(ctx, r->out.domain_sid)); talloc_free(libnetctx); return 0; @@ -113,11 +114,11 @@ int net_vampire(struct net_context *ctx, int argc, const char **argv) case 0: /* no args -> fail */ return net_vampire_usage(ctx, argc, argv); case 1: /* only DOMAIN */ - tmp = talloc_strdup(ctx->mem_ctx, argv[0]); + tmp = talloc_strdup(ctx, argv[0]); break; case 2: /* domain and target dir */ - tmp = talloc_strdup(ctx->mem_ctx, argv[0]); - targetdir = talloc_strdup(ctx->mem_ctx, argv[1]); + tmp = talloc_strdup(ctx, argv[0]); + targetdir = talloc_strdup(ctx, argv[1]); break; default: /* too many args -> fail */ return net_vampire_usage(ctx, argc, argv); @@ -130,7 +131,7 @@ int net_vampire(struct net_context *ctx, int argc, const char **argv) return -1; } libnetctx->cred = ctx->credentials; - r = talloc(ctx->mem_ctx, struct libnet_Vampire); + r = talloc(ctx, struct libnet_Vampire); if (!r) { return -1; } @@ -150,7 +151,7 @@ int net_vampire(struct net_context *ctx, int argc, const char **argv) talloc_free(libnetctx); return -1; } - d_printf("Vampired domain %s (%s)\n", r->out.domain_name, dom_sid_string(ctx->mem_ctx, r->out.domain_sid)); + d_printf("Vampired domain %s (%s)\n", r->out.domain_name, dom_sid_string(ctx, r->out.domain_sid)); talloc_free(libnetctx); return 0; diff --git a/source4/utils/net/net_password.c b/source4/utils/net/net_password.c index 1fcb772e4c..97bb467fac 100644 --- a/source4/utils/net/net_password.c +++ b/source4/utils/net/net_password.c @@ -22,6 +22,7 @@ #include "utils/net/net.h" #include "libnet/libnet.h" #include "system/filesys.h" +#include "lib/events/events.h" #include "auth/credentials/credentials.h" /* @@ -46,13 +47,13 @@ static int net_password_change(struct net_context *ctx, int argc, const char **a if (argc > 0 && argv[0]) { new_password = argv[0]; } else { - password_prompt = talloc_asprintf(ctx->mem_ctx, "Enter new password for account [%s\\%s]:", + password_prompt = talloc_asprintf(ctx, "Enter new password for account [%s\\%s]:", cli_credentials_get_domain(ctx->credentials), cli_credentials_get_username(ctx->credentials)); new_password = getpass(password_prompt); } - libnetctx = libnet_context_init(NULL, ctx->lp_ctx); + libnetctx = libnet_context_init(event_context_find(ctx), ctx->lp_ctx); if (!libnetctx) { return -1; } @@ -66,7 +67,7 @@ static int net_password_change(struct net_context *ctx, int argc, const char **a r.generic.in.newpassword = new_password; /* do password change */ - status = libnet_ChangePassword(libnetctx, ctx->mem_ctx, &r); + status = libnet_ChangePassword(libnetctx, ctx, &r); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,("net_password_change: %s\n",r.generic.out.error_string)); return -1; @@ -101,10 +102,10 @@ static int net_password_set(struct net_context *ctx, int argc, const char **argv case 0: /* no args -> fail */ return net_password_set_usage(ctx, argc, argv); case 1: /* only DOM\\user; prompt for password */ - tmp = talloc_strdup(ctx->mem_ctx, argv[0]); + tmp = talloc_strdup(ctx, argv[0]); break; case 2: /* DOM\\USER and password */ - tmp = talloc_strdup(ctx->mem_ctx, argv[0]); + tmp = talloc_strdup(ctx, argv[0]); new_password = argv[1]; break; default: /* too mayn args -> fail */ @@ -115,19 +116,19 @@ static int net_password_set(struct net_context *ctx, int argc, const char **argv if ((p = strchr_m(tmp,'\\'))) { *p = 0; domain_name = tmp; - account_name = talloc_strdup(ctx->mem_ctx, p+1); + account_name = talloc_strdup(ctx, p+1); } else { account_name = tmp; domain_name = cli_credentials_get_domain(ctx->credentials); } if (!new_password) { - password_prompt = talloc_asprintf(ctx->mem_ctx, "Enter new password for account [%s\\%s]:", + password_prompt = talloc_asprintf(ctx, "Enter new password for account [%s\\%s]:", domain_name, account_name); new_password = getpass(password_prompt); } - libnetctx = libnet_context_init(NULL, ctx->lp_ctx); + libnetctx = libnet_context_init(event_context_find(ctx), ctx->lp_ctx); if (!libnetctx) { return -1; } @@ -140,7 +141,7 @@ static int net_password_set(struct net_context *ctx, int argc, const char **argv r.generic.in.newpassword = new_password; /* do password change */ - status = libnet_SetPassword(libnetctx, ctx->mem_ctx, &r); + status = libnet_SetPassword(libnetctx, ctx, &r); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,("net_password_set: %s\n",r.generic.out.error_string)); return -1; diff --git a/source4/utils/net/net_time.c b/source4/utils/net/net_time.c index 1f4bb3ed71..12a8132cea 100644 --- a/source4/utils/net/net_time.c +++ b/source4/utils/net/net_time.c @@ -22,6 +22,7 @@ #include "libnet/libnet.h" #include "utils/net/net.h" #include "system/time.h" +#include "lib/events/events.h" /* * Code for getting the remote time @@ -42,7 +43,7 @@ int net_time(struct net_context *ctx, int argc, const char **argv) return net_time_usage(ctx, argc, argv); } - libnetctx = libnet_context_init(NULL, ctx->lp_ctx); + libnetctx = libnet_context_init(event_context_find(ctx), ctx->lp_ctx); if (!libnetctx) { return -1; } @@ -53,7 +54,7 @@ int net_time(struct net_context *ctx, int argc, const char **argv) r.generic.in.server_name = server_name; /* get the time */ - status = libnet_RemoteTOD(libnetctx, ctx->mem_ctx, &r); + status = libnet_RemoteTOD(libnetctx, ctx, &r); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,("net_time: %s\n",r.generic.out.error_string)); return -1; diff --git a/source4/utils/net/net_user.c b/source4/utils/net/net_user.c index 39d50e7d8b..57cef6b383 100644 --- a/source4/utils/net/net_user.c +++ b/source4/utils/net/net_user.c @@ -21,6 +21,7 @@ #include "includes.h" #include "utils/net/net.h" #include "libnet/libnet.h" +#include "lib/events/events.h" #include "auth/credentials/credentials.h" static int net_user_add(struct net_context *ctx, int argc, const char **argv) @@ -36,14 +37,14 @@ static int net_user_add(struct net_context *ctx, int argc, const char **argv) return net_user_usage(ctx, argc, argv); break; case 1: - user_name = talloc_strdup(ctx->mem_ctx, argv[0]); + user_name = talloc_strdup(ctx, argv[0]); break; default: return net_user_usage(ctx, argc, argv); } /* libnet context init and its params */ - lnet_ctx = libnet_context_init(NULL, ctx->lp_ctx); + lnet_ctx = libnet_context_init(event_context_find(ctx), ctx->lp_ctx); if (!lnet_ctx) return -1; lnet_ctx->cred = ctx->credentials; @@ -52,7 +53,7 @@ static int net_user_add(struct net_context *ctx, int argc, const char **argv) r.in.user_name = user_name; r.in.domain_name = cli_credentials_get_domain(lnet_ctx->cred); - status = libnet_CreateUser(lnet_ctx, ctx->mem_ctx, &r); + status = libnet_CreateUser(lnet_ctx, ctx, &r); if (!NT_STATUS_IS_OK(status)) { DEBUG(0, ("Failed to add user account: %s\n", r.out.error_string)); @@ -76,14 +77,14 @@ static int net_user_delete(struct net_context *ctx, int argc, const char **argv) return net_user_usage(ctx, argc, argv); break; case 1: - user_name = talloc_strdup(ctx->mem_ctx, argv[0]); + user_name = talloc_strdup(ctx, argv[0]); break; default: return net_user_usage(ctx, argc, argv); } /* libnet context init and its params */ - lnet_ctx = libnet_context_init(NULL, ctx->lp_ctx); + lnet_ctx = libnet_context_init(event_context_find(ctx), ctx->lp_ctx); if (!lnet_ctx) return -1; lnet_ctx->cred = ctx->credentials; @@ -92,7 +93,7 @@ static int net_user_delete(struct net_context *ctx, int argc, const char **argv) r.in.user_name = user_name; r.in.domain_name = cli_credentials_get_domain(lnet_ctx->cred); - status = libnet_DeleteUser(lnet_ctx, ctx->mem_ctx, &r); + status = libnet_DeleteUser(lnet_ctx, ctx, &r); if (!NT_STATUS_IS_OK(status)) { DEBUG(0, ("Failed to delete user account: %s\n", r.out.error_string)); diff --git a/source4/utils/net/net_vampire.c b/source4/utils/net/net_vampire.c index 4f6371d617..38f05353ed 100644 --- a/source4/utils/net/net_vampire.c +++ b/source4/utils/net/net_vampire.c @@ -25,6 +25,7 @@ #include "librpc/gen_ndr/samr.h" #include "auth/auth.h" #include "param/param.h" +#include "lib/events/events.h" static int net_samdump_keytab_usage(struct net_context *ctx, int argc, const char **argv) { @@ -53,7 +54,7 @@ static int net_samdump_keytab(struct net_context *ctx, int argc, const char **ar break; } - libnetctx = libnet_context_init(NULL, ctx->lp_ctx); + libnetctx = libnet_context_init(event_context_find(ctx), ctx->lp_ctx); if (!libnetctx) { return -1; } @@ -63,7 +64,7 @@ static int net_samdump_keytab(struct net_context *ctx, int argc, const char **ar r.in.machine_account = NULL; r.in.binding_string = NULL; - status = libnet_SamDump_keytab(libnetctx, ctx->mem_ctx, &r); + status = libnet_SamDump_keytab(libnetctx, ctx, &r); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,("libnet_SamDump returned %s: %s\n", nt_errstr(status), @@ -99,7 +100,7 @@ int net_samdump(struct net_context *ctx, int argc, const char **argv) return rc; } - libnetctx = libnet_context_init(NULL, ctx->lp_ctx); + libnetctx = libnet_context_init(event_context_find(ctx), ctx->lp_ctx); if (!libnetctx) { return -1; } @@ -109,7 +110,7 @@ int net_samdump(struct net_context *ctx, int argc, const char **argv) r.in.machine_account = NULL; r.in.binding_string = NULL; - status = libnet_SamDump(libnetctx, ctx->mem_ctx, &r); + status = libnet_SamDump(libnetctx, ctx, &r); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,("libnet_SamDump returned %s: %s\n", nt_errstr(status), @@ -141,7 +142,7 @@ int net_samsync_ldb(struct net_context *ctx, int argc, const char **argv) struct libnet_context *libnetctx; struct libnet_samsync_ldb r; - libnetctx = libnet_context_init(NULL, ctx->lp_ctx); + libnetctx = libnet_context_init(event_context_find(ctx), ctx->lp_ctx); if (!libnetctx) { return -1; } diff --git a/source4/web_server/config.mk b/source4/web_server/config.mk index 7f38b085f2..e218aa8ddc 100644 --- a/source4/web_server/config.mk +++ b/source4/web_server/config.mk @@ -6,9 +6,8 @@ INIT_FUNCTION = server_service_web_init SUBSYSTEM = service PRIVATE_PROTO_HEADER = proto.h -OBJ_FILES = \ - web_server.o \ - http.o PRIVATE_DEPENDENCIES = ESP LIBTLS smbcalls process_model # End SUBSYSTEM WEB ####################### + +WEB_OBJ_FILES = $(addprefix web_server/, web_server.o http.o) diff --git a/source4/winbind/config.mk b/source4/winbind/config.mk index 8c9b3f1225..3165fc2d21 100644 --- a/source4/winbind/config.mk +++ b/source4/winbind/config.mk @@ -6,7 +6,19 @@ INIT_FUNCTION = server_service_winbind_init SUBSYSTEM = service PRIVATE_PROTO_HEADER = wb_proto.h -OBJ_FILES = \ +PRIVATE_DEPENDENCIES = \ + WB_HELPER \ + IDMAP \ + NDR_WINBIND \ + process_model \ + RPC_NDR_LSA \ + dcerpc_samr \ + PAM_ERRORS \ + LIBCLI_LDAP +# End SUBSYSTEM WINBIND +####################### + +WINBIND_OBJ_FILES = $(addprefix winbind/, \ wb_server.o \ wb_irpc.o \ wb_samba3_protocol.o \ @@ -36,36 +48,24 @@ OBJ_FILES = \ wb_cmd_setpwent.o \ wb_cmd_getpwent.o \ wb_pam_auth.o \ - wb_sam_logon.o -PRIVATE_DEPENDENCIES = \ - WB_HELPER \ - IDMAP \ - NDR_WINBIND \ - process_model \ - RPC_NDR_LSA \ - dcerpc_samr \ - PAM_ERRORS \ - LIBCLI_LDAP -# End SUBSYSTEM WINBIND -####################### + wb_sam_logon.o) ################################################ # Start SUBYSTEM WB_HELPER [SUBSYSTEM::WB_HELPER] PRIVATE_PROTO_HEADER = wb_helper.h -OBJ_FILES = \ - wb_async_helpers.o \ - wb_utils.o PUBLIC_DEPENDENCIES = RPC_NDR_LSA dcerpc_samr # End SUBSYSTEM WB_HELPER ################################################ +WB_HELPER_OBJ_FILES = $(addprefix winbind/, wb_async_helpers.o wb_utils.o) + ################################################ # Start SUBYSTEM IDMAP [SUBSYSTEM::IDMAP] PRIVATE_PROTO_HEADER = idmap_proto.h -OBJ_FILES = \ - idmap.o PUBLIC_DEPENDENCIES = SAMDB_COMMON # End SUBSYSTEM IDMAP ################################################ + +IDMAP_OBJ_FILES = winbind/idmap.o diff --git a/source4/winbind/idmap.c b/source4/winbind/idmap.c index 92ac41f1d2..0c729825db 100644 --- a/source4/winbind/idmap.c +++ b/source4/winbind/idmap.c @@ -654,7 +654,7 @@ NTSTATUS idmap_xids_to_sids(struct idmap_context *idmap_ctx, &id[i].sid); } if (!NT_STATUS_IS_OK(id[i].status)) { - DEBUG(1, ("idmapping failed for id[%d]\n", i)); + DEBUG(1, ("idmapping xid_to_sid failed for id[%d]\n", i)); error_count++; } } @@ -699,7 +699,7 @@ NTSTATUS idmap_sids_to_xids(struct idmap_context *idmap_ctx, &id[i].unixid); } if (!NT_STATUS_IS_OK(id[i].status)) { - DEBUG(1, ("idmapping failed for id[%d]\n", i)); + DEBUG(1, ("idmapping sid_to_xid failed for id[%d]\n", i)); error_count++; } } diff --git a/source4/winbind/wb_async_helpers.c b/source4/winbind/wb_async_helpers.c index 662dd111dd..25d52a16b5 100644 --- a/source4/winbind/wb_async_helpers.c +++ b/source4/winbind/wb_async_helpers.c @@ -305,73 +305,6 @@ NTSTATUS wb_lsa_lookupnames_recv(struct composite_context *c, talloc_free(c); return status; } - - -#if 0 - -struct cmd_checkmachacc_state { - struct composite_context *ctx; - struct wbsrv_call *call; - struct wbsrv_domain *domain; -}; - -static void cmd_checkmachacc_recv_init(struct composite_context *ctx); - - struct composite_context *wb_cmd_checkmachacc_send(struct wbsrv_call *call) -{ - struct composite_context *result, *ctx; - struct cmd_checkmachacc_state *state; - struct wbsrv_service *service = call->wbconn->listen_socket->service; - - result = composite_create(mem_ctx, call->event_ctx; - if (result == NULL) goto failed; - - state = talloc(result, struct cmd_checkmachacc_state); - if (state == NULL) goto failed; - state->ctx = result; - result->private_data = state; - state->call = call; - - state->domain = service->domains; - - ctx = wb_init_domain_send(service, state->domain); - if (ctx == NULL) goto failed; - ctx->async.fn = cmd_checkmachacc_recv_init; - ctx->async.private_data = state; - - return result; - - failed: - talloc_free(result); - return NULL; -} - -static void cmd_checkmachacc_recv_init(struct composite_context *ctx) -{ - struct cmd_checkmachacc_state *state = - talloc_get_type(ctx->async.private_data, - struct cmd_checkmachacc_state); - - state->ctx->status = wb_init_domain_recv(ctx); - if (!composite_is_ok(state->ctx)) return; - - composite_done(state->ctx); -} - - NTSTATUS wb_cmd_checkmachacc_recv(struct composite_context *c) -{ - NTSTATUS status = composite_wait(c); - talloc_free(c); - return status; -} - - NTSTATUS wb_cmd_checkmachacc(struct wbsrv_call *call) -{ - struct composite_context *c = wb_cmd_checkmachacc_send(call); - return wb_cmd_checkmachacc_recv(c); -} -#endif - struct samr_getuserdomgroups_state { struct composite_context *ctx; struct dcerpc_pipe *samr_pipe; diff --git a/source4/winbind/wb_pam_auth.c b/source4/winbind/wb_pam_auth.c index 62744297c6..ee54bcd58f 100644 --- a/source4/winbind/wb_pam_auth.c +++ b/source4/winbind/wb_pam_auth.c @@ -214,14 +214,11 @@ NTSTATUS wb_cmd_pam_auth_crap_recv(struct composite_context *c, struct composite_context *wb_cmd_pam_auth_send(TALLOC_CTX *mem_ctx, struct wbsrv_service *service, - const char *domain, - const char *user, - const char *password) + struct cli_credentials *credentials) { - struct cli_credentials *credentials; const char *workstation; NTSTATUS status; - + const char *user, *domain; DATA_BLOB chal, nt_resp, lm_resp, names_blob; int flags = CLI_CRED_NTLM_AUTH; if (lp_client_lanman_auth(service->task->lp_ctx)) { @@ -234,16 +231,6 @@ struct composite_context *wb_cmd_pam_auth_send(TALLOC_CTX *mem_ctx, DEBUG(5, ("wbsrv_samba3_pam_auth called\n")); - credentials = cli_credentials_init(mem_ctx); - if (!credentials) { - return NULL; - } - cli_credentials_set_conf(credentials, service->task->lp_ctx); - cli_credentials_set_domain(credentials, domain, CRED_SPECIFIED); - cli_credentials_set_username(credentials, user, CRED_SPECIFIED); - - cli_credentials_set_password(credentials, password, CRED_SPECIFIED); - chal = data_blob_talloc(mem_ctx, NULL, 8); if (!chal.data) { return NULL; @@ -269,7 +256,7 @@ struct composite_context *wb_cmd_pam_auth_send(TALLOC_CTX *mem_ctx, return NULL; } return wb_cmd_pam_auth_crap_send(mem_ctx, service, - 0 /* logon parameters */, + MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT|MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT /* logon parameters */, domain, user, workstation, chal, nt_resp, lm_resp); } diff --git a/source4/winbind/wb_samba3_cmd.c b/source4/winbind/wb_samba3_cmd.c index 24074700fc..8ae330df35 100644 --- a/source4/winbind/wb_samba3_cmd.c +++ b/source4/winbind/wb_samba3_cmd.c @@ -30,6 +30,8 @@ #include "librpc/gen_ndr/netlogon.h" #include "libcli/security/security.h" #include "auth/pam_errors.h" +#include "auth/credentials/credentials.h" +#include "smbd/service_task.h" /* Send off the reply to an async Samba3 query, handling filling in the PAM, NTSTATUS and string errors. @@ -110,10 +112,12 @@ NTSTATUS wbsrv_samba3_netbios_name(struct wbsrv_samba3_call *s3call) NTSTATUS wbsrv_samba3_priv_pipe_dir(struct wbsrv_samba3_call *s3call) { - s3call->response.result = WINBINDD_OK; - s3call->response.extra_data.data = - smbd_tmp_path(s3call, s3call->wbconn->lp_ctx, WINBINDD_SAMBA3_PRIVILEGED_SOCKET); - NT_STATUS_HAVE_NO_MEMORY(s3call->response.extra_data.data); + char *path = smbd_tmp_path(s3call, s3call->wbconn->lp_ctx, WINBINDD_SAMBA3_PRIVILEGED_SOCKET); + NT_STATUS_HAVE_NO_MEMORY(path); + s3call->response.result = WINBINDD_OK; + s3call->response.extra_data.data = path; + + s3call->response.length += strlen(path) + 1; return NT_STATUS_OK; } @@ -123,41 +127,67 @@ NTSTATUS wbsrv_samba3_ping(struct wbsrv_samba3_call *s3call) return NT_STATUS_OK; } -#if 0 -/* - Validate that we have a working pipe to the domain controller. - Return any NT error found in the process +/* Plaintext authentication + + This interface is used by ntlm_auth in it's 'basic' authentication + mode, as well as by pam_winbind to authenticate users where we are + given a plaintext password. */ -static void checkmachacc_recv_creds(struct composite_context *ctx); +static void check_machacc_recv(struct composite_context *ctx); NTSTATUS wbsrv_samba3_check_machacc(struct wbsrv_samba3_call *s3call) { + NTSTATUS status; + struct cli_credentials *creds; struct composite_context *ctx; + struct wbsrv_service *service = + s3call->wbconn->listen_socket->service; + + /* Create a credentials structure */ + creds = cli_credentials_init(s3call); + if (creds == NULL) { + return NT_STATUS_NO_MEMORY; + } - DEBUG(5, ("wbsrv_samba3_check_machacc called\n")); + cli_credentials_set_event_context(creds, service->task->event_ctx); - ctx = wb_cmd_checkmachacc_send(s3call->call); - NT_STATUS_HAVE_NO_MEMORY(ctx); + cli_credentials_set_conf(creds, service->task->lp_ctx); + + /* Connect the machine account to the credentials */ + status = cli_credentials_set_machine_account(creds, service->task->lp_ctx); + if (!NT_STATUS_IS_OK(status)) { + talloc_free(creds); + return status; + } + + ctx = wb_cmd_pam_auth_send(s3call, service, creds); + + if (!ctx) { + talloc_free(creds); + return NT_STATUS_NO_MEMORY; + } - ctx->async.fn = checkmachacc_recv_creds; + ctx->async.fn = check_machacc_recv; ctx->async.private_data = s3call; - s3call->call->flags |= WBSRV_CALL_FLAGS_REPLY_ASYNC; + s3call->flags |= WBSRV_CALL_FLAGS_REPLY_ASYNC; return NT_STATUS_OK; } - -static void checkmachacc_recv_creds(struct composite_context *ctx) + +static void check_machacc_recv(struct composite_context *ctx) { struct wbsrv_samba3_call *s3call = talloc_get_type(ctx->async.private_data, struct wbsrv_samba3_call); NTSTATUS status; - status = wb_cmd_checkmachacc_recv(ctx); + status = wb_cmd_pam_auth_recv(ctx); + + if (!NT_STATUS_IS_OK(status)) goto done; + done: wbsrv_samba3_async_auth_epilogue(status, s3call); } -#endif /* Find the name of a suitable domain controller, by query on the @@ -543,6 +573,7 @@ NTSTATUS wbsrv_samba3_pam_auth(struct wbsrv_samba3_call *s3call) struct composite_context *ctx; struct wbsrv_service *service = s3call->wbconn->listen_socket->service; + struct cli_credentials *credentials; char *user, *domain; if (!wb_samba3_split_username(s3call, s3call->wbconn->lp_ctx, @@ -551,8 +582,17 @@ NTSTATUS wbsrv_samba3_pam_auth(struct wbsrv_samba3_call *s3call) return NT_STATUS_NO_SUCH_USER; } - ctx = wb_cmd_pam_auth_send(s3call, service, domain, user, - s3call->request.data.auth.pass); + credentials = cli_credentials_init(s3call); + if (!credentials) { + return NT_STATUS_NO_MEMORY; + } + cli_credentials_set_conf(credentials, service->task->lp_ctx); + cli_credentials_set_domain(credentials, domain, CRED_SPECIFIED); + cli_credentials_set_username(credentials, user, CRED_SPECIFIED); + + cli_credentials_set_password(credentials, s3call->request.data.auth.pass, CRED_SPECIFIED); + + ctx = wb_cmd_pam_auth_send(s3call, service, credentials); NT_STATUS_HAVE_NO_MEMORY(ctx); ctx->async.fn = pam_auth_recv; diff --git a/source4/winbind/wb_samba3_protocol.c b/source4/winbind/wb_samba3_protocol.c index b252273cb6..3b97dff276 100644 --- a/source4/winbind/wb_samba3_protocol.c +++ b/source4/winbind/wb_samba3_protocol.c @@ -78,10 +78,8 @@ NTSTATUS wbsrv_samba3_handle_call(struct wbsrv_samba3_call *s3call) case WINBINDD_INTERFACE_VERSION: return wbsrv_samba3_interface_version(s3call); -#if 0 case WINBINDD_CHECK_MACHACC: return wbsrv_samba3_check_machacc(s3call); -#endif case WINBINDD_PING: return wbsrv_samba3_ping(s3call); @@ -187,7 +185,6 @@ NTSTATUS wbsrv_samba3_handle_call(struct wbsrv_samba3_call *s3call) case WINBINDD_SET_MAPPING: case WINBINDD_SET_HWM: case WINBINDD_DUMP_MAPS: - case WINBINDD_CHECK_MACHACC: case WINBINDD_DOMAIN_INFO: case WINBINDD_SHOW_SEQUENCE: case WINBINDD_WINS_BYIP: diff --git a/source4/wrepl_server/config.mk b/source4/wrepl_server/config.mk index a2a6a72fe3..e339d223aa 100644 --- a/source4/wrepl_server/config.mk +++ b/source4/wrepl_server/config.mk @@ -5,7 +5,13 @@ [MODULE::WREPL_SRV] INIT_FUNCTION = server_service_wrepl_init SUBSYSTEM = service -OBJ_FILES = \ +PRIVATE_PROTO_HEADER = wrepl_server_proto.h +PRIVATE_DEPENDENCIES = \ + LIBCLI_WREPL WINSDB process_model +# End SUBSYSTEM WREPL_SRV +####################### + +WREPL_SRV_OBJ_FILES = $(addprefix wrepl_server/, \ wrepl_server.o \ wrepl_in_connection.o \ wrepl_in_call.o \ @@ -14,9 +20,5 @@ OBJ_FILES = \ wrepl_scavenging.o \ wrepl_out_pull.o \ wrepl_out_push.o \ - wrepl_out_helpers.o -PRIVATE_PROTO_HEADER = wrepl_server_proto.h -PRIVATE_DEPENDENCIES = \ - LIBCLI_WREPL WINSDB process_model -# End SUBSYSTEM WREPL_SRV -####################### + wrepl_out_helpers.o) + diff --git a/testprogs/blackbox/ndrdump/samr-CreateUser-in.dat b/testprogs/blackbox/ndrdump/samr-CreateUser-in.dat Binary files differnew file mode 100644 index 0000000000..a5840e1f7f --- /dev/null +++ b/testprogs/blackbox/ndrdump/samr-CreateUser-in.dat diff --git a/testprogs/blackbox/ndrdump/samr-CreateUser-out.dat b/testprogs/blackbox/ndrdump/samr-CreateUser-out.dat Binary files differnew file mode 100644 index 0000000000..cf9131dba9 --- /dev/null +++ b/testprogs/blackbox/ndrdump/samr-CreateUser-out.dat diff --git a/testprogs/blackbox/test_kinit.sh b/testprogs/blackbox/test_kinit.sh index dbcdcf1112..29582055ee 100755 --- a/testprogs/blackbox/test_kinit.sh +++ b/testprogs/blackbox/test_kinit.sh @@ -86,6 +86,14 @@ testit "kinit with user password" $samba4bindir/samba4kinit --password-file=./tm test_smbclient "Test login with user kerberos ccache" 'ls' -k yes || failed=`expr $failed + 1` +NEWUSERPASS=testPaSS@34% +testit "change user password" $VALGRIND $net password change -W$DOMAIN -U$DOMAIN\\nettestuser%$USERPASS $CONFIGURATION -k no $NEWUSERPASS $@ || failed=`expr $failed + 1` + +echo $NEWUSERPASS > ./tmpuserpassfile +testit "kinit with user password" $samba4bindir/samba4kinit --password-file=./tmpuserpassfile --request-pac nettestuser@$REALM || failed=`expr $failed + 1` + +test_smbclient "Test login with user kerberos ccache" 'ls' -k yes || failed=`expr $failed + 1` + KRB5CCNAME="$PREFIX/tmpccache" export KRB5CCNAME diff --git a/testprogs/blackbox/test_ndrdump.sh b/testprogs/blackbox/test_ndrdump.sh new file mode 100644 index 0000000000..38c33ad3c1 --- /dev/null +++ b/testprogs/blackbox/test_ndrdump.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# Blackbox tests for masktest +# Copyright (C) 2008 Andrew Tridgell +# Copyright (C) 2008 Andrew Bartlett +# based on test_smbclient.sh + +failed=0 + +samba4bindir=`dirname $0`/../../source/bin +ndrdump=$samba4bindir/ndrdump +files=`dirname $0`/ndrdump + +testit() { + name="$1" + shift + cmdline="$*" + echo "test: $name" + $cmdline + status=$? + if [ x$status = x0 ]; then + echo "success: $name" + else + echo "failure: $name" + fi + return $status +} + +testit "ndrdump with in" $VALGRIND $ndrdump samr samr_CreateUser in $files/samr-CreateUser-in.dat $@ || failed=`expr $failed + 1` +testit "ndrdump with out" $VALGRIND $ndrdump samr samr_CreateUser out $files/samr-CreateUser-out.dat $@ || failed=`expr $failed + 1` +testit "ndrdump with --context-file" $VALGRIND $ndrdump --context-file $files/samr-CreateUser-in.dat samr samr_CreateUser out $files/samr-CreateUser-out.dat $@ || failed=`expr $failed + 1` +testit "ndrdump with validate" $VALGRIND $ndrdump --validate samr samr_CreateUser in $files/samr-CreateUser-in.dat $@ || failed=`expr $failed + 1` + +exit $failed diff --git a/testprogs/blackbox/test_smbclient.sh b/testprogs/blackbox/test_smbclient.sh index a803d83363..4df64cac94 100755 --- a/testprogs/blackbox/test_smbclient.sh +++ b/testprogs/blackbox/test_smbclient.sh @@ -86,11 +86,29 @@ testit "Comparing files" diff tmpfile-old tmpfile || failed=`expr $failed + 1` runcmd "Creating directory, Changing directory, Going back" 'mkdir bla; cd bla; cd ..; rmdir bla' || failed=`expr $failed + 1` # enable recurse, create nested directory runcmd "Creating nested directory" 'mkdir bla/bloe' || failed=`expr $failed + 1` -# remove parent directory -runcmd "Removing directory" 'rmdir bla/bloe' || failed=`expr $failed + 1` # remove child directory +runcmd "Removing directory" 'rmdir bla/bloe' || failed=`expr $failed + 1` +# remove parent directory runcmd "Removing directory" 'rmdir bla'|| failed=`expr $failed + 1` +# enable recurse, create nested directory +runcmd "Creating nested directory" 'mkdir bla' || failed=`expr $failed + 1` +# rename bla to bla2 +runcmd "rename of nested directory" 'rename bla bla2' || failed=`expr $failed + 1` +# deltree +runcmd "deltree of nested directory" 'deltree bla2' || failed=`expr $failed + 1` # run fsinfo +runcmd "Getting file system info" 'fsinfo allocation'|| failed=`expr $failed + 1` +runcmd "Getting file system info" 'fsinfo volume'|| failed=`expr $failed + 1` +runcmd "Getting file system info" 'fsinfo volumeinfo'|| failed=`expr $failed + 1` +runcmd "Getting file system info" 'fsinfo sizeinfo'|| failed=`expr $failed + 1` +runcmd "Getting file system info" 'fsinfo deviceinfo'|| failed=`expr $failed + 1` +runcmd "Getting file system info" 'fsinfo attributeinfo'|| failed=`expr $failed + 1` +runcmd "Getting file system info" 'fsinfo volume-information'|| failed=`expr $failed + 1` +runcmd "Getting file system info" 'fsinfo size-information'|| failed=`expr $failed + 1` +runcmd "Getting file system info" 'fsinfo device-information'|| failed=`expr $failed + 1` +runcmd "Getting file system info" 'fsinfo attribute-information'|| failed=`expr $failed + 1` +runcmd "Getting file system info" 'fsinfo quota-information'|| failed=`expr $failed + 1` +runcmd "Getting file system info" 'fsinfo fullsize-information'|| failed=`expr $failed + 1` runcmd "Getting file system info" 'fsinfo objectid'|| failed=`expr $failed + 1` # put that file @@ -98,6 +116,7 @@ runcmd "Putting file" 'put tmpfile'|| failed=`expr $failed + 1` # get that file mv tmpfile tmpfile-old runcmd "Getting file" 'get tmpfile'|| failed=`expr $failed + 1` +runcmd "Getting file EA info" 'eainfo tmpfile'|| failed=`expr $failed + 1` # remove that file runcmd "Removing file" 'rm tmpfile' || failed=`expr $failed + 1` # compare locally @@ -111,6 +130,11 @@ testit "Comparing files" diff tmpfilex tmpfile || failed=`expr $failed + 1` # remove that file runcmd "Removing file" 'rm tmpfilex'|| failed=`expr $failed + 1` +runcmd "Lookup name" "lookup $DOMAIN\\$USERNAME" || failed=`expr $failed + 1` + +#Fails unless there are privilages +#runcmd "Lookup privs of name" "privileges $DOMAIN\\$USERNAME" || failed=`expr $failed + 1` + # do some simple operations using old protocol versions runcmd "List directory with LANMAN1" 'ls' -m LANMAN1 || failed=`expr $failed + 1` runcmd "List directory with LANMAN2" 'ls' -m LANMAN2 || failed=`expr $failed + 1` |