summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/Makefile28
-rw-r--r--source4/auth/auth.c5
-rw-r--r--source4/auth/config.mk49
-rw-r--r--source4/auth/credentials/config.mk9
-rw-r--r--source4/auth/gensec/config.mk31
-rw-r--r--source4/auth/gensec/gensec.c6
-rw-r--r--source4/auth/kerberos/config.mk15
-rw-r--r--source4/auth/ntlmssp/config.mk9
-rw-r--r--source4/build/m4/public.m410
-rwxr-xr-xsource4/build/make/lex_compile.sh (renamed from source4/script/lex_compile.sh)0
-rw-r--r--source4/build/make/python.mk62
-rw-r--r--source4/build/make/rules.mk (renamed from source4/rules.mk)131
-rwxr-xr-xsource4/build/make/yacc_compile.sh (renamed from source4/script/yacc_compile.sh)0
-rw-r--r--source4/build/smb_build/config_mk.pm16
-rw-r--r--source4/build/smb_build/header.pm12
-rw-r--r--source4/build/smb_build/input.pm22
-rw-r--r--source4/build/smb_build/main.pl14
-rw-r--r--source4/build/smb_build/makefile.pm50
-rw-r--r--source4/build/smb_build/output.pm61
-rw-r--r--source4/cldap_server/config.mk10
-rw-r--r--source4/cldap_server/netlogon.c2
-rw-r--r--source4/client/config.mk8
-rw-r--r--source4/cluster/config.mk5
-rw-r--r--source4/cluster/ctdb/config.mk14
-rw-r--r--source4/dsdb/config.mk38
-rw-r--r--source4/dsdb/samdb/ldb_modules/config.mk120
-rw-r--r--source4/dynconfig.mk6
-rwxr-xr-xsource4/heimdal_build/asn1_deps.pl7
-rw-r--r--source4/heimdal_build/config.mk794
-rw-r--r--source4/kdc/config.mk13
-rw-r--r--source4/ldap_server/config.mk12
-rw-r--r--source4/lib/appweb/config.mk16
-rw-r--r--source4/lib/basic.mk13
-rw-r--r--source4/lib/charset/config.mk5
-rw-r--r--source4/lib/cmdline/config.mk9
-rw-r--r--source4/lib/crypto/config.mk21
-rw-r--r--source4/lib/dbwrap/config.mk6
-rw-r--r--source4/lib/events/config.mk16
-rw-r--r--source4/lib/events/events.c4
-rw-r--r--source4/lib/ldb-samba/config.mk3
-rw-r--r--source4/lib/ldb/common/ldb_modules.c12
-rw-r--r--source4/lib/ldb/config.mk86
-rw-r--r--source4/lib/ldb/include/ldb_private.h6
-rw-r--r--source4/lib/ldb/ldb_ildap/config.mk3
-rw-r--r--source4/lib/ldb/python.mk2
-rw-r--r--source4/lib/ldb/tools/config.mk28
-rw-r--r--source4/lib/messaging/config.mk5
-rw-r--r--source4/lib/nss_wrapper/config.mk3
-rw-r--r--source4/lib/policy/config.mk6
-rw-r--r--source4/lib/popt/config.mk8
-rw-r--r--source4/lib/registry/config.mk51
-rw-r--r--source4/lib/samba3/config.mk3
-rw-r--r--source4/lib/socket/config.mk21
-rw-r--r--source4/lib/socket_wrapper/config.mk3
-rw-r--r--source4/lib/stream/config.mk8
-rw-r--r--source4/lib/talloc/config.mk5
-rw-r--r--source4/lib/tdb/config.mk25
-rw-r--r--source4/lib/tdb/python.mk2
-rw-r--r--source4/lib/tdr/config.mk3
-rw-r--r--source4/lib/tls/config.mk10
-rw-r--r--source4/lib/util/config.mk34
-rw-r--r--source4/libcli/auth/config.mk9
-rw-r--r--source4/libcli/config.mk130
-rw-r--r--source4/libcli/ldap/config.mk14
-rw-r--r--source4/libcli/ldap/ldap_ndr.h2
-rw-r--r--source4/libcli/raw/interfaces.h18
-rw-r--r--source4/libcli/security/config.mk13
-rw-r--r--source4/libcli/smb2/config.mk29
-rw-r--r--source4/libcli/smb2/read.c13
-rw-r--r--source4/libcli/wbclient/config.mk3
-rw-r--r--source4/libnet/config.mk44
-rw-r--r--source4/libnet/libnet.c13
-rw-r--r--source4/libnet/libnet_vampire.c2
-rw-r--r--source4/libnet/py_net.c13
-rw-r--r--source4/librpc/config.mk465
-rw-r--r--source4/librpc/rpc/binding.c724
-rw-r--r--source4/librpc/rpc/dcerpc_util.c695
-rw-r--r--source4/nbt_server/config.mk45
-rw-r--r--source4/nsswitch/config.m43
-rw-r--r--source4/nsswitch/config.mk12
-rw-r--r--source4/ntptr/config.mk11
-rw-r--r--source4/ntptr/ntptr_base.c1
-rw-r--r--source4/ntvfs/common/config.mk15
-rw-r--r--source4/ntvfs/config.mk34
-rw-r--r--source4/ntvfs/ntvfs_base.c10
-rw-r--r--source4/ntvfs/ntvfs_generic.c3
-rw-r--r--source4/ntvfs/posix/config.mk26
-rw-r--r--source4/ntvfs/sysdep/config.mk26
-rw-r--r--source4/ntvfs/sysdep/sys_lease.c1
-rw-r--r--source4/ntvfs/sysdep/sys_notify.c1
-rw-r--r--source4/ntvfs/unixuid/config.mk4
-rw-r--r--source4/param/config.mk35
-rw-r--r--source4/param/provision.c4
-rw-r--r--source4/param/share.c2
-rw-r--r--source4/pidl/config.mk9
-rw-r--r--source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm65
-rw-r--r--source4/pidl/lib/Parse/Pidl/Samba4/Python.pm11
-rwxr-xr-xsource4/pidl/tests/samba3-cli.pl13
-rw-r--r--source4/rpc_server/config.mk76
-rw-r--r--source4/rpc_server/service_rpc.c12
-rwxr-xr-xsource4/scripting/bin/subunitrun21
-rw-r--r--source4/scripting/ejs/config.mk57
-rw-r--r--source4/scripting/ejs/ejsnet/config.mk14
-rw-r--r--source4/scripting/ejs/smbcalls.c26
-rw-r--r--source4/scripting/python/config.mk34
-rw-r--r--source4/scripting/python/misc.i5
-rw-r--r--source4/scripting/python/misc.py1
-rw-r--r--source4/scripting/python/misc_wrap.c45
-rw-r--r--source4/scripting/python/pytalloc.c4
-rw-r--r--source4/scripting/python/samba/getopt.py10
-rw-r--r--source4/scripting/python/samba/idmap.py7
-rw-r--r--source4/scripting/python/samba/provision.py7
-rw-r--r--source4/scripting/python/samba/samdb.py28
-rw-r--r--source4/scripting/python/samba/tests/__init__.py15
-rw-r--r--source4/scripting/python/samba/tests/dcerpc/registry.py9
-rw-r--r--source4/scripting/python/samba/tests/dcerpc/rpcecho.py7
-rw-r--r--source4/scripting/python/samba/tests/dcerpc/sam.py7
-rw-r--r--source4/scripting/python/samba/tests/dcerpc/unix.py9
-rw-r--r--source4/scripting/python/samba/tests/provision.py2
-rw-r--r--source4/scripting/python/samba/tests/samdb.py4
-rw-r--r--source4/scripting/python/uuidmodule.c4
-rwxr-xr-xsource4/selftest/samba4_tests.sh5
-rw-r--r--source4/selftest/target/Samba4.pm2
-rwxr-xr-xsource4/setup/newuser10
-rw-r--r--source4/setup/setpassword8
-rwxr-xr-xsource4/setup/tests/blackbox_provision.sh7
-rw-r--r--source4/smb_server/config.mk16
-rw-r--r--source4/smb_server/smb/config.mk14
-rw-r--r--source4/smb_server/smb2/config.mk14
-rw-r--r--source4/smb_server/smb2/fileio.c10
-rw-r--r--source4/smbd/config.mk26
-rw-r--r--source4/smbd/process_model.c3
-rw-r--r--source4/smbd/process_model.mk20
-rw-r--r--source4/smbd/server.c12
-rw-r--r--source4/static_deps.mk1
-rw-r--r--source4/torture/config.mk262
-rw-r--r--source4/torture/libnet/libnet_domain.c11
-rw-r--r--source4/torture/libnet/libnet_group.c6
-rw-r--r--source4/torture/libnet/libnet_lookup.c8
-rw-r--r--source4/torture/libnet/libnet_rpc.c2
-rw-r--r--source4/torture/libnet/libnet_share.c4
-rw-r--r--source4/torture/libnet/libnet_user.c10
-rw-r--r--source4/torture/local/config.mk60
-rw-r--r--source4/torture/ndr/netlogon.c4
-rw-r--r--source4/torture/rpc/dfs.c4
-rw-r--r--source4/torture/rpc/testjoin.c4
-rw-r--r--source4/torture/smb2/config.mk14
-rw-r--r--source4/torture/smbtorture.c4
-rw-r--r--source4/torture/torture.c12
-rw-r--r--source4/torture/ui.c6
-rw-r--r--source4/torture/ui.h2
-rw-r--r--source4/torture/util_smb.c3
-rw-r--r--source4/torture/winbind/config.mk6
-rw-r--r--source4/torture/winbind/struct_based.c3
-rw-r--r--source4/utils/config.mk24
-rw-r--r--source4/utils/net/config.mk16
-rw-r--r--source4/utils/net/net.c18
-rw-r--r--source4/utils/net/net.h1
-rw-r--r--source4/utils/net/net_join.c21
-rw-r--r--source4/utils/net/net_password.c19
-rw-r--r--source4/utils/net/net_time.c5
-rw-r--r--source4/utils/net/net_user.c13
-rw-r--r--source4/utils/net/net_vampire.c11
-rw-r--r--source4/web_server/config.mk5
-rw-r--r--source4/winbind/config.mk36
-rw-r--r--source4/winbind/idmap.c4
-rw-r--r--source4/winbind/wb_async_helpers.c67
-rw-r--r--source4/winbind/wb_pam_auth.c19
-rw-r--r--source4/winbind/wb_samba3_cmd.c80
-rw-r--r--source4/winbind/wb_samba3_protocol.c3
-rw-r--r--source4/wrepl_server/config.mk16
-rw-r--r--testprogs/blackbox/ndrdump/samr-CreateUser-in.datbin0 -> 60 bytes
-rw-r--r--testprogs/blackbox/ndrdump/samr-CreateUser-out.datbin0 -> 32 bytes
-rwxr-xr-xtestprogs/blackbox/test_kinit.sh8
-rw-r--r--testprogs/blackbox/test_ndrdump.sh33
-rwxr-xr-xtestprogs/blackbox/test_smbclient.sh28
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
new file mode 100644
index 0000000000..a5840e1f7f
--- /dev/null
+++ b/testprogs/blackbox/ndrdump/samr-CreateUser-in.dat
Binary files differ
diff --git a/testprogs/blackbox/ndrdump/samr-CreateUser-out.dat b/testprogs/blackbox/ndrdump/samr-CreateUser-out.dat
new file mode 100644
index 0000000000..cf9131dba9
--- /dev/null
+++ b/testprogs/blackbox/ndrdump/samr-CreateUser-out.dat
Binary files differ
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`