Merge branch 'v4-0-test' of ssh://git.samba.org/data/git/samba into v4-0-gmake3
authorJelmer Vernooij <jelmer@samba.org>
Tue, 8 Apr 2008 01:45:06 +0000 (03:45 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Tue, 8 Apr 2008 01:45:06 +0000 (03:45 +0200)
Conflicts:

source/auth/credentials/config.mk
source/auth/gensec/config.mk
source/build/smb_build/makefile.pm
source/heimdal_build/config.mk
source/lib/events/config.mk
source/lib/nss_wrapper/config.mk
source/lib/policy/config.mk
source/lib/registry/config.mk
source/lib/socket_wrapper/config.mk
source/lib/tdb/config.mk
source/lib/tls/config.mk
source/lib/util/config.mk
source/libcli/config.mk
source/libcli/ldap/config.mk
source/libnet/config.mk
source/librpc/config.mk
source/param/config.mk
source/rpc_server/config.mk
source/scripting/ejs/config.mk
source/smbd/process_model.mk
(This used to be commit 760378e0294dd0cd4523a83448328478632d7e3d)

388 files changed:
.gitignore
NEWS
WHATSNEW.txt
howto.txt
source4/Makefile
source4/VERSION
source4/auth/auth.c
source4/auth/auth.h
source4/auth/auth_anonymous.c
source4/auth/auth_developer.c
source4/auth/auth_sam.c
source4/auth/auth_simple.c
source4/auth/auth_unix.c
source4/auth/auth_util.c
source4/auth/auth_winbind.c
source4/auth/config.mk
source4/auth/credentials/config.mk
source4/auth/credentials/credentials.c
source4/auth/credentials/credentials.h
source4/auth/credentials/credentials.i
source4/auth/credentials/credentials.py
source4/auth/credentials/credentials_files.c
source4/auth/credentials/credentials_krb5.c
source4/auth/credentials/credentials_ntlm.c
source4/auth/credentials/credentials_wrap.c
source4/auth/credentials/tests/bindings.py
source4/auth/gensec/config.mk
source4/auth/gensec/cyrus_sasl.c
source4/auth/gensec/gensec.c
source4/auth/gensec/gensec.h
source4/auth/gensec/gensec_gssapi.c
source4/auth/gensec/gensec_krb5.c
source4/auth/gensec/schannel.c
source4/auth/gensec/socket.c
source4/auth/gensec/spnego.c
source4/auth/kerberos/kerberos_util.c
source4/auth/ntlmssp/ntlmssp.c
source4/auth/ntlmssp/ntlmssp.h
source4/auth/ntlmssp/ntlmssp_server.c
source4/auth/ntlmssp/ntlmssp_sign.c
source4/auth/sam.c
source4/auth/session.c
source4/auth/session.h
source4/build/make/rules.mk
source4/build/pasn1/asn1.yp
source4/cldap_server/cldap_server.h
source4/client/client.c
source4/client/config.mk
source4/configure.ac
source4/dsdb/common/sidmap.c
source4/dsdb/common/util.c
source4/dsdb/config.mk
source4/dsdb/samdb/ldb_modules/linked_attributes.c
source4/dsdb/samdb/ldb_modules/partition.c
source4/dsdb/samdb/ldb_modules/samldb.c
source4/dsdb/samdb/ldb_modules/schema.c
source4/dsdb/samdb/ldb_modules/schema_syntax.c
source4/dsdb/samdb/ldb_modules/schema_syntax.h
source4/dsdb/samdb/ldb_modules/subtree_delete.c
source4/dsdb/samdb/ldb_modules/subtree_rename.c
source4/dsdb/samdb/samdb_privilege.c
source4/headermap.txt
source4/heimdal_build/config.mk
source4/ldap_server/config.mk
source4/ldap_server/ldap_backend.c
source4/ldap_server/ldap_server.c
source4/lib/basic.mk
source4/lib/charset/charcnv.c
source4/lib/charset/charset.h
source4/lib/charset/iconv.c
source4/lib/charset/util_unistr.c
source4/lib/events/config.mk
source4/lib/ldb/tests/python/ldap.py
source4/lib/messaging/irpc.h
source4/lib/policy/adm.h
source4/lib/policy/config.mk
source4/lib/policy/dumpadm.c
source4/lib/policy/lex.c
source4/lib/policy/lex.l
source4/lib/policy/parse_adm.y
source4/lib/registry/config.mk
source4/lib/registry/dir.c
source4/lib/registry/hive.c
source4/lib/registry/hive.h [deleted file]
source4/lib/registry/local.c
source4/lib/registry/patchfile.c
source4/lib/registry/patchfile.h [deleted file]
source4/lib/registry/patchfile_dotreg.c
source4/lib/registry/patchfile_preg.c
source4/lib/registry/regf.c
source4/lib/registry/registry.h
source4/lib/registry/registry.i
source4/lib/registry/registry.pc.in
source4/lib/registry/registry_wrap.c
source4/lib/registry/tests/generic.c
source4/lib/registry/tests/hive.c
source4/lib/registry/tests/registry.c
source4/lib/registry/tools/regpatch.c
source4/lib/replace/samba.m4
source4/lib/socket_wrapper/config.mk
source4/lib/talloc/config.mk
source4/lib/tdb/config.mk
source4/lib/tls/config.mk
source4/lib/util/config.mk
source4/lib/util/data_blob.h
source4/lib/util/dprintf.c
source4/lib/util/genrand.c
source4/lib/util/params.c [moved from source4/param/params.c with 100% similarity]
source4/lib/util/tests/genrand.c
source4/lib/util/util.c
source4/lib/util/util.h
source4/lib/util/util_file.c
source4/lib/util/util_ldb.c
source4/lib/util/util_ldb.h [new file with mode: 0644]
source4/lib/util/wrap_xattr.h [new file with mode: 0644]
source4/libcli/auth/config.mk
source4/libcli/auth/smbencrypt.c
source4/libcli/cliconnect.c
source4/libcli/clilist.c
source4/libcli/climessage.c
source4/libcli/clireadwrite.c
source4/libcli/composite/composite.h
source4/libcli/config.mk
source4/libcli/ldap/config.mk
source4/libcli/ldap/ldap.c
source4/libcli/ldap/ldap.h
source4/libcli/ldap/ldap_bind.c
source4/libcli/ldap/ldap_client.c
source4/libcli/ldap/ldap_client.h
source4/libcli/ldap/ldap_ildap.c
source4/libcli/ldap/ldap_msg.c
source4/libcli/ldap/ldap_ndr.h [new file with mode: 0644]
source4/libcli/nbt/libnbt.h
source4/libcli/nbt/namequery.c
source4/libcli/nbt/namerefresh.c
source4/libcli/nbt/nameregister.c
source4/libcli/nbt/namerelease.c
source4/libcli/nbt/nbtname.c
source4/libcli/nbt/nbtsocket.c
source4/libcli/raw/clierror.c
source4/libcli/raw/clioplock.c
source4/libcli/raw/clisession.c
source4/libcli/raw/clisocket.c
source4/libcli/raw/clitransport.c
source4/libcli/raw/clitree.c
source4/libcli/raw/libcliraw.h
source4/libcli/raw/rawacl.c
source4/libcli/raw/rawfile.c
source4/libcli/raw/rawfileinfo.c
source4/libcli/raw/rawfsinfo.c
source4/libcli/raw/rawioctl.c
source4/libcli/raw/rawnegotiate.c
source4/libcli/raw/rawnotify.c
source4/libcli/raw/rawreadwrite.c
source4/libcli/raw/rawrequest.c
source4/libcli/raw/rawsearch.c
source4/libcli/raw/rawsetfileinfo.c
source4/libcli/raw/rawshadow.c
source4/libcli/raw/rawtrans.c
source4/libcli/raw/smb_signing.c
source4/libcli/security/security.h
source4/libcli/smb2/close.c
source4/libcli/smb2/connect.c
source4/libcli/smb2/create.c
source4/libcli/smb2/find.c
source4/libcli/smb2/getinfo.c
source4/libcli/smb2/negprot.c
source4/libcli/smb2/notify.c
source4/libcli/smb2/setinfo.c
source4/libcli/smb2/transport.c
source4/libcli/smb_composite/appendacl.c
source4/libcli/smb_composite/connect.c
source4/libcli/smb_composite/fsinfo.c
source4/libcli/smb_composite/savefile.c
source4/libcli/smb_composite/sesssetup.c
source4/libcli/util/error.h
source4/libcli/util/errormap.c
source4/libcli/wbclient/config.mk [new file with mode: 0644]
source4/libcli/wbclient/wbclient.c [new file with mode: 0644]
source4/libcli/wbclient/wbclient.h [new file with mode: 0644]
source4/libnet/config.mk
source4/libnet/libnet_group.h
source4/libnet/libnet_rpc.c
source4/librpc/config.mk
source4/librpc/dcerpc_atsvc.pc.in [new file with mode: 0644]
source4/librpc/idl/audiosrv.idl
source4/librpc/idl/browser.idl
source4/librpc/idl/dfs.idl
source4/librpc/idl/drsblobs.idl
source4/librpc/idl/drsuapi.idl
source4/librpc/idl/dsbackup.idl
source4/librpc/idl/dssetup.idl
source4/librpc/idl/efs.idl
source4/librpc/idl/epmapper.idl
source4/librpc/idl/eventlog.idl
source4/librpc/idl/frsapi.idl
source4/librpc/idl/frsrpc.idl
source4/librpc/idl/irpc.idl
source4/librpc/idl/lsa.idl
source4/librpc/idl/msgsvc.idl
source4/librpc/idl/nbt.idl
source4/librpc/idl/netlogon.idl
source4/librpc/idl/ntsvcs.idl
source4/librpc/idl/oxidresolver.idl
source4/librpc/idl/remact.idl
source4/librpc/idl/spoolss.idl
source4/librpc/idl/srvsvc.idl
source4/librpc/idl/svcctl.idl
source4/librpc/idl/w32time.idl
source4/librpc/idl/winbind.idl
source4/librpc/idl/winreg.idl
source4/librpc/ndr.pc.in
source4/librpc/ndr/libndr.h
source4/librpc/ndr/ndr.c
source4/librpc/ndr/uuid.c
source4/librpc/rpc/dcerpc.c
source4/librpc/rpc/dcerpc.h
source4/librpc/rpc/dcerpc_auth.c
source4/librpc/rpc/dcerpc_connect.c
source4/librpc/rpc/dcerpc_error.c
source4/librpc/rpc/dcerpc_schannel.c
source4/librpc/rpc/dcerpc_secondary.c
source4/librpc/rpc/dcerpc_smb.c
source4/librpc/rpc/dcerpc_smb2.c
source4/librpc/rpc/dcerpc_sock.c
source4/librpc/rpc/dcerpc_util.c
source4/librpc/tests/binding_string.c
source4/nbt_server/config.mk
source4/nsswitch/config.mk
source4/ntvfs/cifs/vfs_cifs.c
source4/ntvfs/common/init.c
source4/ntvfs/common/opendb.c
source4/ntvfs/config.mk
source4/ntvfs/ntvfs_base.c
source4/ntvfs/ntvfs_generic.c
source4/ntvfs/ntvfs_interface.c
source4/ntvfs/ntvfs_util.c
source4/ntvfs/posix/pvfs_acl.c
source4/ntvfs/posix/pvfs_acl_nfs4.c
source4/ntvfs/posix/pvfs_xattr.c
source4/ntvfs/posix/vfs_posix.c
source4/ntvfs/posix/vfs_posix.h
source4/ntvfs/unixuid/vfs_unixuid.c
source4/param/README [new file with mode: 0644]
source4/param/config.mk
source4/param/param.h
source4/param/samba-hostconfig.pc.in [moved from source4/param/samba-config.pc.in with 59% similarity]
source4/param/secrets.c
source4/param/secrets.h
source4/param/util.c
source4/pidl/config.m4 [new file with mode: 0644]
source4/pidl/config.mk
source4/pidl/idl.yp
source4/pidl/lib/Parse/Pidl/NDR.pm
source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
source4/pidl/lib/Parse/Pidl/Samba4/Python.pm
source4/pidl/pidl
source4/pidl/tests/samba-ndr.pl
source4/rpc_server/common/common.h
source4/rpc_server/common/server_info.c
source4/rpc_server/config.mk
source4/rpc_server/dcerpc_server.c
source4/rpc_server/dcerpc_server.h
source4/rpc_server/dcesrv_auth.c
source4/rpc_server/lsa/lsa.h
source4/rpc_server/lsa/lsa_init.c
source4/rpc_server/lsa/lsa_lookup.c
source4/rpc_server/srvsvc/dcesrv_srvsvc.c
source4/rpc_server/unixinfo/dcesrv_unixinfo.c
source4/samba4-skip
source4/script/mkproto.pl
source4/script/mkrelease.sh
source4/scripting/bin/smbstatus
source4/scripting/bin/winreg
source4/scripting/ejs/config.mk
source4/scripting/ejs/smbcalls_rand.c
source4/scripting/libjs/auth.js
source4/scripting/libjs/base.js
source4/scripting/libjs/encoder.js
source4/scripting/libjs/management.js
source4/scripting/libjs/provision.js
source4/scripting/libjs/samr.js
source4/scripting/libjs/server_call.js
source4/scripting/libjs/winreg.js
source4/scripting/python/misc.i
source4/scripting/python/misc_wrap.c
source4/scripting/python/modules.c
source4/scripting/python/pyrpc.h
source4/scripting/python/samba/getopt.py
source4/scripting/python/samba/idmap.py [new file with mode: 0644]
source4/scripting/python/samba/provision.py
source4/scripting/python/samba/samdb.py
source4/scripting/python/samba/tests/dcerpc/unix.py [new file with mode: 0644]
source4/scripting/python/samba/tests/samdb.py
source4/scripting/python/subunit/__init__.py
source4/selftest/samba4_tests.sh
source4/selftest/test_win.sh
source4/selftest/win/VMHost.pm
source4/selftest/win/common.exp
source4/selftest/win/vm_get_ip.pl
source4/selftest/win/vm_load_snapshot.pl
source4/selftest/win/wintest_client.exp
source4/selftest/win/wintest_remove.exp
source4/selftest/win/wintest_setup.exp
source4/setup/enableaccount [new file with mode: 0644]
source4/setup/newuser
source4/setup/provision
source4/setup/provision-backend.js
source4/setup/provision.zone
source4/setup/provision_self_join.ldif
source4/setup/setpassword
source4/setup/upgrade.py
source4/smb_server/blob.c
source4/smb_server/smb/nttrans.c
source4/smb_server/smb/signing.c
source4/smb_server/smb/trans2.c
source4/smb_server/smb2/negprot.c
source4/smbd/config.mk
source4/smbd/process_model.c
source4/smbd/process_model.h
source4/smbd/process_model.mk
source4/smbd/process_standard.c
source4/smbd/server.c
source4/torture/auth/ntlmssp.c
source4/torture/auth/pac.c
source4/torture/basic/aliases.c
source4/torture/basic/base.c
source4/torture/basic/delaywrite.c
source4/torture/basic/delete.c
source4/torture/basic/disconnect.c
source4/torture/basic/misc.c
source4/torture/basic/scanner.c
source4/torture/basic/secleak.c
source4/torture/config.mk
source4/torture/ldap/common.c
source4/torture/rap/rap.c
source4/torture/raw/chkpath.c
source4/torture/raw/close.c
source4/torture/raw/context.c
source4/torture/raw/ioctl.c
source4/torture/raw/lock.c
source4/torture/raw/lockbench.c
source4/torture/raw/mkdir.c
source4/torture/raw/mux.c
source4/torture/raw/notify.c
source4/torture/raw/open.c
source4/torture/raw/openbench.c
source4/torture/raw/oplock.c
source4/torture/raw/qfileinfo.c
source4/torture/raw/read.c
source4/torture/raw/samba3misc.c
source4/torture/raw/search.c
source4/torture/raw/setfileinfo.c
source4/torture/raw/unlink.c
source4/torture/raw/write.c
source4/torture/rpc/autoidl.c
source4/torture/rpc/countcalls.c
source4/torture/rpc/dfs.c
source4/torture/rpc/epmapper.c
source4/torture/rpc/frsapi.c
source4/torture/rpc/mgmt.c
source4/torture/rpc/rpc.h
source4/torture/rpc/samba3rpc.c
source4/torture/rpc/samlogon.c
source4/torture/rpc/samsync.c
source4/torture/rpc/scanner.c
source4/torture/rpc/schannel.c
source4/torture/rpc/spoolss_notify.c
source4/torture/smb2/smb2.c
source4/torture/torture.c
source4/torture/torture.h
source4/torture/ui.h
source4/torture/unix/whoami.c
source4/torture/util_provision.c
source4/torture/util_smb.c
source4/utils/config.mk
source4/utils/net/config.mk
source4/winbind/idmap.c
source4/winbind/idmap.h
source4/winbind/wb_irpc.c
source4/winbind/wb_xids2sids.c
swat/scripting/client/call.js
swat/scripting/client/desktop.js
swat/scripting/client/encoder.js
swat/scripting/client/js_scripts.js
swat/scripting/client/regedit.js
swat/scripting/client/status.js
testprogs/blackbox/test_kinit.sh

index 3a2e5642e7db93c9cdceb5f81091f5e3cddaaa49..1ad2e2501f5458a96b8a91cd0e43fec48a9f80b1 100644 (file)
@@ -66,7 +66,6 @@ source/lib/tdr/tdr_proto.h
 source/lib/util/pidfile.h
 source/lib/util/unix_privs.h
 source/lib/util/util_proto.h
-source/lib/util/wrap_xattr.h
 source/lib/util/asn1_proto.h
 source/libcli/finddcs.h
 source/libcli/libcli_proto.h
@@ -190,8 +189,6 @@ source/dsdb/schema/proto.h
 source/lib/crypto/test_proto.h
 source/lib/registry/tests/proto.h
 source/lib/util/apidocs
-source/lib/util/util_ldb.h
-source/libcli/ldap/ldap_ndr.h
 source/libcli/resolve/lp_proto.h
 source/apidocs
 *.swp
diff --git a/NEWS b/NEWS
index dd01091921066e3801e9998a148f312a1c166787..8a63719a0ed14e168b1785eea75f0f2495c66706 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -22,12 +22,9 @@ Introduction of LDB
 Samba now stores most of its persistent data in a LDAP-like database 
 called LDB (see ldb(7) for more info). 
 
-Much improved SWAT
+Removed SWAT
 ==================
-SWAT has had some rather large improvements and is now more than just a 
-direct editor for smb.conf. Its layout has been improved. SWAT can now also 
-be used for editing run-time data - maintaining user information, provisioning,
-etc. TLS is supported out of the box.
+Unlike previous versions, Samba4 does not provide a web interface at this time.
 
 Built-in KDC
 ============
@@ -251,7 +248,6 @@ The following parameters have been removed:
 - locking
 - lock spin count
 - lock spin time
-- oplocks
 - level2 oplocks
 - oplock break wait time
 - oplock contention limit
index 52f30555720e1f08f3285afe250e77d9a13d1bc0..f58df497f5e0cb5422daee00cdb1570acd768846 100644 (file)
@@ -10,9 +10,9 @@ Samba 4 is currently not yet in a state where it is usable in
 production environments. Note the WARNINGS below, and the STATUS file,
 which aims to document what should and should not work.
 
-Samba4 alpha3 follows on from our first alpha release, made in
-September, and the Technology Preview series we have offered for some
-time now. 
+Samba4 alpha3 follows on from our second alpha release (made in
+December), the first alpha release (made in September), and the
+Technology Preview series we have offered for some time now. 
 
 WARNINGS
 ========
@@ -70,9 +70,11 @@ CHANGES SINCE Alpha2
 In the time since Samba4 Alpha2 was released in December 2007, Samba has
 continued to evolve, but you may particularly notice these areas:
 
-  Python Bindings:  Bindings for Python are now in place, and used for
+  Python Bindings: Bindings for Python are now in place, and used for
   Samba's provision script, slowly displacing EJS as the embedded
-  scripting language
+  scripting language.  With its increased use, Python is no longer
+  optional, and configure will generate an error if it cannot locate
+  an appropriate Python installation.
 
   SWAT Disabled: Due to a lack of developer time and without a
   long-term web developer to maintain it, the SWAT web UI has been
@@ -83,6 +85,23 @@ continued to evolve, but you may particularly notice these areas:
   GNU Make: To try and simplfy our build system, we rely on GNU Make
   to avoid autogenerating a massive single makefile. 
 
+  Account Expiry: Samba4 now better handles installations over 30 days
+  old (thanks to our long-suffering testers for keeping installations
+  around that long!)
+
+  Registry: Samba4 registry interoperability has been improved in
+  both the client utilities and in the registry service exposed by
+  the Samba4 server itself.
+
+  Administrative Tools: Many enhancements have been made that allow
+  better integration with Windows administrative tools, especially
+  Active Directory Users and Computers.
+
+  ID mapping: Samba4 now handles ID mapping via winbind. The mappings
+  are stored in a central ldb that could be shared across multiple
+  machines using LDAP. Internal callers access this interface via a new
+  wbclient library.
+
 These are just some of the highlights of the work done in the past few
 months.  More details can be found in our GIT history.
 
index 78bed1316aa0916ed8014568026d7ac56f35ec4b..d128baa5bd47ca483ab3262b2ad1a2ce573cc259 100644 (file)
--- a/howto.txt
+++ b/howto.txt
@@ -16,6 +16,13 @@ aimed at production use of Samba4.
 Step 1: download Samba4
 -----------------------
 
+If you have downloaded the Samba4 code via a tarball released from the
+samba.org website, Step 1 has already been completed for you.  For testing
+with the version released in the tarball, you may continue on to Step 2.  Note
+that the references below to the top-level directory named "samba4" will
+instead be based on the name of the tarball downloaded (e.g.
+"samba-4.0.0alpha3" for the tarball samba-4.0.0alpha3.tar.gz).
+
 There are 2 methods of doing this:
 
   method 1:  "rsync -avz samba.org::ftp/unpacked/samba_4_0_test/ samba4"
@@ -50,10 +57,7 @@ Run this::
 
   $ cd samba4/source
   $ ./configure
-  $ make proto all
-
-If you have gcc 3.4 or newer, then substitute "pch" for "proto" to
-greatly speed up the compile process (about 5x faster).
+  $ make
 
 Step 3: install Samba4
 ----------------------
@@ -120,14 +124,10 @@ in your $PATH. Make sure you run the right version!
 Step 7: testing Samba4
 ----------------------
 
-try these commands::
+try this command::
 
   $ smbclient //localhost/test -Uadministrator%SOMEPASSWORD
 
-or::
-
-  $ ./script/tests/test_posix.sh //localhost/test administrator SOMEPASSWORD
-
 
 NOTE about filesystem support
 -----------------------------
index 982808e8b633a05fdc964a1f8b4c8511fe8085d0..8c74b4899d8e74097544f0d9812492552ff736cd 100644 (file)
@@ -82,8 +82,8 @@ libraries:: $(STATIC_LIBS) $(SHARED_LIBS)
 modules:: $(PLUGINS)
 headers:: $(PUBLIC_HEADERS) $(DEFAULT_HEADERS)
 manpages:: $(MANPAGES)
-all:: showflags $(ALL_PREDEP) bin/asn1_compile bin/compile_et binaries modules pythonmods
-everything:: all libraries headers
+all:: showflags $(ALL_PREDEP) bin/asn1_compile bin/compile_et binaries modules pythonmods libraries headers
+everything:: all
 
 LD_LIBPATH_OVERRIDE = $(LIB_PATH_VAR)=$(builddir)/bin/shared
 
index 29ff51638e3b94809a474dd7e8029f0dece36b65..d40eba4e8ad5402f030887fd1b0a3c661269304e 100644 (file)
@@ -57,7 +57,7 @@ SAMBA_VERSION_TP_RELEASE=
 # e.g. SAMBA_VERSION_ALPHA_RELEASE=1                   #
 #  ->  "4.0.0alpha1"                                   #
 ########################################################
-SAMBA_VERSION_ALPHA_RELEASE=3
+SAMBA_VERSION_ALPHA_RELEASE=4
 
 ########################################################
 # For 'pre' releases the version will be               #
index f5149286b92ee0047777c3d01d73cb7c4852d529..c4cb42779bb685215a8b55493843a58ed9c3b901 100644 (file)
 #include "includes.h"
 #include "lib/util/dlinklist.h"
 #include "auth/auth.h"
+#include "auth/auth_proto.h"
 #include "lib/events/events.h"
 #include "param/param.h"
 
 /***************************************************************************
  Set a fixed challenge
 ***************************************************************************/
-NTSTATUS auth_context_set_challenge(struct auth_context *auth_ctx, const uint8_t chal[8], const char *set_by) 
+_PUBLIC_ NTSTATUS auth_context_set_challenge(struct auth_context *auth_ctx, const uint8_t chal[8], const char *set_by) 
 {
        auth_ctx->challenge.set_by = talloc_strdup(auth_ctx, set_by);
        NT_STATUS_HAVE_NO_MEMORY(auth_ctx->challenge.set_by);
@@ -145,7 +146,7 @@ static void auth_check_password_sync_callback(struct auth_check_password_request
  *
  **/
 
-NTSTATUS auth_check_password(struct auth_context *auth_ctx,
+_PUBLIC_ NTSTATUS auth_check_password(struct auth_context *auth_ctx,
                             TALLOC_CTX *mem_ctx,
                             const struct auth_usersupplied_info *user_info, 
                             struct auth_serversupplied_info **server_info)
@@ -217,7 +218,7 @@ static void auth_check_password_async_timed_handler(struct event_context *ev, st
  *
  **/
 
-void auth_check_password_send(struct auth_context *auth_ctx,
+_PUBLIC_ void auth_check_password_send(struct auth_context *auth_ctx,
                              const struct auth_usersupplied_info *user_info,
                              void (*callback)(struct auth_check_password_request *req, void *private_data),
                              void *private_data)
@@ -319,7 +320,7 @@ failed:
  *
  **/
 
-NTSTATUS auth_check_password_recv(struct auth_check_password_request *req,
+_PUBLIC_ NTSTATUS auth_check_password_recv(struct auth_check_password_request *req,
                                  TALLOC_CTX *mem_ctx,
                                  struct auth_serversupplied_info **server_info)
 {
@@ -349,7 +350,7 @@ NTSTATUS auth_check_password_recv(struct auth_check_password_request *req,
  Make a auth_info struct for the auth subsystem
  - Allow the caller to specify the methods to use
 ***************************************************************************/
-NTSTATUS auth_context_create_methods(TALLOC_CTX *mem_ctx, const char **methods, 
+_PUBLIC_ NTSTATUS auth_context_create_methods(TALLOC_CTX *mem_ctx, const char **methods, 
                                     struct event_context *ev,
                                     struct messaging_context *msg,
                                     struct loadparm_context *lp_ctx,
@@ -412,7 +413,7 @@ NTSTATUS auth_context_create_methods(TALLOC_CTX *mem_ctx, const char **methods,
  Make a auth_info struct for the auth subsystem
  - Uses default auth_methods, depending on server role and smb.conf settings
 ***************************************************************************/
-NTSTATUS auth_context_create(TALLOC_CTX *mem_ctx, 
+_PUBLIC_ NTSTATUS auth_context_create(TALLOC_CTX *mem_ctx, 
                             struct event_context *ev,
                             struct messaging_context *msg,
                             struct loadparm_context *lp_ctx,
@@ -446,7 +447,7 @@ static int num_backends;
   The 'name' can be later used by other backends to find the operations
   structure for this backend.
 */
-NTSTATUS auth_register(const struct auth_operations *ops)
+_PUBLIC_ NTSTATUS auth_register(const struct auth_operations *ops)
 {
        struct auth_operations *new_ops;
        
@@ -511,7 +512,7 @@ const struct auth_critical_sizes *auth_interface_version(void)
        return &critical_sizes;
 }
 
-NTSTATUS auth_init(void)
+_PUBLIC_ NTSTATUS auth_init(void)
 {
        static bool initialized = false;
        extern NTSTATUS auth_developer_init(void);
index ff7132c3ffc3cb6e1d2ec3a701f75224177fcfa1..da8aac48ef3a9762ab07be2e3a71f83ab6208b72 100644 (file)
@@ -190,6 +190,63 @@ struct auth_critical_sizes {
 
 #include "auth/session.h"
 #include "auth/system_session_proto.h"
-#include "auth/auth_proto.h"
+
+struct ldb_message;
+struct ldb_context;
+NTSTATUS auth_get_challenge(struct auth_context *auth_ctx, const uint8_t **_chal);
+NTSTATUS authsam_account_ok(TALLOC_CTX *mem_ctx,
+                           struct ldb_context *sam_ctx,
+                           uint32_t logon_parameters,
+                           struct ldb_message *msg,
+                           struct ldb_message *msg_domain_ref,
+                           const char *logon_workstation,
+                           const char *name_for_logs);
+struct auth_session_info *system_session(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx);
+NTSTATUS authsam_make_server_info(TALLOC_CTX *mem_ctx, struct ldb_context *sam_ctx,
+                                          const char *netbios_name,
+                                          struct ldb_message *msg,
+                                          struct ldb_message *msg_domain_ref,
+                                          DATA_BLOB user_sess_key, DATA_BLOB lm_sess_key,
+                                          struct auth_serversupplied_info **_server_info);
+NTSTATUS auth_system_session_info(TALLOC_CTX *parent_ctx, 
+                                          struct loadparm_context *lp_ctx,
+                                          struct auth_session_info **_session_info) ;
+NTSTATUS auth_nt_status_squash(NTSTATUS nt_status);
+
+NTSTATUS auth_context_create_methods(TALLOC_CTX *mem_ctx, const char **methods, 
+                                    struct event_context *ev,
+                                    struct messaging_context *msg,
+                                    struct loadparm_context *lp_ctx,
+                                    struct auth_context **auth_ctx);
+
+NTSTATUS auth_context_create(TALLOC_CTX *mem_ctx, 
+                            struct event_context *ev,
+                            struct messaging_context *msg,
+                            struct loadparm_context *lp_ctx,
+                            struct auth_context **auth_ctx);
+
+NTSTATUS auth_check_password(struct auth_context *auth_ctx,
+                            TALLOC_CTX *mem_ctx,
+                            const struct auth_usersupplied_info *user_info, 
+                            struct auth_serversupplied_info **server_info);
+NTSTATUS auth_init(void);
+NTSTATUS auth_register(const struct auth_operations *ops);
+NTSTATUS authenticate_username_pw(TALLOC_CTX *mem_ctx,
+                                          struct event_context *ev,
+                                          struct messaging_context *msg,
+                                          struct loadparm_context *lp_ctx,
+                                          const char *nt4_domain,
+                                          const char *nt4_username,
+                                          const char *password,
+                                          struct auth_session_info **session_info);
+NTSTATUS auth_check_password_recv(struct auth_check_password_request *req,
+                                 TALLOC_CTX *mem_ctx,
+                                 struct auth_serversupplied_info **server_info);
+
+void auth_check_password_send(struct auth_context *auth_ctx,
+                             const struct auth_usersupplied_info *user_info,
+                             void (*callback)(struct auth_check_password_request *req, void *private_data),
+                             void *private_data);
+NTSTATUS auth_context_set_challenge(struct auth_context *auth_ctx, const uint8_t chal[8], const char *set_by);
 
 #endif /* _SMBAUTH_H_ */
index 38c13d4b659a66c65b2b4b5d4ac5a1ecf71741c0..b93c7c200868100eb1be9a86151c88984c839f3f 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "auth/auth.h"
+#include "auth/auth_proto.h"
 #include "param/param.h"
 
 /**
index 0da947b68d9e8e23bd106aeed58aa099db650ce0..a2c9cbc828454d60b2a01c572faac3faf88ad728 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "auth/auth.h"
+#include "auth/auth_proto.h"
 #include "libcli/security/security.h"
 #include "librpc/gen_ndr/ndr_samr.h"
 
index 4cb8d2b304f20661091d6d424d70a57e5e7d3c4f..4b467cee75bd2d3dbcbd3a433cd9f4fe6210ce27 100644 (file)
@@ -25,6 +25,7 @@
 #include "lib/ldb/include/ldb.h"
 #include "util/util_ldb.h"
 #include "auth/auth.h"
+#include "auth/auth_proto.h"
 #include "auth/auth_sam.h"
 #include "dsdb/samdb/samdb.h"
 #include "libcli/security/security.h"
index 3c7bf5433a22d516687ecc429cc2e8f53c2b8cdf..50be02a35334e86c549ca254d41e92cf49e22a7b 100644 (file)
@@ -25,6 +25,7 @@
 #include "auth/auth.h"
 #include "lib/events/events.h"
 #include "param/param.h"
+#include "auth/session_proto.h"
 
 /*
  It's allowed to pass NULL as session_info,
index 20e198701d67a4a549488b3d62090a8ea8c63dc0..a4171070257e5b55ba4cb2786be65c5c8a441531 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "auth/auth.h"
+#include "auth/auth_proto.h"
 #include "system/passwd.h" /* needed by some systems for struct passwd */
 #include "lib/socket/socket.h" 
 #include "auth/pam_errors.h"
index 5d2bc6bac0f46bb0fbcd372426c04a1a50cc9985..1d86b858cfd004f72ab92018b54872d920c5c8a2 100644 (file)
@@ -246,7 +246,7 @@ NTSTATUS encrypt_user_info(TALLOC_CTX *mem_ctx, struct auth_context *auth_contex
  * @param nt_status NTSTATUS input for squashing.
  * @return the 'squashed' nt_status
  **/
-NTSTATUS auth_nt_status_squash(NTSTATUS nt_status)
+_PUBLIC_ NTSTATUS auth_nt_status_squash(NTSTATUS nt_status)
 {
        if NT_STATUS_EQUAL(nt_status, NT_STATUS_NO_SUCH_USER) {
                /* Match WinXP and don't give the game away */
index 2f8074d3cbb22a560cd33a7b832f3c0142b67b84..149f549afa129ec7718f2dff0ed495155d85d9e1 100644 (file)
@@ -23,6 +23,8 @@
 
 #include "includes.h"
 #include "auth/auth.h"
+#include "auth/auth_proto.h"
+#include "auth/session_proto.h"
 #include "nsswitch/winbind_client.h"
 #include "librpc/gen_ndr/ndr_netlogon.h"
 #include "librpc/gen_ndr/ndr_winbind.h"
index b82a1af8fa1048088d9db7f282154e804df5f361..14f5da0eb706c58ffcc755b176aed820f3e87ac8 100644 (file)
@@ -8,7 +8,7 @@ mkinclude credentials/config.mk
 PRIVATE_PROTO_HEADER = session_proto.h
 PUBLIC_DEPENDENCIES = CREDENTIALS
 
-PUBLIC_HEADERS += auth/session.h
+PUBLIC_HEADERS += auth/session.h
 
 auth_session_OBJ_FILES = $(addprefix auth/, session.o)
 
@@ -95,7 +95,7 @@ PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL LIBSECURITY SAMDB CREDENTIALS
 
 service_auth_OBJ_FILES = $(addprefix auth/, auth.o auth_util.o auth_simple.o)
 
-PUBLIC_HEADERS += auth/auth.h
+PUBLIC_HEADERS += auth/auth.h
 
 [PYTHON::swig_auth]
 PUBLIC_DEPENDENCIES = auth_system_session
index d8c02ebea82514a0cbd41639045c3129fd5981d6..6f3ec3997c762e5dc62055c79edd2c5456d93839 100644 (file)
@@ -9,7 +9,7 @@ PRIVATE_DEPENDENCIES = \
 
 CREDENTIALS_OBJ_FILES = $(addprefix auth/credentials/, credentials.o credentials_files.o credentials_ntlm.o credentials_krb5.o ../kerberos/kerberos_util.o)
 
-PUBLIC_HEADERS += $(addprefix auth/credentials/, credentials.h credentials_krb5.h)
+PUBLIC_HEADERS += auth/credentials/credentials.h
 
 [PYTHON::swig_credentials]
 PUBLIC_DEPENDENCIES = CREDENTIALS LIBCMDLINE_CREDENTIALS
index 6d5c1210c9a71676f72c438b9f4aab58a0433cfc..89dddc9e0585408dde0bfa412030e68ebb363ad3 100644 (file)
@@ -33,7 +33,7 @@
  * Create a new credentials structure
  * @param mem_ctx TALLOC_CTX parent for credentials structure 
  */
-struct cli_credentials *cli_credentials_init(TALLOC_CTX *mem_ctx) 
+_PUBLIC_ struct cli_credentials *cli_credentials_init(TALLOC_CTX *mem_ctx) 
 {
        struct cli_credentials *cred = talloc(mem_ctx, struct cli_credentials);
        if (!cred) {
@@ -77,7 +77,7 @@ struct cli_credentials *cli_credentials_init(TALLOC_CTX *mem_ctx)
  * Create a new anonymous credential
  * @param mem_ctx TALLOC_CTX parent for credentials structure 
  */
-struct cli_credentials *cli_credentials_init_anon(TALLOC_CTX *mem_ctx)
+_PUBLIC_ struct cli_credentials *cli_credentials_init_anon(TALLOC_CTX *mem_ctx)
 {
        struct cli_credentials *anon_credentials;
 
@@ -87,23 +87,23 @@ struct cli_credentials *cli_credentials_init_anon(TALLOC_CTX *mem_ctx)
        return anon_credentials;
 }
 
-void cli_credentials_set_kerberos_state(struct cli_credentials *creds, 
+_PUBLIC_ void cli_credentials_set_kerberos_state(struct cli_credentials *creds, 
                                        enum credentials_use_kerberos use_kerberos)
 {
        creds->use_kerberos = use_kerberos;
 }
 
-enum credentials_use_kerberos cli_credentials_get_kerberos_state(struct cli_credentials *creds)
+_PUBLIC_ enum credentials_use_kerberos cli_credentials_get_kerberos_state(struct cli_credentials *creds)
 {
        return creds->use_kerberos;
 }
 
-void cli_credentials_set_gensec_features(struct cli_credentials *creds, uint32_t gensec_features)
+_PUBLIC_ void cli_credentials_set_gensec_features(struct cli_credentials *creds, uint32_t gensec_features)
 {
        creds->gensec_features = gensec_features;
 }
 
-uint32_t cli_credentials_get_gensec_features(struct cli_credentials *creds)
+_PUBLIC_ uint32_t cli_credentials_get_gensec_features(struct cli_credentials *creds)
 {
        return creds->gensec_features;
 }
@@ -115,7 +115,7 @@ uint32_t cli_credentials_get_gensec_features(struct cli_credentials *creds)
  * @retval The username set on this context.
  * @note Return value will never be NULL except by programmer error.
  */
-const char *cli_credentials_get_username(struct cli_credentials *cred)
+_PUBLIC_ const char *cli_credentials_get_username(struct cli_credentials *cred)
 {
        if (cred->machine_account_pending) {
                cli_credentials_set_machine_account(cred, 
@@ -134,7 +134,7 @@ const char *cli_credentials_get_username(struct cli_credentials *cred)
        return cred->username;
 }
 
-bool cli_credentials_set_username(struct cli_credentials *cred, 
+_PUBLIC_ bool cli_credentials_set_username(struct cli_credentials *cred, 
                                  const char *val, enum credentials_obtained obtained)
 {
        if (obtained >= cred->username_obtained) {
@@ -159,7 +159,7 @@ bool cli_credentials_set_username_callback(struct cli_credentials *cred,
        return false;
 }
 
-bool cli_credentials_set_bind_dn(struct cli_credentials *cred, 
+_PUBLIC_ bool cli_credentials_set_bind_dn(struct cli_credentials *cred, 
                                 const char *bind_dn)
 {
        cred->bind_dn = talloc_strdup(cred, bind_dn);
@@ -172,7 +172,7 @@ bool cli_credentials_set_bind_dn(struct cli_credentials *cred,
  * @retval The username set on this context.
  * @note Return value will be NULL if not specified explictly
  */
-const char *cli_credentials_get_bind_dn(struct cli_credentials *cred)
+_PUBLIC_ const char *cli_credentials_get_bind_dn(struct cli_credentials *cred)
 {
        return cred->bind_dn;
 }
@@ -184,7 +184,7 @@ const char *cli_credentials_get_bind_dn(struct cli_credentials *cred)
  * @retval The username set on this context.
  * @note Return value will never be NULL except by programmer error.
  */
-const char *cli_credentials_get_principal(struct cli_credentials *cred, TALLOC_CTX *mem_ctx)
+_PUBLIC_ const char *cli_credentials_get_principal(struct cli_credentials *cred, TALLOC_CTX *mem_ctx)
 {
        if (cred->machine_account_pending) {
                cli_credentials_set_machine_account(cred,
@@ -246,7 +246,7 @@ bool cli_credentials_set_principal_callback(struct cli_credentials *cred,
  * function to determine if authentication has been explicitly
  * requested */
 
-bool cli_credentials_authentication_requested(struct cli_credentials *cred) 
+_PUBLIC_ bool cli_credentials_authentication_requested(struct cli_credentials *cred) 
 {
        if (cred->bind_dn) {
                return true;
@@ -275,7 +275,7 @@ bool cli_credentials_authentication_requested(struct cli_credentials *cred)
  * @param cred credentials context
  * @retval If set, the cleartext password, otherwise NULL
  */
-const char *cli_credentials_get_password(struct cli_credentials *cred)
+_PUBLIC_ const char *cli_credentials_get_password(struct cli_credentials *cred)
 {
        if (cred->machine_account_pending) {
                cli_credentials_set_machine_account(cred,
@@ -297,7 +297,7 @@ const char *cli_credentials_get_password(struct cli_credentials *cred)
 /* Set a password on the credentials context, including an indication
  * of 'how' the password was obtained */
 
-bool cli_credentials_set_password(struct cli_credentials *cred, 
+_PUBLIC_ bool cli_credentials_set_password(struct cli_credentials *cred, 
                                  const char *val, 
                                  enum credentials_obtained obtained)
 {
@@ -313,7 +313,7 @@ bool cli_credentials_set_password(struct cli_credentials *cred,
        return false;
 }
 
-bool cli_credentials_set_password_callback(struct cli_credentials *cred,
+_PUBLIC_ bool cli_credentials_set_password_callback(struct cli_credentials *cred,
                                           const char *(*password_cb) (struct cli_credentials *))
 {
        if (cred->password_obtained < CRED_CALLBACK) {
@@ -358,7 +358,7 @@ bool cli_credentials_set_old_password(struct cli_credentials *cred,
  * @param cred credentials context
  * @retval If set, the cleartext password, otherwise NULL
  */
-const struct samr_Password *cli_credentials_get_nt_hash(struct cli_credentials *cred, 
+_PUBLIC_ const struct samr_Password *cli_credentials_get_nt_hash(struct cli_credentials *cred, 
                                                        TALLOC_CTX *mem_ctx)
 {
        const char *password = cli_credentials_get_password(cred);
@@ -377,7 +377,7 @@ const struct samr_Password *cli_credentials_get_nt_hash(struct cli_credentials *
        }
 }
 
-bool cli_credentials_set_nt_hash(struct cli_credentials *cred,
+_PUBLIC_ bool cli_credentials_set_nt_hash(struct cli_credentials *cred,
                                 const struct samr_Password *nt_hash, 
                                 enum credentials_obtained obtained)
 {
@@ -401,7 +401,7 @@ bool cli_credentials_set_nt_hash(struct cli_credentials *cred,
  * @retval The domain set on this context. 
  * @note Return value will never be NULL except by programmer error.
  */
-const char *cli_credentials_get_domain(struct cli_credentials *cred)
+_PUBLIC_ const char *cli_credentials_get_domain(struct cli_credentials *cred)
 {
        if (cred->machine_account_pending) {
                cli_credentials_set_machine_account(cred,
@@ -421,7 +421,7 @@ const char *cli_credentials_get_domain(struct cli_credentials *cred)
 }
 
 
-bool cli_credentials_set_domain(struct cli_credentials *cred, 
+_PUBLIC_ bool cli_credentials_set_domain(struct cli_credentials *cred, 
                                const char *val, 
                                enum credentials_obtained obtained)
 {
@@ -456,7 +456,7 @@ bool cli_credentials_set_domain_callback(struct cli_credentials *cred,
  * @retval The realm set on this context. 
  * @note Return value will never be NULL except by programmer error.
  */
-const char *cli_credentials_get_realm(struct cli_credentials *cred)
+_PUBLIC_ const char *cli_credentials_get_realm(struct cli_credentials *cred)
 {      
        if (cred->machine_account_pending) {
                cli_credentials_set_machine_account(cred,
@@ -479,7 +479,7 @@ const char *cli_credentials_get_realm(struct cli_credentials *cred)
  * Set the realm for this credentials context, and force it to
  * uppercase for the sainity of our local kerberos libraries 
  */
-bool cli_credentials_set_realm(struct cli_credentials *cred, 
+_PUBLIC_ bool cli_credentials_set_realm(struct cli_credentials *cred, 
                               const char *val, 
                               enum credentials_obtained obtained)
 {
@@ -512,7 +512,7 @@ bool cli_credentials_set_realm_callback(struct cli_credentials *cred,
  * @retval The workstation name set on this context. 
  * @note Return value will never be NULL except by programmer error.
  */
-const char *cli_credentials_get_workstation(struct cli_credentials *cred)
+_PUBLIC_ const char *cli_credentials_get_workstation(struct cli_credentials *cred)
 {
        if (cred->workstation_obtained == CRED_CALLBACK && 
            !cred->callback_running) {
@@ -525,7 +525,7 @@ const char *cli_credentials_get_workstation(struct cli_credentials *cred)
        return cred->workstation;
 }
 
-bool cli_credentials_set_workstation(struct cli_credentials *cred, 
+_PUBLIC_ bool cli_credentials_set_workstation(struct cli_credentials *cred, 
                                     const char *val, 
                                     enum credentials_obtained obtained)
 {
@@ -560,7 +560,7 @@ bool cli_credentials_set_workstation_callback(struct cli_credentials *cred,
  * @param obtained This enum describes how 'specified' this password is
  */
 
-void cli_credentials_parse_string(struct cli_credentials *credentials, const char *data, enum credentials_obtained obtained)
+_PUBLIC_ void cli_credentials_parse_string(struct cli_credentials *credentials, const char *data, enum credentials_obtained obtained)
 {
        char *uname, *p;
 
@@ -597,7 +597,7 @@ void cli_credentials_parse_string(struct cli_credentials *credentials, const cha
  * @param mem_ctx The memory context to place the result on
  */
 
-const char *cli_credentials_get_unparsed_name(struct cli_credentials *credentials, TALLOC_CTX *mem_ctx)
+_PUBLIC_ const char *cli_credentials_get_unparsed_name(struct cli_credentials *credentials, TALLOC_CTX *mem_ctx)
 {
        const char *bind_dn = cli_credentials_get_bind_dn(credentials);
        const char *domain;
@@ -625,7 +625,7 @@ const char *cli_credentials_get_unparsed_name(struct cli_credentials *credential
  *
  * @param cred Credentials structure to fill in
  */
-void cli_credentials_set_conf(struct cli_credentials *cred, 
+_PUBLIC_ void cli_credentials_set_conf(struct cli_credentials *cred, 
                              struct loadparm_context *lp_ctx)
 {
        cli_credentials_set_username(cred, "", CRED_UNINITIALISED);
@@ -640,7 +640,7 @@ void cli_credentials_set_conf(struct cli_credentials *cred,
  * 
  * @param cred Credentials structure to fill in
  */
-void cli_credentials_guess(struct cli_credentials *cred,
+_PUBLIC_ void cli_credentials_guess(struct cli_credentials *cred,
                           struct loadparm_context *lp_ctx)
 {
        char *p;
@@ -683,7 +683,7 @@ void cli_credentials_guess(struct cli_credentials *cred,
  * Attach NETLOGON credentials for use with SCHANNEL
  */
 
-void cli_credentials_set_netlogon_creds(struct cli_credentials *cred, 
+_PUBLIC_ void cli_credentials_set_netlogon_creds(struct cli_credentials *cred, 
                                        struct creds_CredentialState *netlogon_creds)
 {
        cred->netlogon_creds = talloc_reference(cred, netlogon_creds);
@@ -702,7 +702,7 @@ struct creds_CredentialState *cli_credentials_get_netlogon_creds(struct cli_cred
  * Set NETLOGON secure channel type
  */
 
-void cli_credentials_set_secure_channel_type(struct cli_credentials *cred,
+_PUBLIC_ void cli_credentials_set_secure_channel_type(struct cli_credentials *cred,
                                             enum netr_SchannelType secure_channel_type)
 {
        cred->secure_channel_type = secure_channel_type;
@@ -712,7 +712,7 @@ void cli_credentials_set_secure_channel_type(struct cli_credentials *cred,
  * Return NETLOGON secure chanel type
  */
 
-enum netr_SchannelType cli_credentials_get_secure_channel_type(struct cli_credentials *cred)
+_PUBLIC_ enum netr_SchannelType cli_credentials_get_secure_channel_type(struct cli_credentials *cred)
 {
        return cred->secure_channel_type;
 }
@@ -720,7 +720,7 @@ enum netr_SchannelType cli_credentials_get_secure_channel_type(struct cli_creden
 /**
  * Fill in a credentials structure as the anonymous user
  */
-void cli_credentials_set_anonymous(struct cli_credentials *cred) 
+_PUBLIC_ void cli_credentials_set_anonymous(struct cli_credentials *cred) 
 {
        cli_credentials_set_username(cred, "", CRED_SPECIFIED);
        cli_credentials_set_domain(cred, "", CRED_SPECIFIED);
@@ -734,7 +734,7 @@ void cli_credentials_set_anonymous(struct cli_credentials *cred)
  * @retval true if anonymous, false if a username is specified
  */
 
-bool cli_credentials_is_anonymous(struct cli_credentials *cred)
+_PUBLIC_ bool cli_credentials_is_anonymous(struct cli_credentials *cred)
 {
        const char *username;
        
@@ -763,7 +763,7 @@ bool cli_credentials_is_anonymous(struct cli_credentials *cred)
  *
  * @retval whether the credentials struct is finished
  */
-bool cli_credentials_wrong_password(struct cli_credentials *cred)
+_PUBLIC_ bool cli_credentials_wrong_password(struct cli_credentials *cred)
 {
        if (cred->password_obtained != CRED_CALLBACK_RESULT) {
                return false;
@@ -779,7 +779,7 @@ bool cli_credentials_wrong_password(struct cli_credentials *cred)
 /*
   set the common event context for this set of credentials
  */
-void cli_credentials_set_event_context(struct cli_credentials *cred, struct event_context *ev)
+_PUBLIC_ void cli_credentials_set_event_context(struct cli_credentials *cred, struct event_context *ev)
 {
        cred->ev = ev;
 }
@@ -787,7 +787,7 @@ void cli_credentials_set_event_context(struct cli_credentials *cred, struct even
 /*
   set the common event context for this set of credentials
  */
-struct event_context *cli_credentials_get_event_context(struct cli_credentials *cred)
+_PUBLIC_ struct event_context *cli_credentials_get_event_context(struct cli_credentials *cred)
 {
        if (cred->ev == NULL) {
                cred->ev = event_context_find(cred);
index 1b205c61ce6f6a806bfc8dc8859ce9fb651e5557..afcb300638388d19f43f5047e7bbb7fee9a8aa6a 100644 (file)
@@ -132,6 +132,117 @@ struct ccache_container;
 
 struct gssapi_creds_container;
 
-#include "auth/credentials/credentials_proto.h"
+const char *cli_credentials_get_workstation(struct cli_credentials *cred);
+bool cli_credentials_set_workstation(struct cli_credentials *cred, 
+                                    const char *val, 
+                                    enum credentials_obtained obtained);
+bool cli_credentials_is_anonymous(struct cli_credentials *cred);
+struct cli_credentials *cli_credentials_init(TALLOC_CTX *mem_ctx);
+void cli_credentials_set_anonymous(struct cli_credentials *cred);
+bool cli_credentials_wrong_password(struct cli_credentials *cred);
+const char *cli_credentials_get_password(struct cli_credentials *cred);
+void cli_credentials_get_ntlm_username_domain(struct cli_credentials *cred, TALLOC_CTX *mem_ctx, 
+                                             const char **username, 
+                                             const char **domain);
+NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred, TALLOC_CTX *mem_ctx, 
+                                          int *flags,
+                                          DATA_BLOB challenge, DATA_BLOB target_info, 
+                                          DATA_BLOB *_lm_response, DATA_BLOB *_nt_response, 
+                                          DATA_BLOB *_lm_session_key, DATA_BLOB *_session_key);
+const char *cli_credentials_get_realm(struct cli_credentials *cred);
+const char *cli_credentials_get_username(struct cli_credentials *cred);
+int cli_credentials_get_krb5_context(struct cli_credentials *cred, 
+                                    struct loadparm_context *lp_ctx,
+                                    struct smb_krb5_context **smb_krb5_context);
+int cli_credentials_get_ccache(struct cli_credentials *cred, 
+                              struct loadparm_context *lp_ctx,
+                              struct ccache_container **ccc);
+int cli_credentials_get_keytab(struct cli_credentials *cred, 
+                              struct loadparm_context *lp_ctx,
+                              struct keytab_container **_ktc);
+const char *cli_credentials_get_domain(struct cli_credentials *cred);
+struct creds_CredentialState *cli_credentials_get_netlogon_creds(struct cli_credentials *cred);
+void cli_credentials_set_machine_account_pending(struct cli_credentials *cred,
+                                                struct loadparm_context *lp_ctx);
+void cli_credentials_set_conf(struct cli_credentials *cred, 
+                             struct loadparm_context *lp_ctx);
+const char *cli_credentials_get_principal(struct cli_credentials *cred, TALLOC_CTX *mem_ctx);
+int cli_credentials_get_server_gss_creds(struct cli_credentials *cred, 
+                                        struct loadparm_context *lp_ctx,
+                                        struct gssapi_creds_container **_gcc);
+int cli_credentials_get_client_gss_creds(struct cli_credentials *cred, 
+                                        struct loadparm_context *lp_ctx,
+                                        struct gssapi_creds_container **_gcc);
+void cli_credentials_set_event_context(struct cli_credentials *cred, struct event_context *ev);
+void cli_credentials_set_kerberos_state(struct cli_credentials *creds, 
+                                       enum credentials_use_kerberos use_kerberos);
+struct event_context *cli_credentials_get_event_context(struct cli_credentials *cred);
+bool cli_credentials_set_domain(struct cli_credentials *cred, 
+                               const char *val, 
+                               enum credentials_obtained obtained);
+bool cli_credentials_set_username(struct cli_credentials *cred, 
+                                 const char *val, enum credentials_obtained obtained);
+bool cli_credentials_set_password(struct cli_credentials *cred, 
+                                 const char *val, 
+                                 enum credentials_obtained obtained);
+struct cli_credentials *cli_credentials_init_anon(TALLOC_CTX *mem_ctx);
+void cli_credentials_parse_string(struct cli_credentials *credentials, const char *data, enum credentials_obtained obtained);
+const struct samr_Password *cli_credentials_get_nt_hash(struct cli_credentials *cred, 
+                                                       TALLOC_CTX *mem_ctx);
+bool cli_credentials_set_realm(struct cli_credentials *cred, 
+                              const char *val, 
+                              enum credentials_obtained obtained);
+void cli_credentials_set_secure_channel_type(struct cli_credentials *cred,
+                                    enum netr_SchannelType secure_channel_type);
+void cli_credentials_set_netlogon_creds(struct cli_credentials *cred, 
+                                       struct creds_CredentialState *netlogon_creds);
+NTSTATUS cli_credentials_set_krb5_context(struct cli_credentials *cred, 
+                                         struct smb_krb5_context *smb_krb5_context);
+NTSTATUS cli_credentials_set_stored_principal(struct cli_credentials *cred,
+                                             struct loadparm_context *lp_ctx,
+                                             const char *serviceprincipal);
+NTSTATUS cli_credentials_set_machine_account(struct cli_credentials *cred,
+                                            struct loadparm_context *lp_ctx);
+bool cli_credentials_authentication_requested(struct cli_credentials *cred);
+void cli_credentials_guess(struct cli_credentials *cred,
+                          struct loadparm_context *lp_ctx);
+bool cli_credentials_set_bind_dn(struct cli_credentials *cred, 
+                                const char *bind_dn);
+const char *cli_credentials_get_bind_dn(struct cli_credentials *cred);
+bool cli_credentials_parse_file(struct cli_credentials *cred, const char *file, enum credentials_obtained obtained);
+const char *cli_credentials_get_unparsed_name(struct cli_credentials *credentials, TALLOC_CTX *mem_ctx);
+bool cli_credentials_set_password_callback(struct cli_credentials *cred,
+                                          const char *(*password_cb) (struct cli_credentials *));
+enum netr_SchannelType cli_credentials_get_secure_channel_type(struct cli_credentials *cred);
+void cli_credentials_set_kvno(struct cli_credentials *cred,
+                             int kvno);
+bool cli_credentials_set_nt_hash(struct cli_credentials *cred,
+                                const struct samr_Password *nt_hash, 
+                                enum credentials_obtained obtained);
+int cli_credentials_set_keytab_name(struct cli_credentials *cred, 
+                                   struct loadparm_context *lp_ctx,
+                                   const char *keytab_name, 
+                                   enum credentials_obtained obtained);
+int cli_credentials_update_keytab(struct cli_credentials *cred, 
+                                 struct loadparm_context *lp_ctx);
+void cli_credentials_set_gensec_features(struct cli_credentials *creds, uint32_t gensec_features);
+uint32_t cli_credentials_get_gensec_features(struct cli_credentials *creds);
+int cli_credentials_set_ccache(struct cli_credentials *cred, 
+                              struct loadparm_context *lp_ctx,
+                              const char *name, 
+                              enum credentials_obtained obtained);
+bool cli_credentials_parse_password_file(struct cli_credentials *credentials, const char *file, enum credentials_obtained obtained);
+bool cli_credentials_parse_password_fd(struct cli_credentials *credentials, 
+                                      int fd, enum credentials_obtained obtained);
+void cli_credentials_invalidate_ccache(struct cli_credentials *cred, 
+                                      enum credentials_obtained obtained);
+void cli_credentials_set_salt_principal(struct cli_credentials *cred, const char *principal);
+enum credentials_use_kerberos cli_credentials_get_kerberos_state(struct cli_credentials *creds);
+NTSTATUS cli_credentials_set_secrets(struct cli_credentials *cred, 
+                                    struct loadparm_context *lp_ctx,
+                                    struct ldb_context *ldb,
+                                    const char *base,
+                                    const char *filter);
+ int cli_credentials_get_kvno(struct cli_credentials *cred);
 
 #endif /* __CREDENTIALS_H__ */
index 41ec67580e713365b6a97e3650a28374ac923083..0a604cf0020364c2108e4c8444d24a37bd9cb6dd 100644 (file)
@@ -39,6 +39,10 @@ typedef struct cli_credentials cli_credentials;
     $1 = NULL;
 }
 
+%constant int AUTO_USE_KERBEROS = CRED_AUTO_USE_KERBEROS;
+%constant int DONT_USE_KERBEROS = CRED_DONT_USE_KERBEROS;
+%constant int MUST_USE_KERBEROS = CRED_MUST_USE_KERBEROS;
+
 %{
 #include "librpc/gen_ndr/samr.h" /* for struct samr_Password */
 %}
@@ -52,7 +56,7 @@ typedef struct cli_credentials cli_credentials;
 typedef struct cli_credentials {
     %extend {
         cli_credentials(void) {
-            return cli_credentials_init_anon(NULL);
+            return cli_credentials_init(NULL);
         }
         /* username */
         const char *get_username(void);
@@ -74,13 +78,18 @@ typedef struct cli_credentials {
         bool set_realm(const char *val, 
                        enum credentials_obtained=CRED_SPECIFIED);
 
+       /* Kerberos */
+        void set_kerberos_state(enum credentials_use_kerberos use_kerberos);
+
         void parse_string(const char *text,
-                       enum credentials_obtained=CRED_SPECIFIED);
+                         enum credentials_obtained=CRED_SPECIFIED);
 
         /* bind dn */
         const char *get_bind_dn(void);
         bool set_bind_dn(const char *bind_dn);
 
+       void set_anonymous();
+
         /* workstation name */
         const char *get_workstation(void);
         bool set_workstation(const char *workstation, 
index 14526af9100274c20024e226b724dfdbbffd8528..2b40fbeeadfd074fbdbab8535115ae058013864d 100644 (file)
@@ -58,6 +58,9 @@ def _swig_setattr_nondynamic_method(set):
 
 
 import param
+AUTO_USE_KERBEROS = _credentials.AUTO_USE_KERBEROS
+DONT_USE_KERBEROS = _credentials.DONT_USE_KERBEROS
+MUST_USE_KERBEROS = _credentials.MUST_USE_KERBEROS
 class Credentials(object):
     thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
     __repr__ = _swig_repr
@@ -72,9 +75,11 @@ Credentials.get_domain = new_instancemethod(_credentials.Credentials_get_domain,
 Credentials.set_domain = new_instancemethod(_credentials.Credentials_set_domain,None,Credentials)
 Credentials.get_realm = new_instancemethod(_credentials.Credentials_get_realm,None,Credentials)
 Credentials.set_realm = new_instancemethod(_credentials.Credentials_set_realm,None,Credentials)
+Credentials.set_kerberos_state = new_instancemethod(_credentials.Credentials_set_kerberos_state,None,Credentials)
 Credentials.parse_string = new_instancemethod(_credentials.Credentials_parse_string,None,Credentials)
 Credentials.get_bind_dn = new_instancemethod(_credentials.Credentials_get_bind_dn,None,Credentials)
 Credentials.set_bind_dn = new_instancemethod(_credentials.Credentials_set_bind_dn,None,Credentials)
+Credentials.set_anonymous = new_instancemethod(_credentials.Credentials_set_anonymous,None,Credentials)
 Credentials.get_workstation = new_instancemethod(_credentials.Credentials_get_workstation,None,Credentials)
 Credentials.set_workstation = new_instancemethod(_credentials.Credentials_set_workstation,None,Credentials)
 Credentials.guess = new_instancemethod(_credentials.Credentials_guess,None,Credentials)
index c1001c962230327b7fa166f763ce31cdbf6dcae4..8bcbc655750906d403ef56fd7e970d7114d01900 100644 (file)
@@ -39,7 +39,7 @@
  * @param obtained This enum describes how 'specified' this password is
  */
 
-bool cli_credentials_parse_password_fd(struct cli_credentials *credentials, 
+_PUBLIC_ bool cli_credentials_parse_password_fd(struct cli_credentials *credentials, 
                                       int fd, enum credentials_obtained obtained)
 {
        char *p;
@@ -83,7 +83,7 @@ bool cli_credentials_parse_password_fd(struct cli_credentials *credentials,
  * @param obtained This enum describes how 'specified' this password is
  */
 
-bool cli_credentials_parse_password_file(struct cli_credentials *credentials, const char *file, enum credentials_obtained obtained)
+_PUBLIC_ bool cli_credentials_parse_password_file(struct cli_credentials *credentials, const char *file, enum credentials_obtained obtained)
 {
        int fd = open(file, O_RDONLY, 0);
        bool ret;
@@ -109,7 +109,7 @@ bool cli_credentials_parse_password_file(struct cli_credentials *credentials, co
  * @param obtained This enum describes how 'specified' this password is
  */
 
-bool cli_credentials_parse_file(struct cli_credentials *cred, const char *file, enum credentials_obtained obtained) 
+_PUBLIC_ bool cli_credentials_parse_file(struct cli_credentials *cred, const char *file, enum credentials_obtained obtained) 
 {
        uint16_t len = 0;
        char *ptr, *val, *param;
@@ -168,7 +168,7 @@ bool cli_credentials_parse_file(struct cli_credentials *cred, const char *file,
  * @param cred Credentials structure to fill in
  * @retval NTSTATUS error detailing any failure
  */
-NTSTATUS cli_credentials_set_secrets(struct cli_credentials *cred, 
+_PUBLIC_ NTSTATUS cli_credentials_set_secrets(struct cli_credentials *cred, 
                                     struct loadparm_context *lp_ctx,
                                     struct ldb_context *ldb,
                                     const char *base,
@@ -326,7 +326,7 @@ NTSTATUS cli_credentials_set_secrets(struct cli_credentials *cred,
  * @param cred Credentials structure to fill in
  * @retval NTSTATUS error detailing any failure
  */
-NTSTATUS cli_credentials_set_machine_account(struct cli_credentials *cred,
+_PUBLIC_ NTSTATUS cli_credentials_set_machine_account(struct cli_credentials *cred,
                                             struct loadparm_context *lp_ctx)
 {
        char *filter;
@@ -369,7 +369,7 @@ NTSTATUS cli_credentials_set_krbtgt(struct cli_credentials *cred,
  * @param cred Credentials structure to fill in
  * @retval NTSTATUS error detailing any failure
  */
-NTSTATUS cli_credentials_set_stored_principal(struct cli_credentials *cred,
+_PUBLIC_ NTSTATUS cli_credentials_set_stored_principal(struct cli_credentials *cred,
                                              struct loadparm_context *lp_ctx,
                                              const char *serviceprincipal)
 {
@@ -395,7 +395,7 @@ NTSTATUS cli_credentials_set_stored_principal(struct cli_credentials *cred,
  *       than during, popt processing.
  *
  */
-void cli_credentials_set_machine_account_pending(struct cli_credentials *cred,
+_PUBLIC_ void cli_credentials_set_machine_account_pending(struct cli_credentials *cred,
                                                 struct loadparm_context *lp_ctx)
 {
        cred->machine_account_pending = true;
index 52bf9f124feee904c59c21c5299d01544edcd196..cd9285b09d0592edafe6d10aff3c0692717ac9fa 100644 (file)
 #include "system/kerberos.h"
 #include "auth/kerberos/kerberos.h"
 #include "auth/credentials/credentials.h"
+#include "auth/credentials/credentials_proto.h"
 #include "auth/credentials/credentials_krb5.h"
 #include "param/param.h"
 
-int cli_credentials_get_krb5_context(struct cli_credentials *cred, 
+_PUBLIC_ int cli_credentials_get_krb5_context(struct cli_credentials *cred, 
                                     struct loadparm_context *lp_ctx,
                                     struct smb_krb5_context **smb_krb5_context) 
 {
@@ -52,7 +53,7 @@ int cli_credentials_get_krb5_context(struct cli_credentials *cred,
  * otherwise we might have problems with the krb5 context already
  * being here.
  */
-NTSTATUS cli_credentials_set_krb5_context(struct cli_credentials *cred, 
+_PUBLIC_ NTSTATUS cli_credentials_set_krb5_context(struct cli_credentials *cred, 
                                          struct smb_krb5_context *smb_krb5_context)
 {
        if (!talloc_reference(cred, smb_krb5_context)) {
@@ -126,7 +127,7 @@ static int free_dccache(struct ccache_container *ccc) {
        return 0;
 }
 
-int cli_credentials_set_ccache(struct cli_credentials *cred, 
+_PUBLIC_ int cli_credentials_set_ccache(struct cli_credentials *cred, 
                               struct loadparm_context *lp_ctx,
                               const char *name, 
                               enum credentials_obtained obtained)
@@ -251,7 +252,7 @@ static int cli_credentials_new_ccache(struct cli_credentials *cred,
        return ret;
 }
 
-int cli_credentials_get_ccache(struct cli_credentials *cred, 
+_PUBLIC_ int cli_credentials_get_ccache(struct cli_credentials *cred, 
                               struct loadparm_context *lp_ctx,
                               struct ccache_container **ccc)
 {
@@ -315,7 +316,7 @@ void cli_credentials_invalidate_client_gss_creds(struct cli_credentials *cred,
        }
 }
 
-void cli_credentials_invalidate_ccache(struct cli_credentials *cred, 
+_PUBLIC_ void cli_credentials_invalidate_ccache(struct cli_credentials *cred, 
                                       enum credentials_obtained obtained)
 {
        /* If the caller just changed the username/password etc, then
@@ -346,7 +347,7 @@ static int free_gssapi_creds(struct gssapi_creds_container *gcc)
        return 0;
 }
 
-int cli_credentials_get_client_gss_creds(struct cli_credentials *cred, 
+_PUBLIC_ int cli_credentials_get_client_gss_creds(struct cli_credentials *cred, 
                                         struct loadparm_context *lp_ctx,
                                         struct gssapi_creds_container **_gcc) 
 {
@@ -454,7 +455,7 @@ int cli_credentials_get_client_gss_creds(struct cli_credentials *cred,
  * attached to this context.  If this hasn't been done or set before,
  * it will be generated from the password.
  */
-int cli_credentials_get_keytab(struct cli_credentials *cred, 
+_PUBLIC_ int cli_credentials_get_keytab(struct cli_credentials *cred, 
                               struct loadparm_context *lp_ctx,
                               struct keytab_container **_ktc)
 {
@@ -508,7 +509,7 @@ int cli_credentials_get_keytab(struct cli_credentials *cred,
 /* Given the name of a keytab (presumably in the format
  * FILE:/etc/krb5.keytab), open it and attach it */
 
-int cli_credentials_set_keytab_name(struct cli_credentials *cred, 
+_PUBLIC_ int cli_credentials_set_keytab_name(struct cli_credentials *cred, 
                                    struct loadparm_context *lp_ctx,
                                    const char *keytab_name, 
                                    enum credentials_obtained obtained) 
@@ -547,7 +548,7 @@ int cli_credentials_set_keytab_name(struct cli_credentials *cred,
        return ret;
 }
 
-int cli_credentials_update_keytab(struct cli_credentials *cred, 
+_PUBLIC_ int cli_credentials_update_keytab(struct cli_credentials *cred, 
                                  struct loadparm_context *lp_ctx) 
 {
        krb5_error_code ret;
@@ -583,7 +584,7 @@ int cli_credentials_update_keytab(struct cli_credentials *cred,
 
 /* Get server gss credentials (in gsskrb5, this means the keytab) */
 
-int cli_credentials_get_server_gss_creds(struct cli_credentials *cred, 
+_PUBLIC_ int cli_credentials_get_server_gss_creds(struct cli_credentials *cred, 
                                         struct loadparm_context *lp_ctx,
                                         struct gssapi_creds_container **_gcc) 
 {
@@ -657,7 +658,7 @@ int cli_credentials_get_server_gss_creds(struct cli_credentials *cred,
  * Set Kerberos KVNO
  */
 
-void cli_credentials_set_kvno(struct cli_credentials *cred,
+_PUBLIC_ void cli_credentials_set_kvno(struct cli_credentials *cred,
                              int kvno)
 {
        cred->kvno = kvno;
@@ -667,7 +668,7 @@ void cli_credentials_set_kvno(struct cli_credentials *cred,
  * Return Kerberos KVNO
  */
 
-int cli_credentials_get_kvno(struct cli_credentials *cred)
+_PUBLIC_ int cli_credentials_get_kvno(struct cli_credentials *cred)
 {
        return cred->kvno;
 }
@@ -693,7 +694,7 @@ const char *cli_credentials_get_salt_principal(struct cli_credentials *cred)
        return cred->salt_principal;
 }
 
-void cli_credentials_set_salt_principal(struct cli_credentials *cred, const char *principal) 
+_PUBLIC_ void cli_credentials_set_salt_principal(struct cli_credentials *cred, const char *principal) 
 {
        cred->salt_principal = talloc_strdup(cred, principal);
 }
index 04f1d312e67637004c8b3ab7adb9f9cc627b79a8..b88f2018df11a008793ca896cdba69c8da303bc1 100644 (file)
@@ -27,7 +27,7 @@
 #include "libcli/auth/libcli_auth.h"
 #include "auth/credentials/credentials.h"
 
-void cli_credentials_get_ntlm_username_domain(struct cli_credentials *cred, TALLOC_CTX *mem_ctx, 
+_PUBLIC_ void cli_credentials_get_ntlm_username_domain(struct cli_credentials *cred, TALLOC_CTX *mem_ctx, 
                                              const char **username, 
                                              const char **domain) 
 {
@@ -40,7 +40,7 @@ void cli_credentials_get_ntlm_username_domain(struct cli_credentials *cred, TALL
        }
 }
 
-NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred, TALLOC_CTX *mem_ctx, 
+_PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred, TALLOC_CTX *mem_ctx, 
                                           int *flags,
                                           DATA_BLOB challenge, DATA_BLOB target_info, 
                                           DATA_BLOB *_lm_response, DATA_BLOB *_nt_response, 
index b1b904c8a3a68e6c0142931602b59a3d98704abd..909233aaff9e41c5caa9a1afb0f8aa782bb2de75 100644 (file)
@@ -2462,7 +2462,7 @@ SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags)
 #define SWIGTYPE_p_int swig_types[3]
 #define SWIGTYPE_p_loadparm_context swig_types[4]
 #define SWIGTYPE_p_loadparm_service swig_types[5]
-#define SWIGTYPE_p_long_long swig_types[6]
+#define SWIGTYPE_p_long swig_types[6]
 #define SWIGTYPE_p_param_context swig_types[7]
 #define SWIGTYPE_p_param_opt swig_types[8]
 #define SWIGTYPE_p_param_section swig_types[9]
@@ -2470,7 +2470,7 @@ SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags)
 #define SWIGTYPE_p_signed_char swig_types[11]
 #define SWIGTYPE_p_unsigned_char swig_types[12]
 #define SWIGTYPE_p_unsigned_int swig_types[13]
-#define SWIGTYPE_p_unsigned_long_long swig_types[14]
+#define SWIGTYPE_p_unsigned_long swig_types[14]
 #define SWIGTYPE_p_unsigned_short swig_types[15]
 static swig_type_info *swig_types[17];
 static swig_module_info swig_module = {swig_types, 16, 0, 0, 0, 0};
@@ -2525,10 +2525,20 @@ static swig_module_info swig_module = {swig_types, 16, 0, 0, 0, 0};
 typedef struct cli_credentials cli_credentials;
 
 
+  #define SWIG_From_long   PyInt_FromLong 
+
+
+SWIGINTERNINLINE PyObject *
+SWIG_From_int  (int value)
+{    
+  return SWIG_From_long  (value);
+}
+
+
 #include "librpc/gen_ndr/samr.h" /* for struct samr_Password */
 
 SWIGINTERN cli_credentials *new_cli_credentials(){
-            return cli_credentials_init_anon(NULL);
+            return cli_credentials_init(NULL);
         }
 
 SWIGINTERN swig_type_info*
@@ -3131,6 +3141,44 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_Credentials_set_kerberos_state(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+  PyObject *resultobj = 0;
+  cli_credentials *arg1 = (cli_credentials *) 0 ;
+  enum credentials_use_kerberos arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  char *  kwnames[] = {
+    (char *) "self",(char *) "use_kerberos", NULL 
+  };
+  
+  arg1 = NULL;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"|OO:Credentials_set_kerberos_state",kwnames,&obj0,&obj1)) SWIG_fail;
+  if (obj0) {
+    res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_cli_credentials, 0 |  0 );
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Credentials_set_kerberos_state" "', argument " "1"" of type '" "cli_credentials *""'"); 
+    }
+    arg1 = (cli_credentials *)(argp1);
+  }
+  if (obj1) {
+    ecode2 = SWIG_AsVal_int(obj1, &val2);
+    if (!SWIG_IsOK(ecode2)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Credentials_set_kerberos_state" "', argument " "2"" of type '" "enum credentials_use_kerberos""'");
+    } 
+    arg2 = (enum credentials_use_kerberos)(val2);
+  }
+  cli_credentials_set_kerberos_state(arg1,arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_Credentials_parse_string(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   cli_credentials *arg1 = (cli_credentials *) 0 ;
@@ -3253,6 +3301,33 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_Credentials_set_anonymous(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+  PyObject *resultobj = 0;
+  cli_credentials *arg1 = (cli_credentials *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  char *  kwnames[] = {
+    (char *) "self", NULL 
+  };
+  
+  arg1 = NULL;
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"|O:Credentials_set_anonymous",kwnames,&obj0)) SWIG_fail;
+  if (obj0) {
+    res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_cli_credentials, 0 |  0 );
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Credentials_set_anonymous" "', argument " "1"" of type '" "cli_credentials *""'"); 
+    }
+    arg1 = (cli_credentials *)(argp1);
+  }
+  cli_credentials_set_anonymous(arg1);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_Credentials_get_workstation(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   cli_credentials *arg1 = (cli_credentials *) 0 ;
@@ -3564,9 +3639,11 @@ static PyMethodDef SwigMethods[] = {
         { (char *)"Credentials_set_domain", (PyCFunction) _wrap_Credentials_set_domain, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"Credentials_get_realm", (PyCFunction) _wrap_Credentials_get_realm, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"Credentials_set_realm", (PyCFunction) _wrap_Credentials_set_realm, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Credentials_set_kerberos_state", (PyCFunction) _wrap_Credentials_set_kerberos_state, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"Credentials_parse_string", (PyCFunction) _wrap_Credentials_parse_string, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"Credentials_get_bind_dn", (PyCFunction) _wrap_Credentials_get_bind_dn, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"Credentials_set_bind_dn", (PyCFunction) _wrap_Credentials_set_bind_dn, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Credentials_set_anonymous", (PyCFunction) _wrap_Credentials_set_anonymous, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"Credentials_get_workstation", (PyCFunction) _wrap_Credentials_get_workstation, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"Credentials_set_workstation", (PyCFunction) _wrap_Credentials_set_workstation, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"Credentials_guess", (PyCFunction) _wrap_Credentials_guess, METH_VARARGS | METH_KEYWORDS, NULL},
@@ -3587,18 +3664,18 @@ static PyMethodDef SwigMethods[] = {
 static swig_type_info _swigt__p_TALLOC_CTX = {"_p_TALLOC_CTX", "TALLOC_CTX *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_cli_credentials = {"_p_cli_credentials", "struct cli_credentials *|cli_credentials *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_int = {"_p_int", "intptr_t *|int *|int_least32_t *|int_fast32_t *|int32_t *|int_fast16_t *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_int = {"_p_int", "int *|int_least32_t *|int32_t *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_loadparm_context = {"_p_loadparm_context", "struct loadparm_context *|loadparm_context *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_loadparm_service = {"_p_loadparm_service", "struct loadparm_service *|loadparm_service *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_long_long = {"_p_long_long", "int_least64_t *|int_fast64_t *|int64_t *|long long *|intmax_t *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_long = {"_p_long", "intptr_t *|int_least64_t *|int_fast32_t *|int_fast64_t *|int64_t *|long *|int_fast16_t *|intmax_t *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_param_context = {"_p_param_context", "struct param_context *|param *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_param_opt = {"_p_param_opt", "struct param_opt *|param_opt *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_param_section = {"_p_param_section", "struct param_section *|param_section *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_short = {"_p_short", "short *|int_least16_t *|int16_t *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_signed_char = {"_p_signed_char", "signed char *|int_least8_t *|int_fast8_t *|int8_t *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "unsigned char *|uint_least8_t *|uint_fast8_t *|uint8_t *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "uintptr_t *|uint_least32_t *|uint_fast32_t *|uint32_t *|unsigned int *|uint_fast16_t *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_unsigned_long_long = {"_p_unsigned_long_long", "uint_least64_t *|uint_fast64_t *|uint64_t *|unsigned long long *|uintmax_t *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "uint_least32_t *|uint32_t *|unsigned int *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_unsigned_long = {"_p_unsigned_long", "uintptr_t *|uint_least64_t *|uint_fast32_t *|uint_fast64_t *|uint64_t *|unsigned long *|uint_fast16_t *|uintmax_t *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_unsigned_short = {"_p_unsigned_short", "unsigned short *|uint_least16_t *|uint16_t *", 0, 0, (void*)0, 0};
 
 static swig_type_info *swig_type_initial[] = {
@@ -3608,7 +3685,7 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_int,
   &_swigt__p_loadparm_context,
   &_swigt__p_loadparm_service,
-  &_swigt__p_long_long,
+  &_swigt__p_long,
   &_swigt__p_param_context,
   &_swigt__p_param_opt,
   &_swigt__p_param_section,
@@ -3616,7 +3693,7 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_signed_char,
   &_swigt__p_unsigned_char,
   &_swigt__p_unsigned_int,
-  &_swigt__p_unsigned_long_long,
+  &_swigt__p_unsigned_long,
   &_swigt__p_unsigned_short,
 };
 
@@ -3626,7 +3703,7 @@ static swig_cast_info _swigc__p_cli_credentials[] = {  {&_swigt__p_cli_credentia
 static swig_cast_info _swigc__p_int[] = {  {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_loadparm_context[] = {  {&_swigt__p_loadparm_context, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_loadparm_service[] = {  {&_swigt__p_loadparm_service, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_long_long[] = {  {&_swigt__p_long_long, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_long[] = {  {&_swigt__p_long, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_param_context[] = {  {&_swigt__p_param_context, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_param_opt[] = {  {&_swigt__p_param_opt, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_param_section[] = {  {&_swigt__p_param_section, 0, 0, 0},{0, 0, 0, 0}};
@@ -3634,7 +3711,7 @@ static swig_cast_info _swigc__p_short[] = {  {&_swigt__p_short, 0, 0, 0},{0, 0,
 static swig_cast_info _swigc__p_signed_char[] = {  {&_swigt__p_signed_char, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_unsigned_char[] = {  {&_swigt__p_unsigned_char, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_unsigned_int[] = {  {&_swigt__p_unsigned_int, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_unsigned_long_long[] = {  {&_swigt__p_unsigned_long_long, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_unsigned_long[] = {  {&_swigt__p_unsigned_long, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_unsigned_short[] = {  {&_swigt__p_unsigned_short, 0, 0, 0},{0, 0, 0, 0}};
 
 static swig_cast_info *swig_cast_initial[] = {
@@ -3644,7 +3721,7 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_int,
   _swigc__p_loadparm_context,
   _swigc__p_loadparm_service,
-  _swigc__p_long_long,
+  _swigc__p_long,
   _swigc__p_param_context,
   _swigc__p_param_opt,
   _swigc__p_param_section,
@@ -3652,7 +3729,7 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_signed_char,
   _swigc__p_unsigned_char,
   _swigc__p_unsigned_int,
-  _swigc__p_unsigned_long_long,
+  _swigc__p_unsigned_long,
   _swigc__p_unsigned_short,
 };
 
@@ -4174,5 +4251,8 @@ SWIGEXPORT void SWIG_init(void) {
   SWIG_InstallConstants(d,swig_const_table);
   
   
+  SWIG_Python_SetConstant(d, "AUTO_USE_KERBEROS",SWIG_From_int((int)(CRED_AUTO_USE_KERBEROS)));
+  SWIG_Python_SetConstant(d, "DONT_USE_KERBEROS",SWIG_From_int((int)(CRED_DONT_USE_KERBEROS)));
+  SWIG_Python_SetConstant(d, "MUST_USE_KERBEROS",SWIG_From_int((int)(CRED_MUST_USE_KERBEROS)));
 }
 
index d2ca68d11578276b4b75df0375e5b4b0859c596a..d0a99502c17d94de43b990cbf7970928d150202b 100644 (file)
@@ -67,6 +67,8 @@ class CredentialsTests(unittest.TestCase):
         self.assertTrue(self.creds.is_anonymous())
         self.creds.set_username("somebody")
         self.assertFalse(self.creds.is_anonymous())
+        self.creds.set_anonymous()
+        self.assertTrue(self.creds.is_anonymous())
 
     def test_workstation(self):
         # FIXME: This is uninitialised, it should be None
index 243725b235dd431473e5695097512ae474cde056..61663d96336506608a6935339fc46f1bfa457589 100644 (file)
@@ -13,7 +13,7 @@ gensec_VERSION = 0.0.1
 gensec_SOVERSION = 0
 gensec_OBJ_FILES = $(addprefix auth/gensec/, gensec.o socket.o)
 
-PUBLIC_HEADERS += $(addprefix auth/gensec/, gensec.h spnego.h)
+PUBLIC_HEADERS += auth/gensec/gensec.h
 
 ################################################
 # Start MODULE gensec_krb5
index cb7bcb71d81e5fcec401b7c5e18373f841f302c1..06a7b8a38222b9a0f6dd6819db79b6f1c0fa0846 100644 (file)
@@ -23,6 +23,7 @@
 #include "auth/auth.h"
 #include "auth/credentials/credentials.h"
 #include "auth/gensec/gensec.h"
+#include "auth/gensec/gensec_proto.h"
 #include "lib/socket/socket.h"
 #include <sasl/sasl.h>
 
index b07a92d4d1cf03001191976dee14dbcecea19485..3393ce01784b0f9e85d75e815a4c5c436c033cd9 100644 (file)
@@ -26,6 +26,7 @@
 #include "librpc/rpc/dcerpc.h"
 #include "auth/credentials/credentials.h"
 #include "auth/gensec/gensec.h"
+#include "auth/gensec/gensec_proto.h"
 #include "param/param.h"
 
 /* the list of currently registered GENSEC backends */
@@ -34,7 +35,7 @@ static int gensec_num_backends;
 
 /* Return all the registered mechs.  Don't modify the return pointer,
  * but you may talloc_reference it if convient */
-struct gensec_security_ops **gensec_security_all(void)
+_PUBLIC_ struct gensec_security_ops **gensec_security_all(void)
 {
        return generic_security_ops;
 }
@@ -44,7 +45,7 @@ struct gensec_security_ops **gensec_security_all(void)
  * gensec_security_all(), or from cli_credentials_gensec_list() (ie,
  * an existing list we have trimmed down) */
 
-struct gensec_security_ops **gensec_use_kerberos_mechs(TALLOC_CTX *mem_ctx, 
+_PUBLIC_ struct gensec_security_ops **gensec_use_kerberos_mechs(TALLOC_CTX *mem_ctx, 
                                                       struct gensec_security_ops **old_gensec_list, 
                                                       struct cli_credentials *creds)
 {
@@ -571,7 +572,7 @@ _PUBLIC_ NTSTATUS gensec_client_start(TALLOC_CTX *mem_ctx,
   @param gensec_security Returned GENSEC context pointer.
   @note  The mem_ctx is only a parent and may be NULL.
 */
-NTSTATUS gensec_server_start(TALLOC_CTX *mem_ctx, 
+_PUBLIC_ NTSTATUS gensec_server_start(TALLOC_CTX *mem_ctx, 
                             struct event_context *ev,
                             struct loadparm_context *lp_ctx,
                             struct messaging_context *msg,
@@ -636,7 +637,7 @@ static NTSTATUS gensec_start_mech(struct gensec_security *gensec_security)
  * @param auth_level DCERPC auth level 
  */
 
-NTSTATUS gensec_start_mech_by_authtype(struct gensec_security *gensec_security, 
+_PUBLIC_ NTSTATUS gensec_start_mech_by_authtype(struct gensec_security *gensec_security, 
                                       uint8_t auth_type, uint8_t auth_level) 
 {
        gensec_security->ops = gensec_security_by_authtype(gensec_security, auth_type);
@@ -662,7 +663,7 @@ NTSTATUS gensec_start_mech_by_authtype(struct gensec_security *gensec_security,
        return gensec_start_mech(gensec_security);
 }
 
-const char *gensec_get_name_by_authtype(uint8_t authtype) 
+_PUBLIC_ const char *gensec_get_name_by_authtype(uint8_t authtype) 
 {
        const struct gensec_security_ops *ops;
        ops = gensec_security_by_authtype(NULL, authtype);
@@ -673,7 +674,7 @@ const char *gensec_get_name_by_authtype(uint8_t authtype)
 }
        
 
-const char *gensec_get_name_by_oid(const char *oid_string) 
+_PUBLIC_ const char *gensec_get_name_by_oid(const char *oid_string) 
 {
        const struct gensec_security_ops *ops;
        ops = gensec_security_by_oid(NULL, oid_string);
@@ -703,7 +704,7 @@ NTSTATUS gensec_start_mech_by_ops(struct gensec_security *gensec_security,
  *       well-known #define to hook it in.
  */
 
-NTSTATUS gensec_start_mech_by_oid(struct gensec_security *gensec_security, 
+_PUBLIC_ NTSTATUS gensec_start_mech_by_oid(struct gensec_security *gensec_security, 
                                  const char *mech_oid) 
 {
        gensec_security->ops = gensec_security_by_oid(gensec_security, mech_oid);
@@ -719,7 +720,7 @@ NTSTATUS gensec_start_mech_by_oid(struct gensec_security *gensec_security,
  *
  */
 
-NTSTATUS gensec_start_mech_by_sasl_name(struct gensec_security *gensec_security, 
+_PUBLIC_ NTSTATUS gensec_start_mech_by_sasl_name(struct gensec_security *gensec_security, 
                                        const char *sasl_name) 
 {
        gensec_security->ops = gensec_security_by_sasl_name(gensec_security, sasl_name);
@@ -768,7 +769,7 @@ _PUBLIC_ NTSTATUS gensec_start_mech_by_sasl_list(struct gensec_security *gensec_
  *
  */
 
-NTSTATUS gensec_start_mech_by_name(struct gensec_security *gensec_security, 
+_PUBLIC_ NTSTATUS gensec_start_mech_by_name(struct gensec_security *gensec_security, 
                                        const char *name) 
 {
        gensec_security->ops = gensec_security_by_name(gensec_security, name);
@@ -782,7 +783,7 @@ NTSTATUS gensec_start_mech_by_name(struct gensec_security *gensec_security,
 /*
   wrappers for the gensec function pointers
 */
-NTSTATUS gensec_unseal_packet(struct gensec_security *gensec_security, 
+_PUBLIC_ NTSTATUS gensec_unseal_packet(struct gensec_security *gensec_security, 
                              TALLOC_CTX *mem_ctx, 
                              uint8_t *data, size_t length, 
                              const uint8_t *whole_pdu, size_t pdu_length, 
@@ -801,7 +802,7 @@ NTSTATUS gensec_unseal_packet(struct gensec_security *gensec_security,
                                                   sig);
 }
 
-NTSTATUS gensec_check_packet(struct gensec_security *gensec_security, 
+_PUBLIC_ NTSTATUS gensec_check_packet(struct gensec_security *gensec_security, 
                             TALLOC_CTX *mem_ctx, 
                             const uint8_t *data, size_t length, 
                             const uint8_t *whole_pdu, size_t pdu_length, 
@@ -817,7 +818,7 @@ NTSTATUS gensec_check_packet(struct gensec_security *gensec_security,
        return gensec_security->ops->check_packet(gensec_security, mem_ctx, data, length, whole_pdu, pdu_length, sig);
 }
 
-NTSTATUS gensec_seal_packet(struct gensec_security *gensec_security, 
+_PUBLIC_ NTSTATUS gensec_seal_packet(struct gensec_security *gensec_security, 
                            TALLOC_CTX *mem_ctx, 
                            uint8_t *data, size_t length, 
                            const uint8_t *whole_pdu, size_t pdu_length, 
@@ -833,7 +834,7 @@ NTSTATUS gensec_seal_packet(struct gensec_security *gensec_security,
        return gensec_security->ops->seal_packet(gensec_security, mem_ctx, data, length, whole_pdu, pdu_length, sig);
 }
 
-NTSTATUS gensec_sign_packet(struct gensec_security *gensec_security, 
+_PUBLIC_ NTSTATUS gensec_sign_packet(struct gensec_security *gensec_security, 
                            TALLOC_CTX *mem_ctx, 
                            const uint8_t *data, size_t length, 
                            const uint8_t *whole_pdu, size_t pdu_length, 
@@ -849,7 +850,7 @@ NTSTATUS gensec_sign_packet(struct gensec_security *gensec_security,
        return gensec_security->ops->sign_packet(gensec_security, mem_ctx, data, length, whole_pdu, pdu_length, sig);
 }
 
-size_t gensec_sig_size(struct gensec_security *gensec_security, size_t data_size) 
+_PUBLIC_ size_t gensec_sig_size(struct gensec_security *gensec_security, size_t data_size) 
 {
        if (!gensec_security->ops->sig_size) {
                return 0;
@@ -879,7 +880,7 @@ size_t gensec_max_input_size(struct gensec_security *gensec_security)
        return gensec_security->ops->max_input_size(gensec_security);
 }
 
-NTSTATUS gensec_wrap(struct gensec_security *gensec_security, 
+_PUBLIC_ NTSTATUS gensec_wrap(struct gensec_security *gensec_security, 
                     TALLOC_CTX *mem_ctx, 
                     const DATA_BLOB *in, 
                     DATA_BLOB *out) 
@@ -890,7 +891,7 @@ NTSTATUS gensec_wrap(struct gensec_security *gensec_security,
        return gensec_security->ops->wrap(gensec_security, mem_ctx, in, out);
 }
 
-NTSTATUS gensec_unwrap(struct gensec_security *gensec_security, 
+_PUBLIC_ NTSTATUS gensec_unwrap(struct gensec_security *gensec_security, 
                       TALLOC_CTX *mem_ctx, 
                       const DATA_BLOB *in, 
                       DATA_BLOB *out) 
@@ -901,7 +902,7 @@ NTSTATUS gensec_unwrap(struct gensec_security *gensec_security,
        return gensec_security->ops->unwrap(gensec_security, mem_ctx, in, out);
 }
 
-NTSTATUS gensec_session_key(struct gensec_security *gensec_security, 
+_PUBLIC_ NTSTATUS gensec_session_key(struct gensec_security *gensec_security, 
                            DATA_BLOB *session_key)
 {
        if (!gensec_security->ops->session_key) {
@@ -924,7 +925,7 @@ NTSTATUS gensec_session_key(struct gensec_security *gensec_security,
  *
  */
 
-NTSTATUS gensec_session_info(struct gensec_security *gensec_security, 
+_PUBLIC_ NTSTATUS gensec_session_info(struct gensec_security *gensec_security, 
                             struct auth_session_info **session_info)
 {
        if (!gensec_security->ops->session_info) {
@@ -1064,7 +1065,7 @@ _PUBLIC_ NTSTATUS gensec_set_credentials(struct gensec_security *gensec_security
  *
  */
 
-struct cli_credentials *gensec_get_credentials(struct gensec_security *gensec_security) 
+_PUBLIC_ struct cli_credentials *gensec_get_credentials(struct gensec_security *gensec_security) 
 {
        if (!gensec_security) {
                return NULL;
@@ -1134,7 +1135,7 @@ _PUBLIC_ const char *gensec_get_target_hostname(struct gensec_security *gensec_s
  * cryptographic tokens, to avoid certain attacks.
  */
 
-NTSTATUS gensec_set_my_addr(struct gensec_security *gensec_security, struct socket_address *my_addr) 
+_PUBLIC_ NTSTATUS gensec_set_my_addr(struct gensec_security *gensec_security, struct socket_address *my_addr) 
 {
        gensec_security->my_addr = my_addr;
        if (my_addr && !talloc_reference(gensec_security, my_addr)) {
@@ -1143,7 +1144,7 @@ NTSTATUS gensec_set_my_addr(struct gensec_security *gensec_security, struct sock
        return NT_STATUS_OK;
 }
 
-NTSTATUS gensec_set_peer_addr(struct gensec_security *gensec_security, struct socket_address *peer_addr) 
+_PUBLIC_ NTSTATUS gensec_set_peer_addr(struct gensec_security *gensec_security, struct socket_address *peer_addr) 
 {
        gensec_security->peer_addr = peer_addr;
        if (peer_addr && !talloc_reference(gensec_security, peer_addr)) {
@@ -1163,7 +1164,7 @@ struct socket_address *gensec_get_my_addr(struct gensec_security *gensec_securit
        return NULL;
 }
 
-struct socket_address *gensec_get_peer_addr(struct gensec_security *gensec_security) 
+_PUBLIC_ struct socket_address *gensec_get_peer_addr(struct gensec_security *gensec_security) 
 {
        if (gensec_security->peer_addr) {
                return gensec_security->peer_addr;
@@ -1263,7 +1264,7 @@ static int sort_gensec(struct gensec_security_ops **gs1, struct gensec_security_
 /*
   initialise the GENSEC subsystem
 */
-NTSTATUS gensec_init(struct loadparm_context *lp_ctx)
+_PUBLIC_ NTSTATUS gensec_init(struct loadparm_context *lp_ctx)
 {
        static bool initialized = false;
        extern NTSTATUS gensec_sasl_init(void);
index 3413e5c8ce27c1329ca26c7c12636c54948d0e0e..7a1abfbc3b9a45c61f8b01c842861fab34f557b9 100644 (file)
@@ -199,6 +199,96 @@ NTSTATUS gensec_packet_full_request(struct gensec_security *gensec_security,
 
 struct loadparm_context;
 
-#include "auth/gensec/gensec_proto.h"
+NTSTATUS gensec_subcontext_start(TALLOC_CTX *mem_ctx, 
+                                struct gensec_security *parent, 
+                                struct gensec_security **gensec_security);
+NTSTATUS gensec_client_start(TALLOC_CTX *mem_ctx, 
+                            struct gensec_security **gensec_security,
+                            struct event_context *ev,
+                            struct loadparm_context *lp_ctx);
+NTSTATUS gensec_start_mech_by_sasl_list(struct gensec_security *gensec_security, 
+                                                const char **sasl_names);
+NTSTATUS gensec_update(struct gensec_security *gensec_security, TALLOC_CTX *out_mem_ctx, 
+                      const DATA_BLOB in, DATA_BLOB *out);
+void gensec_update_send(struct gensec_security *gensec_security, const DATA_BLOB in,
+                                void (*callback)(struct gensec_update_request *req, void *private_data),
+                                void *private_data);
+NTSTATUS gensec_update_recv(struct gensec_update_request *req, TALLOC_CTX *out_mem_ctx, DATA_BLOB *out);
+void gensec_want_feature(struct gensec_security *gensec_security,
+                        uint32_t feature);
+bool gensec_have_feature(struct gensec_security *gensec_security,
+                        uint32_t feature);
+NTSTATUS gensec_set_credentials(struct gensec_security *gensec_security, struct cli_credentials *credentials);
+NTSTATUS gensec_set_target_service(struct gensec_security *gensec_security, const char *service);
+const char *gensec_get_target_service(struct gensec_security *gensec_security);
+NTSTATUS gensec_set_target_hostname(struct gensec_security *gensec_security, const char *hostname);
+const char *gensec_get_target_hostname(struct gensec_security *gensec_security);
+NTSTATUS gensec_session_key(struct gensec_security *gensec_security, 
+                           DATA_BLOB *session_key);
+NTSTATUS gensec_start_mech_by_oid(struct gensec_security *gensec_security, 
+                                 const char *mech_oid);
+const char *gensec_get_name_by_oid(const char *oid_string);
+struct cli_credentials *gensec_get_credentials(struct gensec_security *gensec_security);
+struct socket_address *gensec_get_peer_addr(struct gensec_security *gensec_security);
+NTSTATUS gensec_init(struct loadparm_context *lp_ctx);
+NTSTATUS gensec_unseal_packet(struct gensec_security *gensec_security, 
+                             TALLOC_CTX *mem_ctx, 
+                             uint8_t *data, size_t length, 
+                             const uint8_t *whole_pdu, size_t pdu_length, 
+                             const DATA_BLOB *sig);
+NTSTATUS gensec_check_packet(struct gensec_security *gensec_security, 
+                            TALLOC_CTX *mem_ctx, 
+                            const uint8_t *data, size_t length, 
+                            const uint8_t *whole_pdu, size_t pdu_length, 
+                            const DATA_BLOB *sig);
+size_t gensec_sig_size(struct gensec_security *gensec_security, size_t data_size);
+NTSTATUS gensec_seal_packet(struct gensec_security *gensec_security, 
+                           TALLOC_CTX *mem_ctx, 
+                           uint8_t *data, size_t length, 
+                           const uint8_t *whole_pdu, size_t pdu_length, 
+                           DATA_BLOB *sig);
+NTSTATUS gensec_sign_packet(struct gensec_security *gensec_security, 
+                           TALLOC_CTX *mem_ctx, 
+                           const uint8_t *data, size_t length, 
+                           const uint8_t *whole_pdu, size_t pdu_length, 
+                           DATA_BLOB *sig);
+NTSTATUS gensec_start_mech_by_authtype(struct gensec_security *gensec_security, 
+                                      uint8_t auth_type, uint8_t auth_level);
+const char *gensec_get_name_by_authtype(uint8_t authtype);
+NTSTATUS gensec_server_start(TALLOC_CTX *mem_ctx, 
+                            struct event_context *ev,
+                            struct loadparm_context *lp_ctx,
+                            struct messaging_context *msg,
+                            struct gensec_security **gensec_security);
+NTSTATUS gensec_session_info(struct gensec_security *gensec_security, 
+                            struct auth_session_info **session_info);
+NTSTATUS auth_nt_status_squash(NTSTATUS nt_status);
+struct creds_CredentialState;
+NTSTATUS dcerpc_schannel_creds(struct gensec_security *gensec_security,
+                              TALLOC_CTX *mem_ctx,
+                              struct creds_CredentialState **creds);
+NTSTATUS gensec_set_peer_addr(struct gensec_security *gensec_security, struct socket_address *peer_addr);
+NTSTATUS gensec_set_my_addr(struct gensec_security *gensec_security, struct socket_address *my_addr);
+
+NTSTATUS gensec_start_mech_by_name(struct gensec_security *gensec_security, 
+                                       const char *name);
+
+NTSTATUS gensec_unwrap(struct gensec_security *gensec_security, 
+                      TALLOC_CTX *mem_ctx, 
+                      const DATA_BLOB *in, 
+                      DATA_BLOB *out);
+NTSTATUS gensec_wrap(struct gensec_security *gensec_security, 
+                    TALLOC_CTX *mem_ctx, 
+                    const DATA_BLOB *in, 
+                    DATA_BLOB *out);
+
+struct gensec_security_ops **gensec_security_all(void);
+struct gensec_security_ops **gensec_use_kerberos_mechs(TALLOC_CTX *mem_ctx, 
+                                                      struct gensec_security_ops **old_gensec_list, 
+                                                      struct cli_credentials *creds);
+
+NTSTATUS gensec_start_mech_by_sasl_name(struct gensec_security *gensec_security, 
+                                       const char *sasl_name);
+
 
 #endif /* __GENSEC_H__ */
index d8cdb90197579aa58ba9cae72686cd8680a4369e..e7dcb4ea688d41ae561516f9a1f0a1f5e2b56c8a 100644 (file)
@@ -34,7 +34,9 @@
 #include "auth/credentials/credentials.h"
 #include "auth/credentials/credentials_krb5.h"
 #include "auth/gensec/gensec.h"
+#include "auth/gensec/gensec_proto.h"
 #include "param/param.h"
+#include "auth/session_proto.h"
 
 enum gensec_gssapi_sasl_state 
 {
index 88432c7f89c5e782eb39c5ab268fe772d7c7ad21..ae601b19c25e60fa21f0beaf0b906f42dffd516b 100644 (file)
@@ -36,7 +36,9 @@
 #include "auth/credentials/credentials.h"
 #include "auth/credentials/credentials_krb5.h"
 #include "auth/gensec/gensec.h"
+#include "auth/gensec/gensec_proto.h"
 #include "param/param.h"
+#include "auth/session_proto.h"
 
 enum GENSEC_KRB5_STATE {
        GENSEC_KRB5_SERVER_START,
index 96e347898234e8cccc36fdfa6bf5de9953038f47..b3117ee9b2e00d0b86a27c31a424bce8cbaad1ee 100644 (file)
 #include "auth/auth.h"
 #include "auth/credentials/credentials.h"
 #include "auth/gensec/gensec.h"
+#include "auth/gensec/gensec_proto.h"
 #include "auth/gensec/schannel.h"
 #include "auth/gensec/schannel_state.h"
 #include "auth/gensec/schannel_proto.h"
 #include "librpc/rpc/dcerpc.h"
 #include "param/param.h"
+#include "auth/session_proto.h"
 
 static size_t schannel_sig_size(struct gensec_security *gensec_security, size_t data_size)
 {
index 4dc05e8cc4e5b26deddc87e13589ed65caf89fcc..27449bf610294b334e03fbee393c911b225092d2 100644 (file)
@@ -24,6 +24,7 @@
 #include "lib/socket/socket.h"
 #include "lib/stream/packet.h"
 #include "auth/gensec/gensec.h"
+#include "auth/gensec/gensec_proto.h"
 
 static const struct socket_ops gensec_socket_ops;
 
index f593d17d4bdf110cca608baf608554af3882199e..1544326bb1c06c45f0a105dcf5d40cda440d1c61 100644 (file)
@@ -26,6 +26,7 @@
 #include "librpc/gen_ndr/ndr_dcerpc.h"
 #include "auth/credentials/credentials.h"
 #include "auth/gensec/gensec.h"
+#include "auth/gensec/gensec_proto.h"
 
 enum spnego_state_position {
        SPNEGO_SERVER_START,
index e905e3e704a775981fd7e20a590fe04832e6297f..9002715065aa23a809b9f5c706a321fda27dc91e 100644 (file)
@@ -24,6 +24,7 @@
 #include "system/kerberos.h"
 #include "auth/kerberos/kerberos.h"
 #include "auth/credentials/credentials.h"
+#include "auth/credentials/credentials_proto.h"
 #include "auth/credentials/credentials_krb5.h"
 
 struct principal_container {
@@ -634,7 +635,7 @@ int smb_krb5_update_keytab(TALLOC_CTX *parent_ctx,
        return ret;
 }
 
-_PUBLIC_ int smb_krb5_create_memory_keytab(TALLOC_CTX *parent_ctx,
+int smb_krb5_create_memory_keytab(TALLOC_CTX *parent_ctx,
                                           struct cli_credentials *machine_account,
                                           struct smb_krb5_context *smb_krb5_context,
                                           const char **enctype_strings,
index 8901488004c5e46ff53515203cc61eb3697c0488..64bfebd3d1fde597badc357881154b22aee2f7dc 100644 (file)
@@ -27,7 +27,9 @@
 #include "librpc/gen_ndr/ndr_dcerpc.h"
 #include "auth/credentials/credentials.h"
 #include "auth/gensec/gensec.h"
+#include "auth/gensec/gensec_proto.h"
 #include "auth/auth.h"
+#include "auth/auth_proto.h"
 #include "param/param.h"
 
 /**
index 5efc0a2eb17736b8877669105d0be294f0cebf88..df950e4756f14273f7357627d079303c031dfd87 100644 (file)
@@ -186,4 +186,5 @@ struct gensec_ntlmssp_state
 
 struct loadparm_context;
 struct auth_session_info;
+
 #include "auth/ntlmssp/proto.h"
index eb6dbc5bca1ed65517725119f8fa3a8063a63401..12802b7e79c0d9b90e4130006676a377ed79032a 100644 (file)
@@ -30,7 +30,9 @@
 #include "auth/credentials/credentials.h"
 #include "auth/gensec/gensec.h"
 #include "auth/auth.h"
+#include "auth/auth_proto.h"
 #include "param/param.h"
+#include "auth/session_proto.h"
 
 /** 
  * Set a username on an NTLMSSP context - ensures it is talloc()ed 
index b003dc865f52588e7b30f7e3a1f3088a4a21da66..063b16f5395c906296d3356ab0b3ed8181bc3bb8 100644 (file)
@@ -134,7 +134,7 @@ static NTSTATUS ntlmssp_make_packet_signature(struct gensec_ntlmssp_state *gense
 }
 
 /* TODO: make this non-public */
-_PUBLIC_ NTSTATUS gensec_ntlmssp_sign_packet(struct gensec_security *gensec_security, 
+NTSTATUS gensec_ntlmssp_sign_packet(struct gensec_security *gensec_security, 
                                    TALLOC_CTX *sig_mem_ctx, 
                                    const uint8_t *data, size_t length, 
                                    const uint8_t *whole_pdu, size_t pdu_length, 
@@ -306,7 +306,7 @@ NTSTATUS gensec_ntlmssp_unseal_packet(struct gensec_security *gensec_security,
    Initialise the state for NTLMSSP signing.
 */
 /* TODO: make this non-public */
-_PUBLIC_ NTSTATUS ntlmssp_sign_init(struct gensec_ntlmssp_state *gensec_ntlmssp_state)
+NTSTATUS ntlmssp_sign_init(struct gensec_ntlmssp_state *gensec_ntlmssp_state)
 {
        TALLOC_CTX *mem_ctx = talloc_new(gensec_ntlmssp_state);
 
index b171fc57b9abfe42b464fe40d6f02128e8ede0a2..ed44754993b36e9fedf1130d1d2012b10b6a8208 100644 (file)
@@ -383,7 +383,7 @@ _PUBLIC_ NTSTATUS authsam_make_server_info(TALLOC_CTX *mem_ctx, struct ldb_conte
        return NT_STATUS_OK;
 }
 
-_PUBLIC_ NTSTATUS sam_get_results_principal(struct ldb_context *sam_ctx,
+NTSTATUS sam_get_results_principal(struct ldb_context *sam_ctx,
                                   TALLOC_CTX *mem_ctx, const char *principal,
                                   struct ldb_message ***msgs,
                                   struct ldb_message ***msgs_domain_ref)
index c86fff90df5a4f7724c9bb6d20e3af3a879792f5..112eac95d84aec38c4a60c526a7cff1058f8846a 100644 (file)
@@ -28,8 +28,9 @@
 #include "dsdb/samdb/samdb.h"
 #include "auth/credentials/credentials.h"
 #include "param/param.h"
+#include "auth/session_proto.h"
 
-struct auth_session_info *anonymous_session(TALLOC_CTX *mem_ctx, 
+_PUBLIC_ struct auth_session_info *anonymous_session(TALLOC_CTX *mem_ctx, 
                                            struct loadparm_context *lp_ctx) 
 {
        NTSTATUS nt_status;
@@ -41,7 +42,7 @@ struct auth_session_info *anonymous_session(TALLOC_CTX *mem_ctx,
        return session_info;
 }
 
-NTSTATUS auth_anonymous_session_info(TALLOC_CTX *parent_ctx, 
+_PUBLIC_ NTSTATUS auth_anonymous_session_info(TALLOC_CTX *parent_ctx, 
                                     struct loadparm_context *lp_ctx,
                                     struct auth_session_info **_session_info) 
 {
@@ -77,7 +78,7 @@ NTSTATUS auth_anonymous_session_info(TALLOC_CTX *parent_ctx,
        return NT_STATUS_OK;
 }
 
-NTSTATUS auth_anonymous_server_info(TALLOC_CTX *mem_ctx, 
+_PUBLIC_ NTSTATUS auth_anonymous_server_info(TALLOC_CTX *mem_ctx, 
                                    const char *netbios_name,
                                    struct auth_serversupplied_info **_server_info) 
 {
@@ -149,7 +150,7 @@ NTSTATUS auth_anonymous_server_info(TALLOC_CTX *mem_ctx,
        return NT_STATUS_OK;
 }
 
-NTSTATUS auth_generate_session_info(TALLOC_CTX *mem_ctx, 
+_PUBLIC_ NTSTATUS auth_generate_session_info(TALLOC_CTX *mem_ctx, 
                                    struct loadparm_context *lp_ctx,
                                    struct auth_serversupplied_info *server_info, 
                                    struct auth_session_info **_session_info) 
@@ -199,7 +200,7 @@ void auth_session_info_debug(int dbg_lev,
 /**
  * Make a server_info struct from the info3 returned by a domain logon 
  */
-NTSTATUS make_server_info_netlogon_validation(TALLOC_CTX *mem_ctx,
+_PUBLIC_ NTSTATUS make_server_info_netlogon_validation(TALLOC_CTX *mem_ctx,
                                              const char *account_name,
                                              uint16_t validation_level,
                                              union netr_Validation *validation,
index 039c005bb0863d6e5796608185c38053ff175090..87fc47791a9e446dd7569e3f2bfd4eef007886ca 100644 (file)
@@ -29,6 +29,28 @@ struct auth_session_info {
 };
 
 #include "librpc/gen_ndr/netlogon.h"
-#include "auth/session_proto.h"
+
+struct auth_session_info *system_session_anon(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx);
+struct auth_session_info *system_session(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx) ;
+NTSTATUS auth_anonymous_server_info(TALLOC_CTX *mem_ctx, 
+                                   const char *netbios_name,
+                                   struct auth_serversupplied_info **_server_info) ;
+NTSTATUS auth_generate_session_info(TALLOC_CTX *mem_ctx, 
+                                   struct loadparm_context *lp_ctx,
+                                   struct auth_serversupplied_info *server_info, 
+                                   struct auth_session_info **_session_info) ;
+
+NTSTATUS make_server_info_netlogon_validation(TALLOC_CTX *mem_ctx,
+                                             const char *account_name,
+                                             uint16_t validation_level,
+                                             union netr_Validation *validation,
+                                             struct auth_serversupplied_info **_server_info);
+NTSTATUS auth_anonymous_session_info(TALLOC_CTX *parent_ctx, 
+                                    struct loadparm_context *lp_ctx,
+                                    struct auth_session_info **_session_info);
+
+struct auth_session_info *anonymous_session(TALLOC_CTX *mem_ctx, 
+                                           struct loadparm_context *lp_ctx);
+
 
 #endif /* _SAMBA_AUTH_SESSION_H */
index 3ff9f2b933a65dbf1290bfa3d61beb0737560337..faefb4e323ea2604e428802cb04c7ffb7df0ca70 100644 (file)
@@ -122,7 +122,7 @@ endef
 define proto_header_template
 $(1): $(2) ;
        @echo "Creating $$@"
-       @$$(PERL) $$(srcdir)/script/mkproto.pl --srcdir=$$(srcdir) --builddir=$$(builddir) --all=$$@ $$^
+       @$$(PERL) $$(srcdir)/script/mkproto.pl --srcdir=$$(srcdir) --builddir=$$(builddir) --public=/dev/null --private=$$@ $$^
 endef
 
 # Shared module
index 9a77bbc31a12d075783cb2c38449365881b05e4e..7fc834ff2b716fb545029042761304a1b7d65d58 100644 (file)
@@ -1,7 +1,7 @@
 ########################
 # ASN.1 Parse::Yapp parser
 # Copyright (C) Stefan (metze) Metzmacher <metze@samba.org>
-# released under the GNU GPL version 2 or later
+# released under the GNU GPL version 3 or later
 
 
 
index e683d2b83f243ef894beec995f1a11d3d4e909e4..da2bd20050aa3a8a6b35d15312b0442a556a36e7 100644 (file)
@@ -29,4 +29,6 @@ struct cldapd_server {
        struct ldb_context *samctx;
 };
 
+struct ldap_SearchRequest;
+
 #include "cldap_server/proto.h"
index d9478a3a8ad45f3b87e4df665ca59cb57c3021b5..775aa69d37d404e1e1d7f29c3c8499169a152525 100644 (file)
@@ -50,6 +50,7 @@
 #include "lib/smbreadline/smbreadline.h"
 #include "librpc/gen_ndr/ndr_nbt.h"
 #include "param/param.h"
+#include "librpc/rpc/dcerpc.h"
 
 struct smbclient_context {
        char *remote_cur_dir;
index 513c05dfb330c7da6f52e9ac6747516c97d8c149..5cfa542fbab3a3fde5da644256cece54606d09d6 100644 (file)
@@ -5,7 +5,7 @@
 [BINARY::smbclient]
 INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG \
+               LIBSAMBA-HOSTCONFIG \
                SMBREADLINE \
                LIBSAMBA-UTIL \
                LIBCLI_SMB \
@@ -25,7 +25,7 @@ smbclient_OBJ_FILES = client/client.o
 [BINARY::cifsdd]
 INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG \
+               LIBSAMBA-HOSTCONFIG \
                LIBCLI_SMB \
                LIBPOPT \
                POPT_SAMBA \
index 41f1bcf054b5fea72d3437d6270882e48e54f866..66fb69694e30c9d1cedea0b1548a6a3db022970d 100644 (file)
@@ -26,14 +26,16 @@ m4_include(lib/popt/samba.m4)
 m4_include(lib/charset/config.m4)
 m4_include(lib/socket/config.m4)
 m4_include(nsswitch/nsstest.m4)
+m4_include(pidl/config.m4)
 
 AC_CONFIG_FILES(lib/registry/registry.pc)
 AC_CONFIG_FILES(librpc/dcerpc.pc)
 AC_CONFIG_FILES(librpc/ndr.pc)
 AC_CONFIG_FILES(torture/torture.pc)
 AC_CONFIG_FILES(auth/gensec/gensec.pc)
-AC_CONFIG_FILES(param/samba-config.pc)
+AC_CONFIG_FILES(param/samba-hostconfig.pc)
 AC_CONFIG_FILES(librpc/dcerpc_samr.pc)
+AC_CONFIG_FILES(librpc/dcerpc_atsvc.pc)
 
 SMB_EXT_LIB_FROM_PKGCONFIG(LIBTALLOC, talloc >= 1.2.0,
        [],
index 088dc6bd9670b25eb9275e52054e4e84f4d4a0d9..2144d61dfcab0ec26486ef5c000b008a4c13ed4f 100644 (file)
@@ -49,7 +49,7 @@ struct sidmap_context {
 /*
   open a sidmap context - use talloc_free to close
 */
-_PUBLIC_ struct sidmap_context *sidmap_open(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
+struct sidmap_context *sidmap_open(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
 {
        struct sidmap_context *sidmap;
        sidmap = talloc(mem_ctx, struct sidmap_context);
@@ -123,7 +123,7 @@ static NTSTATUS sidmap_primary_domain_sid(struct sidmap_context *sidmap,
 /*
   map a sid to a unix uid
 */
-_PUBLIC_ NTSTATUS sidmap_sid_to_unixuid(struct sidmap_context *sidmap,
+NTSTATUS sidmap_sid_to_unixuid(struct sidmap_context *sidmap,
                                        const struct dom_sid *sid, uid_t *uid)
 {
        const char *attrs[] = { "sAMAccountName", "uidNumber",
@@ -221,7 +221,7 @@ allocated_sid:
 /*
   see if a sid is a group - very inefficient!
 */
-_PUBLIC_ bool sidmap_sid_is_group(struct sidmap_context *sidmap, struct dom_sid *sid)
+bool sidmap_sid_is_group(struct sidmap_context *sidmap, struct dom_sid *sid)
 {
        const char *attrs[] = { "sAMAccountType", NULL };
        int ret;
@@ -262,7 +262,7 @@ _PUBLIC_ bool sidmap_sid_is_group(struct sidmap_context *sidmap, struct dom_sid
 /*
   map a sid to a unix gid
 */
-_PUBLIC_ NTSTATUS sidmap_sid_to_unixgid(struct sidmap_context *sidmap,
+NTSTATUS sidmap_sid_to_unixgid(struct sidmap_context *sidmap,
                                        const struct dom_sid *sid, gid_t *gid)
 {
        const char *attrs[] = { "sAMAccountName", "gidNumber",
@@ -355,7 +355,7 @@ allocated_sid:
   map a unix uid to a dom_sid
   the returned sid is allocated in the supplied mem_ctx
 */
-_PUBLIC_ NTSTATUS sidmap_uid_to_sid(struct sidmap_context *sidmap,
+NTSTATUS sidmap_uid_to_sid(struct sidmap_context *sidmap,
                                    TALLOC_CTX *mem_ctx,
                                    const uid_t uid, struct dom_sid **sid)
 {
@@ -453,7 +453,7 @@ allocate_sid:
   map a unix gid to a dom_sid
   the returned sid is allocated in the supplied mem_ctx
 */
-_PUBLIC_ NTSTATUS sidmap_gid_to_sid(struct sidmap_context *sidmap,
+NTSTATUS sidmap_gid_to_sid(struct sidmap_context *sidmap,
                                    TALLOC_CTX *mem_ctx,
                                    const gid_t gid, struct dom_sid **sid)
 {
@@ -550,7 +550,7 @@ allocate_sid:
   check if a sid is in the range of auto-allocated SIDs from our primary domain,
   and if it is, then return the name and atype
 */
-_PUBLIC_ NTSTATUS sidmap_allocated_sid_lookup(struct sidmap_context *sidmap, 
+NTSTATUS sidmap_allocated_sid_lookup(struct sidmap_context *sidmap, 
                                              TALLOC_CTX *mem_ctx, 
                                              const struct dom_sid *sid,
                                              const char **name,
index 1220a5c8553e78deb6ebf98d9ef1d80b16105be7..5164f7d181c02e1024305d38323531f28f00a7e5 100644 (file)
@@ -28,6 +28,7 @@
 #include "dsdb/samdb/samdb.h"
 #include "libcli/security/security.h"
 #include "librpc/gen_ndr/ndr_security.h"
+#include "librpc/gen_ndr/ndr_misc.h"
 #include "dsdb/common/flags.h"
 #include "dsdb/common/proto.h"
 #include "libcli/ldap/ldap_ndr.h"
@@ -1530,7 +1531,7 @@ static bool samdb_password_complexity_ok(const char *pass)
 
   The caller should probably have a transaction wrapping this
 */
-_PUBLIC_ NTSTATUS samdb_set_password(struct ldb_context *ctx, TALLOC_CTX *mem_ctx,
+NTSTATUS samdb_set_password(struct ldb_context *ctx, TALLOC_CTX *mem_ctx,
                            struct ldb_dn *user_dn,
                            struct ldb_dn *domain_dn,
                            struct ldb_message *mod,
@@ -1770,7 +1771,7 @@ _PUBLIC_ NTSTATUS samdb_set_password(struct ldb_context *ctx, TALLOC_CTX *mem_ct
   and actually performs the password change
 
 */
-_PUBLIC_ NTSTATUS samdb_set_password_sid(struct ldb_context *ctx, TALLOC_CTX *mem_ctx,
+NTSTATUS samdb_set_password_sid(struct ldb_context *ctx, TALLOC_CTX *mem_ctx,
                                const struct dom_sid *user_sid,
                                const char *new_pass,
                                struct samr_Password *lmNewHash, 
index 7e943c363401ed60890143207a243f0d4954cf85..e621391617609b1c89754a6b66caca58a4f298ac 100644 (file)
@@ -18,7 +18,7 @@ SAMDB_OBJ_FILES = $(addprefix dsdb/, \
                samdb/cracknames.o \
                repl/replicated_objects.o)
 
-PUBLIC_HEADERS += dsdb/samdb/samdb.h
+PUBLIC_HEADERS += dsdb/samdb/samdb.h
 
 [SUBSYSTEM::SAMDB_COMMON]
 PRIVATE_PROTO_HEADER = common/proto.h
@@ -38,7 +38,7 @@ SAMDB_SCHEMA_OBJ_FILES = $(addprefix dsdb/schema/, \
                schema_syntax.o \
                schema_constructed.o)
 
-PUBLIC_HEADERS += dsdb/schema/schema.h
+PUBLIC_HEADERS += dsdb/schema/schema.h
 
 #######################
 # Start SUBSYSTEM DREPL_SRV
index 8685c722aad2b8b7b23b6d6e64d0a74c4325d5ef..04b9987071df30aba5e783a8b34ef5c63ffee72c 100644 (file)
@@ -520,6 +520,12 @@ static int linked_attributes_modify(struct ldb_module *module, struct ldb_reques
                        
                        talloc_steal(new_req, attrs);
                        
+                       ret = ldb_set_timeout_from_prev_req(module->ldb, req, new_req);
+                       
+                       if (ret != LDB_SUCCESS) {
+                               return ret;
+                       }
+
                        /* Create a spot in the list for the requests */
                        ac->down_req = talloc_realloc(ac, ac->down_req, 
                                                      struct ldb_request *, ac->num_requests + 1);
@@ -568,6 +574,12 @@ static int linked_attributes_modify(struct ldb_module *module, struct ldb_reques
                        
                        talloc_steal(new_req, attrs);
                        
+                       ret = ldb_set_timeout_from_prev_req(module->ldb, req, new_req);
+                       
+                       if (ret != LDB_SUCCESS) {
+                               return ret;
+                       }
+
                        /* Create a spot in the list for the requests */
                        ac->down_req = talloc_realloc(ac, ac->down_req, 
                                                      struct ldb_request *, ac->num_requests + 1);
@@ -629,7 +641,11 @@ static int linked_attributes_modify(struct ldb_module *module, struct ldb_reques
                        
                        talloc_steal(new_req, new_msg);
                        
-                       ldb_set_timeout_from_prev_req(module->ldb, req, new_req);
+                       ret = ldb_set_timeout_from_prev_req(module->ldb, req, new_req);
+                       
+                       if (ret != LDB_SUCCESS) {
+                               return ret;
+                       }
                        
                        /* Now add it to the list */
                        ac->down_req = talloc_realloc(ac, ac->down_req, 
@@ -752,6 +768,12 @@ static int linked_attributes_rename(struct ldb_module *module, struct ldb_reques
 
        talloc_steal(new_req, attrs);
 
+       ret = ldb_set_timeout_from_prev_req(module->ldb, req, new_req);
+
+       if (ret != LDB_SUCCESS) {
+               return ret;
+       }
+
        ac->search_req = new_req;
        ac->step = LA_SEARCH;
        return ldb_next_request(module, new_req);
@@ -805,6 +827,12 @@ static int linked_attributes_delete(struct ldb_module *module, struct ldb_reques
 
        talloc_steal(new_req, attrs);
 
+       ret = ldb_set_timeout_from_prev_req(module->ldb, req, new_req);
+
+       if (ret != LDB_SUCCESS) {
+               return ret;
+       }
+
        ac->search_req = new_req;
        ac->step = LA_SEARCH;
        return ldb_next_request(module, new_req);
index 78b5a09f78bc245c964bdeab44ab54e65e05e69a..7f136338bea9eb52e02fe98cc60a3a794653f397 100644 (file)
@@ -6,7 +6,7 @@
    Copyright (C) Stefan Metzmacher <metze@samba.org> 2007
 
    * NOTICE: this module is NOT released under the GNU LGPL license as
-   * other ldb code. This module is release under the GNU GPL v2 or
+   * other ldb code. This module is release under the GNU GPL v3 or
    * later license.
 
    This program is free software; you can redistribute it and/or modify
@@ -87,7 +87,7 @@ static struct ldb_module *make_module_for_next_request(TALLOC_CTX *mem_ctx,
                                                       struct ldb_module *module)
 {
        struct ldb_module *current;
-_PUBLIC_       static const struct ldb_module_ops ops; /* zero */
+       static const struct ldb_module_ops ops; /* zero */
        current = talloc_zero(mem_ctx, struct ldb_module);
        if (current == NULL) {
                return module;
index 5407db99565c063806e03d4d9c6403d009581f71..3b67ca19d35b2c55434770ebba90cfa07a0feb60 100644 (file)
@@ -5,7 +5,7 @@
    Copyright (C) Andrew Bartlett <abartlet@samba.org> 2005
 
    * NOTICE: this module is NOT released under the GNU LGPL license as
-   * other ldb code. This module is release under the GNU GPL v2 or
+   * other ldb code. This module is release under the GNU GPL v3 or
    * later license.
 
    This program is free software; you can redistribute it and/or modify
index ff9530ca92b0bfd69390f32c2b1919f937c3a7c8..f2c4d383051dfe48e33743a5fd2958772616d1ff 100644 (file)
@@ -25,8 +25,6 @@
  *  Description: add schema check functionality
  *
  *  Author: Simo Sorce
- *
- *  License: GNU GPL v2 or Later
  */
 
 #include "includes.h"
index f737cc6fdc0fc62d5ace7cab629c5604bcd8e351..d800e4b6d242e9b24e0106d58a08582c1eed0427 100644 (file)
@@ -25,8 +25,6 @@
  *  Description: add schema syntax functionality
  *
  *  Author: Simo Sorce
- *
- *  License: GNU GPL v2 or Later
  */
 
 #include "includes.h"
index fa3fdbe5a2e32702db9e066020ae5b04f465c1ce..37f7584d41722774912930b54a2bcdae89dd0054 100644 (file)
@@ -25,8 +25,6 @@
  *  Description: add schema syntax functionality
  *
  *  Author: Simo Sorce
- *
- *  License: GNU GPL v2 or Later
  */
 
 
index 56ae7b239a2feef296815df152f03b5da6940a56..9c332d2969077eecc786c73880973bae206666d4 100644 (file)
@@ -160,6 +160,12 @@ static int subtree_delete(struct ldb_module *module, struct ldb_request *req)
                return ret;
        }
 
+       ret = ldb_set_timeout_from_prev_req(module->ldb, req, new_req);
+
+       if (ret != LDB_SUCCESS) {
+               return ret;
+       }
+
        ac->search_req = new_req;
        if (req == NULL) {
                ldb_oom(ac->module->ldb);
index bf8124e253acf51f5eda11e22566fbbc5dc2d8b8..fd1388d4164bdb4369894fc8501fd7fc6431d473 100644 (file)
@@ -117,7 +117,15 @@ static int subtree_rename_search_callback(struct ldb_context *ldb, void *context
                                           NULL,
                                           NULL);
                
-               if (ret != LDB_SUCCESS) return ret;
+               if (ret != LDB_SUCCESS) {
+                       return ret;
+               }
+
+               ret = ldb_set_timeout_from_prev_req(ldb, ac->orig_req, req);
+               
+               if (ret != LDB_SUCCESS) {
+                       return ret;
+               }
 
                talloc_steal(req, newdn);
 
@@ -186,6 +194,12 @@ static int subtree_rename(struct ldb_module *module, struct ldb_request *req)
                return ret;
        }
 
+       ret = ldb_set_timeout_from_prev_req(module->ldb, req, new_req);
+       
+       if (ret != LDB_SUCCESS) {
+               return ret;
+       }
+
        ac->down_req = talloc_realloc(ac, ac->down_req, 
                                        struct ldb_request *, ac->num_requests + 1);
        if (!ac->down_req) {
index 3945dbb14b88b41a8150d11f70956e658e086436..5c2de81816c97b26e8a92328a37badd1eebe4da6 100644 (file)
@@ -73,7 +73,7 @@ static NTSTATUS samdb_privilege_setup_sid(void *samctx, TALLOC_CTX *mem_ctx,
   setup the privilege mask for this security token based on our
   local SAM
 */
-_PUBLIC_ NTSTATUS samdb_privilege_setup(struct loadparm_context *lp_ctx, struct security_token *token)
+NTSTATUS samdb_privilege_setup(struct loadparm_context *lp_ctx, struct security_token *token)
 {
        void *samctx;
        TALLOC_CTX *mem_ctx;
index 70ca92c01ca689fbdf5c0274b6a604780599a715..fbfc56e127436ac923caf319ff5c105dd6844f8e 100644 (file)
@@ -1,6 +1,5 @@
 # FIXME: This file should be autogenerated by the build system at some 
 # point
-lib/talloc/talloc.h: talloc.h
 lib/util/util.h: util.h
 lib/util/debug.h: util/debug.h
 lib/util/mutex.h: util/mutex.h
@@ -10,114 +9,65 @@ lib/util/safe_string.h: util/safe_string.h
 lib/util/xfile.h: util/xfile.h
 lib/tdr/tdr.h: tdr.h
 librpc/rpc/dcerpc.h: dcerpc.h
-lib/socket_wrapper/socket_wrapper.h: socket_wrapper.h
-lib/nss_wrapper/nss_wrapper.h: nss_wrapper.h
-libnet/libnet.h: libnet.h
-libnet/libnet_join.h: libnet/join.h
-libnet/libnet_lookup.h: libnet/lookup.h
-libnet/libnet_passwd.h: libnet/passwd.h
-libnet/libnet_rpc.h: libnet/rpc.h
-libnet/libnet_share.h: libnet/share.h
-libnet/libnet_time.h: libnet/time.h
-libnet/libnet_user.h: libnet/user.h
-libnet/libnet_site.h: libnet/site.h
-libnet/libnet_vampire.h: libnet/vampire.h
-libnet/userinfo.h: libnet/userinfo.h
-libnet/userman.h: libnet/userman.h
 lib/ldb/include/ldb.h: ldb.h
 lib/ldb/include/ldb_errors.h: ldb_errors.h
-ntvfs/ntvfs.h: ntvfs.h
-lib/tdb/include/tdb.h: tdb.h
 auth/gensec/gensec.h: gensec.h
-gtk/common/gtk-smb.h: gtk-smb.h
-gtk/common/select.h: gtk/select.h
 librpc/ndr/libndr.h: ndr.h
-lib/registry/registry.h: registry/registry.h
-lib/registry/hive.h: registry/hive.h
-lib/registry/patchfile.h: registry/patchfile.h
+lib/registry/registry.h: registry.h
 libcli/util/werror.h: core/werror.h
 libcli/util/doserr.h: core/doserr.h
 libcli/util/ntstatus.h: core/ntstatus.h
 libcli/cldap/cldap.h: cldap.h
-lib/samba3/samba3.h: samba3.h
 librpc/gen_ndr/dcerpc.h: gen_ndr/dcerpc.h
 librpc/gen_ndr/netlogon.h: gen_ndr/netlogon.h
 librpc/gen_ndr/ndr_misc.h: gen_ndr/ndr_misc.h
 librpc/gen_ndr/ndr_dcerpc.h: gen_ndr/ndr_dcerpc.h
-librpc/gen_ndr/mgmt.h: dcerpc/mgmt.h
-librpc/gen_ndr/ndr_mgmt.h: dcerpc/ndr_mgmt.h
-librpc/gen_ndr/ndr_mgmt_c.h: dcerpc/ndr_mgmt_c.h
-librpc/gen_ndr/epmapper.h: dcerpc/epmapper.h
-librpc/gen_ndr/ndr_epmapper.h: dcerpc/ndr_epmapper.h
-librpc/gen_ndr/ndr_epmapper_c.h: dcerpc/ndr_epmapper_c.h
-librpc/gen_ndr/ndr_atsvc.h: dcerpc/ndr_atsvc.h
-librpc/gen_ndr/atsvc.h: dcerpc/atsvc.h
-librpc/gen_ndr/ndr_atsvc_c.h: dcerpc/ndr_atsvc_c.h
+librpc/gen_ndr/mgmt.h: gen_ndr/mgmt.h
+librpc/gen_ndr/ndr_mgmt.h: gen_ndr/ndr_mgmt.h
+librpc/gen_ndr/ndr_mgmt_c.h: gen_ndr/ndr_mgmt_c.h
+librpc/gen_ndr/epmapper.h: gen_ndr/epmapper.h
+librpc/gen_ndr/ndr_epmapper.h: gen_ndr/ndr_epmapper.h
+librpc/gen_ndr/ndr_epmapper_c.h: gen_ndr/ndr_epmapper_c.h
+librpc/gen_ndr/ndr_atsvc.h: gen_ndr/ndr_atsvc.h
+librpc/gen_ndr/atsvc.h: gen_ndr/atsvc.h
+librpc/gen_ndr/ndr_atsvc_c.h: gen_ndr/ndr_atsvc_c.h
 librpc/gen_ndr/misc.h: gen_ndr/misc.h
 librpc/gen_ndr/lsa.h: gen_ndr/lsa.h
-librpc/gen_ndr/samr.h: dcerpc/samr.h
-librpc/gen_ndr/ndr_samr.h: dcerpc/ndr_samr.h
-librpc/gen_ndr/ndr_samr_c.h: dcerpc/ndr_samr_c.h
+librpc/gen_ndr/samr.h: gen_ndr/samr.h
+librpc/gen_ndr/ndr_samr.h: gen_ndr/ndr_samr.h
+librpc/gen_ndr/ndr_samr_c.h: gen_ndr/ndr_samr_c.h
 librpc/gen_ndr/security.h: gen_ndr/security.h
-librpc/ndr/libndr_proto.h: ndr/proto.h
-librpc/rpc/dcerpc_proto.h: dcerpc/proto.h
-lib/tdr/tdr_proto.h: tdr/proto.h
 auth/credentials/credentials.h: credentials.h
-auth/credentials/credentials_proto.h: credentials/proto.h
 auth/credentials/credentials_krb5.h: credentials/krb5.h
-auth/credentials/credentials_krb5_proto.h: credentials/krb5_proto.h
 rpc_server/dcerpc_server.h: dcerpc_server.h
 rpc_server/common/common.h: dcerpc_server/common.h
-rpc_server/common/proto.h: dcerpc_server/common_proto.h
-rpc_server/dcerpc_server_proto.h: dcerpc_server/proto.h
-auth/auth.h: auth.h
-auth/auth_proto.h: auth/proto.h
-auth/system_session_proto.h: auth/system_session.h
-auth/session_proto.h: auth/session_proto.h
-auth/session.h: auth/session.h
-auth/gensec/spnego.h: gensec/spnego.h
-auth/gensec/gensec_proto.h: gensec/proto.h
 libcli/auth/credentials.h: domain_credentials.h
 lib/charset/charset.h: charset.h
-lib/charset/charset_proto.h: charset/proto.h
 libcli/ldap/ldap.h: ldap.h
-libcli/ldap/ldap_proto.h: ldap_proto.h
 torture/torture.h: torture.h
-torture/proto.h: torture/proto.h
-torture/util.h: torture/util.h
 libcli/libcli.h: client.h
-libcli/libcli_proto.h: client/proto.h
 librpc/gen_ndr/nbt.h: gen_ndr/nbt.h
-librpc/gen_ndr/svcctl.h: dcerpc/svcctl.h
-librpc/gen_ndr/ndr_svcctl.h: dcerpc/ndr_svcctl.h
-librpc/gen_ndr/ndr_svcctl_c.h: dcerpc/ndr_svcctl_c.h
+librpc/gen_ndr/svcctl.h: gen_ndr/svcctl.h
+librpc/gen_ndr/ndr_svcctl.h: gen_ndr/ndr_svcctl.h
+librpc/gen_ndr/ndr_svcctl_c.h: gen_ndr/ndr_svcctl_c.h
 lib/cmdline/popt_common.h: samba/popt.h
 lib/util/dlinklist.h: dlinklist.h
 lib/util/data_blob.h: util/data_blob.h
 lib/util/time.h: util/time.h
 version.h: samba/version.h
-param/proto.h: param/proto.h
 param/param.h: param.h
-dsdb/samdb/samdb.h: samdb.h
-dsdb/samdb/samdb_proto.h: samdb/proto.h
-dsdb/schema/schema.h: samdb/schema.h
-dsdb/schema/proto.h: samdb/schema_proto.h
-dsdb/common/proto.h: samdb/common_proto.h
 lib/util/asn1.h: samba/asn1.h
-lib/util/asn1_proto.h: samba/asn1/proto.h
 libcli/util/error.h: core/error.h
-libcli/util/proto.h: core/error_proto.h
 lib/tdb_wrap.h: tdb_wrap.h
 lib/ldb_wrap.h: ldb_wrap.h
 torture/ui.h: torture/ui.h
-torture/torture.h: torture/torture.h
-librpc/gen_ndr/winbind.h: winbind.h
-param/share.h: param/share.h
-param/share_proto.h: param/share_proto.h
+librpc/gen_ndr/winbind.h: gen_ndr/winbind.h
+param/share.h: share.h
 lib/util/util_tdb.h: util_tdb.h
 lib/util/util_ldb.h: util_ldb.h
 lib/util/wrap_xattr.h: wrap_xattr.h
 lib/events/events.h: events/events.h
 lib/events/events_internal.h: events/events_internal.h
-libcli/ldap/ldap_ndr.h: ldb/ldap_ndr.h
-lib/gencache/gencache.h: gencache.h
+libcli/ldap/ldap_ndr.h: ldap_ndr.h
+lib/events/events.h: events.h
+lib/events/events_internal.h: events_internal.h
index d58d06f909b808857cca81b50fc7968f853b0c6a..33d2edb67bdb7e30c135249d27d720606f53420a 100644 (file)
@@ -466,7 +466,7 @@ HEIMDAL_ROKEN_OBJ_FILES = \
 # Start SUBSYSTEM HEIMDAL_GLUE
 [SUBSYSTEM::HEIMDAL_GLUE]
 CFLAGS = -Iheimdal_build -Iheimdal/lib/krb5 -Iheimdal/lib/asn1 -Iheimdal/lib/com_err 
-PUBLIC_DEPENDENCIES = LIBNETIF LIBSAMBA-CONFIG
+PUBLIC_DEPENDENCIES = LIBNETIF LIBSAMBA-HOSTCONFIG
 # End SUBSYSTEM HEIMDAL_GLUE
 #######################
 
index 2535cf3e6853d74dbaf695ef36d17d772aea1507..47eb85cab958c244c658a6fb00a5cbc2bfe9f01e 100644 (file)
@@ -10,7 +10,7 @@ PRIVATE_DEPENDENCIES = CREDENTIALS \
                LIBCLI_LDAP SAMDB \
                process_model \
                gensec \
-               LIBSAMBA-CONFIG
+               LIBSAMBA-HOSTCONFIG
 # End SUBSYSTEM SMB
 #######################
 
index 346aacaa99c03d6c9c5b7ffbe046113e5ad3d78e..9b43d7bd742ca757cc76089d1ab5c214b2bb60fe 100644 (file)
@@ -216,9 +216,6 @@ static NTSTATUS ldapsrv_SearchRequest(struct ldapsrv_call *call)
        lreq = talloc(local_ctx, struct ldb_request);
        NT_STATUS_HAVE_NO_MEMORY(lreq);
 
-       res = talloc_zero(local_ctx, struct ldb_result);
-       NT_STATUS_HAVE_NO_MEMORY(res);
-       
        lreq->operation = LDB_SEARCH;
        lreq->op.search.base = basedn;
        lreq->op.search.scope = scope;
@@ -242,6 +239,9 @@ static NTSTATUS ldapsrv_SearchRequest(struct ldapsrv_call *call)
                }
        }
 
+       res = talloc_zero(lreq, struct ldb_result);
+       NT_STATUS_HAVE_NO_MEMORY(res);
+       
        lreq->context = res;
        lreq->callback = ldb_search_default_callback;
 
@@ -261,6 +261,11 @@ static NTSTATUS ldapsrv_SearchRequest(struct ldapsrv_call *call)
                        ent_r = ldapsrv_init_reply(call, LDAP_TAG_SearchResultEntry);
                        NT_STATUS_HAVE_NO_MEMORY(ent_r);
 
+                       /* Better to have the whole message kept here,
+                        * than to find someone further up didn't put
+                        * a value in the right spot in the talloc tree */
+                       talloc_steal(ent_r, res->msgs[i]);
+                       
                        ent = &ent_r->msg->r.SearchResultEntry;
                        ent->dn = ldb_dn_alloc_linearized(ent_r, res->msgs[i]->dn);
                        ent->num_attributes = 0;
index 5b2519c035a7845d9d152c3bccdea1da867562c4..11cb63e07bf2f3d753b11c9cfb576f345cb5f349 100644 (file)
@@ -37,6 +37,8 @@
 #include "lib/messaging/irpc.h"
 #include "lib/ldb/include/ldb.h"
 #include "lib/ldb/include/ldb_errors.h"
+#include "libcli/ldap/ldap.h"
+#include "libcli/ldap/ldap_proto.h"
 #include "system/network.h"
 #include "lib/socket/netif.h"
 #include "dsdb/samdb/samdb.h"
@@ -155,8 +157,10 @@ static NTSTATUS ldapsrv_decode(void *private, DATA_BLOB blob)
        }
 
        data_blob_free(&blob);
-       ldapsrv_process_message(conn, msg);
+       talloc_steal(conn, msg);
        asn1_free(asn1);
+
+       ldapsrv_process_message(conn, msg);
        return NT_STATUS_OK;
 }
 
index f6a8731a21529e03de73aece3567b900a13520f8..f9c0ee06658536bdc3230b06d482b62ac215ab70 100644 (file)
@@ -27,7 +27,7 @@ PRIVATE_DEPENDENCIES = TDB_WRAP
 
 GENCACHE_OBJ_FILES = gencache/gencache.o
 
-PUBLIC_HEADERS += lib/gencache/gencache.h
+PUBLIC_HEADERS += lib/gencache/gencache.h
 
 [SUBSYSTEM::LDB_WRAP]
 PUBLIC_DEPENDENCIES = LIBLDB
index 0465be689eb32984ab5ff43e44a2f6647357cdd4..3e384304cf55811b3583797bbf934de2f1896699 100644 (file)
@@ -83,7 +83,7 @@ static int close_iconv(struct smb_iconv_convenience *data)
        return 0;
 }
 
-struct smb_iconv_convenience *smb_iconv_convenience_init(TALLOC_CTX *mem_ctx,
+_PUBLIC_ struct smb_iconv_convenience *smb_iconv_convenience_init(TALLOC_CTX *mem_ctx,
                                                         const char *dos_charset,
                                                         const char *unix_charset,
                                                         bool native_iconv)
index 1d42a0ad91cd59a93623df1566560d0f8d626da3..baa7df532b6d78fa1c5db0aa53138f13ba5edf96 100644 (file)
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+/* This is a public header file that is installed as part of Samba. 
+ * If you remove any functions or change their signature, update 
+ * the so version number. */
+
 #ifndef __CHARSET_H__
 #define __CHARSET_H__
 
@@ -74,11 +78,71 @@ struct loadparm_context;
 struct smb_iconv_convenience;
 extern struct smb_iconv_convenience *global_smb_iconv_convenience;
 
-#include "lib/charset/charset_proto.h"
-
 /* replace some string functions with multi-byte
    versions */
 #define strlower(s) strlower_m(s)
 #define strupper(s) strupper_m(s)
 
+char *strchr_m(const char *s, char c);
+size_t strlen_m_term(const char *s);
+size_t strlen_m(const char *s);
+char *alpha_strcpy(char *dest, const char *src, const char *other_safe_chars, size_t maxlength);
+void string_replace_w(char *s, char oldc, char newc);
+bool strcsequal_w(const char *s1,const char *s2);
+bool strequal_w(const char *s1, const char *s2);
+int strncasecmp_m(const char *s1, const char *s2, size_t n);
+bool next_token(const char **ptr,char *buff, const char *sep, size_t bufsize);
+int strcasecmp_m(const char *s1, const char *s2);
+size_t count_chars_w(const char *s, char c);
+void strupper_m(char *s);
+void strlower_m(char *s);
+char *strupper_talloc(TALLOC_CTX *ctx, const char *src);
+char *strlower_talloc(TALLOC_CTX *ctx, const char *src);
+bool strhasupper(const char *string);
+bool strhaslower(const char *string);
+char *strrchr_m(const char *s, char c);
+char *strchr_m(const char *s, char c);
+
+/* codepoints */
+codepoint_t next_codepoint(struct smb_iconv_convenience *ic, 
+                           const char *str, size_t *size);
+ssize_t push_codepoint(struct smb_iconv_convenience *ic, 
+                               char *str, codepoint_t c);
+codepoint_t toupper_w(codepoint_t val);
+codepoint_t tolower_w(codepoint_t val);
+int codepoint_cmpi(codepoint_t c1, codepoint_t c2);
+ssize_t push_string(struct smb_iconv_convenience *ic, void *dest, const char *src, size_t dest_len, int flags);
+ssize_t pull_string(struct smb_iconv_convenience *ic,
+                   char *dest, const void *src, size_t dest_len, size_t src_len, int flags);
+ssize_t convert_string(struct smb_iconv_convenience *ic,
+                               charset_t from, charset_t to,
+                               void const *src, size_t srclen, 
+                               void *dest, size_t destlen);
+ssize_t convert_string_talloc_descriptor(TALLOC_CTX *ctx, smb_iconv_t descriptor, void const *src, size_t srclen, void **dest);
+ssize_t convert_string_talloc(TALLOC_CTX *ctx, 
+                                      struct smb_iconv_convenience *ic, 
+                                      charset_t from, charset_t to, 
+                                      void const *src, size_t srclen, 
+                                      void **dest);
+ssize_t push_ascii_talloc(TALLOC_CTX *ctx, struct smb_iconv_convenience *ic, char **dest, const char *src);
+ssize_t push_ucs2_talloc(TALLOC_CTX *ctx, struct smb_iconv_convenience *ic, void **dest, const char *src);
+ssize_t push_utf8_talloc(TALLOC_CTX *ctx, struct smb_iconv_convenience *ic, char **dest, const char *src);
+ssize_t pull_ascii_talloc(TALLOC_CTX *ctx, struct smb_iconv_convenience *ic, char **dest, const char *src);
+ssize_t pull_ucs2_talloc(TALLOC_CTX *ctx, struct smb_iconv_convenience *ic, char **dest, const void *src);
+ssize_t pull_utf8_talloc(TALLOC_CTX *ctx, struct smb_iconv_convenience *ic, char **dest, const char *src);
+
+/* iconv */
+smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode);
+int smb_iconv_close(smb_iconv_t cd);
+size_t smb_iconv(smb_iconv_t cd, 
+                const char **inbuf, size_t *inbytesleft,
+                char **outbuf, size_t *outbytesleft);
+smb_iconv_t smb_iconv_open_ex(TALLOC_CTX *mem_ctx, const char *tocode, 
+                             const char *fromcode, bool native_iconv);
+
+/* iconv convenience */
+struct smb_iconv_convenience *smb_iconv_convenience_init(TALLOC_CTX *mem_ctx,
+                                                        const char *dos_charset,
+                                                        const char *unix_charset,
+                                                        bool native_iconv);
 #endif /* __CHARSET_H__ */
index db212a83c42bcac1e1edd6bf9924ac083019f45d..4f4bc8fd2da70c9f9d5bb75b2ee0f946516c996a 100644 (file)
@@ -113,7 +113,7 @@ static size_t sys_iconv(void *cd,
  * It only knows about a very small number of character sets - just
  * enough that Samba works on systems that don't have iconv.
  **/
-size_t smb_iconv(smb_iconv_t cd, 
+_PUBLIC_ size_t smb_iconv(smb_iconv_t cd, 
                 const char **inbuf, size_t *inbytesleft,
                 char **outbuf, size_t *outbytesleft)
 {
@@ -156,7 +156,7 @@ static bool is_utf16(const char *name)
 
 
 
-smb_iconv_t smb_iconv_open_ex(TALLOC_CTX *mem_ctx, const char *tocode, 
+_PUBLIC_ smb_iconv_t smb_iconv_open_ex(TALLOC_CTX *mem_ctx, const char *tocode, 
                              const char *fromcode, bool native_iconv)
 {
        smb_iconv_t ret;
@@ -263,7 +263,7 @@ failed:
 /*
   simple iconv_open() wrapper
  */
-smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode)
+_PUBLIC_ smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode)
 {
        return smb_iconv_open_ex(NULL, tocode, fromcode, true);
 }
@@ -271,7 +271,7 @@ smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode)
 /*
   simple iconv_close() wrapper
 */
-int smb_iconv_close(smb_iconv_t cd)
+_PUBLIC_ int smb_iconv_close(smb_iconv_t cd)
 {
 #ifdef HAVE_NATIVE_ICONV
        if (cd->cd_direct) iconv_close((iconv_t)cd->cd_direct);
index 9b87f498006d2c4ef442e3f144c7c54e3c878517..c496c5d905085986c3b57dd3555f2a4b93aeb3a1 100644 (file)
@@ -67,7 +67,7 @@ static void load_case_tables(void)
 /**
  Convert a codepoint_t to upper case.
 **/
-codepoint_t toupper_w(codepoint_t val)
+_PUBLIC_ codepoint_t toupper_w(codepoint_t val)
 {
        if (val < 128) {
                return toupper(val);
@@ -87,7 +87,7 @@ codepoint_t toupper_w(codepoint_t val)
 /**
  Convert a codepoint_t to lower case.
 **/
-codepoint_t tolower_w(codepoint_t val)
+_PUBLIC_ codepoint_t tolower_w(codepoint_t val)
 {
        if (val < 128) {
                return tolower(val);
@@ -107,7 +107,7 @@ codepoint_t tolower_w(codepoint_t val)
 /**
   compare two codepoints case insensitively
 */
-int codepoint_cmpi(codepoint_t c1, codepoint_t c2)
+_PUBLIC_ int codepoint_cmpi(codepoint_t c1, codepoint_t c2)
 {
        if (c1 == c2 ||
            toupper_w(c1) == toupper_w(c2)) {
index e5a1316c47064318b6a607c625a07221a8e6f3da..da92036342c5903067e6ff43406e685135222f44 100644 (file)
@@ -33,8 +33,10 @@ EVENTS_STANDARD_OBJ_FILES = lib/events/events_standard.o
 
 ##############################
 # Start SUBSYSTEM LIBEVENTS
-[SUBSYSTEM::LIBEVENTS]
+[LIBRARY::LIBEVENTS]
 PUBLIC_DEPENDENCIES = LIBTALLOC LIBSAMBA-UTIL
+SO_VERSION = 0
+VERSION = 0.0.1
 # End SUBSYSTEM LIBEVENTS
 ##############################
 
index f75bb8124d95fd0e81f745665eb3cf9fc703191c..ead5796b7b6ca9839606f4a857ea24d4da7f3c73 100755 (executable)
@@ -25,7 +25,6 @@ parser.add_option_group(options.VersionOptions(parser))
 # use command line creds if available
 credopts = options.CredentialsOptions(parser)
 parser.add_option_group(credopts)
-creds = credopts.get_credentials()
 opts, args = parser.parse_args()
 
 if len(args) < 1:
@@ -35,6 +34,7 @@ if len(args) < 1:
 host = args[0]
 
 lp = sambaopts.get_loadparm()
+creds = credopts.get_credentials(lp)
 
 class BasicTests(unittest.TestCase):
     def delete_force(self, ldb, dn):
index d596c6721e5a80923583a8b26c764caad2b4af97..f44c0af3ec40f134d6980be0a97972304f3bc8e5 100644 (file)
@@ -19,6 +19,9 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#ifndef IRPC_H
+#define IRPC_H
+
 #include "librpc/gen_ndr/irpc.h"
 
 /*
@@ -123,4 +126,5 @@ struct server_id *irpc_servers_byname(struct messaging_context *msg_ctx, TALLOC_
 void irpc_remove_name(struct messaging_context *msg_ctx, const char *name);
 NTSTATUS irpc_send_reply(struct irpc_message *m, NTSTATUS status);
 
+#endif
 
index 90889fe5fa38a68f3a390a494661acca98d05f1f..c541ced6ffebb663df1d37d5035112d10a9a3812 100644 (file)
@@ -5,7 +5,7 @@
    
    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 2 of the License, or
+   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,
index 70fb289189a43f53165df7dffa18df81c9a35279..9a8e60bfbe73bf670b3c5612aa040525fd92dc29 100644 (file)
@@ -1,6 +1,6 @@
 [SUBSYSTEM::LIBPOLICY]
 CFLAGS = -Iheimdal/lib/roken
-PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL LIBSAMBA-CONFIG LIBTALLOC CHARSET 
+PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL LIBSAMBA-HOSTCONFIG LIBTALLOC CHARSET 
 
 LIBPOLICY_OBJ_FILES = lib/policy/lex.o lib/policy/parse_adm.o 
 
@@ -9,6 +9,6 @@ lib/policy/lex.l: lib/policy/parse_adm.h
 lib/policy/parse_adm.h: lib/policy/parse_adm.c
 
 [BINARY::dumpadm]
-PRIVATE_DEPENDENCIES = LIBPOLICY LIBPOPT LIBSAMBA-CONFIG LIBTALLOC LIBSAMBA-UTIL CHARSET
+PRIVATE_DEPENDENCIES = LIBPOLICY LIBPOPT LIBSAMBA-HOSTCONFIG LIBTALLOC LIBSAMBA-UTIL CHARSET
 
 dumpadm_OBJ_FILES = lib/policy/dumpadm.o
index 1553ce62f610a1c2de7423b36b7431eb95293c52..2ed5abf111dcdda7211ea3a9b3f3f8c6b138c9c7 100644 (file)
@@ -5,7 +5,7 @@
    
    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 2 of the License, or
+   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,
index c2899aa80834c7333a3117696a20cf1fc6c57373..6d524445c9bc30620327e85ddef8db696a79f19f 100644 (file)
@@ -572,7 +572,7 @@ char *yytext;
    
    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 2 of the License, or
+   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,
index 199cd228c0ebf0c3a20b845d40304b67945f53e7..dc1f0aa34edd97f2df8fd999e9b0096451b0bbfc 100644 (file)
@@ -5,7 +5,7 @@
    
    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 2 of the License, or
+   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,
index 1dc21cf1d31506537bb8acddb506c9b4e57fa842..23c5e7730e8e067be7babba7a27e2a0f640c400b 100644 (file)
@@ -5,7 +5,7 @@
    
    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 2 of the License, or
+   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,
index 16e9c62c57477da0697fb95671b25bedab39eed3..ce19d8512eb0b4ccfa8f64c80f7147686f8c946a 100644 (file)
@@ -33,7 +33,7 @@ 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 += $(addprefix lib/registry/, registry.h hive.h patchfile.h)
+PUBLIC_HEADERS += lib/registry/registry.h
 
 [SUBSYSTEM::registry_common]
 PUBLIC_DEPENDENCIES = registry
@@ -46,7 +46,7 @@ registry_common_OBJ_FILES = lib/registry/tools/common.o
 [BINARY::regdiff]
 INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG registry LIBPOPT POPT_SAMBA POPT_CREDENTIALS
+               LIBSAMBA-HOSTCONFIG registry LIBPOPT POPT_SAMBA POPT_CREDENTIALS
 # End BINARY regdiff
 ################################################
 
@@ -59,7 +59,7 @@ MANPAGES += lib/registry/man/regdiff.1
 [BINARY::regpatch]
 INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG registry LIBPOPT POPT_SAMBA POPT_CREDENTIALS \
+               LIBSAMBA-HOSTCONFIG registry LIBPOPT POPT_SAMBA POPT_CREDENTIALS \
                registry_common
 # End BINARY regpatch
 ################################################
@@ -73,7 +73,7 @@ MANPAGES += lib/registry/man/regpatch.1
 [BINARY::regshell]
 INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG LIBPOPT registry POPT_SAMBA POPT_CREDENTIALS \
+               LIBSAMBA-HOSTCONFIG LIBPOPT registry POPT_SAMBA POPT_CREDENTIALS \
                SMBREADLINE registry_common
 # End BINARY regshell
 ################################################
@@ -87,7 +87,7 @@ MANPAGES += lib/registry/man/regshell.1
 [BINARY::regtree]
 INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG LIBPOPT registry POPT_SAMBA POPT_CREDENTIALS \
+               LIBSAMBA-HOSTCONFIG LIBPOPT registry POPT_SAMBA POPT_CREDENTIALS \
                registry_common
 # End BINARY regtree
 ################################################
index dc3717e88614e80e312df946033bf00a2a33d866..449ee0f6eefa6277de797f10de933949f02891c8 100644 (file)
@@ -18,7 +18,7 @@
 */
 
 #include "includes.h"
-#include "hive.h"
+#include "registry.h"
 #include "system/dir.h"
 #include "system/filesys.h"
 
index ad6a6421abb45e92c27f65f5c1514761f9704e3c..2a9b1a59ceff6d91cfaf679b16d7c94f7a03abc0 100644 (file)
@@ -6,7 +6,7 @@
 
    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 2 of the License, or
+   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,
@@ -20,7 +20,7 @@
 */
 
 #include "includes.h"
-#include "hive.h"
+#include "registry.h"
 #include "system/filesys.h"
 #include "param/param.h"
 
diff --git a/source4/lib/registry/hive.h b/source4/lib/registry/hive.h
deleted file mode 100644 (file)
index 87f3356..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   Registry hive interface
-   Copyright (C) Jelmer Vernooij                                         2003-2007.
-
-   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 2 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, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#ifndef __REGISTRY_HIVE_H__
-#define __REGISTRY_HIVE_H__
-
-#include <talloc.h>
-#include "libcli/util/werror.h"
-#include "librpc/gen_ndr/security.h"
-#include "libcli/util/ntstatus.h"
-
-/**
- * This file contains the hive API. This API is generally used for
- * reading a specific file that contains just one hive.
- *
- * Good examples are .DAT (NTUSER.DAT) files.
- *
- * This API does not have any notification support (that
- * should be provided by the registry implementation), nor
- * does it understand what predefined keys are.
- */
-
-struct hive_key {
-       const struct hive_operations *ops;
-};
-
-struct hive_operations {
-       const char *name;
-
-       /**
-        * Open a specific subkey
-        */
-       WERROR (*enum_key) (TALLOC_CTX *mem_ctx,
-                           const struct hive_key *key, uint32_t idx,
-                           const char **name,
-                           const char **classname,
-                           NTTIME *last_mod_time);
-
-       /**
-        * Open a subkey by name
-        */
-       WERROR (*get_key_by_name) (TALLOC_CTX *mem_ctx,
-                                  const struct hive_key *key, const char *name,
-                                  struct hive_key **subkey);
-
-       /**
-        * Add a new key.
-        */
-       WERROR (*add_key) (TALLOC_CTX *ctx,
-                          const struct hive_key *parent_key, const char *name,
-                          const char *classname,
-                          struct security_descriptor *desc,
-                          struct hive_key **key);
-       /**
-        * Remove an existing key.
-        */
-       WERROR (*del_key) (const struct hive_key *key, const char *name);
-
-       /**
-        * Force write of a key to disk.
-        */
-       WERROR (*flush_key) (struct hive_key *key);
-
-       /**
-        * Retrieve a registry value with a specific index.
-        */
-       WERROR (*enum_value) (TALLOC_CTX *mem_ctx,
-                             struct hive_key *key, int idx,
-                             const char **name, uint32_t *type,
-                             DATA_BLOB *data);
-
-       /**
-        * Retrieve a registry value with the specified name
-        */
-       WERROR (*get_value_by_name) (TALLOC_CTX *mem_ctx,
-                                    struct hive_key *key, const char *name,
-                                    uint32_t *type, DATA_BLOB *data);
-
-       /**
-        * Set a value on the specified registry key.
-        */
-       WERROR (*set_value) (struct hive_key *key, const char *name,
-                            uint32_t type, const DATA_BLOB data);
-
-       /**
-        * Remove a value.
-        */
-       WERROR (*delete_value) (struct hive_key *key, const char *name);
-
-       /* Security Descriptors */
-
-       /**
-        * Change the security descriptor on a registry key.
-        *
-        * This should return WERR_NOT_SUPPORTED if the underlying
-        * format does not have a mechanism for storing
-        * security descriptors.
-        */
-       WERROR (*set_sec_desc) (struct hive_key *key,
-                               const struct security_descriptor *desc);
-
-       /**
-        * Retrieve the security descriptor on a registry key.
-        *
-        * This should return WERR_NOT_SUPPORTED if the underlying
-        * format does not have a mechanism for storing
-        * security descriptors.
-        */
-       WERROR (*get_sec_desc) (TALLOC_CTX *ctx,
-                               const struct hive_key *key,
-                               struct security_descriptor **desc);
-
-       /**
-        * Retrieve general information about a key.
-        */
-       WERROR (*get_key_info) (TALLOC_CTX *mem_ctx,
-                               const struct hive_key *key,
-                               const char **classname,
-                               uint32_t *num_subkeys,
-                               uint32_t *num_values,
-                               NTTIME *last_change_time,
-                               uint32_t *max_subkeynamelen,
-                               uint32_t *max_valnamelen,
-                               uint32_t *max_valbufsize);
-};
-
-struct cli_credentials;
-struct auth_session_info;
-
-WERROR reg_open_hive(TALLOC_CTX *parent_ctx, const char *location,
-                    struct auth_session_info *session_info,
-                    struct cli_credentials *credentials,
-                    struct loadparm_context *lp_ctx,
-                    struct hive_key **root);
-WERROR hive_key_get_info(TALLOC_CTX *mem_ctx, const struct hive_key *key,
-                        const char **classname, uint32_t *num_subkeys,
-                        uint32_t *num_values, NTTIME *last_change_time,
-                        uint32_t *max_subkeynamelen,
-                        uint32_t *max_valnamelen, uint32_t *max_valbufsize);
-WERROR hive_key_add_name(TALLOC_CTX *ctx, const struct hive_key *parent_key,
-                        const char *name, const char *classname,
-                        struct security_descriptor *desc,
-                        struct hive_key **key);
-WERROR hive_key_del(const struct hive_key *key, const char *name);
-WERROR hive_get_key_by_name(TALLOC_CTX *mem_ctx,
-                           const struct hive_key *key, const char *name,
-                           struct hive_key **subkey);
-WERROR hive_enum_key(TALLOC_CTX *mem_ctx,
-                    const struct hive_key *key, uint32_t idx,
-                    const char **name,
-                    const char **classname,
-                    NTTIME *last_mod_time);
-
-WERROR hive_key_set_value(struct hive_key *key, const char *name,
-                     uint32_t type, const DATA_BLOB data);
-
-WERROR hive_get_value(TALLOC_CTX *mem_ctx,
-                     struct hive_key *key, const char *name,
-                     uint32_t *type, DATA_BLOB *data);
-WERROR hive_get_value_by_index(TALLOC_CTX *mem_ctx,
-                              struct hive_key *key, uint32_t idx,
-                              const char **name,
-                              uint32_t *type, DATA_BLOB *data);
-
-WERROR hive_key_del_value(struct hive_key *key, const char *name);
-
-WERROR hive_key_flush(struct hive_key *key);
-
-
-/* Individual backends */
-WERROR reg_open_directory(TALLOC_CTX *parent_ctx,
-                         const char *location, struct hive_key **key);
-WERROR reg_open_regf_file(TALLOC_CTX *parent_ctx,
-                         const char *location, struct smb_iconv_convenience *iconv_convenience,
-                         struct hive_key **key);
-WERROR reg_open_ldb_file(TALLOC_CTX *parent_ctx, const char *location,
-                        struct auth_session_info *session_info,
-                        struct cli_credentials *credentials,
-                        struct loadparm_context *lp_ctx,
-                        struct hive_key **k);
-
-
-WERROR reg_create_directory(TALLOC_CTX *parent_ctx,
-                           const char *location, struct hive_key **key);
-WERROR reg_create_regf_file(TALLOC_CTX *parent_ctx,
-                           struct smb_iconv_convenience *iconv_convenience,
-                           const char *location,
-                           int major_version,
-                           struct hive_key **key);
-
-
-#endif /* __REGISTRY_HIVE_H__ */
index b2cdec9cdf1c1b144da38a898c3fbbefe082f5a9..af235e7b04afad4eeb597188974f0743b97ce259 100644 (file)
@@ -5,7 +5,7 @@
 
    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 2 of the License, or
+   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,
index 687fd4b91b2c4e9da621616f77845bdb1135b323..15e3a158f2b8d9a0b8683316317de4779668fb04 100644 (file)
@@ -20,7 +20,6 @@
 */
 
 #include "includes.h"
-#include "lib/registry/patchfile.h"
 #include "lib/registry/registry.h"
 #include "system/filesys.h"
 #include "param/param.h"
diff --git a/source4/lib/registry/patchfile.h b/source4/lib/registry/patchfile.h
deleted file mode 100644 (file)
index 9289390..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   Patchfile interface
-   Copyright (C) Jelmer Vernooij 2006
-   Copyright (C) Wilco Baan Hofman 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 2 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, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#ifndef _PATCHFILE_H
-#define _PATCHFILE_H
-
-#include "lib/registry/registry.h"
-
-struct reg_diff_callbacks {
-       WERROR (*add_key) (void *callback_data, const char *key_name);
-       WERROR (*set_value) (void *callback_data, const char *key_name,
-                            const char *value_name, uint32_t value_type,
-                            DATA_BLOB value);
-       WERROR (*del_value) (void *callback_data, const char *key_name,
-                            const char *value_name);
-       WERROR (*del_key) (void *callback_data, const char *key_name);
-       WERROR (*del_all_values) (void *callback_data, const char *key_name);
-       WERROR (*done) (void *callback_data);
-};
-
-WERROR reg_diff_apply(struct registry_context *ctx, const char *filename);
-
-WERROR reg_generate_diff(struct registry_context *ctx1,
-                        struct registry_context *ctx2,
-                        const struct reg_diff_callbacks *callbacks,
-                        void *callback_data);
-WERROR reg_dotreg_diff_save(TALLOC_CTX *ctx, const char *filename,
-                           struct smb_iconv_convenience *iconv_convenience,
-                           struct reg_diff_callbacks **callbacks,
-                           void **callback_data);
-WERROR reg_generate_diff_key(struct registry_key *oldkey,
-                            struct registry_key *newkey,
-                            const char *path,
-                            const struct reg_diff_callbacks *callbacks,
-                            void *callback_data);
-
-#endif /* _PATCHFILE_H */
index 6de642ecb810a0667cd012786e50be57bbdf0286..59f40447135a9b332e1fdc1cb12fac7767a30624 100644 (file)
@@ -7,7 +7,7 @@
 
    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 2 of the License, or
+   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,
@@ -23,7 +23,6 @@
 /* FIXME Newer .REG files, created by Windows XP and above use unicode UTF-16 */
 
 #include "includes.h"
-#include "lib/registry/patchfile.h"
 #include "lib/registry/registry.h"
 #include "system/filesys.h"
 #include "param/param.h"
index 0d39e67450f82baba5b003f9ed0fba50287fa891..0fa367bfcb7ee8a915b9316ff8877b351dac3e0c 100644 (file)
@@ -6,7 +6,7 @@
 
    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 2 of the License, or
+   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,
@@ -21,7 +21,6 @@
 
 #include "includes.h"
 #include "lib/registry/registry.h"
-#include "lib/registry/patchfile.h"
 #include "system/filesys.h"
 #include "param/param.h"
 
index a192f3be4ddc14c656435552d22ce3b0ed7d356a..46ccca922b8903d7892c908326ee4eff21a31319 100644 (file)
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "includes.h"
-#include "lib/registry/hive.h"
 #include "system/filesys.h"
 #include "system/time.h"
 #include "lib/registry/tdr_regf.h"
 #include "librpc/gen_ndr/ndr_security.h"
 #include "librpc/gen_ndr/winreg.h"
 #include "param/param.h"
+#include "lib/registry/registry.h"
 
 static struct hive_operations reg_backend_regf;
 
index 5e0b971a1d717db02640643f8091d995c3727f0b..a86294bf4656c1ab996a6c9d027d093c53560089 100644 (file)
 #define _REGISTRY_H
 
 struct registry_context;
+struct loadparm_context;
+struct smb_iconv_convenience;
 
 #include <talloc.h>
+#include "libcli/util/werror.h"
 #include "librpc/gen_ndr/security.h"
-#include "lib/registry/hive.h"
 #include "libcli/util/ntstatus.h"
+#include "util/time.h"
+#include "util/data_blob.h"
+
+/**
+ * The hive API. This API is generally used for
+ * reading a specific file that contains just one hive.
+ *
+ * Good examples are .DAT (NTUSER.DAT) files.
+ *
+ * This API does not have any notification support (that
+ * should be provided by the registry implementation), nor
+ * does it understand what predefined keys are.
+ */
+
+struct hive_key {
+       const struct hive_operations *ops;
+};
+
+struct hive_operations {
+       const char *name;
+
+       /**
+        * Open a specific subkey
+        */
+       WERROR (*enum_key) (TALLOC_CTX *mem_ctx,
+                           const struct hive_key *key, uint32_t idx,
+                           const char **name,
+                           const char **classname,
+                           NTTIME *last_mod_time);
+
+       /**
+        * Open a subkey by name
+        */
+       WERROR (*get_key_by_name) (TALLOC_CTX *mem_ctx,
+                                  const struct hive_key *key, const char *name,
+                                  struct hive_key **subkey);
+
+       /**
+        * Add a new key.
+        */
+       WERROR (*add_key) (TALLOC_CTX *ctx,
+                          const struct hive_key *parent_key, const char *name,
+                          const char *classname,
+                          struct security_descriptor *desc,
+                          struct hive_key **key);
+       /**
+        * Remove an existing key.
+        */
+       WERROR (*del_key) (const struct hive_key *key, const char *name);
+
+       /**
+        * Force write of a key to disk.
+        */
+       WERROR (*flush_key) (struct hive_key *key);
+
+       /**
+        * Retrieve a registry value with a specific index.
+        */
+       WERROR (*enum_value) (TALLOC_CTX *mem_ctx,
+                             struct hive_key *key, int idx,
+                             const char **name, uint32_t *type,
+                             DATA_BLOB *data);
+
+       /**
+        * Retrieve a registry value with the specified name
+        */
+       WERROR (*get_value_by_name) (TALLOC_CTX *mem_ctx,
+                                    struct hive_key *key, const char *name,
+                                    uint32_t *type, DATA_BLOB *data);
+
+       /**
+        * Set a value on the specified registry key.
+        */
+       WERROR (*set_value) (struct hive_key *key, const char *name,
+                            uint32_t type, const DATA_BLOB data);
+
+       /**
+        * Remove a value.
+        */
+       WERROR (*delete_value) (struct hive_key *key, const char *name);
+
+       /* Security Descriptors */
+
+       /**
+        * Change the security descriptor on a registry key.
+        *
+        * This should return WERR_NOT_SUPPORTED if the underlying
+        * format does not have a mechanism for storing
+        * security descriptors.
+        */
+       WERROR (*set_sec_desc) (struct hive_key *key,
+                               const struct security_descriptor *desc);
+
+       /**
+        * Retrieve the security descriptor on a registry key.
+        *
+        * This should return WERR_NOT_SUPPORTED if the underlying
+        * format does not have a mechanism for storing
+        * security descriptors.
+        */
+       WERROR (*get_sec_desc) (TALLOC_CTX *ctx,
+                               const struct hive_key *key,
+                               struct security_descriptor **desc);
+
+       /**
+        * Retrieve general information about a key.
+        */
+       WERROR (*get_key_info) (TALLOC_CTX *mem_ctx,
+                               const struct hive_key *key,
+                               const char **classname,
+                               uint32_t *num_subkeys,
+                               uint32_t *num_values,
+                               NTTIME *last_change_time,
+                               uint32_t *max_subkeynamelen,
+                               uint32_t *max_valnamelen,
+                               uint32_t *max_valbufsize);
+};
+
+struct cli_credentials;
+struct auth_session_info;
+
+WERROR reg_open_hive(TALLOC_CTX *parent_ctx, const char *location,
+                    struct auth_session_info *session_info,
+                    struct cli_credentials *credentials,
+                    struct loadparm_context *lp_ctx,
+                    struct hive_key **root);
+WERROR hive_key_get_info(TALLOC_CTX *mem_ctx, const struct hive_key *key,
+                        const char **classname, uint32_t *num_subkeys,
+                        uint32_t *num_values, NTTIME *last_change_time,
+                        uint32_t *max_subkeynamelen,
+                        uint32_t *max_valnamelen, uint32_t *max_valbufsize);
+WERROR hive_key_add_name(TALLOC_CTX *ctx, const struct hive_key *parent_key,
+                        const char *name, const char *classname,
+                        struct security_descriptor *desc,
+                        struct hive_key **key);
+WERROR hive_key_del(const struct hive_key *key, const char *name);
+WERROR hive_get_key_by_name(TALLOC_CTX *mem_ctx,
+                           const struct hive_key *key, const char *name,
+                           struct hive_key **subkey);
+WERROR hive_enum_key(TALLOC_CTX *mem_ctx,
+                    const struct hive_key *key, uint32_t idx,
+                    const char **name,
+                    const char **classname,
+                    NTTIME *last_mod_time);
+
+WERROR hive_key_set_value(struct hive_key *key, const char *name,
+                     uint32_t type, const DATA_BLOB data);
+
+WERROR hive_get_value(TALLOC_CTX *mem_ctx,
+                     struct hive_key *key, const char *name,
+                     uint32_t *type, DATA_BLOB *data);
+WERROR hive_get_value_by_index(TALLOC_CTX *mem_ctx,
+                              struct hive_key *key, uint32_t idx,
+                              const char **name,
+                              uint32_t *type, DATA_BLOB *data);
+
+WERROR hive_key_del_value(struct hive_key *key, const char *name);
+
+WERROR hive_key_flush(struct hive_key *key);
+
+
+/* Individual backends */
+WERROR reg_open_directory(TALLOC_CTX *parent_ctx,
+                         const char *location, struct hive_key **key);
+WERROR reg_open_regf_file(TALLOC_CTX *parent_ctx,
+                         const char *location, struct smb_iconv_convenience *iconv_convenience,
+                         struct hive_key **key);
+WERROR reg_open_ldb_file(TALLOC_CTX *parent_ctx, const char *location,
+                        struct auth_session_info *session_info,
+                        struct cli_credentials *credentials,
+                        struct loadparm_context *lp_ctx,
+                        struct hive_key **k);
+
+
+WERROR reg_create_directory(TALLOC_CTX *parent_ctx,
+                           const char *location, struct hive_key **key);
+WERROR reg_create_regf_file(TALLOC_CTX *parent_ctx,
+                           struct smb_iconv_convenience *iconv_convenience,
+                           const char *location,
+                           int major_version,
+                           struct hive_key **key);
+
+
 
 /* Handles for the predefined keys */
 #define HKEY_CLASSES_ROOT              0x80000000
@@ -66,8 +251,6 @@ struct registry_key
        struct registry_context *context;
 };
 
-#include "lib/registry/patchfile.h"
-
 struct registry_value
 {
        const char *name;
@@ -285,5 +468,34 @@ WERROR reg_get_security(TALLOC_CTX *mem_ctx,
 WERROR reg_set_security(struct registry_key *key,
                        struct security_descriptor *security);
 
+struct reg_diff_callbacks {
+       WERROR (*add_key) (void *callback_data, const char *key_name);
+       WERROR (*set_value) (void *callback_data, const char *key_name,
+                            const char *value_name, uint32_t value_type,
+                            DATA_BLOB value);
+       WERROR (*del_value) (void *callback_data, const char *key_name,
+                            const char *value_name);
+       WERROR (*del_key) (void *callback_data, const char *key_name);
+       WERROR (*del_all_values) (void *callback_data, const char *key_name);
+       WERROR (*done) (void *callback_data);
+};
+
+WERROR reg_diff_apply(struct registry_context *ctx, const char *filename);
+
+WERROR reg_generate_diff(struct registry_context *ctx1,
+                        struct registry_context *ctx2,
+                        const struct reg_diff_callbacks *callbacks,
+                        void *callback_data);
+WERROR reg_dotreg_diff_save(TALLOC_CTX *ctx, const char *filename,
+                           struct smb_iconv_convenience *iconv_convenience,
+                           struct reg_diff_callbacks **callbacks,
+                           void **callback_data);
+WERROR reg_generate_diff_key(struct registry_key *oldkey,
+                            struct registry_key *newkey,
+                            const char *path,
+                            const struct reg_diff_callbacks *callbacks,
+                            void *callback_data);
+
+
 
 #endif /* _REGISTRY_H */
index 20ae671c75b5f1653e3f5b5619c638cc746f9c97..8ab402d57d133d8929cc6cf9d8eee3bf937c0e4c 100644 (file)
@@ -26,7 +26,6 @@
 #include "includes.h"
 #include "registry.h"
 #include "param/param.h"
-#include "hive.h"
 
 typedef struct registry_context reg;
 typedef struct hive_key hive_key;
index 98943a073642d077aee77c24e05a87effbc58ded..d981a45b2c28d105281bbd7f37084e2c3abbe26a 100644 (file)
@@ -5,8 +5,8 @@ includedir=@includedir@
 
 Name: registry
 Description: Windows-style registry library
-Requires: ldb
-Requires.private: 
+Requires: talloc
+Requires.private: ldb
 Version: 0.0.1
 Libs: -L${libdir} -lregistry 
 Cflags: -I${includedir}  -DHAVE_IMMEDIATE_STRUCTURES=1
index 51c255e9f7034de850d10340fa5856dcfdf9d786..da09ecbe08dc68abda707c2930600646aaa13699 100644 (file)
@@ -2529,7 +2529,6 @@ static swig_module_info swig_module = {swig_types, 25, 0, 0, 0, 0};
 #include "includes.h"
 #include "registry.h"
 #include "param/param.h"
-#include "hive.h"
 
 typedef struct registry_context reg;
 typedef struct hive_key hive_key;
index 145e59950427fed1d2b31dbf774048fff10b4d73..6eae26bc469fce13a98b1252c47af1f3b5126354 100644 (file)
@@ -112,7 +112,7 @@ static bool test_reg_val_description_nullname(struct torture_context *ctx)
        return true;
 }
 
-_PUBLIC_ struct torture_suite *torture_registry(TALLOC_CTX *mem_ctx)
+struct torture_suite *torture_registry(TALLOC_CTX *mem_ctx)
 {
        struct torture_suite *suite = torture_suite_create(mem_ctx, "REGISTRY");
        torture_suite_add_simple_test(suite, "str_regtype",
index 1e56f125c5d168eac047c08a69328aff48881181..70b0241b043a241c575075f3acd0479bf585b7fc 100644 (file)
@@ -7,7 +7,7 @@
 
    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 2 of the License, or
+   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,
index 7d14b3a4121d4c5d5246ed98daf094d537960d2b..e5e34c11e0bd2368845b0f347db28b16ddedb8be 100644 (file)
@@ -7,7 +7,7 @@
 
    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 2 of the License, or
+   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,
index 71837d180791d926f2ce00c804293842bde4e371..98443e64566593ccb1001c9f26fbebc98e6436d8 100644 (file)
@@ -23,7 +23,6 @@
 #include "lib/registry/registry.h"
 #include "lib/cmdline/popt_common.h"
 #include "lib/registry/tools/common.h"
-#include "lib/registry/patchfile.h"
 #include "param/param.h"
 
 int main(int argc, char **argv)
index e62c3d3cd1740f435936c4ecb95852aa9443c6e6..7984ef31db618183bbb8cdfcff321569e35bd88b 100644 (file)
@@ -23,7 +23,7 @@ done
 
 SMB_SUBSYSTEM(LIBREPLACE,
        [${LIBREPLACE_OBJS}],
-       [LIBREPLACE_EXT],
+       [LIBREPLACE_EXT LIBREPLACE_NETWORK],
        [-Ilib/replace])
 
 LIBREPLACE_HOSTCC_OBJS=`echo ${LIBREPLACE_OBJS} |sed -e 's/\.o/\.ho/g'`
index 75d3ade28b0eed2830793015c80514b0b4d96e10..2067d988cbea5e57eca7912b3f458e23fb0f7bd3 100644 (file)
@@ -5,6 +5,4 @@ PRIVATE_DEPENDENCIES = LIBREPLACE_NETWORK
 # End SUBSYSTEM SOCKET_WRAPPER
 ##############################
 
-PUBLIC_HEADERS += lib/socket_wrapper/socket_wrapper.h
-
 SOCKET_WRAPPER_OBJ_FILES = lib/socket_wrapper/socket_wrapper.o
index b65cb4ccf6788a9eca36a1eefd64c697832163a0..84848ae77a7214e13f301b5b98197b9da4fabe77 100644 (file)
@@ -5,4 +5,3 @@ CFLAGS = -Ilib/talloc
 LIBTALLOC_OBJ_FILES = lib/talloc/talloc.o
 
 MANPAGES += $(tallocdir)/talloc.3
-PUBLIC_HEADERS += $(tallocdir)/talloc.h
index fd39074f5056c9f063c007c25c8c33db33874fb8..b9a8f80dda597dabffd2fde9d551a3e28f986325 100644 (file)
@@ -12,8 +12,6 @@ LIBTDB_OBJ_FILES = $(addprefix lib/tdb/common/, \
        open.o traverse.o freelist.o \
        error.o transaction.o)
 
-PUBLIC_HEADERS += $(tdbdir)/include/tdb.h
-
 ################################################
 # Start BINARY tdbtool
 [BINARY::tdbtool]
index a92321f59fd7d42f3299f02e5bbb5d4f604dec3f..e2d7cd517a730e57c7eb9af1f63be859de03f709 100644 (file)
@@ -1,7 +1,5 @@
-################################################
-# Start SUBSYSTEM LIBTLS
 [SUBSYSTEM::LIBTLS]
 PUBLIC_DEPENDENCIES = \
-               LIBTALLOC GNUTLS LIBSAMBA-CONFIG samba-socket
+               LIBTALLOC GNUTLS LIBSAMBA-HOSTCONFIG samba-socket
 
 LIBTLS_OBJ_FILES = lib/tls/tls.o lib/tls/tlscert.o
index 3afe398a8f38ae924fce5567b3e19526fad08612..ab6b23dd6ba6738c877ea5fdde5d2a9b5799fbff 100644 (file)
@@ -1,9 +1,8 @@
 [SUBSYSTEM::LIBSAMBA-UTIL]
 PUBLIC_DEPENDENCIES = \
                LIBTALLOC LIBCRYPTO \
-               SOCKET_WRAPPER EXT_NSL \
-               CHARSET EXECINFO DYNCONFIG \
-               LIBREPLACE_NETWORK
+               SOCKET_WRAPPER LIBREPLACE_NETWORK \
+               CHARSET EXECINFO
 
 LIBSAMBA-UTIL_OBJ_FILES = $(addprefix lib/util/, \
        xfile.o \
@@ -23,7 +22,8 @@ LIBSAMBA-UTIL_OBJ_FILES = $(addprefix lib/util/, \
                ms_fnmatch.o \
                mutex.o \
                idtree.o \
-               become_daemon.o)
+               become_daemon.o \
+               params.o
 
 PUBLIC_HEADERS += $(addprefix lib/util/, util.h \
                                 attr.h \
@@ -33,13 +33,13 @@ PUBLIC_HEADERS += $(addprefix lib/util/, util.h \
                                 mutex.h \
                                 safe_string.h \
                                 time.h \
+                                util_ldb.h \
                                 xfile.h)
 
 [SUBSYSTEM::ASN1_UTIL]
 PRIVATE_PROTO_HEADER = asn1_proto.h
 
 ASN1_UTIL_OBJ_FILES = lib/util/asn1.o
-PUBLIC_HEADERS += lib/util/asn1.h
 
 [SUBSYSTEM::UNIX_PRIVS]
 PRIVATE_PROTO_HEADER = unix_privs.h
@@ -49,7 +49,6 @@ UNIX_PRIVS_OBJ_FILES = lib/util/unix_privs.o
 ################################################
 # Start SUBSYSTEM WRAP_XATTR
 [SUBSYSTEM::WRAP_XATTR]
-PRIVATE_PROTO_HEADER = wrap_xattr.h
 PUBLIC_DEPENDENCIES = XATTR
 #
 # End SUBSYSTEM WRAP_XATTR
@@ -64,7 +63,6 @@ PUBLIC_DEPENDENCIES = LIBTDB
 UTIL_TDB_OBJ_FILES = lib/util/util_tdb.o
 
 [SUBSYSTEM::UTIL_LDB]
-PRIVATE_PROTO_HEADER = util_ldb.h
 PUBLIC_DEPENDENCIES = LIBLDB
 
 UTIL_LDB_OBJ_FILES = lib/util/util_ldb.o
index 1442438dd7a5575b6bac81a35d50f32d8b61ac35..e9dca67772043b10ed4a665b33b6719a948f51c4 100644 (file)
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+/* This is a public header file that is installed as part of Samba. 
+ * If you remove any functions or change their signature, update 
+ * the so version number. */
+
 #ifndef _SAMBA_DATABLOB_H_
 #define _SAMBA_DATABLOB_H_
 
index 308d81b105bdd4fe11c2f00c46d4e5a8b00214e2..e4f02758eb8e0c99c610a2dd4695329c42fa314c 100644 (file)
@@ -42,7 +42,7 @@ void d_set_iconv(smb_iconv_t cd)
        display_cd = cd;
 }
 
-_PUBLIC_ int d_vfprintf(FILE *f, const char *format, va_list ap) _PRINTF_ATTRIBUTE(2,0)
+_PUBLIC_ int d_vfprintf(FILE *f, const char *format, va_list ap) 
 {
        char *p, *p2;
        int ret, clen;
@@ -85,7 +85,7 @@ _PUBLIC_ int d_vfprintf(FILE *f, const char *format, va_list ap) _PRINTF_ATTRIBU
 }
 
 
-_PUBLIC_ int d_fprintf(FILE *f, const char *format, ...) _PRINTF_ATTRIBUTE(2,3)
+_PUBLIC_ int d_fprintf(FILE *f, const char *format, ...) 
 {
        int ret;
        va_list ap;
@@ -97,7 +97,7 @@ _PUBLIC_ int d_fprintf(FILE *f, const char *format, ...) _PRINTF_ATTRIBUTE(2,3)
        return ret;
 }
 
-_PUBLIC_ int d_printf(const char *format, ...) _PRINTF_ATTRIBUTE(1,2)
+_PUBLIC_ int d_printf(const char *format, ...)
 {
        int ret;
        va_list ap;
index 5751db23d67b029f82392f671120ec02e3e9f3f5..7df4ec4e20c618bff2a1d0354897deaaba8b0e1c 100644 (file)
@@ -37,15 +37,17 @@ static unsigned int bytes_since_reseed = 0;
 
 static int urand_fd = -1;
 
-static void (*reseed_callback)(int *newseed);
+static void (*reseed_callback)(void *userdata, int *newseed);
+static void *reseed_callback_userdata = NULL;
 
 /**
  Copy any user given reseed data.
 **/
 
-_PUBLIC_ void set_rand_reseed_callback(void (*fn)(int *))
+_PUBLIC_ void set_rand_reseed_callback(void (*fn)(void *, int *), void *userdata)
 {
        reseed_callback = fn;
+       reseed_callback_userdata = userdata;
        set_need_random_reseed();
 }
 
@@ -61,7 +63,7 @@ _PUBLIC_ void set_need_random_reseed(void)
 static void get_rand_reseed_data(int *reseed_data)
 {
        if (reseed_callback) {
-               reseed_callback(reseed_data);
+               reseed_callback(reseed_callback_userdata, reseed_data);
        } else {
                *reseed_data = 0;
        }
index 205a66352fe23318198c007ac6b2c3f5123b1e48..5fe229c089e3e8f23e05a3070fc8e8bfd03d6cfa 100644 (file)
 #include "includes.h"
 #include "torture/torture.h"
 
-static void dummy_reseed(int *d)
+static void dummy_reseed(void *userdata, int *d)
 {
        *d = 42;
 }
 
 static bool test_reseed_callback(struct torture_context *tctx)
 {
-       set_rand_reseed_callback(dummy_reseed);
+       set_rand_reseed_callback(dummy_reseed, NULL);
        return true;
 }
 
index 7b6bfeeb7b07ea07fc2c96734b9dd55a994318bf..b5bb75358e107e18e22383eddcaff0217c86a16f 100644 (file)
@@ -582,3 +582,18 @@ _PUBLIC_ void *realloc_array(void *ptr, size_t el_size, unsigned count)
        return realloc(ptr, el_size * count);
 }
 
+_PUBLIC_ void *talloc_check_name_abort(const void *ptr, const char *name)
+{
+        void *result;
+
+        result = talloc_check_name(ptr, name);
+        if (result != NULL)
+                return result;
+
+        DEBUG(0, ("Talloc type mismatch, expected %s, got %s\n",
+                  name, talloc_get_name(ptr)));
+        smb_panic("talloc type mismatch");
+        /* Keep the compiler happy */
+        return NULL;
+}
+
index 550b60c625c35f8adc9d2d0c22ace91b4f060115..3bf6b98d2fb3f247ce9800ab5b835aab271935c3 100644 (file)
@@ -218,7 +218,7 @@ _PUBLIC_ struct in_addr sys_inet_makeaddr(int net, int host);
 /**
  Copy any user given reseed data.
 **/
-_PUBLIC_ void set_rand_reseed_callback(void (*fn)(int *));
+_PUBLIC_ void set_rand_reseed_callback(void (*fn)(void *, int *), void *);
 
 /**
  * Tell the random number generator it needs to reseed.
@@ -795,4 +795,19 @@ _PUBLIC_ int idr_remove(struct idr_context *idp, int id);
 **/
 _PUBLIC_ void become_daemon(bool fork);
 
+/**
+ * Load a ini-style file.
+ */
+bool pm_process( const char *fileName,
+                 bool (*sfunc)(const char *, void *),
+                 bool (*pfunc)(const char *, const char *, void *),
+                                void *userdata);
+
+/**
+ * Add-on to talloc_get_type
+ */
+_PUBLIC_ void *talloc_check_name_abort(const void *ptr, const char *name);
+#define talloc_get_type_abort(ptr, type) \
+       (type *)talloc_check_name_abort(ptr, #type)
+
 #endif /* _SAMBA_UTIL_H_ */
index 836e188ac1a78b9a1438b694185f16192914bcba..c3e22196c0cb69cc95fb6a1b86936e4042dc1d99 100644 (file)
@@ -356,7 +356,7 @@ _PUBLIC_ bool file_save(const char *fname, const void *packet, size_t length)
        return true;
 }
 
-_PUBLIC_ int vfdprintf(int fd, const char *format, va_list ap) _PRINTF_ATTRIBUTE(2,0)
+_PUBLIC_ int vfdprintf(int fd, const char *format, va_list ap)
 {
        char *p;
        int len, ret;
@@ -371,7 +371,7 @@ _PUBLIC_ int vfdprintf(int fd, const char *format, va_list ap) _PRINTF_ATTRIBUTE
        return ret;
 }
 
-_PUBLIC_ int fdprintf(int fd, const char *format, ...) _PRINTF_ATTRIBUTE(2,3)
+_PUBLIC_ int fdprintf(int fd, const char *format, ...)
 {
        va_list ap;
        int ret;
index f1b42effd86b5abd0b5a91d3635741c5059b79a1..38f53c2c66ca4e11d44ccc78a0607b74f6caf011 100644 (file)
@@ -33,7 +33,7 @@ int gendb_search_v(struct ldb_context *ldb,
                   struct ldb_message ***msgs,
                   const char * const *attrs,
                   const char *format,
-                  va_list ap)  _PRINTF_ATTRIBUTE(6,0)
+                  va_list ap) 
 {
        enum ldb_scope scope = LDB_SCOPE_SUBTREE;
        struct ldb_result *res;
@@ -85,7 +85,7 @@ int gendb_search(struct ldb_context *ldb,
                 struct ldb_dn *basedn,
                 struct ldb_message ***res,
                 const char * const *attrs,
-                const char *format, ...) _PRINTF_ATTRIBUTE(6,7)
+                const char *format, ...) 
 {
        va_list ap;
        int count;
diff --git a/source4/lib/util/util_ldb.h b/source4/lib/util/util_ldb.h
new file mode 100644 (file)
index 0000000..030ba7e
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef __LIB_UTIL_UTIL_LDB_H__
+#define __LIB_UTIL_UTIL_LDB_H__
+
+/* The following definitions come from lib/util/util_ldb.c  */
+
+int gendb_search_v(struct ldb_context *ldb,
+                  TALLOC_CTX *mem_ctx,
+                  struct ldb_dn *basedn,
+                  struct ldb_message ***msgs,
+                  const char * const *attrs,
+                  const char *format,
+                  va_list ap)  PRINTF_ATTRIBUTE(6,0);
+int gendb_search(struct ldb_context *ldb,
+                TALLOC_CTX *mem_ctx,
+                struct ldb_dn *basedn,
+                struct ldb_message ***res,
+                const char * const *attrs,
+                const char *format, ...) PRINTF_ATTRIBUTE(6,7);
+int gendb_search_dn(struct ldb_context *ldb,
+                TALLOC_CTX *mem_ctx,
+                struct ldb_dn *dn,
+                struct ldb_message ***res,
+                const char * const *attrs);
+int gendb_add_ldif(struct ldb_context *ldb, const char *ldif_string);
+char *wrap_casefold(void *context, void *mem_ctx, const char *s);
+
+#endif /* __LIB_UTIL_UTIL_LDB_H__ */
diff --git a/source4/lib/util/wrap_xattr.h b/source4/lib/util/wrap_xattr.h
new file mode 100644 (file)
index 0000000..64b28d2
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef __LIB_UTIL_WRAP_XATTR_H__
+#define __LIB_UTIL_WRAP_XATTR_H__
+
+ssize_t wrap_fgetxattr(int fd, const char *name, void *value, size_t size);
+ssize_t wrap_getxattr(const char *path, const char *name, void *value, size_t size);
+int wrap_fsetxattr(int fd, const char *name, void *value, size_t size, int flags);
+int wrap_setxattr(const char *path, const char *name, void *value, size_t size, int flags);
+int wrap_fremovexattr(int fd, const char *name);
+int wrap_removexattr(const char *path, const char *name);
+
+#endif /* __LIB_UTIL_WRAP_XATTR_H__ */
+
index f180844d84232d92a687c4a90402ea24c7dd5a9e..85fc4ab527fff4f7f17b404d34ce59614931bf1f 100644 (file)
@@ -4,7 +4,7 @@
 PRIVATE_PROTO_HEADER = proto.h
 PUBLIC_DEPENDENCIES = \
                MSRPC_PARSE \
-               LIBSAMBA-CONFIG
+               LIBSAMBA-HOSTCONFIG
 # End SUBSYSTEM LIBCLI_AUTH
 #################################
 
index cefb55e20503b0956679076f7dcf2f8a6c30f1f5..7de96273020fa31496df039fb6e79a1d3ad8e68d 100644 (file)
@@ -63,7 +63,7 @@ bool SMBencrypt(const char *passwd, const uint8_t *c8, uint8_t p24[24])
  * @param p16 return password hashed with md4, caller allocated 16 byte buffer
  */
  
-_PUBLIC_ bool E_md4hash(const char *passwd, uint8_t p16[16])
+bool E_md4hash(const char *passwd, uint8_t p16[16])
 {
        int len;
        void *wpwd;
@@ -91,7 +91,7 @@ _PUBLIC_ bool E_md4hash(const char *passwd, uint8_t p16[16])
  * @note p16 is filled in regardless
  */
  
-_PUBLIC_ bool E_deshash(const char *passwd, uint8_t p16[16])
+bool E_deshash(const char *passwd, uint8_t p16[16])
 {
        bool ret = true;
        fstring dospwd; 
index 666dfe84460ae0c57ebc5b8dd6a86473ecbb2b64..4858a96110b7a46df9b3e99e88edeacdbcad7560 100644 (file)
@@ -23,6 +23,7 @@
 #include "includes.h"
 #include "libcli/libcli.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/auth/libcli_auth.h"
 #include "libcli/smb_composite/smb_composite.h"
 #include "param/param.h"
index 07393a34919a9f45942d7f20121680c684275a82..5d43606c6125a5074c201afca144fae5815a28df 100644 (file)
@@ -21,6 +21,7 @@
 #include "includes.h"
 #include "libcli/libcli.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 
 struct search_private {
        struct clilist_file_info *dirlist;
index 6002ccfc5923f88d22609d2fa3c55ea75ecc8e11..5ed0e8e3cd23ada6de8f2338806fdadde8963420 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 
 
index f5ba799bbca0a2764c98c3cd9472fca3286e4371..ae2367918c874ef7c27d3ad4c40e38cf3daedba9 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 
 /****************************************************************************
index db0ecf9af6fcf70f937c48339553918a74ba979f..f1bed20361f1c56e0f86307798598cd27ed6bb24 100644 (file)
@@ -19,6 +19,9 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#ifndef __COMPOSITE_H__
+#define __COMPOSITE_H__
+
 #include "libcli/raw/interfaces.h"
 
 /*
@@ -68,4 +71,36 @@ struct smb2_request;
 struct rpc_request;
 struct nbt_name_request;
 
-#include "libcli/composite/proto.h"
+struct composite_context *composite_create(TALLOC_CTX *mem_ctx, struct event_context *ev);
+bool composite_nomem(const void *p, struct composite_context *ctx);
+void composite_continue(struct composite_context *ctx,
+                                struct composite_context *new_ctx,
+                                void (*continuation)(struct composite_context *),
+                                void *private_data);
+void composite_continue_rpc(struct composite_context *ctx,
+                                    struct rpc_request *new_req,
+                                    void (*continuation)(struct rpc_request *),
+                                    void *private_data);
+void composite_continue_irpc(struct composite_context *ctx,
+                                     struct irpc_request *new_req,
+                                     void (*continuation)(struct irpc_request *),
+                                     void *private_data);
+void composite_continue_smb(struct composite_context *ctx,
+                                    struct smbcli_request *new_req,
+                                    void (*continuation)(struct smbcli_request *),
+                                    void *private_data);
+void composite_continue_smb2(struct composite_context *ctx,
+                                     struct smb2_request *new_req,
+                                     void (*continuation)(struct smb2_request *),
+                                     void *private_data);
+void composite_continue_nbt(struct composite_context *ctx,
+                                    struct nbt_name_request *new_req,
+                                    void (*continuation)(struct nbt_name_request *),
+                                    void *private_data);
+bool composite_is_ok(struct composite_context *ctx);
+void composite_done(struct composite_context *ctx);
+void composite_error(struct composite_context *ctx, NTSTATUS status);
+NTSTATUS composite_wait(struct composite_context *c);
+
+
+#endif /* __COMPOSITE_H__ */
index 79b16bfd74fc9a5f9bee6d7ea50e99fd069901a3..95b45003bec8b655c109a6f6a66ff107ae018c37 100644 (file)
@@ -1,6 +1,7 @@
 mkinclude auth/config.mk
 mkinclude ldap/config.mk
 mkinclude security/config.mk
+mkinclude wbclient/config.mk
 
 [SUBSYSTEM::LIBSAMBA-ERRORS]
 
@@ -54,13 +55,13 @@ LIBCLI_NBT_OBJ_FILES = $(addprefix libcli/nbt/, \
 
 [PYTHON::python_libcli_nbt]
 SWIG_FILE = swig/libcli_nbt.i
-PUBLIC_DEPENDENCIES = LIBCLI_NBT DYNCONFIG LIBSAMBA-CONFIG
+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-CONFIG
+PUBLIC_DEPENDENCIES = LIBCLI_SMB DYNCONFIG LIBSAMBA-HOSTCONFIG
 
 python_libcli_smb_OBJ_FILES = libcli/swig/libcli_smb_wrap.o
 
@@ -79,7 +80,7 @@ PUBLIC_DEPENDENCIES = LIBCLI_LDAP
 PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL LIBLDB
 
 LIBCLI_CLDAP_OBJ_FILES = libcli/cldap/cldap.o
-PUBLIC_HEADERS += libcli/cldap/cldap.h
+PUBLIC_HEADERS += libcli/cldap/cldap.h
 
 [SUBSYSTEM::LIBCLI_WREPL]
 PRIVATE_PROTO_HEADER = wrepl/winsrepl_proto.h
@@ -96,7 +97,7 @@ LIBCLI_RESOLVE_OBJ_FILES = libcli/resolve/resolve.o
 
 [SUBSYSTEM::LP_RESOLVE]
 PRIVATE_PROTO_HEADER = resolve/lp_proto.h
-PRIVATE_DEPENDENCIES = LIBCLI_NBT LIBSAMBA-CONFIG LIBNETIF 
+PRIVATE_DEPENDENCIES = LIBCLI_NBT LIBSAMBA-HOSTCONFIG LIBNETIF 
 
 LP_RESOLVE_OBJ_FILES = $(addprefix libcli/resolve/, \
                                          bcast.o nbtlist.o wins.o \
@@ -123,7 +124,7 @@ LIBCLI_SMB_OBJ_FILES = $(addprefix libcli/, \
                climessage.o \
                clideltree.o)
 
-PUBLIC_HEADERS += libcli/libcli.h
+PUBLIC_HEADERS += libcli/libcli.h
 
 [SUBSYSTEM::LIBCLI_RAW]
 PRIVATE_PROTO_HEADER = raw/raw_proto.h
index cc38796ac31c563229a11747cc36404f513ab197..33e32c7417ea99f07c9a14ee2653b0ff1581abc5 100644 (file)
@@ -9,10 +9,9 @@ LIBCLI_LDAP_OBJ_FILES = $(addprefix libcli/ldap/, \
                                           ldap_msg.o ldap_ildap.o ldap_controls.o)
 
 
-PUBLIC_HEADERS += libcli/ldap/ldap.h
+PUBLIC_HEADERS += libcli/ldap/ldap.h libcli/ldap/ldap_ndr.h
 
 [SUBSYSTEM::LDAP_ENCODE]
-PRIVATE_PROTO_HEADER = ldap_ndr.h
 # FIXME PRIVATE_DEPENDENCIES = LIBLDB
 
 LDAP_ENCODE_OBJ_FILES = libcli/ldap/ldap_ndr.o
index 00a0631753a276c0f076646e28c733e93dd9dbf0..fc6de7993e4e5d047c7d556753a1380471aa8cb2 100644 (file)
@@ -25,6 +25,7 @@
 #include "includes.h"
 #include "lib/util/asn1.h"
 #include "libcli/ldap/ldap.h"
+#include "libcli/ldap/ldap_proto.h"
 
 
 static bool ldap_push_filter(struct asn1_data *data, struct ldb_parse_tree *tree)
@@ -187,7 +188,7 @@ static void ldap_encode_response(struct asn1_data *data, struct ldap_Result *res
        }
 }
 
-bool ldap_encode(struct ldap_message *msg, DATA_BLOB *result, TALLOC_CTX *mem_ctx)
+_PUBLIC_ bool ldap_encode(struct ldap_message *msg, DATA_BLOB *result, TALLOC_CTX *mem_ctx)
 {
        struct asn1_data *data = asn1_init(mem_ctx);
        int i, j;
@@ -927,7 +928,7 @@ static void ldap_decode_attribs(TALLOC_CTX *mem_ctx, struct asn1_data *data,
 
 /* This routine returns LDAP status codes */
 
-NTSTATUS ldap_decode(struct asn1_data *data, struct ldap_message *msg)
+_PUBLIC_ NTSTATUS ldap_decode(struct asn1_data *data, struct ldap_message *msg)
 {
        uint8_t tag;
 
index 6f5e86744e0de8ab4d6db6296ec735cdc76543ae..a336a7ad850757b1c3a696571d537a63467613fe 100644 (file)
@@ -254,6 +254,8 @@ struct cli_credentials;
 struct dom_sid;
 struct asn1_data;
 
-#include "libcli/ldap/ldap_proto.h"
+struct ldap_message *new_ldap_message(TALLOC_CTX *mem_ctx);
+NTSTATUS ldap_decode(struct asn1_data *data, struct ldap_message *msg);
+bool ldap_encode(struct ldap_message *msg, DATA_BLOB *result, TALLOC_CTX *mem_ctx);
 
 #endif
index fd15ff2fc74a308734a088f6ff8aada5dd95c266..2c04edf9505ba5150de6bf3ebb5b49c075493ca0 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "includes.h"
 #include "libcli/ldap/ldap.h"
+#include "libcli/ldap/ldap_proto.h"
 #include "libcli/ldap/ldap_client.h"
 #include "lib/tls/tls.h"
 #include "auth/gensec/gensec.h"
@@ -35,7 +36,7 @@ struct ldap_simple_creds {
        const char *pw;
 };
 
-NTSTATUS ldap_rebind(struct ldap_connection *conn)
+_PUBLIC_ NTSTATUS ldap_rebind(struct ldap_connection *conn)
 {
        NTSTATUS status;
        struct ldap_simple_creds *creds;
@@ -88,7 +89,7 @@ static struct ldap_message *new_ldap_simple_bind_msg(struct ldap_connection *con
 /*
   perform a simple username/password bind
 */
-NTSTATUS ldap_bind_simple(struct ldap_connection *conn, 
+_PUBLIC_ NTSTATUS ldap_bind_simple(struct ldap_connection *conn, 
                          const char *userdn, const char *password)
 {
        struct ldap_request *req;
@@ -199,7 +200,7 @@ static struct ldap_message *new_ldap_sasl_bind_msg(struct ldap_connection *conn,
 /*
   perform a sasl bind using the given credentials
 */
-NTSTATUS ldap_bind_sasl(struct ldap_connection *conn, 
+_PUBLIC_ NTSTATUS ldap_bind_sasl(struct ldap_connection *conn, 
                        struct cli_credentials *creds,
                        struct loadparm_context *lp_ctx)
 {
index d99851ee15be8db75e60d79ae10421be9081f65e..296a7b11f26905672a612454857e0fba4195e886 100644 (file)
@@ -28,6 +28,7 @@
 #include "lib/events/events.h"
 #include "lib/socket/socket.h"
 #include "libcli/ldap/ldap.h"
+#include "libcli/ldap/ldap_proto.h"
 #include "libcli/ldap/ldap_client.h"
 #include "libcli/composite/composite.h"
 #include "lib/stream/packet.h"
@@ -41,7 +42,7 @@
 /**
   create a new ldap_connection stucture. The event context is optional
 */
-struct ldap_connection *ldap4_new_connection(TALLOC_CTX *mem_ctx, 
+_PUBLIC_ struct ldap_connection *ldap4_new_connection(TALLOC_CTX *mem_ctx, 
                                             struct loadparm_context *lp_ctx,
                                             struct event_context *ev)
 {
@@ -293,7 +294,7 @@ struct ldap_connect_state {
 static void ldap_connect_recv_unix_conn(struct composite_context *ctx);
 static void ldap_connect_recv_tcp_conn(struct composite_context *ctx);
 
-struct composite_context *ldap_connect_send(struct ldap_connection *conn,
+_PUBLIC_ struct composite_context *ldap_connect_send(struct ldap_connection *conn,
                                            const char *url)
 {
        struct composite_context *result, *ctx;
@@ -476,7 +477,7 @@ _PUBLIC_ NTSTATUS ldap_connect_recv(struct composite_context *ctx)
        return status;
 }
 
-NTSTATUS ldap_connect(struct ldap_connection *conn, const char *url)
+_PUBLIC_ NTSTATUS ldap_connect(struct ldap_connection *conn, const char *url)
 {
        struct composite_context *ctx = ldap_connect_send(conn, url);
        return ldap_connect_recv(ctx);
@@ -484,7 +485,7 @@ NTSTATUS ldap_connect(struct ldap_connection *conn, const char *url)
 
 /* set reconnect parameters */
 
-void ldap_set_reconn_params(struct ldap_connection *conn, int max_retries)
+_PUBLIC_ void ldap_set_reconn_params(struct ldap_connection *conn, int max_retries)
 {
        if (conn) {
                conn->reconnect.max_retries = max_retries;
@@ -569,7 +570,7 @@ static void ldap_request_complete(struct event_context *ev, struct timed_event *
 /*
   send a ldap message - async interface
 */
-struct ldap_request *ldap_request_send(struct ldap_connection *conn,
+_PUBLIC_ struct ldap_request *ldap_request_send(struct ldap_connection *conn,
                                       struct ldap_message *msg)
 {
        struct ldap_request *req;
@@ -645,7 +646,7 @@ failed:
   wait for a request to complete
   note that this does not destroy the request
 */
-NTSTATUS ldap_request_wait(struct ldap_request *req)
+_PUBLIC_ NTSTATUS ldap_request_wait(struct ldap_request *req)
 {
        while (req->state < LDAP_REQUEST_DONE) {
                if (event_loop_once(req->conn->event.event_ctx) != 0) {
@@ -709,7 +710,7 @@ static const struct {
 /*
   used to setup the status code from a ldap response
 */
-NTSTATUS ldap_check_response(struct ldap_connection *conn, struct ldap_Result *r)
+_PUBLIC_ NTSTATUS ldap_check_response(struct ldap_connection *conn, struct ldap_Result *r)
 {
        int i;
        const char *codename = "unknown";
@@ -742,7 +743,7 @@ NTSTATUS ldap_check_response(struct ldap_connection *conn, struct ldap_Result *r
 /*
   return error string representing the last error
 */
-const char *ldap_errstr(struct ldap_connection *conn, 
+_PUBLIC_ const char *ldap_errstr(struct ldap_connection *conn, 
                        TALLOC_CTX *mem_ctx, 
                        NTSTATUS status)
 {
@@ -756,7 +757,7 @@ const char *ldap_errstr(struct ldap_connection *conn,
 /*
   return the Nth result message, waiting if necessary
 */
-NTSTATUS ldap_result_n(struct ldap_request *req, int n, struct ldap_message **msg)
+_PUBLIC_ NTSTATUS ldap_result_n(struct ldap_request *req, int n, struct ldap_message **msg)
 {
        *msg = NULL;
 
@@ -784,7 +785,7 @@ NTSTATUS ldap_result_n(struct ldap_request *req, int n, struct ldap_message **ms
 /*
   return a single result message, checking if it is of the expected LDAP type
 */
-NTSTATUS ldap_result_one(struct ldap_request *req, struct ldap_message **msg, int type)
+_PUBLIC_ NTSTATUS ldap_result_one(struct ldap_request *req, struct ldap_message **msg, int type)
 {
        NTSTATUS status;
        status = ldap_result_n(req, 0, msg);
@@ -802,7 +803,7 @@ NTSTATUS ldap_result_one(struct ldap_request *req, struct ldap_message **msg, in
   a simple ldap transaction, for single result requests that only need a status code
   this relies on single valued requests having the response type == request type + 1
 */
-NTSTATUS ldap_transaction(struct ldap_connection *conn, struct ldap_message *msg)
+_PUBLIC_ NTSTATUS ldap_transaction(struct ldap_connection *conn, struct ldap_message *msg)
 {
        struct ldap_request *req = ldap_request_send(conn, msg);
        struct ldap_message *res;
index d5ff441afffdbf80471d57cf3801fcc5d11674a4..13b0bf725cf84417f2da7c55dacfdc6b4cbfcaf5 100644 (file)
@@ -94,3 +94,47 @@ struct ldap_connection {
 
        struct packet_context *packet;
 };
+
+struct ldap_connection *ldap4_new_connection(TALLOC_CTX *mem_ctx, 
+                                            struct loadparm_context *lp_ctx,
+                                            struct event_context *ev);
+
+NTSTATUS ldap_connect(struct ldap_connection *conn, const char *url);
+struct composite_context *ldap_connect_send(struct ldap_connection *conn,
+                                           const char *url);
+
+NTSTATUS ldap_rebind(struct ldap_connection *conn);
+NTSTATUS ldap_bind_simple(struct ldap_connection *conn, 
+                         const char *userdn, const char *password);
+NTSTATUS ldap_bind_sasl(struct ldap_connection *conn, 
+                       struct cli_credentials *creds,
+                       struct loadparm_context *lp_ctx);
+struct ldap_request *ldap_request_send(struct ldap_connection *conn,
+                                      struct ldap_message *msg);
+NTSTATUS ldap_request_wait(struct ldap_request *req);
+struct composite_context;
+NTSTATUS ldap_connect_recv(struct composite_context *ctx);
+NTSTATUS ldap_result_n(struct ldap_request *req, int n, struct ldap_message **msg);
+NTSTATUS ldap_result_one(struct ldap_request *req, struct ldap_message **msg, int type);
+NTSTATUS ldap_transaction(struct ldap_connection *conn, struct ldap_message *msg);
+const char *ldap_errstr(struct ldap_connection *conn, 
+                       TALLOC_CTX *mem_ctx, 
+                       NTSTATUS status);
+NTSTATUS ldap_check_response(struct ldap_connection *conn, struct ldap_Result *r);
+void ldap_set_reconn_params(struct ldap_connection *conn, int max_retries);
+int ildap_count_entries(struct ldap_connection *conn, struct ldap_message **res);
+NTSTATUS ildap_search_bytree(struct ldap_connection *conn, const char *basedn, 
+                            int scope, struct ldb_parse_tree *tree,
+                            const char * const *attrs, bool attributesonly, 
+                            struct ldb_control **control_req,
+                            struct ldb_control ***control_res,
+                            struct ldap_message ***results);
+NTSTATUS ildap_search(struct ldap_connection *conn, const char *basedn, 
+                     int scope, const char *expression, 
+                     const char * const *attrs, bool attributesonly, 
+                     struct ldb_control **control_req,
+                     struct ldb_control ***control_res,
+                     struct ldap_message ***results);
+
+
+
index 7b592c65ae9758666d14ec12274de10ad6a19975..8f21af069009afa1a5866eb3c85c0a0fc1af47a0 100644 (file)
@@ -28,7 +28,7 @@
 /*
   count the returned search entries
 */
-int ildap_count_entries(struct ldap_connection *conn, struct ldap_message **res)
+_PUBLIC_ int ildap_count_entries(struct ldap_connection *conn, struct ldap_message **res)
 {
        int i;
        for (i=0;res && res[i];i++) /* noop */ ;
@@ -39,7 +39,7 @@ int ildap_count_entries(struct ldap_connection *conn, struct ldap_message **res)
 /*
   perform a synchronous ldap search
 */
-NTSTATUS ildap_search_bytree(struct ldap_connection *conn, const char *basedn, 
+_PUBLIC_ NTSTATUS ildap_search_bytree(struct ldap_connection *conn, const char *basedn, 
                             int scope, struct ldb_parse_tree *tree,
                             const char * const *attrs, bool attributesonly, 
                             struct ldb_control **control_req,
@@ -112,7 +112,7 @@ NTSTATUS ildap_search_bytree(struct ldap_connection *conn, const char *basedn,
 /*
   perform a ldap search
 */
-NTSTATUS ildap_search(struct ldap_connection *conn, const char *basedn, 
+_PUBLIC_ NTSTATUS ildap_search(struct ldap_connection *conn, const char *basedn, 
                      int scope, const char *expression, 
                      const char * const *attrs, bool attributesonly, 
                      struct ldb_control **control_req,
index 12832b8ec431b01d9c9f6e4fa34fefd1ae981ed6..c712e1e65480380a560d84f1ad5a86a56d6d414e 100644 (file)
@@ -26,7 +26,7 @@
 #include "libcli/ldap/ldap_client.h"
 
 
-struct ldap_message *new_ldap_message(TALLOC_CTX *mem_ctx)
+_PUBLIC_ struct ldap_message *new_ldap_message(TALLOC_CTX *mem_ctx)
 {
        return talloc_zero(mem_ctx, struct ldap_message);
 }
diff --git a/source4/libcli/ldap/ldap_ndr.h b/source4/libcli/ldap/ldap_ndr.h
new file mode 100644 (file)
index 0000000..dfbb723
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef __LIBCLI_LDAP_LDAP_NDR_H__
+#define __LIBCLI_LDAP_LDAP_NDR_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);
+NTSTATUS ldap_decode_ndr_GUID(TALLOC_CTX *mem_ctx, struct ldb_val val, struct GUID *guid);
+
+#endif /* __LIBCLI_LDAP_LDAP_NDR_H__ */
+
index bc85d87b895fa6926e301cc9ce15ca38738590bf..14cec3a024b3229b966dfe5e0ec6710bddbbd63a 100644 (file)
@@ -23,6 +23,7 @@
 #define __LIBNBT_H__
 
 #include "librpc/gen_ndr/nbt.h"
+#include "librpc/ndr/libndr.h"
 
 /*
   possible states for pending requests
@@ -273,6 +274,78 @@ struct nbt_name_release {
        } out;
 };
 
-#include "libcli/nbt/nbt_proto.h"
+struct nbt_name_socket *nbt_name_socket_init(TALLOC_CTX *mem_ctx, 
+                                            struct event_context *event_ctx,
+                                            struct smb_iconv_convenience *iconv_convenience);
+struct nbt_name_request *nbt_name_query_send(struct nbt_name_socket *nbtsock,
+                                            struct nbt_name_query *io);
+NTSTATUS nbt_name_query_recv(struct nbt_name_request *req, 
+                            TALLOC_CTX *mem_ctx, struct nbt_name_query *io);
+NTSTATUS nbt_name_query(struct nbt_name_socket *nbtsock, 
+                       TALLOC_CTX *mem_ctx, struct nbt_name_query *io);
+struct nbt_name_request *nbt_name_status_send(struct nbt_name_socket *nbtsock,
+                                             struct nbt_name_status *io);
+NTSTATUS nbt_name_status_recv(struct nbt_name_request *req, 
+                            TALLOC_CTX *mem_ctx, struct nbt_name_status *io);
+NTSTATUS nbt_name_status(struct nbt_name_socket *nbtsock, 
+                       TALLOC_CTX *mem_ctx, struct nbt_name_status *io);
+
+NTSTATUS nbt_name_dup(TALLOC_CTX *mem_ctx, struct nbt_name *name, struct nbt_name *newname);
+NTSTATUS nbt_name_to_blob(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, DATA_BLOB *blob, struct nbt_name *name);
+NTSTATUS nbt_name_from_blob(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, struct nbt_name *name);
+void nbt_choose_called_name(TALLOC_CTX *mem_ctx, struct nbt_name *n, const char *name, int type);
+char *nbt_name_string(TALLOC_CTX *mem_ctx, const struct nbt_name *name);
+NTSTATUS nbt_name_register(struct nbt_name_socket *nbtsock, 
+                          TALLOC_CTX *mem_ctx, struct nbt_name_register *io);
+NTSTATUS nbt_name_refresh(struct nbt_name_socket *nbtsock, 
+                          TALLOC_CTX *mem_ctx, struct nbt_name_refresh *io);
+NTSTATUS nbt_name_release(struct nbt_name_socket *nbtsock, 
+                          TALLOC_CTX *mem_ctx, struct nbt_name_release *io);
+NTSTATUS nbt_name_register_wins(struct nbt_name_socket *nbtsock,
+                               TALLOC_CTX *mem_ctx,
+                               struct nbt_name_register_wins *io);
+NTSTATUS nbt_name_refresh_wins(struct nbt_name_socket *nbtsock,
+                               TALLOC_CTX *mem_ctx,
+                               struct nbt_name_refresh_wins *io);
+NTSTATUS nbt_name_register_recv(struct nbt_name_request *req, 
+                               TALLOC_CTX *mem_ctx, struct nbt_name_register *io);
+struct nbt_name_request *nbt_name_register_send(struct nbt_name_socket *nbtsock,
+                                               struct nbt_name_register *io);
+NTSTATUS nbt_name_release_recv(struct nbt_name_request *req, 
+                              TALLOC_CTX *mem_ctx, struct nbt_name_release *io);
+
+struct nbt_name_request *nbt_name_release_send(struct nbt_name_socket *nbtsock,
+                                              struct nbt_name_release *io);
+
+NTSTATUS nbt_name_refresh_recv(struct nbt_name_request *req, 
+                              TALLOC_CTX *mem_ctx, struct nbt_name_refresh *io);
+
+NTSTATUS nbt_set_incoming_handler(struct nbt_name_socket *nbtsock,
+                                 void (*handler)(struct nbt_name_socket *, struct nbt_name_packet *, 
+                                                 struct socket_address *),
+                                 void *private);
+NTSTATUS nbt_name_reply_send(struct nbt_name_socket *nbtsock, 
+                            struct socket_address *dest,
+                            struct nbt_name_packet *request);
+
+
+NDR_SCALAR_PROTO(wrepl_nbt_name, const struct nbt_name *)
+NDR_SCALAR_PROTO(nbt_string, const char *);
+NDR_BUFFER_PROTO(nbt_name, struct nbt_name)
+NTSTATUS nbt_rcode_to_ntstatus(uint8_t rcode);
+
+struct composite_context;
+struct composite_context *nbt_name_register_bcast_send(struct nbt_name_socket *nbtsock,
+                                                      struct nbt_name_register_bcast *io);
+NTSTATUS nbt_name_register_bcast_recv(struct composite_context *c);
+struct composite_context *nbt_name_register_wins_send(struct nbt_name_socket *nbtsock,
+                                                     struct nbt_name_register_wins *io);
+NTSTATUS nbt_name_refresh_wins_recv(struct composite_context *c, TALLOC_CTX *mem_ctx,
+                                    struct nbt_name_refresh_wins *io);
+struct composite_context *nbt_name_refresh_wins_send(struct nbt_name_socket *nbtsock,
+                                                     struct nbt_name_refresh_wins *io);
+NTSTATUS nbt_name_register_wins_recv(struct composite_context *c, TALLOC_CTX *mem_ctx,
+                                    struct nbt_name_register_wins *io);
+
 
 #endif /* __LIBNBT_H__ */
index e3432bfda14cfbe2175a23a973803194c1b1df25..2e1bcd818bebed7b65b8667ef25f9f4b142d236b 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/nbt/libnbt.h"
+#include "libcli/nbt/nbt_proto.h"
 #include "lib/socket/socket.h"
 #include "param/param.h"
 
index 1157c110a15213a03ab8cbc3e1ebfa68cfd78722..b372e4a3f3b0e2d0012ea84f1b50903d9d35686c 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/nbt/libnbt.h"
+#include "libcli/nbt/nbt_proto.h"
 #include "libcli/composite/composite.h"
 #include "lib/socket/socket.h"
 #include "param/param.h"
@@ -86,7 +87,7 @@ failed:
 /*
   wait for a refresh reply
 */
-NTSTATUS nbt_name_refresh_recv(struct nbt_name_request *req, 
+_PUBLIC_ NTSTATUS nbt_name_refresh_recv(struct nbt_name_request *req, 
                               TALLOC_CTX *mem_ctx, struct nbt_name_refresh *io)
 {
        NTSTATUS status;
@@ -128,7 +129,7 @@ NTSTATUS nbt_name_refresh_recv(struct nbt_name_request *req,
 /*
   synchronous name refresh request
 */
-NTSTATUS nbt_name_refresh(struct nbt_name_socket *nbtsock, 
+_PUBLIC_ NTSTATUS nbt_name_refresh(struct nbt_name_socket *nbtsock, 
                           TALLOC_CTX *mem_ctx, struct nbt_name_refresh *io)
 {
        struct nbt_name_request *req = nbt_name_refresh_send(nbtsock, io);
@@ -217,7 +218,7 @@ done:
 /**
   the async send call for a multi-server WINS refresh
 */
-struct composite_context *nbt_name_refresh_wins_send(struct nbt_name_socket *nbtsock,
+_PUBLIC_ struct composite_context *nbt_name_refresh_wins_send(struct nbt_name_socket *nbtsock,
                                                      struct nbt_name_refresh_wins *io)
 {
        struct composite_context *c;
@@ -274,7 +275,7 @@ failed:
 /*
   multi-homed WINS name refresh - recv side
 */
-NTSTATUS nbt_name_refresh_wins_recv(struct composite_context *c, TALLOC_CTX *mem_ctx,
+_PUBLIC_ NTSTATUS nbt_name_refresh_wins_recv(struct composite_context *c, TALLOC_CTX *mem_ctx,
                                     struct nbt_name_refresh_wins *io)
 {
        NTSTATUS status;
@@ -292,7 +293,7 @@ NTSTATUS nbt_name_refresh_wins_recv(struct composite_context *c, TALLOC_CTX *mem
 /*
   multi-homed WINS refresh - sync interface
 */
-NTSTATUS nbt_name_refresh_wins(struct nbt_name_socket *nbtsock,
+_PUBLIC_ NTSTATUS nbt_name_refresh_wins(struct nbt_name_socket *nbtsock,
                                TALLOC_CTX *mem_ctx,
                                struct nbt_name_refresh_wins *io)
 {
index 66675646649c14625025911eb639082031679bb4..9c5ae43d4076dd46314603f2db8b1a114106543c 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/nbt/libnbt.h"
+#include "libcli/nbt/nbt_proto.h"
 #include "libcli/composite/composite.h"
 #include "lib/socket/socket.h"
 #include "librpc/gen_ndr/ndr_nbt.h"
@@ -94,7 +95,7 @@ failed:
 /*
   wait for a registration reply
 */
-NTSTATUS nbt_name_register_recv(struct nbt_name_request *req, 
+_PUBLIC_ NTSTATUS nbt_name_register_recv(struct nbt_name_request *req, 
                                TALLOC_CTX *mem_ctx, struct nbt_name_register *io)
 {
        NTSTATUS status;
@@ -136,7 +137,7 @@ NTSTATUS nbt_name_register_recv(struct nbt_name_request *req,
 /*
   synchronous name registration request
 */
-NTSTATUS nbt_name_register(struct nbt_name_socket *nbtsock, 
+_PUBLIC_ NTSTATUS nbt_name_register(struct nbt_name_socket *nbtsock, 
                           TALLOC_CTX *mem_ctx, struct nbt_name_register *io)
 {
        struct nbt_name_request *req = nbt_name_register_send(nbtsock, io);
@@ -207,7 +208,7 @@ done:
 /*
   the async send call for a 4 stage name registration
 */
-struct composite_context *nbt_name_register_bcast_send(struct nbt_name_socket *nbtsock,
+_PUBLIC_ struct composite_context *nbt_name_register_bcast_send(struct nbt_name_socket *nbtsock,
                                                       struct nbt_name_register_bcast *io)
 {
        struct composite_context *c;
@@ -256,7 +257,7 @@ failed:
 /*
   broadcast 4 part name register - recv
 */
-NTSTATUS nbt_name_register_bcast_recv(struct composite_context *c)
+_PUBLIC_ NTSTATUS nbt_name_register_bcast_recv(struct composite_context *c)
 {
        NTSTATUS status;
        status = composite_wait(c);
@@ -355,7 +356,7 @@ done:
 /*
   the async send call for a multi-server WINS register
 */
-struct composite_context *nbt_name_register_wins_send(struct nbt_name_socket *nbtsock,
+_PUBLIC_ struct composite_context *nbt_name_register_wins_send(struct nbt_name_socket *nbtsock,
                                                      struct nbt_name_register_wins *io)
 {
        struct composite_context *c;
@@ -414,7 +415,7 @@ failed:
 /*
   multi-homed WINS name register - recv side
 */
-NTSTATUS nbt_name_register_wins_recv(struct composite_context *c, TALLOC_CTX *mem_ctx,
+_PUBLIC_ NTSTATUS nbt_name_register_wins_recv(struct composite_context *c, TALLOC_CTX *mem_ctx,
                                     struct nbt_name_register_wins *io)
 {
        NTSTATUS status;
@@ -432,7 +433,7 @@ NTSTATUS nbt_name_register_wins_recv(struct composite_context *c, TALLOC_CTX *me
 /*
   multi-homed WINS register - sync interface
 */
-NTSTATUS nbt_name_register_wins(struct nbt_name_socket *nbtsock,
+_PUBLIC_ NTSTATUS nbt_name_register_wins(struct nbt_name_socket *nbtsock,
                                TALLOC_CTX *mem_ctx,
                                struct nbt_name_register_wins *io)
 {
index d7358925161dfec1065d3f254b2df680c01c5584..ba3af417529df0355c203a54874b0d25a9bbae30 100644 (file)
 
 #include "includes.h"
 #include "libcli/nbt/libnbt.h"
+#include "libcli/nbt/nbt_proto.h"
 #include "lib/socket/socket.h"
 #include "param/param.h"
 
 /*
   send a nbt name release request
 */
-struct nbt_name_request *nbt_name_release_send(struct nbt_name_socket *nbtsock,
+_PUBLIC_ struct nbt_name_request *nbt_name_release_send(struct nbt_name_socket *nbtsock,
                                               struct nbt_name_release *io)
 {
        struct nbt_name_request *req;
@@ -84,7 +85,7 @@ failed:
 /*
   wait for a release reply
 */
-NTSTATUS nbt_name_release_recv(struct nbt_name_request *req, 
+_PUBLIC_ NTSTATUS nbt_name_release_recv(struct nbt_name_request *req, 
                               TALLOC_CTX *mem_ctx, struct nbt_name_release *io)
 {
        NTSTATUS status;
@@ -126,7 +127,7 @@ NTSTATUS nbt_name_release_recv(struct nbt_name_request *req,
 /*
   synchronous name release request
 */
-NTSTATUS nbt_name_release(struct nbt_name_socket *nbtsock, 
+_PUBLIC_ NTSTATUS nbt_name_release(struct nbt_name_socket *nbtsock, 
                           TALLOC_CTX *mem_ctx, struct nbt_name_release *io)
 {
        struct nbt_name_request *req = nbt_name_release_send(nbtsock, io);
index ae9f3f6b050fb156a82c2e47a40abc8a83d66c48..0d9073ccbb31adb72bf3690c356c515e81d1ecbb 100644 (file)
@@ -500,7 +500,7 @@ _PUBLIC_ char *nbt_name_string(TALLOC_CTX *mem_ctx, const struct nbt_name *name)
 /**
   pull a nbt name, WINS Replication uses another on wire format for nbt name
 */
-_PUBLIC_ enum ndr_err_code ndr_pull_wrepl_nbt_name(struct ndr_pull *ndr, int ndr_flags, struct nbt_name **_r)
+_PUBLIC_ enum ndr_err_code ndr_pull_wrepl_nbt_name(struct ndr_pull *ndr, int ndr_flags, const struct nbt_name **_r)
 {
        struct nbt_name *r;
        uint8_t *namebuf;
index 95a1643efc42e0068c9d7fc30f208c587573f6d5..747127980ab14ead0336bfc0e5323e03c7a9a978 100644 (file)
@@ -423,7 +423,7 @@ failed:
 /*
   send off a nbt name reply
 */
-NTSTATUS nbt_name_reply_send(struct nbt_name_socket *nbtsock, 
+_PUBLIC_ NTSTATUS nbt_name_reply_send(struct nbt_name_socket *nbtsock, 
                             struct socket_address *dest,
                             struct nbt_name_packet *request)
 {
@@ -486,7 +486,7 @@ NTSTATUS nbt_name_request_recv(struct nbt_name_request *req)
 /*
   setup a handler for incoming requests
 */
-NTSTATUS nbt_set_incoming_handler(struct nbt_name_socket *nbtsock,
+_PUBLIC_ NTSTATUS nbt_set_incoming_handler(struct nbt_name_socket *nbtsock,
                                  void (*handler)(struct nbt_name_socket *, struct nbt_name_packet *, 
                                                  struct socket_address *),
                                  void *private)
@@ -501,7 +501,7 @@ NTSTATUS nbt_set_incoming_handler(struct nbt_name_socket *nbtsock,
 /*
   turn a NBT rcode into a NTSTATUS
 */
-NTSTATUS nbt_rcode_to_ntstatus(uint8_t rcode)
+_PUBLIC_ NTSTATUS nbt_rcode_to_ntstatus(uint8_t rcode)
 {
        int i;
        struct {
index c515259ee78b4c5e22fb037a5809bc316f939a4a..157bd847d426c93f8ac6fb12882aefb1481a33b0 100644 (file)
@@ -25,7 +25,7 @@
 /***************************************************************************
  Return an error message from the last response
 ****************************************************************************/
-const char *smbcli_errstr(struct smbcli_tree *tree)
+_PUBLIC_ const char *smbcli_errstr(struct smbcli_tree *tree)
 {   
        switch (tree->session->transport->error.etype) {
        case ETYPE_SMB:
@@ -45,7 +45,7 @@ const char *smbcli_errstr(struct smbcli_tree *tree)
 
 
 /* Return the 32-bit NT status code from the last packet */
-NTSTATUS smbcli_nt_error(struct smbcli_tree *tree)
+_PUBLIC_ NTSTATUS smbcli_nt_error(struct smbcli_tree *tree)
 {
        switch (tree->session->transport->error.etype) {
        case ETYPE_SMB:
index ae4e58ae01b9392469d2649417f19186442bc34a..47ffb6dd3192ae488df8f3ed205d29a5ee163bcd 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 
 /****************************************************************************
 send an ack for an oplock break request
index 5a33d9cffc3faecf7a2194d2896acee0a7894674..ad4ca7b4718acd597aa58081cb2fdbb2891b118e 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "system/filesys.h"
 #include "param/param.h"
 
@@ -291,7 +292,7 @@ struct smbcli_request *smb_raw_exit_send(struct smbcli_session *session)
 /****************************************************************************
  Send a exit (sync interface)
 *****************************************************************************/
-NTSTATUS smb_raw_exit(struct smbcli_session *session)
+_PUBLIC_ NTSTATUS smb_raw_exit(struct smbcli_session *session)
 {
        struct smbcli_request *req = smb_raw_exit_send(session);
        return smbcli_request_simple_recv(req);
index eaa02e10472782f5dfb59938bcbcac75ea504a3d..1dcf2d1c539151a302e7ea0d5de80549ecfd2d77 100644 (file)
@@ -170,7 +170,7 @@ NTSTATUS smbcli_sock_connect(TALLOC_CTX *mem_ctx,
 /****************************************************************************
  mark the socket as dead
 ****************************************************************************/
-void smbcli_sock_dead(struct smbcli_socket *sock)
+_PUBLIC_ void smbcli_sock_dead(struct smbcli_socket *sock)
 {
        talloc_free(sock->event.fde);
        sock->event.fde = NULL;
@@ -189,7 +189,7 @@ void smbcli_sock_set_options(struct smbcli_socket *sock, const char *options)
 /****************************************************************************
 resolve a hostname and connect 
 ****************************************************************************/
-struct smbcli_socket *smbcli_sock_connect_byname(const char *host, const char **ports,
+_PUBLIC_ struct smbcli_socket *smbcli_sock_connect_byname(const char *host, const char **ports,
                                                 TALLOC_CTX *mem_ctx,
                                                 struct resolve_context *resolve_ctx,
                                                 struct event_context *event_ctx)
index 5c14e9f9b8d1f819eed9ff3afcf7ba43f15b0d15..34fb96230d53d135715585157e0db510e09d1765 100644 (file)
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "lib/socket/socket.h"
 #include "lib/util/dlinklist.h"
 #include "lib/events/events.h"
 #include "lib/stream/packet.h"
 #include "librpc/gen_ndr/ndr_nbt.h"
 #include "param/param.h"
+#include "libcli/nbt/libnbt.h"
 
 
 /*
@@ -322,7 +324,7 @@ static void idle_handler(struct event_context *ev,
   setup the idle handler for a transport
   the period is in microseconds
 */
-void smbcli_transport_idle_handler(struct smbcli_transport *transport, 
+_PUBLIC_ void smbcli_transport_idle_handler(struct smbcli_transport *transport, 
                                   void (*idle_func)(struct smbcli_transport *, void *),
                                   uint64_t period,
                                   void *private)
@@ -502,7 +504,7 @@ error:
   process some read/write requests that are pending
   return false if the socket is dead
 */
-bool smbcli_transport_process(struct smbcli_transport *transport)
+_PUBLIC_ bool smbcli_transport_process(struct smbcli_transport *transport)
 {
        NTSTATUS status;
        size_t npending;
@@ -599,7 +601,7 @@ void smbcli_transport_send(struct smbcli_request *req)
 /****************************************************************************
  Send an SMBecho (async send)
 *****************************************************************************/
-struct smbcli_request *smb_raw_echo_send(struct smbcli_transport *transport,
+_PUBLIC_ struct smbcli_request *smb_raw_echo_send(struct smbcli_transport *transport,
                                         struct smb_echo *p)
 {
        struct smbcli_request *req;
index 507bde999a3e9624f65597ce341138c632c3d107..d5075f9271dc23ebfb6216a91a729eb2555eeb8e 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/smb_composite/smb_composite.h"
 #include "param/param.h"
 
@@ -33,7 +34,7 @@
 /****************************************************************************
  Initialize the tree context
 ****************************************************************************/
-struct smbcli_tree *smbcli_tree_init(struct smbcli_session *session,
+_PUBLIC_ struct smbcli_tree *smbcli_tree_init(struct smbcli_session *session,
                                     TALLOC_CTX *parent_ctx, bool primary)
 {
        struct smbcli_tree *tree;
@@ -141,7 +142,7 @@ failed:
 /****************************************************************************
  Send a tconX (sync interface)
 ****************************************************************************/
-NTSTATUS smb_raw_tcon(struct smbcli_tree *tree, TALLOC_CTX *mem_ctx, 
+_PUBLIC_ NTSTATUS smb_raw_tcon(struct smbcli_tree *tree, TALLOC_CTX *mem_ctx, 
                      union smb_tcon *parms)
 {
        struct smbcli_request *req = smb_raw_tcon_send(tree, parms);
@@ -152,7 +153,7 @@ NTSTATUS smb_raw_tcon(struct smbcli_tree *tree, TALLOC_CTX *mem_ctx,
 /****************************************************************************
  Send a tree disconnect.
 ****************************************************************************/
-NTSTATUS smb_tree_disconnect(struct smbcli_tree *tree)
+_PUBLIC_ NTSTATUS smb_tree_disconnect(struct smbcli_tree *tree)
 {
        struct smbcli_request *req;
 
index 0578a9eab1ab6c7a20452082324ca7e3a0e1ded2..16a98ad66e5a81e8fc2ebf6af483fc668e4d70b4 100644 (file)
@@ -286,6 +286,80 @@ struct smbcli_request {
 }
 
 #include "libcli/raw/interfaces.h" 
-#include "libcli/raw/raw_proto.h"
+
+NTSTATUS smb_raw_read_recv(struct smbcli_request *req, union smb_read *parms);
+struct smbcli_request *smb_raw_read_send(struct smbcli_tree *tree, union smb_read *parms);
+NTSTATUS smb_raw_trans_recv(struct smbcli_request *req,
+                            TALLOC_CTX *mem_ctx,
+                            struct smb_trans2 *parms);
+size_t smb_raw_max_trans_data(struct smbcli_tree *tree, size_t param_size);
+struct smbcli_request *smb_raw_trans_send(struct smbcli_tree *tree, struct smb_trans2 *parms);
+NTSTATUS smbcli_request_destroy(struct smbcli_request *req);
+struct smbcli_request *smb_raw_write_send(struct smbcli_tree *tree, union smb_write *parms);
+struct smbcli_request *smb_raw_close_send(struct smbcli_tree *tree, union smb_close *parms);
+NTSTATUS smb_raw_open_recv(struct smbcli_request *req, TALLOC_CTX *mem_ctx, union smb_open *parms);
+struct smbcli_request *smb_raw_open_send(struct smbcli_tree *tree, union smb_open *parms);
+
+bool smbcli_transport_process(struct smbcli_transport *transport);
+const char *smbcli_errstr(struct smbcli_tree *tree);
+NTSTATUS smb_raw_fsinfo(struct smbcli_tree *tree, TALLOC_CTX *mem_ctx, union smb_fsinfo *fsinfo);
+NTSTATUS smb_raw_pathinfo(struct smbcli_tree *tree, TALLOC_CTX *mem_ctx, union smb_fileinfo *parms);
+NTSTATUS smb_raw_shadow_data(struct smbcli_tree *tree, TALLOC_CTX *mem_ctx, struct smb_shadow_copy *info);
+NTSTATUS smb_raw_fileinfo(struct smbcli_tree *tree, TALLOC_CTX *mem_ctx, union smb_fileinfo *parms);
+struct smbcli_tree *smbcli_tree_init(struct smbcli_session *session, TALLOC_CTX *parent_ctx, bool primary);
+NTSTATUS smb_raw_tcon(struct smbcli_tree *tree, TALLOC_CTX *mem_ctx, union smb_tcon *parms);
+void smbcli_oplock_handler(struct smbcli_transport *transport, 
+                       bool (*handler)(struct smbcli_transport *, uint16_t, uint16_t, uint8_t, void *),
+                       void *private);
+void smbcli_transport_idle_handler(struct smbcli_transport *transport, 
+                                  void (*idle_func)(struct smbcli_transport *, void *),
+                                  uint64_t period,
+                                  void *private);
+NTSTATUS smbcli_request_simple_recv(struct smbcli_request *req);
+bool smbcli_oplock_ack(struct smbcli_tree *tree, uint16_t fnum, uint16_t ack_level);
+NTSTATUS smb_raw_open(struct smbcli_tree *tree, TALLOC_CTX *mem_ctx, union smb_open *parms);
+NTSTATUS smb_raw_close(struct smbcli_tree *tree, union smb_close *parms);
+NTSTATUS smb_raw_unlink(struct smbcli_tree *tree, union smb_unlink *parms);
+NTSTATUS smb_raw_chkpath(struct smbcli_tree *tree, union smb_chkpath *parms);
+NTSTATUS smb_raw_mkdir(struct smbcli_tree *tree, union smb_mkdir *parms);
+NTSTATUS smb_raw_rmdir(struct smbcli_tree *tree, struct smb_rmdir *parms);
+NTSTATUS smb_raw_rename(struct smbcli_tree *tree, union smb_rename *parms);
+NTSTATUS smb_raw_seek(struct smbcli_tree *tree, union smb_seek *parms);
+NTSTATUS smb_raw_read(struct smbcli_tree *tree, union smb_read *parms);
+NTSTATUS smb_raw_write(struct smbcli_tree *tree, union smb_write *parms);
+NTSTATUS smb_raw_lock(struct smbcli_tree *tree, union smb_lock *parms);
+NTSTATUS smb_raw_setpathinfo(struct smbcli_tree *tree, union smb_setfileinfo *parms);
+NTSTATUS smb_raw_setfileinfo(struct smbcli_tree *tree, union smb_setfileinfo *parms);
+
+struct smbcli_request *smb_raw_changenotify_send(struct smbcli_tree *tree, union smb_notify *parms);
+NTSTATUS smb_raw_changenotify_recv(struct smbcli_request *req, TALLOC_CTX *mem_ctx, union smb_notify *parms);
+
+NTSTATUS smb_tree_disconnect(struct smbcli_tree *tree);
+NTSTATUS smbcli_nt_error(struct smbcli_tree *tree);
+NTSTATUS smb_raw_exit(struct smbcli_session *session);
+NTSTATUS smb_raw_pathinfo_recv(struct smbcli_request *req,
+                              TALLOC_CTX *mem_ctx,
+                              union smb_fileinfo *parms);
+struct smbcli_request *smb_raw_pathinfo_send(struct smbcli_tree *tree,
+                                            union smb_fileinfo *parms);
+struct smbcli_request *smb_raw_setpathinfo_send(struct smbcli_tree *tree,
+                                            union smb_setfileinfo *parms);
+struct smbcli_request *smb_raw_echo_send(struct smbcli_transport *transport,
+                                        struct smb_echo *p);
+NTSTATUS smb_raw_search_first(struct smbcli_tree *tree,
+                             TALLOC_CTX *mem_ctx,
+                             union smb_search_first *io, void *private,
+                             smbcli_search_callback callback);
+NTSTATUS smb_raw_flush(struct smbcli_tree *tree, union smb_flush *parms);
+
+NTSTATUS smb_raw_trans(struct smbcli_tree *tree,
+                      TALLOC_CTX *mem_ctx,
+                      struct smb_trans2 *parms);
+
+struct smbcli_socket *smbcli_sock_connect_byname(const char *host, const char **ports,
+                                                TALLOC_CTX *mem_ctx,
+                                                struct resolve_context *resolve_ctx,
+                                                struct event_context *event_ctx);
+void smbcli_sock_dead(struct smbcli_socket *sock);
 
 #endif /* __LIBCLI_RAW__H__ */
index 847d133173fafc1931195a4c15ba3d566e946b8c..466b94f4a9377fb8eb25a69d6edd2261ffa0158d 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "librpc/gen_ndr/ndr_security.h"
 #include "param/param.h"
 
index 725034c3a91539f3080ecdc688c8bde1142b110b..3c5c1b742bd09dfe6f465e15017021d4d311e334 100644 (file)
@@ -22,6 +22,7 @@
 #include "includes.h"
 #include "smb.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "librpc/gen_ndr/ndr_security.h"
 
 #define SETUP_REQUEST(cmd, wct, buflen) do { \
@@ -92,7 +93,7 @@ struct smbcli_request *smb_raw_rename_send(struct smbcli_tree *tree,
 /****************************************************************************
  Rename a file - sync interface
 ****************************************************************************/
-NTSTATUS smb_raw_rename(struct smbcli_tree *tree,
+_PUBLIC_ NTSTATUS smb_raw_rename(struct smbcli_tree *tree,
                        union smb_rename *parms)
 {
        struct smbcli_request *req = smb_raw_rename_send(tree, parms);
@@ -123,7 +124,7 @@ struct smbcli_request *smb_raw_unlink_send(struct smbcli_tree *tree,
 /*
   delete a file - sync interface
 */
-NTSTATUS smb_raw_unlink(struct smbcli_tree *tree,
+_PUBLIC_ NTSTATUS smb_raw_unlink(struct smbcli_tree *tree,
                        union smb_unlink *parms)
 {
        struct smbcli_request *req = smb_raw_unlink_send(tree, parms);
@@ -201,7 +202,7 @@ struct smbcli_request *smb_raw_mkdir_send(struct smbcli_tree *tree,
 /****************************************************************************
  Create a directory - sync interface
 ****************************************************************************/
-NTSTATUS smb_raw_mkdir(struct smbcli_tree *tree,
+_PUBLIC_ NTSTATUS smb_raw_mkdir(struct smbcli_tree *tree,
                       union smb_mkdir *parms)
 {
        struct smbcli_request *req = smb_raw_mkdir_send(tree, parms);
@@ -231,7 +232,7 @@ struct smbcli_request *smb_raw_rmdir_send(struct smbcli_tree *tree,
 /****************************************************************************
  Remove a directory - sync interface
 ****************************************************************************/
-NTSTATUS smb_raw_rmdir(struct smbcli_tree *tree,
+_PUBLIC_ NTSTATUS smb_raw_rmdir(struct smbcli_tree *tree,
                       struct smb_rmdir *parms)
 {
        struct smbcli_request *req = smb_raw_rmdir_send(tree, parms);
@@ -448,7 +449,7 @@ static NTSTATUS smb_raw_t2open_recv(struct smbcli_request *req, TALLOC_CTX *mem_
 /****************************************************************************
  Open a file - async send
 ****************************************************************************/
-struct smbcli_request *smb_raw_open_send(struct smbcli_tree *tree, union smb_open *parms)
+_PUBLIC_ struct smbcli_request *smb_raw_open_send(struct smbcli_tree *tree, union smb_open *parms)
 {
        int len;
        struct smbcli_request *req = NULL; 
@@ -585,7 +586,7 @@ struct smbcli_request *smb_raw_open_send(struct smbcli_tree *tree, union smb_ope
 /****************************************************************************
  Open a file - async recv
 ****************************************************************************/
-NTSTATUS smb_raw_open_recv(struct smbcli_request *req, TALLOC_CTX *mem_ctx, union smb_open *parms)
+_PUBLIC_ NTSTATUS smb_raw_open_recv(struct smbcli_request *req, TALLOC_CTX *mem_ctx, union smb_open *parms)
 {
        NTSTATUS status;
 
@@ -720,7 +721,7 @@ failed:
 /****************************************************************************
  Open a file - sync interface
 ****************************************************************************/
-NTSTATUS smb_raw_open(struct smbcli_tree *tree, TALLOC_CTX *mem_ctx, union smb_open *parms)
+_PUBLIC_ NTSTATUS smb_raw_open(struct smbcli_tree *tree, TALLOC_CTX *mem_ctx, union smb_open *parms)
 {
        struct smbcli_request *req = smb_raw_open_send(tree, parms);
        return smb_raw_open_recv(req, mem_ctx, parms);
@@ -730,7 +731,7 @@ NTSTATUS smb_raw_open(struct smbcli_tree *tree, TALLOC_CTX *mem_ctx, union smb_o
 /****************************************************************************
  Close a file - async send
 ****************************************************************************/
-struct smbcli_request *smb_raw_close_send(struct smbcli_tree *tree, union smb_close *parms)
+_PUBLIC_ struct smbcli_request *smb_raw_close_send(struct smbcli_tree *tree, union smb_close *parms)
 {
        struct smbcli_request *req = NULL; 
 
@@ -766,7 +767,7 @@ struct smbcli_request *smb_raw_close_send(struct smbcli_tree *tree, union smb_cl
 /****************************************************************************
  Close a file - sync interface
 ****************************************************************************/
-NTSTATUS smb_raw_close(struct smbcli_tree *tree, union smb_close *parms)
+_PUBLIC_ NTSTATUS smb_raw_close(struct smbcli_tree *tree, union smb_close *parms)
 {
        struct smbcli_request *req = smb_raw_close_send(tree, parms);
        return smbcli_request_simple_recv(req);
@@ -843,7 +844,7 @@ struct smbcli_request *smb_raw_lock_send(struct smbcli_tree *tree, union smb_loc
 /****************************************************************************
  Locking calls - sync interface
 ****************************************************************************/
-NTSTATUS smb_raw_lock(struct smbcli_tree *tree, union smb_lock *parms)
+_PUBLIC_ NTSTATUS smb_raw_lock(struct smbcli_tree *tree, union smb_lock *parms)
 {
        struct smbcli_request *req = smb_raw_lock_send(tree, parms);
        return smbcli_request_simple_recv(req);
@@ -913,7 +914,7 @@ struct smbcli_request *smb_raw_flush_send(struct smbcli_tree *tree, union smb_fl
 /****************************************************************************
  flush a file - sync interface
 ****************************************************************************/
-NTSTATUS smb_raw_flush(struct smbcli_tree *tree, union smb_flush *parms)
+_PUBLIC_ NTSTATUS smb_raw_flush(struct smbcli_tree *tree, union smb_flush *parms)
 {
        struct smbcli_request *req = smb_raw_flush_send(tree, parms);
        return smbcli_request_simple_recv(req);
@@ -962,7 +963,7 @@ failed:
 /*
   seek a file - sync interface
 */
-NTSTATUS smb_raw_seek(struct smbcli_tree *tree,
+_PUBLIC_ NTSTATUS smb_raw_seek(struct smbcli_tree *tree,
                      union smb_seek *parms)
 {
        struct smbcli_request *req = smb_raw_seek_send(tree, parms);
index ed5475e9265c261acc2cc7f8be84f2788f6132e6..71900be49cde5ccb5a29f6695f876d68706260a0 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "librpc/gen_ndr/ndr_security.h"
 #include "param/param.h"
 
@@ -711,7 +712,7 @@ NTSTATUS smb_raw_fileinfo_recv(struct smbcli_request *req,
 /****************************************************************************
  Query file info (sync interface)
 ****************************************************************************/
-NTSTATUS smb_raw_fileinfo(struct smbcli_tree *tree,
+_PUBLIC_ NTSTATUS smb_raw_fileinfo(struct smbcli_tree *tree,
                          TALLOC_CTX *mem_ctx,
                          union smb_fileinfo *parms)
 {
@@ -722,7 +723,7 @@ NTSTATUS smb_raw_fileinfo(struct smbcli_tree *tree,
 /****************************************************************************
  Query path info (async send)
 ****************************************************************************/
-struct smbcli_request *smb_raw_pathinfo_send(struct smbcli_tree *tree,
+_PUBLIC_ struct smbcli_request *smb_raw_pathinfo_send(struct smbcli_tree *tree,
                                             union smb_fileinfo *parms)
 {
        DATA_BLOB data;
@@ -756,7 +757,7 @@ struct smbcli_request *smb_raw_pathinfo_send(struct smbcli_tree *tree,
 /****************************************************************************
  Query path info (async recv)
 ****************************************************************************/
-NTSTATUS smb_raw_pathinfo_recv(struct smbcli_request *req,
+_PUBLIC_ NTSTATUS smb_raw_pathinfo_recv(struct smbcli_request *req,
                               TALLOC_CTX *mem_ctx,
                               union smb_fileinfo *parms)
 {
@@ -767,7 +768,7 @@ NTSTATUS smb_raw_pathinfo_recv(struct smbcli_request *req,
 /****************************************************************************
  Query path info (sync interface)
 ****************************************************************************/
-NTSTATUS smb_raw_pathinfo(struct smbcli_tree *tree,
+_PUBLIC_ NTSTATUS smb_raw_pathinfo(struct smbcli_tree *tree,
                          TALLOC_CTX *mem_ctx,
                          union smb_fileinfo *parms)
 {
index bfb5db828eb7ff1c6a2aeff4928bef62b2e2eeaa..43a0919e382d0c640e959c9f8511f1cefc5bee51 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "librpc/gen_ndr/ndr_misc.h"
 
 /****************************************************************************
@@ -326,7 +327,7 @@ failed:
 /****************************************************************************
  Query FSInfo raw interface (sync interface)
 ****************************************************************************/
-NTSTATUS smb_raw_fsinfo(struct smbcli_tree *tree, 
+_PUBLIC_ NTSTATUS smb_raw_fsinfo(struct smbcli_tree *tree, 
                        TALLOC_CTX *mem_ctx, 
                        union smb_fsinfo *fsinfo)
 {
index 957e554c6ba14ab90398d9fc6bdd6e3d0b5b24c5..77c7b03f152aa21a1baadfe66a16ce4a3cbbf223 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 
 #define SETUP_REQUEST(cmd, wct, buflen) do { \
        req = smbcli_request_setup(tree, cmd, wct, buflen); \
@@ -163,7 +164,7 @@ NTSTATUS smb_raw_ioctl_recv(struct smbcli_request *req,
 /* 
    send a raw ioctl - sync interface
 */
-_PUBLIC_ NTSTATUS smb_raw_ioctl(struct smbcli_tree *tree, 
+NTSTATUS smb_raw_ioctl(struct smbcli_tree *tree, 
                TALLOC_CTX *mem_ctx, union smb_ioctl *parms)
 {
        struct smbcli_request *req;
index 6c16935f214c282a5bbd9c423d9906c7ea91f5c9..f0de4b48bde7d99d2f6843a45ed09aae7d1e1c1f 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "system/time.h"
 #include "param/param.h"
 
index 91a12a86189005d54658693b46ddb67e0ad277eb..bf7578d7fccbff861418f2b6d0da647833fe1f41 100644 (file)
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "lib/util/dlinklist.h"
 
 /****************************************************************************
 change notify (async send)
 ****************************************************************************/
-struct smbcli_request *smb_raw_changenotify_send(struct smbcli_tree *tree, union smb_notify *parms)
+_PUBLIC_ struct smbcli_request *smb_raw_changenotify_send(struct smbcli_tree *tree, union smb_notify *parms)
 {
        struct smb_nttrans nt;
        uint8_t setup[8];
@@ -51,7 +52,7 @@ struct smbcli_request *smb_raw_changenotify_send(struct smbcli_tree *tree, union
 /****************************************************************************
 change notify (async recv)
 ****************************************************************************/
-NTSTATUS smb_raw_changenotify_recv(struct smbcli_request *req, 
+_PUBLIC_ NTSTATUS smb_raw_changenotify_recv(struct smbcli_request *req, 
                                   TALLOC_CTX *mem_ctx, union smb_notify *parms)
 {
        struct smb_nttrans nt;
index 9e4edaf99c9c49fabad2f9ae1abf043f97f2351b..a8c79963105c952e8da5cc341979287eb8296758 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 
 #define SETUP_REQUEST(cmd, wct, buflen) do { \
        req = smbcli_request_setup(tree, cmd, wct, buflen); \
@@ -29,7 +30,7 @@
 /****************************************************************************
  low level read operation (async send)
 ****************************************************************************/
-struct smbcli_request *smb_raw_read_send(struct smbcli_tree *tree, union smb_read *parms)
+_PUBLIC_ struct smbcli_request *smb_raw_read_send(struct smbcli_tree *tree, union smb_read *parms)
 {
        bool bigoffset = false;
        struct smbcli_request *req = NULL; 
@@ -115,7 +116,7 @@ struct smbcli_request *smb_raw_read_send(struct smbcli_tree *tree, union smb_rea
 /****************************************************************************
  low level read operation (async recv)
 ****************************************************************************/
-NTSTATUS smb_raw_read_recv(struct smbcli_request *req, union smb_read *parms)
+_PUBLIC_ NTSTATUS smb_raw_read_recv(struct smbcli_request *req, union smb_read *parms)
 {
        if (!smbcli_request_receive(req) ||
            smbcli_request_is_error(req)) {
@@ -197,7 +198,7 @@ failed:
 /****************************************************************************
  low level read operation (sync interface)
 ****************************************************************************/
-NTSTATUS smb_raw_read(struct smbcli_tree *tree, union smb_read *parms)
+_PUBLIC_ NTSTATUS smb_raw_read(struct smbcli_tree *tree, union smb_read *parms)
 {
        struct smbcli_request *req = smb_raw_read_send(tree, parms);
        return smb_raw_read_recv(req, parms);
@@ -207,7 +208,7 @@ NTSTATUS smb_raw_read(struct smbcli_tree *tree, union smb_read *parms)
 /****************************************************************************
  raw write interface (async send)
 ****************************************************************************/
-struct smbcli_request *smb_raw_write_send(struct smbcli_tree *tree, union smb_write *parms)
+_PUBLIC_ struct smbcli_request *smb_raw_write_send(struct smbcli_tree *tree, union smb_write *parms)
 {
        bool bigoffset = false;
        struct smbcli_request *req = NULL; 
@@ -341,7 +342,7 @@ failed:
 /****************************************************************************
  raw write interface (sync interface)
 ****************************************************************************/
-NTSTATUS smb_raw_write(struct smbcli_tree *tree, union smb_write *parms)
+_PUBLIC_ NTSTATUS smb_raw_write(struct smbcli_tree *tree, union smb_write *parms)
 {
        struct smbcli_request *req = smb_raw_write_send(tree, parms);
        return smb_raw_write_recv(req, parms);
index 355d092583bf869b092bb56ca35b1e75d1773cb1..a42c71054718b1fb67268cbb31beda22498ba8e9 100644 (file)
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "lib/util/dlinklist.h"
 #include "lib/events/events.h"
 #include "param/param.h"
+#include "librpc/ndr/libndr.h"
+#include "librpc/gen_ndr/ndr_misc.h"
 
 /* we over allocate the data buffer to prevent too many realloc calls */
 #define REQ_OVER_ALLOCATION 0
@@ -49,7 +52,7 @@ void smb_setup_bufinfo(struct smbcli_request *req)
 
 
 /* destroy a request structure and return final status */
-NTSTATUS smbcli_request_destroy(struct smbcli_request *req)
+_PUBLIC_ NTSTATUS smbcli_request_destroy(struct smbcli_request *req)
 {
        NTSTATUS status;
 
@@ -405,7 +408,7 @@ bool smbcli_handle_oplock_break(struct smbcli_transport *transport, uint_t len,
   wait for a reply to be received for a packet that just returns an error
   code and nothing more
 */
-NTSTATUS smbcli_request_simple_recv(struct smbcli_request *req)
+_PUBLIC_ NTSTATUS smbcli_request_simple_recv(struct smbcli_request *req)
 {
        (void) smbcli_request_receive(req);
        return smbcli_request_destroy(req);
index fb2b09467c48c90e3631c9da583f2cee8bbb23c8..99141574e2003ccffa0bdc961e16359654367da1 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 
 /****************************************************************************
  Old style search backend - process output.
@@ -718,7 +719,7 @@ static NTSTATUS smb_raw_t2search_backend(struct smbcli_tree *tree,
 
 /* Implements trans2findfirst2 and old search
  */
-NTSTATUS smb_raw_search_first(struct smbcli_tree *tree,
+_PUBLIC_ NTSTATUS smb_raw_search_first(struct smbcli_tree *tree,
                              TALLOC_CTX *mem_ctx,
                              union smb_search_first *io, void *private,
                              smbcli_search_callback callback)
index f1e4ee36863f241d2091215135fc5950f5dc43ef..16052e87086eaa5b9f86b9ecc46d51d4f4c0ab5d 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "librpc/gen_ndr/ndr_security.h"
 
 
@@ -409,7 +410,7 @@ struct smbcli_request *smb_raw_setfileinfo_send(struct smbcli_tree *tree,
 /****************************************************************************
  Set file info (async send)
 ****************************************************************************/
-NTSTATUS smb_raw_setfileinfo(struct smbcli_tree *tree,
+_PUBLIC_ NTSTATUS smb_raw_setfileinfo(struct smbcli_tree *tree,
                             union smb_setfileinfo *parms)
 {
        struct smbcli_request *req = smb_raw_setfileinfo_send(tree, parms);
@@ -420,7 +421,7 @@ NTSTATUS smb_raw_setfileinfo(struct smbcli_tree *tree,
 /****************************************************************************
  Set path info (async send)
 ****************************************************************************/
-struct smbcli_request *smb_raw_setpathinfo_send(struct smbcli_tree *tree,
+_PUBLIC_ struct smbcli_request *smb_raw_setpathinfo_send(struct smbcli_tree *tree,
                                             union smb_setfileinfo *parms)
 {
        DATA_BLOB blob;
@@ -456,7 +457,7 @@ struct smbcli_request *smb_raw_setpathinfo_send(struct smbcli_tree *tree,
 /****************************************************************************
  Set path info (sync interface)
 ****************************************************************************/
-NTSTATUS smb_raw_setpathinfo(struct smbcli_tree *tree,
+_PUBLIC_ NTSTATUS smb_raw_setpathinfo(struct smbcli_tree *tree,
                             union smb_setfileinfo *parms)
 {
        struct smbcli_request *req = smb_raw_setpathinfo_send(tree, parms);
index 4c58c91383534a3737f17bd0e6a669d33e8bd4f1..b318c3e0256bedc88d014730a1934141b6c9d305 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/raw/ioctl.h"
 
 /* 
index 53670d22a324a202ca18ee75e439be97b978e752..29881afd2bc2ff7be350842ef36304a50b63c9e9 100644 (file)
@@ -21,6 +21,7 @@
 #include "includes.h"
 #include "lib/util/dlinklist.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 
 #define TORTURE_TRANS_DATA 0
 
@@ -192,7 +193,7 @@ failed:
        return smbcli_request_destroy(req);
 }
 
-NTSTATUS smb_raw_trans_recv(struct smbcli_request *req,
+_PUBLIC_ NTSTATUS smb_raw_trans_recv(struct smbcli_request *req,
                             TALLOC_CTX *mem_ctx,
                             struct smb_trans2 *parms)
 {
@@ -365,7 +366,7 @@ struct smbcli_request *smb_raw_trans_send_backend(struct smbcli_tree *tree,
   trans/trans2 raw async interface - only BLOBs used in this interface.
   note that this doesn't yet support multi-part requests
 */
-struct smbcli_request *smb_raw_trans_send(struct smbcli_tree *tree,
+_PUBLIC_ struct smbcli_request *smb_raw_trans_send(struct smbcli_tree *tree,
                                       struct smb_trans2 *parms)
 {
        return smb_raw_trans_send_backend(tree, parms, SMBtrans);
@@ -394,7 +395,7 @@ NTSTATUS smb_raw_trans2(struct smbcli_tree *tree,
 /*
   trans synchronous blob interface
 */
-NTSTATUS smb_raw_trans(struct smbcli_tree *tree,
+_PUBLIC_ NTSTATUS smb_raw_trans(struct smbcli_tree *tree,
                       TALLOC_CTX *mem_ctx,
                       struct smb_trans2 *parms)
 {
@@ -631,7 +632,7 @@ NTSTATUS smb_raw_nttrans(struct smbcli_tree *tree,
   TODO: we only need to avoid multi-part replies because the
   multi-part trans receive code is broken.
 */
-size_t smb_raw_max_trans_data(struct smbcli_tree *tree, size_t param_size)
+_PUBLIC_ size_t smb_raw_max_trans_data(struct smbcli_tree *tree, size_t param_size)
 {
        return tree->session->transport->negotiate.max_xmit - (70 + param_size);
 }
index 4acfb9d16df7635e16cee938652bb67b323de8e5..97bb688d1a4cd93c0bb8c48db3f62b60525f3173 100644 (file)
@@ -22,6 +22,7 @@
 #include "includes.h"
 #include "smb.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "lib/crypto/crypto.h"
 #include "param/param.h"
 
index c7f2a093113acfb09e12fef1ea564cf4176dcd03..46ef6186b8da303fdc08d02935aeb60d88d421b8 100644 (file)
@@ -26,4 +26,6 @@ enum security_user_level {
        SECURITY_SYSTEM
 };
 
+struct auth_session_info;
+
 #include "libcli/security/proto.h"
index 04c0c85499280cfd416590607a2cad69c1a01691..4e6f33095f6828a9236220b91158407e58353dd8 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
 
index 85ddafc031fcdab08fa114804ec1ecb030f1046e..d68b85ad540fd3684380c1e94bc831cfe17e6ff3 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
 #include "libcli/composite/composite.h"
index cca83a040c5a2cb931be396df3429bbf4b27def1..999c10ab085c44b37c5146e41bf77fd08435eacc 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
 
index 6d0a9c80726ce2ab9713000f6674c9452063c24e..6b4902a026c6c2e49dc0e6bbcf5056814fec0579 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
 
index e9f47140f50322c1369fcc22e43539e0fef40b15..b462bab1debd20bf9d81a1501942eb5e2443749e 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
 
index 6b879e2add18caa12bdc6970a5cd9d4b823dbb9a..c1f0cf0b2424d40cac0ba9033dfbd4e5bd890a16 100644 (file)
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
+#include "librpc/ndr/libndr.h"
 
 /*
   send a negprot request
index e7c38a27f9559b219f62bd9415ed1792d91e832c..096d790a31f248248b656ac5273780a899699d7a 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
 
index a6e22d9a6820018dda0eb534c3445ec2c2490faa..69c0f45b63a3bc39be09afc1e31bb3fbf8f249d1 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
 
index 1d601fdbfe847466d8f3eddf8f617f842a61c93f..af19fcb0a9cbd0489d853f80a4097fa09cc1f5a3 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
 #include "lib/socket/socket.h"
index 0fda8c4d653a3ff73336a00cd55190ac62537a30..1f06b96e75f9a7ad2f2a1337be6824da1589eade 100644 (file)
@@ -1,5 +1,6 @@
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/composite/composite.h"
 #include "libcli/security/security.h"
 #include "libcli/smb_composite/smb_composite.h"
index 22573442a272eae3c3f6bfa5f707834fb0dbf4e8..c44c62f86899f877db5178b82c60d838c0c3894b 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/composite/composite.h"
 #include "libcli/smb_composite/smb_composite.h"
 #include "lib/events/events.h"
index e4dd4436ba2e3fef86f99b68902adc9612f24979..2ec13df9b6bf79edf87e363fa8675d83fcdcd647 100644 (file)
@@ -4,6 +4,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/composite/composite.h"
 #include "libcli/smb_composite/smb_composite.h"
 #include "param/param.h"
index b94be9e9b17fee2aeb3b635f42bab3ab114883c0..f02ca46f06f35db5027b11d895df2f2d2989cf59 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/composite/composite.h"
 #include "libcli/smb_composite/smb_composite.h"
 
index 75a2a579a26fd2e3db676ad99012a8e89fdac113..1427fe525b4dbe185c9d11f8c3f146a9e4c3f21a 100644 (file)
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/composite/composite.h"
 #include "libcli/smb_composite/smb_composite.h"
+#include "libcli/smb_composite/proto.h"
 #include "libcli/auth/libcli_auth.h"
 #include "auth/auth.h"
 #include "auth/gensec/gensec.h"
index e054948fbe7f66fab3e0bad8b8c16e4a3ba4c15c..84255448a0860c47c81b4082ca6790eb9b8bb93c 100644 (file)
@@ -22,7 +22,6 @@
 #include "libcli/util/werror.h"
 #include "libcli/util/doserr.h"
 #include "libcli/util/ntstatus.h"
-#include "librpc/ndr/libndr.h"
 
 /** NT error on DOS connection! (NT_STATUS_OK) */
 bool ntstatus_dos_equal(NTSTATUS status1, NTSTATUS status2);
@@ -47,6 +46,8 @@ WERROR ntstatus_to_werror(NTSTATUS error);
 *********************************************************************/
 NTSTATUS map_nt_error_from_unix(int unix_error);
 
+enum ndr_err_code;
+
 /*********************************************************************
  Map an NT error code from a NDR error code.
 *********************************************************************/
index b8458d4bf3f0aec2aedaf9d0a24d40d5acce1fc9..2257955c76cbc431639b028e711211d1d7b7adc5 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "param/param.h"
+#include "librpc/ndr/libndr.h"
 
 /* This map was extracted by the ERRMAPEXTRACT smbtorture command. 
    The setup was a Samba HEAD (2002-01-03) PDC and an Win2k member 
diff --git a/source4/libcli/wbclient/config.mk b/source4/libcli/wbclient/config.mk
new file mode 100644 (file)
index 0000000..9384a17
--- /dev/null
@@ -0,0 +1,4 @@
+[SUBSYSTEM::LIBWBCLIENT]
+OBJ_FILES = wbclient.o
+PUBLIC_DEPENDENCIES = LIBSAMBA-ERRORS LIBEVENTS
+PRIVATE_DEPENDENCIES = NDR_WINBIND MESSAGING
diff --git a/source4/libcli/wbclient/wbclient.c b/source4/libcli/wbclient/wbclient.c
new file mode 100644 (file)
index 0000000..1b2d314
--- /dev/null
@@ -0,0 +1,210 @@
+/*
+   Unix SMB/CIFS implementation.
+
+   Winbind client library.
+
+   Copyright (C) 2008 Kai Blin  <kai@samba.org>
+
+   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 "libcli/wbclient/wbclient.h"
+
+/**
+ * Get the server_id of the winbind task.
+ *
+ * \param[in] msg_ctx message context to use
+ * \param[in] mem_ctx talloc context to use
+ * \param[out] ids array of server_id structs containing the winbind id
+ * \return NT_STATUS_OK on success, NT_STATUS_INTERNAL_ERROR on failure
+ */
+static NTSTATUS get_server_id(struct messaging_context *msg_ctx,
+                             TALLOC_CTX *mem_ctx, struct server_id **ids)
+{
+       *ids = irpc_servers_byname(msg_ctx, mem_ctx, "winbind_server");
+       if (*ids == NULL || (*ids)[0].id == 0) {
+               DEBUG(0, ("Geting the winbind server ID failed.\n"));
+               return NT_STATUS_INTERNAL_ERROR;
+       }
+       return NT_STATUS_OK;
+}
+
+/**
+ * Initialize the wbclient context, talloc_free() when done.
+ *
+ * \param mem_ctx talloc context to allocate memory from
+ * \param msg_ctx message context to use
+ * \param
+ */
+struct wbc_context *wbc_init(TALLOC_CTX *mem_ctx,
+                            struct messaging_context *msg_ctx,
+                            struct event_context *event_ctx)
+{
+       struct wbc_context *ctx;
+       NTSTATUS status;
+
+       ctx = talloc(mem_ctx, struct wbc_context);
+       if (ctx == NULL) return NULL;
+
+       status = get_server_id(msg_ctx, mem_ctx, &ctx->ids);
+       if (!NT_STATUS_IS_OK(status)) {
+               talloc_free(ctx);
+               return NULL;
+       }
+
+       ctx->msg_ctx = msg_ctx;
+       ctx->event_ctx = event_ctx;
+
+       return ctx;
+}
+
+struct wbc_idmap_state {
+       struct composite_context *ctx;
+       struct winbind_get_idmap *req;
+       struct irpc_request *irpc_req;
+       struct id_mapping *ids;
+};
+
+static void sids_to_xids_recv_ids(struct irpc_request *req);
+
+struct composite_context *wbc_sids_to_xids_send(struct wbc_context *wbc_ctx,
+                                               TALLOC_CTX *mem_ctx,
+                                               uint32_t count,
+                                               struct id_mapping *ids)
+{
+       struct composite_context *ctx;
+       struct wbc_idmap_state *state;
+
+       DEBUG(5, ("wbc_sids_to_xids called\n"));
+
+       ctx = composite_create(mem_ctx, wbc_ctx->event_ctx);
+       if (ctx == NULL) return NULL;
+
+       state = talloc(ctx, struct wbc_idmap_state);
+       if (composite_nomem(state, ctx)) return ctx;
+       ctx->private_data = state;
+
+       state->req = talloc(state, struct winbind_get_idmap);
+       if (composite_nomem(state->req, ctx)) return ctx;
+
+       state->req->in.count = count;
+       state->req->in.level = WINBIND_IDMAP_LEVEL_SIDS_TO_XIDS;
+       state->req->in.ids = ids;
+       state->ctx = ctx;
+
+       state->irpc_req = IRPC_CALL_SEND(wbc_ctx->msg_ctx, wbc_ctx->ids[0],
+                                        winbind, WINBIND_GET_IDMAP, state->req,
+                                        state);
+       if (composite_nomem(state->irpc_req, ctx)) return ctx;
+
+       composite_continue_irpc(ctx, state->irpc_req, sids_to_xids_recv_ids,
+                               state);
+       return ctx;
+}
+
+static void sids_to_xids_recv_ids(struct irpc_request *req)
+{
+       struct wbc_idmap_state *state = talloc_get_type_abort(
+                                                       req->async.private,
+                                                       struct wbc_idmap_state);
+
+       state->ctx->status = irpc_call_recv(state->irpc_req);
+       if (!composite_is_ok(state->ctx)) return;
+
+       state->ids = state->req->out.ids;
+       composite_done(state->ctx);
+}
+
+NTSTATUS wbc_sids_to_xids_recv(struct composite_context *ctx,
+                              struct id_mapping **ids)
+{
+       NTSTATUS status = composite_wait(ctx);
+               DEBUG(5, ("wbc_sids_to_xids_recv called\n"));
+       if (NT_STATUS_IS_OK(status)) {
+               struct wbc_idmap_state *state = talloc_get_type_abort(
+                                                       ctx->private_data,
+                                                       struct wbc_idmap_state);
+               *ids = state->ids;
+       }
+
+       return status;
+}
+
+static void xids_to_sids_recv_ids(struct irpc_request *req);
+
+struct composite_context *wbc_xids_to_sids_send(struct wbc_context *wbc_ctx,
+                                               TALLOC_CTX *mem_ctx,
+                                               uint32_t count,
+                                               struct id_mapping *ids)
+{
+       struct composite_context *ctx;
+       struct wbc_idmap_state *state;
+
+       DEBUG(5, ("wbc_xids_to_sids called\n"));
+
+       ctx = composite_create(mem_ctx, wbc_ctx->event_ctx);
+       if (ctx == NULL) return NULL;
+
+       state = talloc(ctx, struct wbc_idmap_state);
+       if (composite_nomem(state, ctx)) return ctx;
+       ctx->private_data = state;
+
+       state->req = talloc(state, struct winbind_get_idmap);
+       if (composite_nomem(state->req, ctx)) return ctx;
+
+       state->req->in.count = count;
+       state->req->in.level = WINBIND_IDMAP_LEVEL_XIDS_TO_SIDS;
+       state->req->in.ids = ids;
+       state->ctx = ctx;
+
+       state->irpc_req = IRPC_CALL_SEND(wbc_ctx->msg_ctx, wbc_ctx->ids[0],
+                                        winbind, WINBIND_GET_IDMAP, state->req,
+                                        state);
+       if (composite_nomem(state->irpc_req, ctx)) return ctx;
+
+       composite_continue_irpc(ctx, state->irpc_req, xids_to_sids_recv_ids,
+                       state);
+
+       return ctx;
+}
+
+static void xids_to_sids_recv_ids(struct irpc_request *req)
+{
+       struct wbc_idmap_state *state = talloc_get_type_abort(
+                                                       req->async.private,
+                                                       struct wbc_idmap_state);
+
+       state->ctx->status = irpc_call_recv(state->irpc_req);
+       if (!composite_is_ok(state->ctx)) return;
+
+       state->ids = state->req->out.ids;
+       composite_done(state->ctx);
+}
+
+NTSTATUS wbc_xids_to_sids_recv(struct composite_context *ctx,
+                              struct id_mapping **ids)
+{
+       NTSTATUS status = composite_wait(ctx);
+               DEBUG(5, ("wbc_xids_to_sids_recv called\n"));
+       if (NT_STATUS_IS_OK(status)) {
+               struct wbc_idmap_state *state = talloc_get_type_abort(
+                                                       ctx->private_data,
+                                                       struct wbc_idmap_state);
+               *ids = state->ids;
+       }
+
+       return status;
+}
+
diff --git a/source4/libcli/wbclient/wbclient.h b/source4/libcli/wbclient/wbclient.h
new file mode 100644 (file)
index 0000000..099abaa
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+   Unix SMB/CIFS implementation.
+
+   Winbind client library.
+
+   Copyright (C) 2008 Kai Blin  <kai@samba.org>
+
+   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 "lib/messaging/irpc.h"
+#include "libcli/composite/composite.h"
+#include "librpc/gen_ndr/ndr_winbind.h"
+
+struct wbc_context {
+       struct messaging_context *msg_ctx;
+       struct event_context *event_ctx;
+       struct server_id *ids;
+};
+
+struct wbc_context *wbc_init(TALLOC_CTX *mem_ctx,
+                            struct messaging_context *msg_ctx,
+                            struct event_context *event_ctx);
+
+struct composite_context *wbc_sids_to_xids_send(struct wbc_context *wbc_ctx,
+                                               TALLOC_CTX *mem_ctx,
+                                               uint32_t count,
+                                               struct id_mapping *ids);
+
+NTSTATUS wbc_sids_to_xids_recv(struct composite_context *ctx,
+                              struct id_mapping **ids);
+
+struct composite_context *wbc_xids_to_sids_send(struct wbc_context *wbc_ctx,
+                                               TALLOC_CTX *mem_ctx,
+                                               uint32_t count,
+                                               struct id_mapping *ids);
+
+NTSTATUS wbc_xids_to_sids_recv(struct composite_context *ctx,
+                              struct id_mapping **ids);
+
index f7ff07a7bc26cdd2adbb90180ac9947346579ffb..1f4ab0621fe6de98e8d3fd43ed7548e1f39929d8 100644 (file)
@@ -10,12 +10,6 @@ LIBSAMBA-NET_OBJ_FILES = $(addprefix libnet/, \
        libnet_lookup.o libnet_domain.o userinfo.o groupinfo.o userman.o \
        groupman.o prereq_domain.o)
 
-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)
-
-
 [PYTHON::swig_net]
 PRIVATE_DEPENDENCIES = LIBSAMBA-NET
 SWIG_FILE = net.i
index 5da194c36edf2d2f644f997a0efbce144e6c87a4..3156b1f32f560a377f8c4e20ea83e5d37666621a 100644 (file)
@@ -5,7 +5,7 @@
    
    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 2 of the License, or
+   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,
index 50cc1145d2491290260a5766cafa02d4bb06fdf0..28cbba2933e87ebd55f6e3cd1af40f235e149caf 100644 (file)
@@ -23,6 +23,7 @@
 #include "libcli/libcli.h"
 #include "libcli/composite/composite.h"
 #include "librpc/rpc/dcerpc.h"
+#include "librpc/rpc/dcerpc_proto.h"
 #include "librpc/gen_ndr/ndr_lsa_c.h"
 #include "librpc/gen_ndr/ndr_samr.h"
 
index bb81888d1276365a98fbbc8f141507ca4f4e7858..cb679d20bb58684134a0dc42fb61900ddb195f12 100644 (file)
@@ -3,7 +3,7 @@
 [LIBRARY::LIBNDR]
 PRIVATE_PROTO_HEADER = ndr/libndr_proto.h
 PUBLIC_DEPENDENCIES = LIBSAMBA-ERRORS LIBTALLOC LIBSAMBA-UTIL CHARSET \
-                                         LIBSAMBA-CONFIG
+                                         LIBSAMBA-HOSTCONFIG
 
 LIBNDR_OBJ_FILES = $(addprefix librpc/ndr/, ndr.o ndr_basic.o ndr_string.o uuid.o)
 
@@ -21,7 +21,7 @@ PUBLIC_HEADERS += librpc/ndr/libndr.h
 [BINARY::ndrdump]
 INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG \
+               LIBSAMBA-HOSTCONFIG \
                LIBSAMBA-UTIL \
                LIBPOPT \
                POPT_SAMBA \
@@ -457,10 +457,13 @@ RPC_NDR_SVCCTL_OBJ_FILES = librpc/gen_ndr/ndr_svcctl_c.o
 
 PUBLIC_HEADERS += librpc/gen_ndr/ndr_svcctl_c.h
 
-[SUBSYSTEM::dcerpc_atsvc]
+[LIBRARY::dcerpc_atsvc]
 PUBLIC_DEPENDENCIES = dcerpc NDR_ATSVC
+VERSION = 0.0.1
+SO_VERSION = 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
 
@@ -504,10 +507,10 @@ PUBLIC_DEPENDENCIES = dcerpc NDR_INITSHUTDOWN
 
 RPC_NDR_INITSHUTDOWN_OBJ_FILES = librpc/gen_ndr/ndr_initshutdown_c.o
 
-[SUBSYSTEM::dcerpc_mgmt]
+[SUBSYSTEM::RPC_NDR_MGMT]
 PRIVATE_DEPENDENCIES = NDR_MGMT
 
-dcerpc_mgmt_OBJ_FILES = librpc/gen_ndr/ndr_mgmt_c.o
+RPC_NDR_MGMT_OBJ_FILES = librpc/gen_ndr/ndr_mgmt_c.o
 
 [SUBSYSTEM::RPC_NDR_PROTECTED_STORAGE]
 PUBLIC_DEPENDENCIES = dcerpc NDR_PROTECTED_STORAGE
@@ -574,6 +577,7 @@ PRIVATE_DEPENDENCIES = \
                samba-socket LIBCLI_RESOLVE LIBCLI_SMB LIBCLI_SMB2 \
                LIBNDR NDR_DCERPC RPC_NDR_EPMAPPER \
                NDR_SCHANNEL RPC_NDR_NETLOGON \
+               RPC_NDR_MGMT \
                gensec LIBCLI_AUTH LIBCLI_RAW \
                LP_RESOLVE
 PUBLIC_DEPENDENCIES = CREDENTIALS 
@@ -709,7 +713,7 @@ 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-CONFIG dcerpc_samr RPC_NDR_LSA DYNCONFIG
+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
 
@@ -766,6 +770,21 @@ PRIVATE_DEPENDENCIES = RPC_NDR_WKSSVC
 
 python_wkssvc_OBJ_FILES = librpc/gen_ndr/py_wkssvc.o
 
+[PYTHON::python_dfs]
+PRIVATE_DEPENDENCIES = RPC_NDR_DFS
+
+python_dfs_OBJ_FILES = gen_ndr/py_dfs.o
+
+[PYTHON::python_unixinfo]
+PRIVATE_DEPENDENCIES = RPC_NDR_UNIXINFO
+
+python_unixinfo_OBJ_FILES = gen_ndr/py_unixinfo.o
+
+[PYTHON::python_drsuapi]
+PRIVATE_DEPENDENCIES = RPC_NDR_DRSUAPI
+
+python_drsuapi_OBJ_FILES = gen_ndr/py_drsuapi.o
+
 [PYTHON::python_dcerpc_security]
 
 python_dcerpc_security_OBJ_FILES = librpc/gen_ndr/py_security.o
diff --git a/source4/librpc/dcerpc_atsvc.pc.in b/source4/librpc/dcerpc_atsvc.pc.in
new file mode 100644 (file)
index 0000000..060485c
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: dcerpc_atsvc
+Description: DCE/RPC client library - ATSVC
+Requires.private: dcerpc ndr
+Version: 0.0.1
+Libs: -L${libdir} -ldcerpc_atsvc
+Cflags: -I${includedir}  -DHAVE_IMMEDIATE_STRUCTURES=1
index 9b9399ffee2103d0721a1bef402a72dc2b6048df..1b059868ff6b3ce0f53883665f5d2fbc3a67b884 100644 (file)
@@ -5,19 +5,19 @@
        helpstring("Audio Server")
 ] interface audiosrv
 {
-       void audiosrv_CreatezoneFactoriesList();
-       void audiosrv_CreateGfxFactoriesList();
-       void audiosrv_CreateGfxList();
-       void audiosrv_RemoveGfx();
-       void audiosrv_AddGfx();
-       void audiosrv_ModifyGfx();
-       void audiosrv_OpenGfx();
-       void audiosrv_Logon();
-       void audiosrv_Logoff();
-       void audiosrv_RegisterSessionNotificationEvent();
-       void audiosrv_UnregisterSessionNotificationEvent();
-       void audiosrv_SessionConnectState();
-       void audiosrv_DriverOpenDrvRegKey();
-       void audiosrv_AdvisePreferredDeviceChange();
-       void audiosrv_GetPnpInfo();
+       [todo] void audiosrv_CreatezoneFactoriesList();
+       [todo] void audiosrv_CreateGfxFactoriesList();
+       [todo] void audiosrv_CreateGfxList();
+       [todo] void audiosrv_RemoveGfx();
+       [todo] void audiosrv_AddGfx();
+       [todo] void audiosrv_ModifyGfx();
+       [todo] void audiosrv_OpenGfx();
+       [todo] void audiosrv_Logon();
+       [todo] void audiosrv_Logoff();
+       [todo] void audiosrv_RegisterSessionNotificationEvent();
+       [todo] void audiosrv_UnregisterSessionNotificationEvent();
+       [todo] void audiosrv_SessionConnectState();
+       [todo] void audiosrv_DriverOpenDrvRegKey();
+       [todo] void audiosrv_AdvisePreferredDeviceChange();
+       [todo] void audiosrv_GetPnpInfo();
 }
index 5cc2475119f109bd2f089aa81cf7c905abc753cc..5b05be9cbb930f2d2441f46baf433ce2c1120151 100644 (file)
@@ -9,50 +9,50 @@ interface browser
 {
        /******************/
        /* Function  0x00 */
-       NTSTATUS BrowserrServerEnum();
+       [todo] NTSTATUS BrowserrServerEnum();
 
        /******************/
        /* Function  0x01 */
-       NTSTATUS BrowserrDebugCall();
+       [todo] NTSTATUS BrowserrDebugCall();
 
        /******************/
        /* Function  0x02 */
-       NTSTATUS BrowserrQueryOtherDomains();
+       [todo] NTSTATUS BrowserrQueryOtherDomains();
 
        /******************/
        /* Function  0x03 */
-       NTSTATUS BrowserrResetNetlogonState();
+       [todo] NTSTATUS BrowserrResetNetlogonState();
 
        /******************/
        /* Function  0x04 */
-       NTSTATUS BrowserrDebugTrace();
+       [todo] NTSTATUS BrowserrDebugTrace();
 
        /******************/
        /* Function  0x05 */
-       NTSTATUS BrowserrQueryStatistics();
+       [todo] NTSTATUS BrowserrQueryStatistics();
 
        /******************/
        /* Function  0x06 */
-       NTSTATUS BrowserResetStatistics();
+       [todo] NTSTATUS BrowserResetStatistics();
 
        /******************/
        /* Function  0x07 */
-       NTSTATUS NetrBrowserStatisticsClear();
+       [todo] NTSTATUS NetrBrowserStatisticsClear();
 
        /******************/
        /* Function  0x08 */
-       NTSTATUS NetrBrowserStatisticsGet();
+       [todo] NTSTATUS NetrBrowserStatisticsGet();
 
        /******************/
        /* Function  0x09 */
-       NTSTATUS BrowserrSetNetlogonState();
+       [todo] NTSTATUS BrowserrSetNetlogonState();
 
        /******************/
        /* Function  0x0a */
-       NTSTATUS BrowserrQueryEmulatedDomains();
+       [todo] NTSTATUS BrowserrQueryEmulatedDomains();
 
        /******************/
        /* Function  0x0b */
-       NTSTATUS BrowserrServerEnumEx();
+       [todo] NTSTATUS BrowserrServerEnumEx();
 
 }
index dbbd15039c4246a95d0d58dca35110b9cd6abbe3..b279f555d93403d4c7bb7879a1c8c2e767e58085 100644 (file)
@@ -308,16 +308,16 @@ import "misc.idl";
                );
 
        /* Function 0x06 */
-       WERROR dfs_Rename();
+       [todo] WERROR dfs_Rename();
 
        /* Function 0x07 */
-       WERROR dfs_Move();
+       [todo] WERROR dfs_Move();
 
        /* Function 0x08 */
-       WERROR dfs_ManagerGetConfigInfo();
+       [todo] WERROR dfs_ManagerGetConfigInfo();
 
        /* Function 0x09 */
-       WERROR dfs_ManagerSendSiteInfo();
+       [todo] WERROR dfs_ManagerSendSiteInfo();
 
        /* Function 0x0a */
        typedef struct {
@@ -399,10 +399,10 @@ import "misc.idl";
                );
 
        /* Function 0x13 */
-       WERROR dfs_Add2();
+       [todo] WERROR dfs_Add2();
 
        /* Function 0x14 */
-       WERROR dfs_Remove2();
+       [todo] WERROR dfs_Remove2();
 
        /* Function 0x15 */
        [public] WERROR dfs_EnumEx(
@@ -414,5 +414,5 @@ import "misc.idl";
        );
 
        /* Function 0x16 */
-       WERROR dfs_SetInfo2();
+       [todo] WERROR dfs_SetInfo2();
 }
index eaea6aa30e45600aef2999a444eb127c5131f771..f8cbdac8c59702bd482ebe9f2d1ba062bc4c3d0d 100644 (file)
@@ -1,6 +1,6 @@
 #include "idl_types.h"
 
-import "drsuapi.idl";
+import "drsuapi.idl", "misc.idl";
 
 [
   uuid("12345778-1234-abcd-0001-00000001"),
index fb24122e262703e68185a70d1e31d03fd608d4dc..96525716689fd1204374dcda98a07661d620a870 100644 (file)
@@ -666,7 +666,7 @@ interface drsuapi
                /* TODO ... */
        } drsuapi_DsReplicaAddOptions;
 
-       WERROR DRSUAPI_REPLICA_ADD();
+       [todo] WERROR DRSUAPI_REPLICA_ADD();
 
        /*****************/
         /* Function 0x06 */
@@ -676,7 +676,7 @@ interface drsuapi
                /* TODO ... */
        } drsuapi_DsReplicaDeleteOptions;
 
-       WERROR DRSUAPI_REPLICA_DEL();
+       [todo] WERROR DRSUAPI_REPLICA_DEL();
 
        /*****************/
         /* Function 0x07 */
@@ -685,11 +685,11 @@ interface drsuapi
                DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE                     = 0x00000002
        } drsuapi_DsReplicaModifyOptions;
 
-       WERROR DRSUAPI_REPLICA_MODIFY();
+       [todo] WERROR DRSUAPI_REPLICA_MODIFY();
 
        /*****************/
         /* Function 0x08 */
-       WERROR DRSUAPI_VERIFY_NAMES();
+       [todo] WERROR DRSUAPI_VERIFY_NAMES();
 
        /*****************/
         /* Function 0x09 */
@@ -732,7 +732,7 @@ interface drsuapi
                [case(1)] drsuapi_DsGetMembershipsRequest1 req1;
        } drsuapi_DsGetMembershipsRequest;
 
-       WERROR drsuapi_DsGetMemberships(
+       [todo] WERROR drsuapi_DsGetMemberships(
                [in] policy_handle *bind_handle,
                [in,out] int32 level,
                [in] [switch_is(level)] drsuapi_DsGetMembershipsRequest req,
@@ -741,7 +741,7 @@ interface drsuapi
 
        /*****************/
         /* Function 0x0a */
-       WERROR DRSUAPI_INTER_DOMAIN_MOVE();
+       [todo] WERROR DRSUAPI_INTER_DOMAIN_MOVE();
 
        /*****************/
         /* Function 0x0b */
@@ -774,7 +774,7 @@ interface drsuapi
                [case(1)] drsuapi_DsGetNT4ChangeLogInfo1 info1;
        } drsuapi_DsGetNT4ChangeLogInfo;
 
-       WERROR drsuapi_DsGetNT4ChangeLog(
+       [todo] WERROR drsuapi_DsGetNT4ChangeLog(
                [in] policy_handle *bind_handle,
                [in,out] uint32 level,
                [in] [switch_is(level)] drsuapi_DsGetNT4ChangeLogRequest req,
@@ -849,7 +849,7 @@ interface drsuapi
                [case(1)] drsuapi_DsNameCtr1 *ctr1;
        } drsuapi_DsNameCtr;
 
-       WERROR drsuapi_DsCrackNames(
+       [todo] WERROR drsuapi_DsCrackNames(
                [in] policy_handle *bind_handle,
                [in, out] int32 level,
                [in,switch_is(level)] drsuapi_DsNameRequest req,
@@ -920,7 +920,7 @@ interface drsuapi
 
        /*****************/
         /* Function 0x0f */
-       WERROR DRSUAPI_REMOVE_DS_DOMAIN();
+       [todo] WERROR DRSUAPI_REMOVE_DS_DOMAIN();
 
        /*****************/
         /* Function 0x10 */
@@ -1138,7 +1138,7 @@ interface drsuapi
 
        /*****************/
         /* Function 0x12 */
-       WERROR DRSUAPI_EXECUTE_KCC();
+       [todo] WERROR DRSUAPI_EXECUTE_KCC();
 
        /*****************/
        /* Function 0x13 */
@@ -1419,7 +1419,7 @@ interface drsuapi
 
        /*****************/
         /* Function 0x14 */
-       WERROR DRSUAPI_ADD_SID_HISTORY();
+       [todo] WERROR DRSUAPI_ADD_SID_HISTORY();
 
        /*****************/
         /* Function 0x15 */
@@ -1452,11 +1452,11 @@ interface drsuapi
 
        /*****************/
         /* Function 0x16 */
-       WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS();
+       [todo] WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS();
 
        /*****************/
         /* Function 0x17 */
-       WERROR DRSUAPI_GET_OBJECT_EXISTENCE();
+       [todo] WERROR DRSUAPI_GET_OBJECT_EXISTENCE();
 
        /*****************/
         /* Function 0x18 */
index 21dca8fa0eff472112d3110de2f234d3778d05b4..72e8bf9c2bc7e187b27d5c9e41c3f1e8e3d44afa 100644 (file)
@@ -5,15 +5,15 @@
        helpstring("Backup support for Active Directory")
 ] interface ad_backup
 {
-       void HrRBackupPrepare();
-       void HrRBackupEnd();
-       void HrRBackupGetAttachmentInformation();
-       void HrRBackupOpenFile();
-       void HrRBackupRead();
-       void HrRBackupClose();
-       void HrRBackupGetBackupLogs();
-       void HrRBackupTruncateLogs();
-       void HrRBackupPing();
+       [todo] void HrRBackupPrepare();
+       [todo] void HrRBackupEnd();
+       [todo] void HrRBackupGetAttachmentInformation();
+       [todo] void HrRBackupOpenFile();
+       [todo] void HrRBackupRead();
+       [todo] void HrRBackupClose();
+       [todo] void HrRBackupGetBackupLogs();
+       [todo] void HrRBackupTruncateLogs();
+       [todo] void HrRBackupPing();
 }
 
 [
        helpstring("Restoring Active Directory backups")
 ] interface ad_restore
 {
-       void HrRIsNTDSOnline();
-       void HrRRestorePrepare();
-       void HrRRestoreRegister();
-       void HrRRestoreRegisterComplete();
-       void HrRRestoreGetDatabaseLocations();
-       void HrRRestoreEnd();
-       void HrRRestoreSetCurrentLogNumber();
-       void HrRRestoreCheckLogsForBackup();
+       [todo] void HrRIsNTDSOnline();
+       [todo] void HrRRestorePrepare();
+       [todo] void HrRRestoreRegister();
+       [todo] void HrRRestoreRegisterComplete();
+       [todo] void HrRRestoreGetDatabaseLocations();
+       [todo] void HrRRestoreEnd();
+       [todo] void HrRRestoreSetCurrentLogNumber();
+       [todo] void HrRRestoreCheckLogsForBackup();
 }
index af6350cc438c9d19585951a6200c5555d235deb1..14de9f76338dc92c2a299664e67055055c355970 100644 (file)
@@ -88,14 +88,14 @@ import "misc.idl";
          These stubs are left here only as a way of documenting the names
          of the calls in case they ever turn up on the wire.
        */
-       WERROR dssetup_DsRoleDnsNameToFlatName();
-       WERROR dssetup_DsRoleDcAsDc();
-       WERROR dssetup_DsRoleDcAsReplica();
-       WERROR dssetup_DsRoleDemoteDc();
-       WERROR dssetup_DsRoleGetDcOperationProgress();
-       WERROR dssetup_DsRoleGetDcOperationResults();
-       WERROR dssetup_DsRoleCancel();
-       WERROR dssetup_DsRoleServerSaveStateForUpgrade();
-       WERROR dssetup_DsRoleUpgradeDownlevelServer();
-       WERROR dssetup_DsRoleAbortDownlevelServerUpgrade();
+       [todo] WERROR dssetup_DsRoleDnsNameToFlatName();
+       [todo] WERROR dssetup_DsRoleDcAsDc();
+       [todo] WERROR dssetup_DsRoleDcAsReplica();
+       [todo] WERROR dssetup_DsRoleDemoteDc();
+       [todo] WERROR dssetup_DsRoleGetDcOperationProgress();
+       [todo] WERROR dssetup_DsRoleGetDcOperationResults();
+       [todo] WERROR dssetup_DsRoleCancel();
+       [todo] WERROR dssetup_DsRoleServerSaveStateForUpgrade();
+       [todo] WERROR dssetup_DsRoleUpgradeDownlevelServer();
+       [todo] WERROR dssetup_DsRoleAbortDownlevelServerUpgrade();
 }
index 62fefda606146cf44434d475bbd4e87fe220a523..4279b08d1338a9d078a8abad2365137946e89d37 100644 (file)
@@ -18,13 +18,13 @@ WERROR EfsRpcOpenFileRaw(
        [in] uint32 Flags
        );
 
-WERROR EfsRpcReadFileRaw(
+[todo] WERROR EfsRpcReadFileRaw(
        [in,ref] policy_handle *pvContext
 /* incomplete */
 );
 
 
-WERROR EfsRpcWriteFileRaw(
+[todo] WERROR EfsRpcWriteFileRaw(
        [in,ref] policy_handle *pvContext
 /* incomplete */
 );
@@ -70,12 +70,12 @@ WERROR EfsRpcQueryRecoveryAgents(
        [out,ref,unique] ENCRYPTION_CERTIFICATE_HASH_LIST **pRecoveryAgents
 );
 
-WERROR EfsRpcRemoveUsersFromFile(
+[todo] WERROR EfsRpcRemoveUsersFromFile(
        [in] [charset(UTF16),string] uint16 FileName[]
        /*      [in] ENCRYPTION_CERTIFICATE_LIST Hashes*/
 );
 
-WERROR EfsRpcAddUsersToFile(
+[todo] WERROR EfsRpcAddUsersToFile(
        [in] [charset(UTF16),string] uint16 FileName[]
        /*      [in] ENCRYPTION_CERTIFICATE_LIST Hashes*/
 );
@@ -96,13 +96,13 @@ WERROR EfsRpcSetFileEncryptionKey(
        [in] [unique] ENCRYPTION_CERTIFICATE *pEncryptionCertificate
 );
 
-WERROR EfsRpcNotSupported(
+[todo] WERROR EfsRpcNotSupported(
 );
 
-WERROR EfsRpcFileKeyInfo(
+[todo] WERROR EfsRpcFileKeyInfo(
 );
 
-WERROR EfsRpcDuplicateEncryptionInfoFile(
+[todo] WERROR EfsRpcDuplicateEncryptionInfoFile(
 );
 
 }
index 60ff338ec41d384d08d9e5464da995a2a10e803e..ea048780941237fcbde3e58ab7dc1d9b4af4a500 100644 (file)
@@ -310,5 +310,5 @@ interface epmapper
 
        /**********************/
        /* Function 0x07      */
-       error_status_t epm_MapAuth();
+       [todo] error_status_t epm_MapAuth();
 }
index 3defd99400bcba78d58ef4658ac197217d91bc49..ee42300c7c6e6291d3e02b4929724c7cfcf59bb4 100644 (file)
@@ -65,7 +65,7 @@ import "lsa.idl", "security.idl";
 
        /******************/
        /* Function: 0x01 */
-       NTSTATUS eventlog_BackupEventLogW();
+       [todo] NTSTATUS eventlog_BackupEventLogW();
        
        /******************/
        /* Function: 0x02 */
@@ -75,7 +75,7 @@ import "lsa.idl", "security.idl";
 
        /******************/
        /* Function: 0x03 */
-       NTSTATUS eventlog_DeregisterEventSource();
+       [todo] NTSTATUS eventlog_DeregisterEventSource();
 
        /******************/
        /* Function: 0x04 */
@@ -86,11 +86,11 @@ import "lsa.idl", "security.idl";
 
        /******************/
        /* Function: 0x05 */
-       NTSTATUS eventlog_GetOldestRecord();
+       [todo] NTSTATUS eventlog_GetOldestRecord();
 
        /******************/
        /* Function: 0x06 */
-       NTSTATUS eventlog_ChangeNotify();
+       [todo] NTSTATUS eventlog_ChangeNotify();
 
        /******************/
        /* Function: 0x07 */
@@ -105,11 +105,11 @@ import "lsa.idl", "security.idl";
 
        /******************/
        /* Function: 0x08 */
-       NTSTATUS eventlog_RegisterEventSourceW();
+       [todo] NTSTATUS eventlog_RegisterEventSourceW();
 
        /******************/
        /* Function: 0x09 */
-       NTSTATUS eventlog_OpenBackupEventLogW();
+       [todo] NTSTATUS eventlog_OpenBackupEventLogW();
 
        /******************/
        /* Function: 0x0a */
@@ -125,51 +125,51 @@ import "lsa.idl", "security.idl";
 
        /*****************/
        /* Function 0x0b */
-       NTSTATUS eventlog_ReportEventW();
+       [todo] NTSTATUS eventlog_ReportEventW();
 
        /*****************/
        /* Function 0x0c */
-       NTSTATUS eventlog_ClearEventLogA();
+       [todo] NTSTATUS eventlog_ClearEventLogA();
        
        /******************/
        /* Function: 0x0d */
-       NTSTATUS eventlog_BackupEventLogA();
+       [todo] NTSTATUS eventlog_BackupEventLogA();
 
        /*****************/
        /* Function 0x0e */
-       NTSTATUS eventlog_OpenEventLogA();
+       [todo] NTSTATUS eventlog_OpenEventLogA();
 
        /*****************/
        /* Function 0x0f */
-       NTSTATUS eventlog_RegisterEventSourceA();
+       [todo] NTSTATUS eventlog_RegisterEventSourceA();
 
        /*****************/
        /* Function 0x10 */
-       NTSTATUS eventlog_OpenBackupEventLogA();
+       [todo] NTSTATUS eventlog_OpenBackupEventLogA();
 
        /*****************/
        /* Function 0x11 */
-       NTSTATUS eventlog_ReadEventLogA();
+       [todo] NTSTATUS eventlog_ReadEventLogA();
 
        /*****************/
        /* Function 0x12 */
-       NTSTATUS eventlog_ReportEventA();
+       [todo] NTSTATUS eventlog_ReportEventA();
 
        /*****************/
        /* Function 0x13 */
-       NTSTATUS eventlog_RegisterClusterSvc();
+       [todo] NTSTATUS eventlog_RegisterClusterSvc();
 
        /*****************/
        /* Function 0x14 */
-       NTSTATUS eventlog_DeregisterClusterSvc();
+       [todo] NTSTATUS eventlog_DeregisterClusterSvc();
 
        /*****************/
        /* Function 0x15 */
-       NTSTATUS eventlog_WriteClusterEvents();
+       [todo] NTSTATUS eventlog_WriteClusterEvents();
 
        /*****************/
        /* Function 0x16 */
-       NTSTATUS eventlog_GetLogIntormation();
+       [todo] NTSTATUS eventlog_GetLogIntormation();
 
        /*****************/
        /* Function 0x17 */
index 2931a83da46bcfab4ec13a7d5e575488aa7b2c48..11593f479a6faf40ca1f5d12ff7582bd31cbcece 100644 (file)
@@ -13,19 +13,19 @@ interface frsapi
 {
        /****************/
        /* Function 0x00 */
-       void FRSAPI_VERIFY_PROMOTION();
+       [todo] void FRSAPI_VERIFY_PROMOTION();
 
        /****************/
        /* Function 0x01 */
-       void FRSAPI_PROMOTION_STATUS();
+       [todo] void FRSAPI_PROMOTION_STATUS();
 
        /****************/
        /* Function 0x02 */
-       void FRSAPI_START_DEMOTION();
+       [todo] void FRSAPI_START_DEMOTION();
 
        /****************/
        /* Function 0x03 */
-       void FRSAPI_COMMIT_DEMOTION();
+       [todo] void FRSAPI_COMMIT_DEMOTION();
 
        /****************/
        /* Function 0x04 */
@@ -49,7 +49,7 @@ interface frsapi
 
        /****************/
        /* Function 0x06 */
-       void FRSAPI_VERIFY_PROMOTION_W();
+       [todo] void FRSAPI_VERIFY_PROMOTION_W();
 
        /****************/
        /* Function 0x07 */
@@ -106,7 +106,7 @@ interface frsapi
 
        /****************/
        /* Function 0x09 */
-       void FRSAPI_WRITER_COMMAND();
+       [todo] void FRSAPI_WRITER_COMMAND();
 
        /****************/
        /* Function 0x0a */
index 6a0ec394d0b1845954f78db184ce86e687540dd7..1019a25b28a9c2bc649b5b7f7e18234d2d16b062 100644 (file)
@@ -128,41 +128,41 @@ interface frsrpc
 
        /*****************/
        /* Function 0x01 */
-       void FRSRPC_VERIFY_PROMOTION_PARENT();
+       [todo] void FRSRPC_VERIFY_PROMOTION_PARENT();
 
        /*****************/
        /* Function 0x02 */
-       void FRSRPC_START_PROMOTION_PARENT();
+       [todo] void FRSRPC_START_PROMOTION_PARENT();
 
        /*****************/
        /* Function 0x03 */
-       void FRSRPC_NOP();
+       [todo] void FRSRPC_NOP();
 
        /*****************/
        /* Function 0x04 */
-       void FRSRPC_BACKUP_COMPLETE();
+       [todo] void FRSRPC_BACKUP_COMPLETE();
 
        /*****************/
        /* Function 0x05 */
-       void FRSRPC_BACKUP_COMPLETE_5();
+       [todo] void FRSRPC_BACKUP_COMPLETE_5();
 
        /*****************/
        /* Function 0x06 */
-       void FRSRPC_BACKUP_COMPLETE_6();
+       [todo] void FRSRPC_BACKUP_COMPLETE_6();
 
        /*****************/
        /* Function 0x07 */
-       void FRSRPC_BACKUP_COMPLETE_7();
+       [todo] void FRSRPC_BACKUP_COMPLETE_7();
 
        /*****************/
        /* Function 0x08 */
-       void FRSRPC_BACKUP_COMPLETE_8();
+       [todo] void FRSRPC_BACKUP_COMPLETE_8();
 
        /*****************/
        /* Function 0x09 */
-       void FRSRPC_BACKUP_COMPLETE_9();
+       [todo] void FRSRPC_BACKUP_COMPLETE_9();
 
        /*****************/
        /* Function 0x0a */
-       void FRSRPC_VERIFY_PROMOTION_PARENT_EX();
+       [todo] void FRSRPC_VERIFY_PROMOTION_PARENT_EX();
 }
index 0a534940493c062ecaecfb50d3fccfbf15a054d1..2c659aa785002b363f6b5fcd758fa40b0d0d8542 100644 (file)
@@ -1,6 +1,6 @@
 #include "idl_types.h"
 
-import "security.idl", "nbt.idl";
+import "misc.idl", "security.idl", "nbt.idl";
 
 /*
   definitions for irpc primitives
index 3159a7d16d30601cc912b140f423e8fe6eae6cef..93cfdee2014e2335b97024361e7832a02dda45c9 100644 (file)
@@ -4,7 +4,7 @@
   lsa interface definition
 */
 
-import "security.idl";
+import "misc.idl", "security.idl";
 
 [ uuid("12345778-1234-abcd-ef00-0123456789ab"),
   version(0.0),
@@ -94,12 +94,12 @@ import "security.idl";
 
        /******************/
        /* Function: 0x04 */
-       NTSTATUS lsa_SetSecObj ();
+       [todo] NTSTATUS lsa_SetSecObj ();
 
 
        /******************/
        /* Function: 0x05 */
-       NTSTATUS lsa_ChangePassword ();
+       [todo] NTSTATUS lsa_ChangePassword ();
 
 
        /******************/
@@ -273,7 +273,7 @@ import "security.idl";
 
        /******************/
        /* Function:       0x09 */
-       NTSTATUS lsa_ClearAuditLog ();
+       [todo] NTSTATUS lsa_ClearAuditLog ();
 
        /******************/
        /* Function: 0x0a */
@@ -338,7 +338,7 @@ import "security.idl";
 
        /******************/
        /* Function: 0x0e */
-       typedef enum {
+       typedef [public] enum {
                SID_NAME_USE_NONE = 0,/* NOTUSED */
                SID_NAME_USER     = 1, /* user */
                SID_NAME_DOM_GRP  = 2, /* domain group */
@@ -477,15 +477,15 @@ import "security.idl";
                );
 
        /* Function:           0x15 */
-       NTSTATUS lsa_GetQuotasForAccount();
+       [todo] NTSTATUS lsa_GetQuotasForAccount();
        
        /* Function:           0x16 */
-       NTSTATUS lsa_SetQuotasForAccount();
+       [todo] NTSTATUS lsa_SetQuotasForAccount();
        
        /* Function:    0x17 */
-       NTSTATUS lsa_GetSystemAccessAccount();
+       [todo] NTSTATUS lsa_GetSystemAccessAccount();
        /* Function:    0x18 */
-       NTSTATUS lsa_SetSystemAccessAccount();
+       [todo] NTSTATUS lsa_SetSystemAccessAccount();
 
        /* Function:        0x19 */
        NTSTATUS lsa_OpenTrustedDomain(
@@ -599,7 +599,7 @@ import "security.idl";
                );
 
        /* Function:     0x1b */
-       NTSTATUS lsa_SetInformationTrustedDomain();
+       [todo] NTSTATUS lsa_SetInformationTrustedDomain();
 
        /* Function:          0x1c */
        [public] NTSTATUS lsa_OpenSecret(
@@ -659,7 +659,7 @@ import "security.idl";
                );
 
        /* Function:        0x22 */
-       NTSTATUS lsa_DeleteObject();
+       [todo] NTSTATUS lsa_DeleteObject();
 
        
        /*******************/
@@ -713,7 +713,7 @@ import "security.idl";
         );
 
        /* Function:     0x28 */
-       NTSTATUS lsa_SetTrustedDomainInfo();
+       [todo] NTSTATUS lsa_SetTrustedDomainInfo();
        /* Function:      0x29 */
        NTSTATUS lsa_DeleteTrustedDomain(
                [in]               policy_handle         *handle,
@@ -721,9 +721,9 @@ import "security.idl";
        );
 
        /* Function:       0x2a */
-       NTSTATUS lsa_StorePrivateData();
+       [todo] NTSTATUS lsa_StorePrivateData();
        /* Function:        0x2b */
-       NTSTATUS lsa_RetrievePrivateData();
+       [todo] NTSTATUS lsa_RetrievePrivateData();
 
 
        /**********************/
@@ -800,7 +800,7 @@ import "security.idl";
 
 
        /* Function 0x33 */
-       NTSTATUS lsa_CreateTrustedDomainEx();
+       [todo] NTSTATUS lsa_CreateTrustedDomainEx();
 
        /* Function 0x34 */
        NTSTATUS lsa_CloseTrustedDomainEx(
@@ -858,7 +858,7 @@ import "security.idl";
                );
 
        /* Function 0x38 */
-       NTSTATUS lsa_TestCall();
+       [todo] NTSTATUS lsa_TestCall();
 
        /**********************/
        /* Function 0x39 */
@@ -914,31 +914,31 @@ import "security.idl";
                );
 
        /* Function 0x3b */
-       NTSTATUS lsa_CreateTrustedDomainEx2();
+       [todo] NTSTATUS lsa_CreateTrustedDomainEx2();
 
        /* Function 0x3c */
-       NTSTATUS lsa_CREDRWRITE();
+       [todo] NTSTATUS lsa_CREDRWRITE();
 
        /* Function 0x3d */
-       NTSTATUS lsa_CREDRREAD();
+       [todo] NTSTATUS lsa_CREDRREAD();
 
        /* Function 0x3e */
-       NTSTATUS lsa_CREDRENUMERATE();
+       [todo] NTSTATUS lsa_CREDRENUMERATE();
 
        /* Function 0x3f */
-       NTSTATUS lsa_CREDRWRITEDOMAINCREDENTIALS();
+       [todo] NTSTATUS lsa_CREDRWRITEDOMAINCREDENTIALS();
 
        /* Function 0x40 */
-       NTSTATUS lsa_CREDRREADDOMAINCREDENTIALS();
+       [todo] NTSTATUS lsa_CREDRREADDOMAINCREDENTIALS();
 
        /* Function 0x41 */
-       NTSTATUS lsa_CREDRDELETE();
+       [todo] NTSTATUS lsa_CREDRDELETE();
 
        /* Function 0x42 */
-       NTSTATUS lsa_CREDRGETTARGETINFO();
+       [todo] NTSTATUS lsa_CREDRGETTARGETINFO();
 
        /* Function 0x43 */
-       NTSTATUS lsa_CREDRPROFILELOADED();
+       [todo] NTSTATUS lsa_CREDRPROFILELOADED();
 
        /**********************/
        /* Function 0x44 */
@@ -967,16 +967,16 @@ import "security.idl";
                );
 
        /* Function 0x45 */
-       NTSTATUS lsa_CREDRGETSESSIONTYPES();
+       [todo] NTSTATUS lsa_CREDRGETSESSIONTYPES();
 
        /* Function 0x46 */
-       NTSTATUS lsa_LSARREGISTERAUDITEVENT();
+       [todo] NTSTATUS lsa_LSARREGISTERAUDITEVENT();
 
        /* Function 0x47 */
-       NTSTATUS lsa_LSARGENAUDITEVENT();
+       [todo] NTSTATUS lsa_LSARGENAUDITEVENT();
 
        /* Function 0x48 */
-       NTSTATUS lsa_LSARUNREGISTERAUDITEVENT();
+       [todo] NTSTATUS lsa_LSARUNREGISTERAUDITEVENT();
 
        /* Function 0x49 */
        typedef struct {
@@ -1024,10 +1024,10 @@ import "security.idl";
                );
 
        /* Function 0x4a */
-       NTSTATUS lsa_LSARSETFORESTTRUSTINFORMATION();
+       [todo] NTSTATUS lsa_LSARSETFORESTTRUSTINFORMATION();
 
        /* Function 0x4b */
-       NTSTATUS lsa_CREDRRENAME();
+       [todo] NTSTATUS lsa_CREDRRENAME();
 
        /*****************/
        /* Function 0x4c */
@@ -1055,15 +1055,15 @@ import "security.idl";
                );
 
        /* Function 0x4e */
-       NTSTATUS lsa_LSAROPENPOLICYSCE();
+       [todo] NTSTATUS lsa_LSAROPENPOLICYSCE();
 
        /* Function 0x4f */
-       NTSTATUS lsa_LSARADTREGISTERSECURITYEVENTSOURCE();
+       [todo] NTSTATUS lsa_LSARADTREGISTERSECURITYEVENTSOURCE();
 
        /* Function 0x50 */
-       NTSTATUS lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE();
+       [todo] NTSTATUS lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE();
 
        /* Function 0x51 */
-       NTSTATUS lsa_LSARADTREPORTSECURITYEVENT();
+       [todo] NTSTATUS lsa_LSARADTREPORTSECURITYEVENT();
 
 }
index 09878ac7a493bb46ac92d37b7bbed4155dadcb44..d196daf06bc73ec1b8846d528197de87ad73eae0 100644 (file)
@@ -7,10 +7,10 @@
        helpstring("Messaging Service")
 ] interface msgsvc
 {
-       void NetrMessageNameAdd();
-       void NetrMessageNameEnum();
-       void NetrMessageNameGetInfo();
-       void NetrMessageNameDel();
+       [todo] void NetrMessageNameAdd();
+       [todo] void NetrMessageNameEnum();
+       [todo] void NetrMessageNameGetInfo();
+       [todo] void NetrMessageNameDel();
 }
 
 [
@@ -18,5 +18,5 @@
        version(1.0)
 ] interface msgsvcsend
 {
-       void NetrSendMessage();
+       [todo] void NetrSendMessage();
 }
index 17304bfa0de01b7eb250a29b86a51100c6855ea3..aa8836088258342a45240273f6c9189bf5166043 100644 (file)
@@ -8,9 +8,9 @@
    encoding if it doesn't work out
 */
 
-import "security.idl", "svcctl.idl";
+import "misc.idl", "security.idl", "svcctl.idl";
 [
-helper("libcli/nbt/nbtname.h")
+helper("libcli/nbt/libnbt.h")
 ]
 interface nbt
 {
index d06c2acdd4aaf6918d22f7c7b59cb07bb489305f..6da496a4863f212ec2c5311d88b3a9e0aa689204 100644 (file)
@@ -4,7 +4,7 @@
   who contributed!
 */
 
-import "lsa.idl", "samr.idl", "security.idl", "nbt.idl";
+import "misc.idl", "lsa.idl", "samr.idl", "security.idl", "nbt.idl";
 
 #include "idl_types.h"
 
@@ -983,11 +983,11 @@ interface netlogon
 
        /*****************/
        /* Function 0x15 */
-       WERROR netr_NETRLOGONDUMMYROUTINE1();
+       [todo] WERROR netr_NETRLOGONDUMMYROUTINE1();
 
        /****************/
        /* Function 0x16 */
-       WERROR netr_NETRLOGONSETSERVICEBITS();
+       [todo] WERROR netr_NETRLOGONSETSERVICEBITS();
 
        /****************/
        /* Function 0x17 */
@@ -999,11 +999,11 @@ interface netlogon
 
        /****************/
        /* Function 0x18 */
-       WERROR netr_NETRLOGONCOMPUTESERVERDIGEST();
+       [todo] WERROR netr_NETRLOGONCOMPUTESERVERDIGEST();
 
        /****************/
        /* Function 0x19 */
-       WERROR netr_NETRLOGONCOMPUTECLIENTDIGEST();
+       [todo] WERROR netr_NETRLOGONCOMPUTECLIENTDIGEST();
 
        /****************/
        /* Function 0x1a */
@@ -1128,7 +1128,7 @@ interface netlogon
 
        /****************/
        /* Function 0x20 */
-       WERROR netr_NETRLOGONSENDTOSAM();
+       [todo] WERROR netr_NETRLOGONSENDTOSAM();
 
        /****************/
        /* Function 0x21 */
@@ -1164,7 +1164,7 @@ interface netlogon
 
        /****************/
        /* Function 0x23 */
-       WERROR netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN();
+       [todo] WERROR netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN();
 
        /****************/
        /* Function 0x24 */
@@ -1332,5 +1332,5 @@ interface netlogon
 
        /****************/
        /* Function 0x2e */
-       WERROR netr_NETRSERVERGETTRUSTINFO();
+       [todo] WERROR netr_NETRSERVERGETTRUSTINFO();
 }
index 05ba68e727a751efcf1a28a3522e3f839bfcab53..1cdf8eecaa9d652fe5b20104d6e72f2ec4f71c69 100644 (file)
@@ -9,69 +9,69 @@
 ]
 interface ntsvcs
 {
-       void PNP_Disconnect();
-       void PNP_Connect();
-       void PNP_GetVersion();
-       void PNP_GetGlobalState();
-       void PNP_InitDetection();
-       void PNP_ReportLogOn();
-       void PNP_ValidateDeviceInstance();
-       void PNP_GetRootDeviceInstance();
-       void PNP_GetRelatedDeviceInstance();
-       void PNP_EnumerateSubKeys();
-       void PNP_GetDeviceList();
-       void PNP_GetDeviceListSize();
-       void PNP_GetDepth();
-       void PNP_GetDeviceRegProp();
-       void PNP_SetDeviceRegProp();
-       void PNP_GetClassInstance();
-       void PNP_CreateKey();
-       void PNP_DeleteRegistryKey();
-       void PNP_GetClassCount();
-       void PNP_GetClassName();
-       void PNP_DeleteClassKey();
-       void PNP_GetInterfaceDeviceAlias();
-       void PNP_GetInterfaceDeviceList();
-       void PNP_GetInterfaceDeviceListSize();
-       void PNP_RegisterDeviceClassAssociation();
-       void PNP_UnregisterDeviceClassAssociation();
-       void PNP_GetClassRegProp();
-       void PNP_SetClassRegProp();
-       void PNP_CreateDevInst();
-       void PNP_DeviceInstanceAction();
-       void PNP_GetDeviceStatus();
-       void PNP_SetDeviceProblem();
-       void PNP_DisableDevInst();
-       void PNP_UninstallDevInst();
-       void PNP_AddID();
-       void PNP_RegisterDriver();
-       void PNP_QueryRemove();
-       void PNP_RequestDeviceEject();
-       void PNP_IsDockStationPresent();
-       void PNP_RequestEjectPC();
-       void PNP_HwProfFlags();
-       void PNP_GetHwProfInfo();
-       void PNP_AddEmptyLogConf();
-       void PNP_FreeLogConf();
-       void PNP_GetFirstLogConf();
-       void PNP_GetNextLogConf();
-       void PNP_GetLogConfPriority();
-       void PNP_AddResDes();
-       void PNP_FreeResDes();
-       void PNP_GetNextResDes();
-       void PNP_GetResDesData();
-       void PNP_GetResDesDataSize();
-       void PNP_ModifyResDes();
-       void PNP_DetectResourceLimit();
-       void PNP_QueryResConfList();
-       void PNP_SetHwProf();
-       void PNP_QueryArbitratorFreeData();
-       void PNP_QueryArbitratorFreeSize();
-       void PNP_RunDetection();
-       void PNP_RegisterNotification();
-       void PNP_UnregisterNotification();
-       void PNP_GetCustomDevProp();
-       void PNP_GetVersionInternal();
-       void PNP_GetBlockedDriverInfo();
-       void PNP_GetServerSideDeviceInstallFlags();
+       [todo] void PNP_Disconnect();
+       [todo] void PNP_Connect();
+       [todo] void PNP_GetVersion();
+       [todo] void PNP_GetGlobalState();
+       [todo] void PNP_InitDetection();
+       [todo] void PNP_ReportLogOn();
+       [todo] void PNP_ValidateDeviceInstance();
+       [todo] void PNP_GetRootDeviceInstance();
+       [todo] void PNP_GetRelatedDeviceInstance();
+       [todo] void PNP_EnumerateSubKeys();
+       [todo] void PNP_GetDeviceList();
+       [todo] void PNP_GetDeviceListSize();
+       [todo] void PNP_GetDepth();
+       [todo] void PNP_GetDeviceRegProp();
+       [todo] void PNP_SetDeviceRegProp();
+       [todo] void PNP_GetClassInstance();
+       [todo] void PNP_CreateKey();
+       [todo] void PNP_DeleteRegistryKey();
+       [todo] void PNP_GetClassCount();
+       [todo] void PNP_GetClassName();
+       [todo] void PNP_DeleteClassKey();
+       [todo] void PNP_GetInterfaceDeviceAlias();
+       [todo] void PNP_GetInterfaceDeviceList();
+       [todo] void PNP_GetInterfaceDeviceListSize();
+       [todo] void PNP_RegisterDeviceClassAssociation();
+       [todo] void PNP_UnregisterDeviceClassAssociation();
+       [todo] void PNP_GetClassRegProp();
+       [todo] void PNP_SetClassRegProp();
+       [todo] void PNP_CreateDevInst();
+       [todo] void PNP_DeviceInstanceAction();
+       [todo] void PNP_GetDeviceStatus();
+       [todo] void PNP_SetDeviceProblem();
+       [todo] void PNP_DisableDevInst();
+       [todo] void PNP_UninstallDevInst();
+       [todo] void PNP_AddID();
+       [todo] void PNP_RegisterDriver();
+       [todo] void PNP_QueryRemove();
+       [todo] void PNP_RequestDeviceEject();
+       [todo] void PNP_IsDockStationPresent();
+       [todo] void PNP_RequestEjectPC();
+       [todo] void PNP_HwProfFlags();
+       [todo] void PNP_GetHwProfInfo();
+       [todo] void PNP_AddEmptyLogConf();
+       [todo] void PNP_FreeLogConf();
+       [todo] void PNP_GetFirstLogConf();
+       [todo] void PNP_GetNextLogConf();
+       [todo] void PNP_GetLogConfPriority();
+       [todo] void PNP_AddResDes();
+       [todo] void PNP_FreeResDes();
+       [todo] void PNP_GetNextResDes();
+       [todo] void PNP_GetResDesData();
+       [todo] void PNP_GetResDesDataSize();
+       [todo] void PNP_ModifyResDes();
+       [todo] void PNP_DetectResourceLimit();
+       [todo] void PNP_QueryResConfList();
+       [todo] void PNP_SetHwProf();
+       [todo] void PNP_QueryArbitratorFreeData();
+       [todo] void PNP_QueryArbitratorFreeSize();
+       [todo] void PNP_RunDetection();
+       [todo] void PNP_RegisterNotification();
+       [todo] void PNP_UnregisterNotification();
+       [todo] void PNP_GetCustomDevProp();
+       [todo] void PNP_GetVersionInternal();
+       [todo] void PNP_GetBlockedDriverInfo();
+       [todo] void PNP_GetServerSideDeviceInstallFlags();
 }
index ac028cec29501ce10993af43ef50c171ba5764f0..95c8a1c5f08ddbbf3469b4715240ac92382b4490 100644 (file)
@@ -10,7 +10,7 @@
  (used by DCOM)
  */
 
-import "orpc.idl";
+import "misc.idl", "orpc.idl";
 
 [ 
        uuid("99fcfec4-5260-101b-bbcb-00aa0021347a"),
index 58d976e07826761b6310c855d226f752311be54e..2165ecfc81b297328f71f916b181a01fb360e08c 100644 (file)
@@ -3,7 +3,7 @@
   http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm
  */
 
-import "orpc.idl";
+import "misc.idl", "orpc.idl";
 
 [
        uuid("4d9f4ab8-7d1c-11cf-861e-0020af6e7c57"),
index 2144393ebd44ef1c61d97b2c709bd10f3765150e..6b4b0b8a162807e41d556418b7ab4ca9430461c6 100644 (file)
@@ -3,7 +3,7 @@
 /*
   spoolss interface definitions
 */
-import "security.idl", "winreg.idl";
+import "misc.idl", "security.idl", "winreg.idl";
 
 [ uuid("12345678-1234-abcd-ef00-0123456789ab"),
   version(1.0),
@@ -386,14 +386,14 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x05 */
-       WERROR spoolss_AddPrinter(
+       [todo] WERROR spoolss_AddPrinter(
                /* This function is not implemented in Samba 3 as no
                   clients have been observed using it. */
        );
 
        /******************/
        /* Function: 0x06 */
-       WERROR spoolss_DeletePrinter(
+       [todo] WERROR spoolss_DeletePrinter(
        );
 
        /******************/
@@ -442,7 +442,7 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x09 */
-       WERROR spoolss_AddPrinterDriver(
+       [todo] WERROR spoolss_AddPrinterDriver(
        );
 
        typedef struct {
@@ -564,7 +564,7 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x0b */
-       WERROR spoolss_GetPrinterDriver(
+       [todo] WERROR spoolss_GetPrinterDriver(
        );
 
        /******************/
@@ -602,7 +602,7 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x0e */
-       WERROR spoolss_AddPrintProcessor(
+       [todo] WERROR spoolss_AddPrintProcessor(
        );
 
        /******************/
@@ -644,7 +644,7 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x10 */
-       WERROR spoolss_GetPrintProcessorDirectory(
+       [todo] WERROR spoolss_GetPrintProcessorDirectory(
        );
 
        /******************/
@@ -713,12 +713,12 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x18 */
-       WERROR spoolss_AddJob(
+       [todo] WERROR spoolss_AddJob(
        );
 
        /******************/
        /* Function: 0x19 */
-       WERROR spoolss_ScheduleJob(
+       [todo] WERROR spoolss_ScheduleJob(
        );
 
        /******************/
@@ -806,7 +806,7 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x1c */
-       WERROR spoolss_WaitForPrinterChange(
+       [todo] WERROR spoolss_WaitForPrinterChange(
        );
 
        /******************/
@@ -1022,79 +1022,79 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x26 */
-       WERROR spoolss_ConfigurePort(
+       [todo] WERROR spoolss_ConfigurePort(
        );
 
        /******************/
        /* Function: 0x27 */
-       WERROR spoolss_DeletePort(
+       [todo] WERROR spoolss_DeletePort(
        );
 
        /******************/
        /* Function: 0x28 */
-       WERROR spoolss_CreatePrinterIC(
+       [todo] WERROR spoolss_CreatePrinterIC(
        );
 
        /******************/
        /* Function: 0x29 */
-       WERROR spoolss_PlayGDIScriptOnPrinterIC(
+       [todo] WERROR spoolss_PlayGDIScriptOnPrinterIC(
        );
 
        /******************/
        /* Function: 0x2a */
-       WERROR spoolss_DeletePrinterIC(
+       [todo] WERROR spoolss_DeletePrinterIC(
        );
 
        /******************/
        /* Function: 0x2b */
-       WERROR spoolss_AddPrinterConnection(
+       [todo] WERROR spoolss_AddPrinterConnection(
        );
 
        /******************/
        /* Function: 0x2c */
-       WERROR spoolss_DeletePrinterConnection(
+       [todo] WERROR spoolss_DeletePrinterConnection(
        );
 
        /******************/
        /* Function: 0x2d */
-       WERROR spoolss_PrinterMessageBox(
+       [todo] WERROR spoolss_PrinterMessageBox(
                /* Marked as obsolete in MSDN.  "Not necessary and has
                   no effect". */
        );
 
        /******************/
        /* Function: 0x2e */
-       WERROR spoolss_AddMonitor(
+       [todo] WERROR spoolss_AddMonitor(
        );
 
        /******************/
        /* Function: 0x2f */
-       WERROR spoolss_DeleteMonitor(
+       [todo] WERROR spoolss_DeleteMonitor(
        );
 
        /******************/
        /* Function: 0x30 */
-       WERROR spoolss_DeletePrintProcessor(
+       [todo] WERROR spoolss_DeletePrintProcessor(
        );
 
        /******************/
        /* Function: 0x31 */
-       WERROR spoolss_AddPrintProvidor(
+       [todo] WERROR spoolss_AddPrintProvidor(
        );
 
        /******************/
        /* Function: 0x32 */
-       WERROR spoolss_DeletePrintProvidor(
+       [todo] WERROR spoolss_DeletePrintProvidor(
        );
 
        /******************/
        /* Function: 0x33 */
-       WERROR spoolss_EnumPrintProcDataTypes(
+       [todo] WERROR spoolss_EnumPrintProcDataTypes(
        );
 
        /******************/
        /* Function: 0x34 */
-       WERROR spoolss_ResetPrinter(
+       [todo] WERROR spoolss_ResetPrinter(
        );
 
        /******************/
@@ -1115,12 +1115,12 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x36 */
-       WERROR spoolss_FindFirstPrinterChangeNotification(
+       [todo] WERROR spoolss_FindFirstPrinterChangeNotification(
        );
 
        /******************/
        /* Function: 0x37 */
-       WERROR spoolss_FindNextPrinterChangeNotification(
+       [todo] WERROR spoolss_FindNextPrinterChangeNotification(
        );
 
        /******************/
@@ -1131,7 +1131,7 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x39 */
-       WERROR spoolss_RouterFindFirstPrinterChangeNotificationOld(
+       [todo] WERROR spoolss_RouterFindFirstPrinterChangeNotificationOld(
        );
 
        /******************/
@@ -1147,7 +1147,7 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x3b */
-       WERROR spoolss_RouterReplyPrinter(
+       [todo] WERROR spoolss_RouterReplyPrinter(
        );
 
        /******************/
@@ -1158,22 +1158,22 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x3d */
-       WERROR spoolss_AddPortEx(
+       [todo] WERROR spoolss_AddPortEx(
        );
 
        /******************/
        /* Function: 0x3e */
-       WERROR spoolss_RouterFindFirstPrinterChangeNotification(
+       [todo] WERROR spoolss_RouterFindFirstPrinterChangeNotification(
        );
 
        /******************/
        /* Function: 0x3f */
-       WERROR spoolss_SpoolerInit(
+       [todo] WERROR spoolss_SpoolerInit(
        );
 
        /******************/
        /* Function: 0x40 */
-       WERROR spoolss_ResetPrinterEx(
+       [todo] WERROR spoolss_ResetPrinterEx(
        );
 
        typedef [enum16bit] enum {
@@ -1239,7 +1239,7 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x42 */
-       WERROR spoolss_RouterRefreshPrinterChangeNotification(
+       [todo] WERROR spoolss_RouterRefreshPrinterChangeNotification(
        );
 
        typedef struct {
@@ -1295,7 +1295,7 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x44 */
-       WERROR spoolss_44(
+       [todo] WERROR spoolss_44(
        );
 
        typedef struct {
@@ -1399,7 +1399,7 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x47 */
-       WERROR spoolss_47(
+       [todo] WERROR spoolss_47(
        );
 
        /******************/
@@ -1425,17 +1425,17 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x4a */
-       WERROR spoolss_4a(
+       [todo] WERROR spoolss_4a(
        );
 
        /******************/
        /* Function: 0x4b */
-       WERROR spoolss_4b(
+       [todo] WERROR spoolss_4b(
        );
 
        /******************/
        /* Function: 0x4c */
-       WERROR spoolss_4c(
+       [todo] WERROR spoolss_4c(
        );
 
        /******************/
@@ -1492,32 +1492,32 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x52 */
-       WERROR spoolss_DeletePrinterKey(
+       [todo] WERROR spoolss_DeletePrinterKey(
        );
 
        /******************/
        /* Function: 0x53 */
-       WERROR spoolss_53(
+       [todo] WERROR spoolss_53(
        );
 
        /******************/
        /* Function: 0x54 */
-       WERROR spoolss_DeletePrinterDriverEx(
+       [todo] WERROR spoolss_DeletePrinterDriverEx(
        );
 
        /******************/
        /* Function: 0x55 */
-       WERROR spoolss_55(
+       [todo] WERROR spoolss_55(
        );
 
        /******************/
        /* Function: 0x56 */
-       WERROR spoolss_56(
+       [todo] WERROR spoolss_56(
        );
 
        /******************/
        /* Function: 0x57 */
-       WERROR spoolss_57(
+       [todo] WERROR spoolss_57(
        );
 
        /******************/
@@ -1536,36 +1536,36 @@ import "security.idl", "winreg.idl";
 
        /******************/
        /* Function: 0x59 */
-       [public] WERROR spoolss_AddPrinterDriverEx(
+       [public,todo] WERROR spoolss_AddPrinterDriverEx(
        );
 
        /******************/
        /* Function: 0x5a */
-       WERROR spoolss_5a(
+       [todo] WERROR spoolss_5a(
        );
 
        /******************/
        /* Function: 0x5b */
-       WERROR spoolss_5b(
+       [todo] WERROR spoolss_5b(
        );
 
        /******************/
        /* Function: 0x5c */
-       WERROR spoolss_5c(
+       [todo] WERROR spoolss_5c(
        );
 
        /******************/
        /* Function: 0x5d */
-       WERROR spoolss_5d(
+       [todo] WERROR spoolss_5d(
        );
 
        /******************/
        /* Function: 0x5e */
-       WERROR spoolss_5e(
+       [todo] WERROR spoolss_5e(
        );
 
        /******************/
        /* Function: 0x5f */
-       WERROR spoolss_5f(
+       [todo] WERROR spoolss_5f(
        );
 }
index 8ef49413bc369bc40241197532665412ebd0ba00..703f3281cfd3d0e714d1410e9b93d5f7ea52b3a2 100644 (file)
@@ -1370,7 +1370,7 @@ import "security.idl", "svcctl.idl";
 
        /******************/
        /* Function: 0x22 */
-       WERROR srvsvc_NETRPRNAMECANONICALIZE(
+       [todo] WERROR srvsvc_NETRPRNAMECANONICALIZE(
                );
 
        /******************/
@@ -1464,56 +1464,56 @@ import "security.idl", "svcctl.idl";
 
        /******************/
        /* Function: 0x2b */
-       WERROR srvsvc_NETRDFSGETVERSION(
+       [todo] WERROR srvsvc_NETRDFSGETVERSION(
                );
 
        /******************/
        /* Function: 0x2c */
-       WERROR srvsvc_NETRDFSCREATELOCALPARTITION(
+       [todo] WERROR srvsvc_NETRDFSCREATELOCALPARTITION(
                );
 
        /******************/
        /* Function: 0x2d */
-       WERROR srvsvc_NETRDFSDELETELOCALPARTITION(
+       [todo] WERROR srvsvc_NETRDFSDELETELOCALPARTITION(
                );
 
        /******************/
        /* Function: 0x2e */
-       WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE(
+       [todo] WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE(
                );
 
        /******************/
        /* Function: 0x2f */
-       WERROR srvsvc_NETRDFSSETSERVERINFO(
+       [todo] WERROR srvsvc_NETRDFSSETSERVERINFO(
                );
 
        /******************/
        /* Function: 0x30 */
-       WERROR srvsvc_NETRDFSCREATEEXITPOINT(
+       [todo] WERROR srvsvc_NETRDFSCREATEEXITPOINT(
                );
 
        /******************/
        /* Function: 0x31 */
-       WERROR srvsvc_NETRDFSDELETEEXITPOINT(
+       [todo] WERROR srvsvc_NETRDFSDELETEEXITPOINT(
                );
 
        /******************/
        /* Function: 0x32 */
-       WERROR srvsvc_NETRDFSMODIFYPREFIX(
+       [todo] WERROR srvsvc_NETRDFSMODIFYPREFIX(
                );
 
        /******************/
        /* Function: 0x33 */
-       WERROR srvsvc_NETRDFSFIXLOCALVOLUME(
+       [todo] WERROR srvsvc_NETRDFSFIXLOCALVOLUME(
                );
 
        /******************/
        /* Function: 0x34 */
-       WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO(
+       [todo] WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO(
                );
 
        /******************/
        /* Function: 0x35 */
-       WERROR srvsvc_NETRSERVERTRANSPORTDELEX(
+       [todo] WERROR srvsvc_NETRSERVERTRANSPORTDELEX(
                );
 }
index 8f368ef87832a5301a42df16ba653b9288003700..615f4e3dabab4b2238452860c8e3864ec0090e0e 100644 (file)
@@ -115,12 +115,12 @@ import "misc.idl";
 
        /*****************/
        /* Function 0x04 */
-       WERROR svcctl_QueryServiceObjectSecurity(
+       [todo] WERROR svcctl_QueryServiceObjectSecurity(
        );
 
        /*****************/
        /* Function 0x05 */
-       WERROR svcctl_SetServiceObjectSecurity(
+       [todo] WERROR svcctl_SetServiceObjectSecurity(
        );
 
        /*****************/
@@ -132,7 +132,7 @@ import "misc.idl";
 
        /*****************/
        /* Function 0x07 */
-       WERROR svcctl_SetServiceStatus(
+       [todo] WERROR svcctl_SetServiceStatus(
        );
 
        /*****************/
@@ -143,7 +143,7 @@ import "misc.idl";
 
        /*****************/
        /* Function 0x09 */
-       WERROR svcctl_NotifyBootConfigStatus(
+       [todo] WERROR svcctl_NotifyBootConfigStatus(
        );
 
        /*****************/
@@ -408,12 +408,12 @@ import "misc.idl";
 
        /*****************/
        /* Function 0x22 */
-       WERROR svcctl_GetCurrentGroupeStateW(
+       [todo] WERROR svcctl_GetCurrentGroupeStateW(
        );
 
        /*****************/
        /* Function 0x23 */
-       WERROR svcctl_EnumServiceGroupW(
+       [todo] WERROR svcctl_EnumServiceGroupW(
        );
 
        /*****************/
@@ -494,6 +494,6 @@ import "misc.idl";
 
        /*****************/
        /* Function 0x2b */
-       WERROR svcctl_SCSendTSMessage(
+       [todo] WERROR svcctl_SCSendTSMessage(
        );
 }
index c3c6e014de01f65e31f80b03ca085e8992c8743b..4839899629bca8fb9c12dce97eabdb72372cb9fb 100644 (file)
@@ -14,8 +14,8 @@ interface w32time
 
        /*****************/
        /* Function 0x00 */
-       WERROR w32time_SyncTime();
+       [todo] WERROR w32time_SyncTime();
 
-       WERROR w32time_GetNetLogonServiceBits();
-       WERROR w32time_QueryProviderStatus();
+       [todo] WERROR w32time_GetNetLogonServiceBits();
+       [todo] WERROR w32time_QueryProviderStatus();
 }
index 29649c0ea7bbf809038176c9bd03a940139444b8..5cefb38f75f28a75e99bb832e20ae36a40277afb 100644 (file)
@@ -3,8 +3,8 @@
 */
 
 #include "idl_types.h"
-  
-import "netlogon.idl";
+
+import "netlogon.idl", "lsa.idl", "security.idl";
 
 [
   uuid("245f3e6b-3c5d-6e21-3a2d-2a3d645b7221"),
@@ -16,6 +16,24 @@ interface winbind
        typedef [switch_type(uint16)] union netr_LogonLevel netr_LogonLevel;
        typedef [switch_type(uint16)] union netr_Validation netr_Validation;
 
+       typedef enum {
+               ID_TYPE_NOT_SPECIFIED,
+               ID_TYPE_UID,
+               ID_TYPE_GID,
+               ID_TYPE_BOTH
+       } id_type;
+
+       typedef struct {
+               uint32 id;
+               id_type type;
+       } unixid;
+
+       typedef struct {
+               unixid *unixid;
+               dom_sid *sid;
+               NTSTATUS status;
+       } id_mapping;
+
        /* a call to get runtime informations */
        void winbind_information(/* TODO */);
 
@@ -35,4 +53,16 @@ interface winbind
                [out] [switch_is(validation_level)] netr_Validation validation,
                [out] uint8 authoritative
        );
+
+       typedef [v1_enum] enum {
+               WINBIND_IDMAP_LEVEL_SIDS_TO_XIDS        = 1,
+               WINBIND_IDMAP_LEVEL_XIDS_TO_SIDS        = 2
+       } winbind_get_idmap_level;
+
+       NTSTATUS winbind_get_idmap(
+               [in]     winbind_get_idmap_level level,
+               [in]     uint32 count,
+               [in,out] [size_is(count)] id_mapping ids[]
+       );
+
 }
index 5e5d5542b646c4e1c028d38bfa7a7af8fce9e412..1e01a911977cac300d5603851c63c9ef32bdacc8 100644 (file)
@@ -249,7 +249,7 @@ import "lsa.idl", "security.idl";
 
        /******************/
        /* Function: 0x12 */
-       WERROR winreg_ReplaceKey(
+       [todo] WERROR winreg_ReplaceKey(
        );
 
        /******************/
@@ -295,7 +295,7 @@ import "lsa.idl", "security.idl";
 
        /******************/
        /* Function: 0x17 */
-       WERROR winreg_UnLoadKey(
+       [todo] WERROR winreg_UnLoadKey(
        );
 
        /******************/
@@ -375,7 +375,7 @@ import "lsa.idl", "security.idl";
 
        /******************/
        /* Function: 0x1f */
-       WERROR winreg_SaveKeyEx(
+       [todo] WERROR winreg_SaveKeyEx(
        );
 
        /******************/
@@ -396,6 +396,6 @@ import "lsa.idl", "security.idl";
 
        /******************/
        /* Function: 0x22 */
-       WERROR winreg_QueryMultipleValues2(
+       [todo] WERROR winreg_QueryMultipleValues2(
        );
 }
index ed4c4592144cd8813b1db3eb6a3465e482769bae..2f4d95006fd01da967d805ab50b2da2465cc2a78 100644 (file)
@@ -5,7 +5,7 @@ includedir=@includedir@
 
 Name: ndr
 Description: Network Data Representation Core Library
-Requires: samba-config talloc
+Requires: samba-hostconfig talloc
 Version: 0.0.1
 Libs: -L${libdir} -lndr 
 Cflags: -I${includedir}  -DHAVE_IMMEDIATE_STRUCTURES=1
index 731ef0f60b05bb1392c6174149be040672f98887..2439c386db81fe1e3fd3796abd42c9f7afe9e39c 100644 (file)
@@ -1,6 +1,7 @@
 /* 
    Unix SMB/CIFS implementation.
    rpc interface definitions
+
    Copyright (C) Andrew Tridgell 2003
    
    This program is free software; you can redistribute it and/or modify
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+/* This is a public header file that is installed as part of Samba. 
+ * If you remove any functions or change their signature, update 
+ * the so version number. */
+
 #ifndef __LIBNDR_H__
 #define __LIBNDR_H__
 
 #include <talloc.h>
 #include "lib/util/util.h" /* for discard_const */
+#include <sys/time.h>
 #include "lib/charset/charset.h"
 
 /*
@@ -287,8 +293,7 @@ typedef void (*ndr_print_fn_t)(struct ndr_print *, const char *, const void *);
 typedef void (*ndr_print_function_t)(struct ndr_print *, const char *, int, const void *);
 
 #include "libcli/util/error.h"
-#include "librpc/gen_ndr/ndr_misc.h"
-#include "librpc/ndr/libndr_proto.h"
+#include "librpc/gen_ndr/misc.h"
 
 extern const struct ndr_syntax_id ndr_transfer_syntax;
 extern const struct ndr_syntax_id ndr64_transfer_syntax;
@@ -333,5 +338,167 @@ void ndr_print_dom_sid28(struct ndr_print *ndr, const char *name, const struct d
 size_t ndr_size_dom_sid28(const struct dom_sid *sid, int flags);
 void ndr_print_ipv4_addr(struct ndr_print *ndr, const char *name, const struct in_addr *_ip);
 void ndr_print_GUID(struct ndr_print *ndr, const char *name, const struct GUID *guid);
+enum ndr_err_code ndr_push_struct_blob(DATA_BLOB *blob, TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, const void *p, ndr_push_flags_fn_t fn);
+enum ndr_err_code ndr_push_union_blob(DATA_BLOB *blob, TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, void *p, uint32_t level, ndr_push_flags_fn_t fn);
+size_t ndr_size_struct(const void *p, int flags, ndr_push_flags_fn_t push);
+size_t ndr_size_union(const void *p, int flags, uint32_t level, ndr_push_flags_fn_t push);
+uint32_t ndr_push_get_relative_base_offset(struct ndr_push *ndr);
+void ndr_push_restore_relative_base_offset(struct ndr_push *ndr, uint32_t offset);
+enum ndr_err_code ndr_push_setup_relative_base_offset1(struct ndr_push *ndr, const void *p, uint32_t offset);
+enum ndr_err_code ndr_push_setup_relative_base_offset2(struct ndr_push *ndr, const void *p);
+enum ndr_err_code ndr_push_relative_ptr1(struct ndr_push *ndr, const void *p);
+enum ndr_err_code ndr_push_relative_ptr2(struct ndr_push *ndr, const void *p);
+uint32_t ndr_pull_get_relative_base_offset(struct ndr_pull *ndr);
+void ndr_pull_restore_relative_base_offset(struct ndr_pull *ndr, uint32_t offset);
+enum ndr_err_code ndr_pull_setup_relative_base_offset1(struct ndr_pull *ndr, const void *p, uint32_t offset);
+enum ndr_err_code ndr_pull_setup_relative_base_offset2(struct ndr_pull *ndr, const void *p);
+enum ndr_err_code ndr_pull_relative_ptr1(struct ndr_pull *ndr, const void *p, uint32_t rel_offset);
+enum ndr_err_code ndr_pull_relative_ptr2(struct ndr_pull *ndr, const void *p);
+size_t ndr_align_size(uint32_t offset, size_t n);
+struct ndr_pull *ndr_pull_init_blob(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience);
+enum ndr_err_code ndr_pull_advance(struct ndr_pull *ndr, uint32_t size);
+struct ndr_push *ndr_push_init_ctx(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience);
+DATA_BLOB ndr_push_blob(struct ndr_push *ndr);
+enum ndr_err_code ndr_push_expand(struct ndr_push *ndr, uint32_t extra_size);
+void ndr_print_debug_helper(struct ndr_print *ndr, const char *format, ...) PRINTF_ATTRIBUTE(2,3);
+void ndr_print_string_helper(struct ndr_print *ndr, const char *format, ...) PRINTF_ATTRIBUTE(2,3);
+void ndr_print_debug(ndr_print_fn_t fn, const char *name, void *ptr);
+void ndr_print_union_debug(ndr_print_fn_t fn, const char *name, uint32_t level, void *ptr);
+void ndr_print_function_debug(ndr_print_function_t fn, const char *name, int flags, void *ptr);
+char *ndr_print_struct_string(TALLOC_CTX *mem_ctx, ndr_print_fn_t fn, const char *name, void *ptr);
+char *ndr_print_union_string(TALLOC_CTX *mem_ctx, ndr_print_fn_t fn, const char *name, uint32_t level, void *ptr);
+char *ndr_print_function_string(TALLOC_CTX *mem_ctx,
+                               ndr_print_function_t fn, const char *name, 
+                               int flags, void *ptr);
+void ndr_set_flags(uint32_t *pflags, uint32_t new_flags);
+enum ndr_err_code ndr_pull_error(struct ndr_pull *ndr,
+                                enum ndr_err_code ndr_err,
+                                const char *format, ...) PRINTF_ATTRIBUTE(3,4);
+enum ndr_err_code ndr_push_error(struct ndr_push *ndr,
+                                enum ndr_err_code ndr_err,
+                                const char *format, ...)  PRINTF_ATTRIBUTE(3,4);
+enum ndr_err_code ndr_pull_subcontext_start(struct ndr_pull *ndr,
+                                  struct ndr_pull **_subndr,
+                                  size_t header_size,
+                                  ssize_t size_is);
+enum ndr_err_code ndr_pull_subcontext_end(struct ndr_pull *ndr,
+                                struct ndr_pull *subndr,
+                                size_t header_size,
+                                ssize_t size_is);
+enum ndr_err_code ndr_push_subcontext_start(struct ndr_push *ndr,
+                                  struct ndr_push **_subndr,
+                                  size_t header_size,
+                                  ssize_t size_is);
+enum ndr_err_code ndr_push_subcontext_end(struct ndr_push *ndr,
+                                struct ndr_push *subndr,
+                                size_t header_size,
+                                ssize_t size_is);
+enum ndr_err_code ndr_token_store(TALLOC_CTX *mem_ctx,
+                        struct ndr_token_list **list, 
+                        const void *key, 
+                        uint32_t value);
+enum ndr_err_code ndr_token_retrieve_cmp_fn(struct ndr_token_list **list, const void *key, uint32_t *v, comparison_fn_t _cmp_fn, bool _remove_tok);
+enum ndr_err_code ndr_token_retrieve(struct ndr_token_list **list, const void *key, uint32_t *v);
+uint32_t ndr_token_peek(struct ndr_token_list **list, const void *key);
+enum ndr_err_code ndr_pull_array_size(struct ndr_pull *ndr, const void *p);
+uint32_t ndr_get_array_size(struct ndr_pull *ndr, const void *p);
+enum ndr_err_code ndr_check_array_size(struct ndr_pull *ndr, void *p, uint32_t size);
+enum ndr_err_code ndr_pull_array_length(struct ndr_pull *ndr, const void *p);
+uint32_t ndr_get_array_length(struct ndr_pull *ndr, const void *p);
+enum ndr_err_code ndr_check_array_length(struct ndr_pull *ndr, void *p, uint32_t length);
+enum ndr_err_code ndr_push_set_switch_value(struct ndr_push *ndr, const void *p, uint32_t val);
+enum ndr_err_code ndr_pull_set_switch_value(struct ndr_pull *ndr, const void *p, uint32_t val);
+enum ndr_err_code ndr_print_set_switch_value(struct ndr_print *ndr, const void *p, uint32_t val);
+uint32_t ndr_push_get_switch_value(struct ndr_push *ndr, const void *p);
+uint32_t ndr_pull_get_switch_value(struct ndr_pull *ndr, const void *p);
+uint32_t ndr_print_get_switch_value(struct ndr_print *ndr, const void *p);
+enum ndr_err_code ndr_pull_struct_blob(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, void *p, ndr_pull_flags_fn_t fn);
+enum ndr_err_code ndr_pull_struct_blob_all(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, void *p, ndr_pull_flags_fn_t fn);
+enum ndr_err_code ndr_pull_union_blob(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, void *p, uint32_t level, ndr_pull_flags_fn_t fn);
+enum ndr_err_code ndr_pull_union_blob_all(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, void *p, uint32_t level, ndr_pull_flags_fn_t fn);
+
+/* from libndr_basic.h */
+#define NDR_SCALAR_PROTO(name, type) \
+enum ndr_err_code ndr_push_ ## name(struct ndr_push *ndr, int ndr_flags, type v); \
+enum ndr_err_code ndr_pull_ ## name(struct ndr_pull *ndr, int ndr_flags, type *v); \
+void ndr_print_ ## name(struct ndr_print *ndr, const char *var_name, type v); 
+
+#define NDR_BUFFER_PROTO(name, type) \
+enum ndr_err_code ndr_push_ ## name(struct ndr_push *ndr, int ndr_flags, const type *v); \
+enum ndr_err_code ndr_pull_ ## name(struct ndr_pull *ndr, int ndr_flags, type *v); \
+void ndr_print_ ## name(struct ndr_print *ndr, const char *var_name, const type *v); 
+
+NDR_SCALAR_PROTO(uint8, uint8_t)
+NDR_SCALAR_PROTO(int8, int8_t)
+NDR_SCALAR_PROTO(uint16, uint16_t)
+NDR_SCALAR_PROTO(int16, int16_t)
+NDR_SCALAR_PROTO(uint32, uint32_t)
+NDR_SCALAR_PROTO(int32, int32_t)
+NDR_SCALAR_PROTO(udlong, uint64_t)
+NDR_SCALAR_PROTO(udlongr, uint64_t)
+NDR_SCALAR_PROTO(dlong, int64_t)
+NDR_SCALAR_PROTO(hyper, uint64_t)
+NDR_SCALAR_PROTO(pointer, void *)
+NDR_SCALAR_PROTO(time_t, time_t)
+NDR_SCALAR_PROTO(NTSTATUS, NTSTATUS)
+NDR_SCALAR_PROTO(WERROR, WERROR)
+NDR_SCALAR_PROTO(NTTIME, NTTIME)
+NDR_SCALAR_PROTO(NTTIME_1sec, NTTIME)
+NDR_SCALAR_PROTO(NTTIME_hyper, NTTIME)
+NDR_SCALAR_PROTO(DATA_BLOB, DATA_BLOB)
+NDR_SCALAR_PROTO(ipv4address, const char *)
+NDR_SCALAR_PROTO(string, const char *)
+
+enum ndr_err_code ndr_pull_policy_handle(struct ndr_pull *ndr, int ndr_flags, struct policy_handle *r);
+enum ndr_err_code ndr_push_policy_handle(struct ndr_push *ndr, int ndr_flags, const struct policy_handle *r);
+void ndr_print_policy_handle(struct ndr_print *ndr, const char *name, const struct policy_handle *r);
+bool policy_handle_empty(struct policy_handle *h);
+
+void ndr_check_padding(struct ndr_pull *ndr, size_t n);
+enum ndr_err_code ndr_pull_generic_ptr(struct ndr_pull *ndr, uint32_t *v);
+enum ndr_err_code ndr_pull_ref_ptr(struct ndr_pull *ndr, uint32_t *v);
+enum ndr_err_code ndr_pull_bytes(struct ndr_pull *ndr, uint8_t *data, uint32_t n);
+enum ndr_err_code ndr_pull_array_uint8(struct ndr_pull *ndr, int ndr_flags, uint8_t *data, uint32_t n);
+enum ndr_err_code ndr_push_align(struct ndr_push *ndr, size_t size);
+enum ndr_err_code ndr_pull_align(struct ndr_pull *ndr, size_t size);
+enum ndr_err_code ndr_push_bytes(struct ndr_push *ndr, const uint8_t *data, uint32_t n);
+enum ndr_err_code ndr_push_zero(struct ndr_push *ndr, uint32_t n);
+enum ndr_err_code ndr_push_array_uint8(struct ndr_push *ndr, int ndr_flags, const uint8_t *data, uint32_t n);
+enum ndr_err_code ndr_push_unique_ptr(struct ndr_push *ndr, const void *p);
+enum ndr_err_code ndr_push_full_ptr(struct ndr_push *ndr, const void *p);
+enum ndr_err_code ndr_push_ref_ptr(struct ndr_push *ndr);
+void ndr_print_struct(struct ndr_print *ndr, const char *name, const char *type);
+void ndr_print_enum(struct ndr_print *ndr, const char *name, const char *type, const char *val, uint32_t value);
+void ndr_print_bitmap_flag(struct ndr_print *ndr, size_t size, const char *flag_name, uint32_t flag, uint32_t value);
+void ndr_print_bitmap_flag(struct ndr_print *ndr, size_t size, const char *flag_name, uint32_t flag, uint32_t value);
+void ndr_print_ptr(struct ndr_print *ndr, const char *name, const void *p);
+void ndr_print_union(struct ndr_print *ndr, const char *name, int level, const char *type);
+void ndr_print_bad_level(struct ndr_print *ndr, const char *name, uint16_t level);
+void ndr_print_array_uint8(struct ndr_print *ndr, const char *name, const uint8_t *data, uint32_t count);
+uint32_t ndr_size_DATA_BLOB(int ret, const DATA_BLOB *data, int flags);
+
+/* strings */
+uint32_t ndr_charset_length(const void *var, charset_t chset);
+size_t ndr_string_array_size(struct ndr_push *ndr, const char *s);
+uint32_t ndr_size_string(int ret, const char * const* string, int flags);
+enum ndr_err_code ndr_pull_string_array(struct ndr_pull *ndr, int ndr_flags, const char ***_a);
+enum ndr_err_code ndr_push_string_array(struct ndr_push *ndr, int ndr_flags, const char **a);
+void ndr_print_string_array(struct ndr_print *ndr, const char *name, const char **a);
+uint32_t ndr_string_length(const void *_var, uint32_t element_size);
+enum ndr_err_code ndr_check_string_terminator(struct ndr_pull *ndr, uint32_t count, uint32_t element_size);
+enum ndr_err_code ndr_pull_charset(struct ndr_pull *ndr, int ndr_flags, const char **var, uint32_t length, uint8_t byte_mul, charset_t chset);
+enum ndr_err_code ndr_push_charset(struct ndr_push *ndr, int ndr_flags, const char *var, uint32_t length, uint8_t byte_mul, charset_t chset);
+
+/* GUIDs */
+bool GUID_equal(const struct GUID *u1, const struct GUID *u2);
+NTSTATUS GUID_from_string(const char *s, struct GUID *guid);
+NTSTATUS NS_GUID_from_string(const char *s, struct GUID *guid);
+struct GUID GUID_zero(void);
+bool GUID_all_zero(const struct GUID *u);
+int GUID_compare(const struct GUID *u1, const struct GUID *u2);
+char *GUID_string(TALLOC_CTX *mem_ctx, const struct GUID *guid);
+char *GUID_string2(TALLOC_CTX *mem_ctx, const struct GUID *guid);
+char *NS_GUID_string(TALLOC_CTX *mem_ctx, const struct GUID *guid);
+struct GUID GUID_random(void);
 
 #endif /* __LIBNDR_H__ */
index e6da09640307deb468ded8af60641727e8279e50..40852456bceb117300744d73acb9ead234bc4570 100644 (file)
@@ -163,7 +163,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_expand(struct ndr_push *ndr, uint32_t extra_
        return NDR_ERR_SUCCESS;
 }
 
-_PUBLIC_ void ndr_print_debug_helper(struct ndr_print *ndr, const char *format, ...) _PRINTF_ATTRIBUTE(2,3)
+_PUBLIC_ void ndr_print_debug_helper(struct ndr_print *ndr, const char *format, ...)
 {
        va_list ap;
        char *s = NULL;
@@ -181,7 +181,7 @@ _PUBLIC_ void ndr_print_debug_helper(struct ndr_print *ndr, const char *format,
        free(s);
 }
 
-_PUBLIC_ void ndr_print_string_helper(struct ndr_print *ndr, const char *format, ...) _PRINTF_ATTRIBUTE(2,3)
+_PUBLIC_ void ndr_print_string_helper(struct ndr_print *ndr, const char *format, ...)
 {
        va_list ap;
        int i;
@@ -346,7 +346,7 @@ _PUBLIC_ void ndr_set_flags(uint32_t *pflags, uint32_t new_flags)
 */
 _PUBLIC_ enum ndr_err_code ndr_pull_error(struct ndr_pull *ndr,
                                 enum ndr_err_code ndr_err,
-                                const char *format, ...) _PRINTF_ATTRIBUTE(3,4)
+                                const char *format, ...)
 {
        char *s=NULL;
        va_list ap;
@@ -367,7 +367,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_error(struct ndr_pull *ndr,
 */
 _PUBLIC_ enum ndr_err_code ndr_push_error(struct ndr_push *ndr,
                                 enum ndr_err_code ndr_err,
-                                const char *format, ...)  _PRINTF_ATTRIBUTE(3,4)
+                                const char *format, ...)
 {
        char *s=NULL;
        va_list ap;
index e92df224947b121d7c898b0564151900efcd1c11..1e6ee0a3db7b31087b12ca1d94dbc20ef9ced833 100644 (file)
@@ -110,7 +110,7 @@ _PUBLIC_ NTSTATUS NS_GUID_from_string(const char *s, struct GUID *guid)
 /**
  * generate a random GUID
  */
-struct GUID GUID_random(void)
+_PUBLIC_ struct GUID GUID_random(void)
 {
        struct GUID guid;
 
index a379398f19772cc7b72c64c9e1038d1aafe35a64..5e32f6f5bf21ec795cf948e4ca7a3fe9ff7c6a04 100644 (file)
 #include "lib/util/dlinklist.h"
 #include "lib/events/events.h"
 #include "librpc/rpc/dcerpc.h"
+#include "librpc/rpc/dcerpc_proto.h"
 #include "librpc/gen_ndr/ndr_misc.h"
 #include "librpc/gen_ndr/ndr_dcerpc.h"
 #include "libcli/composite/composite.h"
 #include "auth/gensec/gensec.h"
 #include "param/param.h"
 
-NTSTATUS dcerpc_init(void)
+_PUBLIC_ NTSTATUS dcerpc_init(void)
 {
        gensec_init(global_loadparm);
 
@@ -98,7 +99,7 @@ static struct dcerpc_connection *dcerpc_connection_init(TALLOC_CTX *mem_ctx,
 }
 
 /* initialise a dcerpc pipe. */
-struct dcerpc_pipe *dcerpc_pipe_init(TALLOC_CTX *mem_ctx, struct event_context *ev,
+_PUBLIC_ struct dcerpc_pipe *dcerpc_pipe_init(TALLOC_CTX *mem_ctx, struct event_context *ev,
                                     struct smb_iconv_convenience *ic)
 {
        struct dcerpc_pipe *p;
@@ -1104,7 +1105,7 @@ static void dcerpc_ship_next_request(struct dcerpc_connection *c)
   return the event context for a dcerpc pipe
   used by callers who wish to operate asynchronously
 */
-struct event_context *dcerpc_event_context(struct dcerpc_pipe *p)
+_PUBLIC_ struct event_context *dcerpc_event_context(struct dcerpc_pipe *p)
 {
        return p->conn->event_ctx;
 }
@@ -1503,7 +1504,7 @@ _PUBLIC_ NTSTATUS dcerpc_ndr_request_recv(struct rpc_request *req)
   this can be used when you have ndr push/pull functions in the
   standard format
 */
-NTSTATUS dcerpc_ndr_request(struct dcerpc_pipe *p,
+_PUBLIC_ NTSTATUS dcerpc_ndr_request(struct dcerpc_pipe *p,
                            const struct GUID *object,
                            const struct ndr_interface_table *table,
                            uint32_t opnum, 
@@ -1524,7 +1525,7 @@ NTSTATUS dcerpc_ndr_request(struct dcerpc_pipe *p,
 /*
   a useful function for retrieving the server name we connected to
 */
-const char *dcerpc_server_name(struct dcerpc_pipe *p)
+_PUBLIC_ const char *dcerpc_server_name(struct dcerpc_pipe *p)
 {
        if (!p->conn->transport.target_hostname) {
                if (!p->conn->transport.peer_name) {
@@ -1688,7 +1689,7 @@ NTSTATUS dcerpc_alter_context_recv(struct composite_context *ctx)
 /* 
    send a dcerpc alter_context request
 */
-NTSTATUS dcerpc_alter_context(struct dcerpc_pipe *p, 
+_PUBLIC_ NTSTATUS dcerpc_alter_context(struct dcerpc_pipe *p, 
                              TALLOC_CTX *mem_ctx,
                              const struct ndr_syntax_id *syntax,
                              const struct ndr_syntax_id *transfer_syntax)
index 7c6aa7513bbd64c15d763ce3db401612d899d2e6..805f5463a90b95db99555a21cf80af47e4d61128 100644 (file)
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+/* This is a public header file that is installed as part of Samba. 
+ * If you remove any functions or change their signature, update 
+ * the so version number. */
+
 #ifndef __DCERPC_H__
 #define __DCERPC_H__
 
@@ -233,6 +237,130 @@ struct smbcli_tree;
 struct smb2_tree;
 struct socket_address;
 
-#include "librpc/rpc/dcerpc_proto.h"
+NTSTATUS dcerpc_pipe_connect(TALLOC_CTX *parent_ctx, 
+                            struct dcerpc_pipe **pp, 
+                            const char *binding,
+                            const struct ndr_interface_table *table,
+                            struct cli_credentials *credentials,
+                            struct event_context *ev,
+                            struct loadparm_context *lp_ctx);
+NTSTATUS dcerpc_ndr_request_recv(struct rpc_request *req);
+struct rpc_request *dcerpc_ndr_request_send(struct dcerpc_pipe *p,
+                                               const struct GUID *object,
+                                               const struct ndr_interface_table *table,
+                                               uint32_t opnum, 
+                                               TALLOC_CTX *mem_ctx, 
+                                               void *r);
+const char *dcerpc_server_name(struct dcerpc_pipe *p);
+struct dcerpc_pipe *dcerpc_pipe_init(TALLOC_CTX *mem_ctx, struct event_context *ev,
+                                    struct smb_iconv_convenience *ic);
+NTSTATUS dcerpc_pipe_open_smb(struct dcerpc_pipe *p,
+                             struct smbcli_tree *tree,
+                             const char *pipe_name);
+NTSTATUS dcerpc_bind_auth_none(struct dcerpc_pipe *p,
+                              const struct ndr_interface_table *table);
+NTSTATUS dcerpc_fetch_session_key(struct dcerpc_pipe *p,
+                                 DATA_BLOB *session_key);
+struct composite_context;
+NTSTATUS dcerpc_secondary_connection_recv(struct composite_context *c,
+                                         struct dcerpc_pipe **p2);
+NTSTATUS dcerpc_parse_binding(TALLOC_CTX *mem_ctx, const char *s, struct dcerpc_binding **b_out);
+
+struct composite_context* dcerpc_pipe_connect_b_send(TALLOC_CTX *parent_ctx,
+                                                    struct dcerpc_binding *binding,
+                                                    const struct ndr_interface_table *table,
+                                                    struct cli_credentials *credentials,
+                                                    struct event_context *ev,
+                                                    struct loadparm_context *lp_ctx);
+
+NTSTATUS dcerpc_pipe_connect_b_recv(struct composite_context *c, TALLOC_CTX *mem_ctx,
+                                   struct dcerpc_pipe **p);
+
+NTSTATUS dcerpc_pipe_connect_b(TALLOC_CTX *parent_ctx,
+                              struct dcerpc_pipe **pp,
+                              struct dcerpc_binding *binding,
+                              const struct ndr_interface_table *table,
+                              struct cli_credentials *credentials,
+                              struct event_context *ev,
+                              struct loadparm_context *lp_ctx);
+const char *dcerpc_errstr(TALLOC_CTX *mem_ctx, uint32_t fault_code);
+
+NTSTATUS dcerpc_pipe_auth(TALLOC_CTX *mem_ctx,
+                         struct dcerpc_pipe **p, 
+                         struct dcerpc_binding *binding,
+                         const struct ndr_interface_table *table,
+                         struct cli_credentials *credentials,
+                         struct loadparm_context *lp_ctx);
+char *dcerpc_binding_string(TALLOC_CTX *mem_ctx, const struct dcerpc_binding *b);
+NTSTATUS dcerpc_secondary_connection(struct dcerpc_pipe *p,
+                                    struct dcerpc_pipe **p2,
+                                    struct dcerpc_binding *b);
+NTSTATUS dcerpc_bind_auth_schannel(TALLOC_CTX *tmp_ctx, 
+                                  struct dcerpc_pipe *p,
+                                  const struct ndr_interface_table *table,
+                                  struct cli_credentials *credentials,
+                                  struct loadparm_context *lp_ctx,
+                                  uint8_t auth_level);
+struct event_context *dcerpc_event_context(struct dcerpc_pipe *p);
+NTSTATUS dcerpc_init(void);
+struct smbcli_tree *dcerpc_smb_tree(struct dcerpc_connection *c);
+uint16_t dcerpc_smb_fnum(struct dcerpc_connection *c);
+NTSTATUS dcerpc_secondary_context(struct dcerpc_pipe *p, 
+                                 struct dcerpc_pipe **pp2,
+                                 const struct ndr_interface_table *table);
+NTSTATUS dcerpc_alter_context(struct dcerpc_pipe *p, 
+                             TALLOC_CTX *mem_ctx,
+                             const struct ndr_syntax_id *syntax,
+                             const struct ndr_syntax_id *transfer_syntax);
+
+NTSTATUS dcerpc_bind_auth(struct dcerpc_pipe *p,
+                         const struct ndr_interface_table *table,
+                         struct cli_credentials *credentials,
+                         struct loadparm_context *lp_ctx,
+                         uint8_t auth_type, uint8_t auth_level,
+                         const char *service);
+struct composite_context* dcerpc_pipe_connect_send(TALLOC_CTX *parent_ctx,
+                                                  const char *binding,
+                                                  const struct ndr_interface_table *table,
+                                                  struct cli_credentials *credentials,
+                                                  struct event_context *ev, struct loadparm_context *lp_ctx);
+NTSTATUS dcerpc_pipe_connect_recv(struct composite_context *c,
+                                 TALLOC_CTX *mem_ctx,
+                                 struct dcerpc_pipe **pp);
+
+NTSTATUS dcerpc_epm_map_binding(TALLOC_CTX *mem_ctx, struct dcerpc_binding *binding,
+                               const struct ndr_interface_table *table, struct event_context *ev,
+                               struct loadparm_context *lp_ctx);
+struct composite_context* dcerpc_secondary_auth_connection_send(struct dcerpc_pipe *p,
+                                                               struct dcerpc_binding *binding,
+                                                               const struct ndr_interface_table *table,
+                                                               struct cli_credentials *credentials,
+                                                               struct loadparm_context *lp_ctx);
+NTSTATUS dcerpc_secondary_auth_connection_recv(struct composite_context *c, 
+                                              TALLOC_CTX *mem_ctx,
+                                              struct dcerpc_pipe **p);
+
+struct composite_context* dcerpc_secondary_connection_send(struct dcerpc_pipe *p,
+                                                          struct dcerpc_binding *b);
+void dcerpc_log_packet(const struct ndr_interface_table *ndr,
+                      uint32_t opnum, uint32_t flags, 
+                      DATA_BLOB *pkt);
+NTSTATUS dcerpc_binding_build_tower(TALLOC_CTX *mem_ctx, struct dcerpc_binding *binding, struct epm_tower *tower);
+
+NTSTATUS dcerpc_floor_get_lhs_data(struct epm_floor *epm_floor, struct ndr_syntax_id *syntax);
+
+enum dcerpc_transport_t dcerpc_transport_by_tower(struct epm_tower *tower);
+
+NTSTATUS dcerpc_ndr_request(struct dcerpc_pipe *p,
+                           const struct GUID *object,
+                           const struct ndr_interface_table *table,
+                           uint32_t opnum, 
+                           TALLOC_CTX *mem_ctx, 
+                           void *r);
+
+NTSTATUS dcerpc_binding_from_tower(TALLOC_CTX *mem_ctx, 
+                                  struct epm_tower *tower, 
+                                  struct dcerpc_binding **b_out);
+
 
 #endif /* __DCERPC_H__ */
index f80ef86413ca55254c00f1ec532663c44a839c66..f990029f1dc58196cdc1e2508789bfc8e4218098 100644 (file)
@@ -25,6 +25,7 @@
 #include "libcli/composite/composite.h"
 #include "auth/gensec/gensec.h"
 #include "librpc/rpc/dcerpc.h"
+#include "librpc/rpc/dcerpc_proto.h"
 #include "param/param.h"
 
 /*
@@ -86,7 +87,7 @@ NTSTATUS dcerpc_bind_auth_none_recv(struct composite_context *ctx)
 /*
   Perform sync non-authenticated dcerpc bind
 */
-NTSTATUS dcerpc_bind_auth_none(struct dcerpc_pipe *p,
+_PUBLIC_ NTSTATUS dcerpc_bind_auth_none(struct dcerpc_pipe *p,
                               const struct ndr_interface_table *table)
 {
        struct composite_context *ctx;
@@ -372,7 +373,7 @@ NTSTATUS dcerpc_bind_auth_recv(struct composite_context *creq)
    @retval NTSTATUS status code
 */
 
-NTSTATUS dcerpc_bind_auth(struct dcerpc_pipe *p,
+_PUBLIC_ NTSTATUS dcerpc_bind_auth(struct dcerpc_pipe *p,
                          const struct ndr_interface_table *table,
                          struct cli_credentials *credentials,
                          struct loadparm_context *lp_ctx,
index 361be4adcd01d9ca93e83638253365f64720ee92..cc7f2ddbaa29b751f00c7667784bc7accbcbce07 100644 (file)
@@ -30,6 +30,7 @@
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
 #include "librpc/rpc/dcerpc.h"
+#include "librpc/rpc/dcerpc_proto.h"
 #include "auth/credentials/credentials.h"
 #include "param/param.h"
 #include "libcli/resolve/resolve.h"
@@ -705,7 +706,7 @@ static void dcerpc_connect_timeout_handler(struct event_context *ev, struct time
   start a request to open a rpc connection to a rpc pipe, using
   specified binding structure to determine the endpoint and options
 */
-struct composite_context* dcerpc_pipe_connect_b_send(TALLOC_CTX *parent_ctx,
+_PUBLIC_ struct composite_context* dcerpc_pipe_connect_b_send(TALLOC_CTX *parent_ctx,
                                                     struct dcerpc_binding *binding,
                                                     const struct ndr_interface_table *table,
                                                     struct cli_credentials *credentials,
@@ -782,7 +783,7 @@ struct composite_context* dcerpc_pipe_connect_b_send(TALLOC_CTX *parent_ctx,
 /*
   receive result of a request to open a rpc connection to a rpc pipe
 */
-NTSTATUS dcerpc_pipe_connect_b_recv(struct composite_context *c, TALLOC_CTX *mem_ctx,
+_PUBLIC_ NTSTATUS dcerpc_pipe_connect_b_recv(struct composite_context *c, TALLOC_CTX *mem_ctx,
                                    struct dcerpc_pipe **p)
 {
        NTSTATUS status;
@@ -804,7 +805,7 @@ NTSTATUS dcerpc_pipe_connect_b_recv(struct composite_context *c, TALLOC_CTX *mem
   open a rpc connection to a rpc pipe, using the specified 
   binding structure to determine the endpoint and options - sync version
 */
-NTSTATUS dcerpc_pipe_connect_b(TALLOC_CTX *parent_ctx,
+_PUBLIC_ NTSTATUS dcerpc_pipe_connect_b(TALLOC_CTX *parent_ctx,
                               struct dcerpc_pipe **pp,
                               struct dcerpc_binding *binding,
                               const struct ndr_interface_table *table,
@@ -833,7 +834,7 @@ static void continue_pipe_connect_b(struct composite_context *ctx);
   binding to determine the endpoint and options.
   The string is to be parsed to a binding structure first.
 */
-struct composite_context* dcerpc_pipe_connect_send(TALLOC_CTX *parent_ctx,
+_PUBLIC_ struct composite_context* dcerpc_pipe_connect_send(TALLOC_CTX *parent_ctx,
                                                   const char *binding,
                                                   const struct ndr_interface_table *table,
                                                   struct cli_credentials *credentials,
@@ -928,7 +929,7 @@ NTSTATUS dcerpc_pipe_connect_recv(struct composite_context *c,
   Open a rpc connection to a rpc pipe, using the specified string
   binding to determine the endpoint and options - sync version
 */
-NTSTATUS dcerpc_pipe_connect(TALLOC_CTX *parent_ctx, 
+_PUBLIC_ NTSTATUS dcerpc_pipe_connect(TALLOC_CTX *parent_ctx, 
                             struct dcerpc_pipe **pp, 
                             const char *binding,
                             const struct ndr_interface_table *table,
index 6394f9cf26e0a0a570d486768537b214ddaa8458..6ea4563ae6f58ebf2d103d42ac30b0584d37fafe 100644 (file)
@@ -40,7 +40,7 @@ static const struct dcerpc_fault_table dcerpc_faults[] =
        { NULL,                                 0}      
 };
 
-const char *dcerpc_errstr(TALLOC_CTX *mem_ctx, uint32_t fault_code)
+_PUBLIC_ const char *dcerpc_errstr(TALLOC_CTX *mem_ctx, uint32_t fault_code)
 {
        int idx = 0;
 
index 68e211afae735a5d6c149a93c624322b4f074858..5588b43dcdf3d7e6236bab073c254dcd015bfacf 100644 (file)
@@ -28,6 +28,7 @@
 #include "librpc/gen_ndr/ndr_netlogon.h"
 #include "librpc/gen_ndr/ndr_netlogon_c.h"
 #include "auth/credentials/credentials.h"
+#include "librpc/rpc/dcerpc_proto.h"
 
 struct schannel_key_state {
        struct dcerpc_pipe *pipe;
@@ -396,7 +397,7 @@ NTSTATUS dcerpc_bind_auth_schannel_recv(struct composite_context *c)
 /*
   Perform schannel authenticated bind - sync version
  */
-NTSTATUS dcerpc_bind_auth_schannel(TALLOC_CTX *tmp_ctx, 
+_PUBLIC_ NTSTATUS dcerpc_bind_auth_schannel(TALLOC_CTX *tmp_ctx, 
                                   struct dcerpc_pipe *p,
                                   const struct ndr_interface_table *table,
                                   struct cli_credentials *credentials,
index ab98215180ea60d77ad44a145370861e953ef164..abc67ad38bb4d63625889dedab65065b75439393 100644 (file)
@@ -27,6 +27,7 @@
 #include "libcli/composite/composite.h"
 #include "lib/events/events.h"
 #include "librpc/rpc/dcerpc.h"
+#include "librpc/rpc/dcerpc_proto.h"
 #include "auth/credentials/credentials.h"
 #include "param/param.h"
 #include "libcli/resolve/resolve.h"
@@ -50,7 +51,7 @@ static void continue_pipe_open(struct composite_context *c);
   Send request to create a secondary dcerpc connection from a primary
   connection
 */
-struct composite_context* dcerpc_secondary_connection_send(struct dcerpc_pipe *p,
+_PUBLIC_ struct composite_context* dcerpc_secondary_connection_send(struct dcerpc_pipe *p,
                                                           struct dcerpc_binding *b)
 {
        struct composite_context *c;
@@ -183,7 +184,7 @@ static void continue_pipe_open(struct composite_context *c)
   Receive result of secondary rpc connection request and return
   second dcerpc pipe.
 */
-NTSTATUS dcerpc_secondary_connection_recv(struct composite_context *c,
+_PUBLIC_ NTSTATUS dcerpc_secondary_connection_recv(struct composite_context *c,
                                          struct dcerpc_pipe **p2)
 {
        NTSTATUS status = composite_wait(c);
@@ -206,7 +207,7 @@ NTSTATUS dcerpc_secondary_connection_recv(struct composite_context *c,
   If the primary is a SMB connection then the secondary connection
   will be on the same SMB connection, but using a new fnum
 */
-NTSTATUS dcerpc_secondary_connection(struct dcerpc_pipe *p,
+_PUBLIC_ NTSTATUS dcerpc_secondary_connection(struct dcerpc_pipe *p,
                                     struct dcerpc_pipe **p2,
                                     struct dcerpc_binding *b)
 {
@@ -234,7 +235,7 @@ struct sec_auth_conn_state {
 static void dcerpc_secondary_auth_connection_bind(struct composite_context *ctx);
 static void dcerpc_secondary_auth_connection_continue(struct composite_context *ctx);
 
-struct composite_context* dcerpc_secondary_auth_connection_send(struct dcerpc_pipe *p,
+_PUBLIC_ struct composite_context* dcerpc_secondary_auth_connection_send(struct dcerpc_pipe *p,
                                                                struct dcerpc_binding *binding,
                                                                const struct ndr_interface_table *table,
                                                                struct cli_credentials *credentials,
@@ -306,7 +307,7 @@ static void dcerpc_secondary_auth_connection_continue(struct composite_context *
 /*
   Receive an authenticated pipe, created as a secondary connection
 */
-NTSTATUS dcerpc_secondary_auth_connection_recv(struct composite_context *c, 
+_PUBLIC_ NTSTATUS dcerpc_secondary_auth_connection_recv(struct composite_context *c, 
                                               TALLOC_CTX *mem_ctx,
                                               struct dcerpc_pipe **p)
 {
index 718ce694c5ba4abec749dddc5b4905ed0fd31155..26fe433b092f93260c6219b63c40b577894984a2 100644 (file)
@@ -24,6 +24,7 @@
 #include "libcli/raw/libcliraw.h"
 #include "libcli/composite/composite.h"
 #include "librpc/rpc/dcerpc.h"
+#include "librpc/rpc/dcerpc_proto.h"
 
 /* transport private information used by SMB pipe transport */
 struct smb_private {
@@ -540,7 +541,7 @@ NTSTATUS dcerpc_pipe_open_smb_recv(struct composite_context *c)
        return status;
 }
 
-NTSTATUS dcerpc_pipe_open_smb(struct dcerpc_pipe *p,
+_PUBLIC_ NTSTATUS dcerpc_pipe_open_smb(struct dcerpc_pipe *p,
                              struct smbcli_tree *tree,
                              const char *pipe_name)
 {
@@ -552,7 +553,7 @@ NTSTATUS dcerpc_pipe_open_smb(struct dcerpc_pipe *p,
 /*
   return the SMB tree used for a dcerpc over SMB pipe
 */
-struct smbcli_tree *dcerpc_smb_tree(struct dcerpc_connection *c)
+_PUBLIC_ struct smbcli_tree *dcerpc_smb_tree(struct dcerpc_connection *c)
 {
        struct smb_private *smb;
 
@@ -567,7 +568,7 @@ struct smbcli_tree *dcerpc_smb_tree(struct dcerpc_connection *c)
 /*
   return the SMB fnum used for a dcerpc over SMB pipe (hack for torture operations)
 */
-uint16_t dcerpc_smb_fnum(struct dcerpc_connection *c)
+_PUBLIC_ uint16_t dcerpc_smb_fnum(struct dcerpc_connection *c)
 {
        struct smb_private *smb;
 
index a0094b8bae3063856beb264e948673001222408e..8adca4caba5768f95f822323816ddaed0d0b5d91 100644 (file)
@@ -26,6 +26,7 @@
 #include "libcli/smb2/smb2_calls.h"
 #include "libcli/raw/ioctl.h"
 #include "librpc/rpc/dcerpc.h"
+#include "librpc/rpc/dcerpc_proto.h"
 
 /* transport private information used by SMB2 pipe transport */
 struct smb2_private {
index 76389f0d746688e60c575a9e4f8bff14d5c75501..7480beae33eab4428d18f2eb29aaa21df531fc8e 100644 (file)
@@ -27,6 +27,7 @@
 #include "lib/stream/packet.h"
 #include "libcli/composite/composite.h"
 #include "librpc/rpc/dcerpc.h"
+#include "librpc/rpc/dcerpc_proto.h"
 #include "libcli/resolve/resolve.h"
 #include "param/param.h"
 
index b8128baf43243bc584a3fcd14688346b5a5be49b..3b8768ccc21452b51bcfdf7f2f8cdad4783bca67 100644 (file)
@@ -28,6 +28,7 @@
 #include "librpc/gen_ndr/ndr_epmapper_c.h"
 #include "librpc/gen_ndr/ndr_dcerpc.h"
 #include "librpc/gen_ndr/ndr_misc.h"
+#include "librpc/rpc/dcerpc_proto.h"
 #include "auth/credentials/credentials.h"
 #include "param/param.h"
 
@@ -236,7 +237,7 @@ const char *epm_floor_string(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor)
 /*
   form a binding string from a binding structure
 */
-char *dcerpc_binding_string(TALLOC_CTX *mem_ctx, const struct dcerpc_binding *b)
+_PUBLIC_ char *dcerpc_binding_string(TALLOC_CTX *mem_ctx, const struct dcerpc_binding *b)
 {
        char *s = talloc_strdup(mem_ctx, "");
        int i;
@@ -302,7 +303,7 @@ char *dcerpc_binding_string(TALLOC_CTX *mem_ctx, const struct dcerpc_binding *b)
 /*
   parse a binding string into a dcerpc_binding structure
 */
-NTSTATUS dcerpc_parse_binding(TALLOC_CTX *mem_ctx, const char *s, struct dcerpc_binding **b_out)
+_PUBLIC_ NTSTATUS dcerpc_parse_binding(TALLOC_CTX *mem_ctx, const char *s, struct dcerpc_binding **b_out)
 {
        struct dcerpc_binding *b;
        char *options;
@@ -437,7 +438,7 @@ NTSTATUS dcerpc_parse_binding(TALLOC_CTX *mem_ctx, const char *s, struct dcerpc_
        return NT_STATUS_OK;
 }
 
-NTSTATUS dcerpc_floor_get_lhs_data(struct epm_floor *epm_floor, struct ndr_syntax_id *syntax)
+_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);
@@ -633,7 +634,7 @@ enum dcerpc_transport_t dcerpc_transport_by_endpoint_protocol(int prot)
        return (unsigned int)-1;
 }
 
-enum dcerpc_transport_t dcerpc_transport_by_tower(struct epm_tower *tower)
+_PUBLIC_ enum dcerpc_transport_t dcerpc_transport_by_tower(struct epm_tower *tower)
 {
        int i;
 
@@ -659,7 +660,7 @@ enum dcerpc_transport_t dcerpc_transport_by_tower(struct epm_tower *tower)
        return (unsigned int)-1;
 }
 
-NTSTATUS dcerpc_binding_from_tower(TALLOC_CTX *mem_ctx, 
+_PUBLIC_ NTSTATUS dcerpc_binding_from_tower(TALLOC_CTX *mem_ctx, 
                                   struct epm_tower *tower, 
                                   struct dcerpc_binding **b_out)
 {
@@ -715,7 +716,7 @@ NTSTATUS dcerpc_binding_from_tower(TALLOC_CTX *mem_ctx,
        return NT_STATUS_OK;
 }
 
-NTSTATUS dcerpc_binding_build_tower(TALLOC_CTX *mem_ctx, struct dcerpc_binding *binding, struct epm_tower *tower)
+_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;
@@ -1009,7 +1010,7 @@ NTSTATUS dcerpc_epm_map_binding_recv(struct composite_context *c)
 /*
   Get endpoint mapping for rpc connection
 */
-NTSTATUS dcerpc_epm_map_binding(TALLOC_CTX *mem_ctx, struct dcerpc_binding *binding,
+_PUBLIC_ NTSTATUS dcerpc_epm_map_binding(TALLOC_CTX *mem_ctx, struct dcerpc_binding *binding,
                                const struct ndr_interface_table *table, struct event_context *ev,
                                struct loadparm_context *lp_ctx)
 {
@@ -1329,7 +1330,7 @@ NTSTATUS dcerpc_pipe_auth_recv(struct composite_context *c, TALLOC_CTX *mem_ctx,
 
    This may change *p, as it rebinds to a new pipe due to authentication fallback
 */
-NTSTATUS dcerpc_pipe_auth(TALLOC_CTX *mem_ctx,
+_PUBLIC_ NTSTATUS dcerpc_pipe_auth(TALLOC_CTX *mem_ctx,
                          struct dcerpc_pipe **p, 
                          struct dcerpc_binding *binding,
                          const struct ndr_interface_table *table,
@@ -1355,7 +1356,7 @@ NTSTATUS dcerpc_generic_session_key(struct dcerpc_connection *c,
 /*
   fetch the user session key - may be default (above) or the SMB session key
 */
-NTSTATUS dcerpc_fetch_session_key(struct dcerpc_pipe *p,
+_PUBLIC_ NTSTATUS dcerpc_fetch_session_key(struct dcerpc_pipe *p,
                                  DATA_BLOB *session_key)
 {
        return p->conn->security_state.session_key(p->conn, session_key);
@@ -1368,7 +1369,7 @@ NTSTATUS dcerpc_fetch_session_key(struct dcerpc_pipe *p,
 
   this triggers on a debug level of >= 10
 */
-void dcerpc_log_packet(const struct ndr_interface_table *ndr,
+_PUBLIC_ void dcerpc_log_packet(const struct ndr_interface_table *ndr,
                       uint32_t opnum, uint32_t flags, 
                       DATA_BLOB *pkt)
 {
@@ -1403,7 +1404,7 @@ void dcerpc_log_packet(const struct ndr_interface_table *ndr,
 
   this uses dcerpc_alter_context() to create a new dcerpc context_id
 */
-NTSTATUS dcerpc_secondary_context(struct dcerpc_pipe *p, 
+_PUBLIC_ NTSTATUS dcerpc_secondary_context(struct dcerpc_pipe *p, 
                                  struct dcerpc_pipe **pp2,
                                  const struct ndr_interface_table *table)
 {
index 5e6fb04515b3e9c655c2943814823f215be50ba0..01cdfae80d0e6ecd7b170212b1f20bb4cb4315bc 100644 (file)
@@ -22,6 +22,7 @@
 #include "includes.h"
 #include "librpc/gen_ndr/epmapper.h"
 #include "librpc/rpc/dcerpc.h"
+#include "librpc/rpc/dcerpc_proto.h"
 #include "torture/torture.h"
 
 static bool test_BindingString(struct torture_context *tctx,
index f69b73ccfbb93942d8c1ea4b83865831ae0d1c7a..84e6b661bff2ba7ec35255b939d3cde8752bf8ab 100644 (file)
@@ -18,7 +18,7 @@ SUBSYSTEM = LIBLDB
 OUTPUT_TYPE = SHARED_LIBRARY
 INIT_FUNCTION = LDB_MODULE(wins_ldb)
 PRIVATE_DEPENDENCIES = \
-               LIBNETIF LIBSAMBA-CONFIG LIBSAMBA-UTIL
+               LIBNETIF LIBSAMBA-HOSTCONFIG LIBSAMBA-UTIL
 # End MODULE ldb_wins_ldb
 #######################
 
index 8c1eaa72eb6925233405c15651192a34df42cfd4..a0ceff00331daca062a1c1e3253c9a4e43e51b6c 100644 (file)
@@ -10,7 +10,7 @@ INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
                LIBSAMBA-UTIL \
                LIBREPLACE_EXT \
-               LIBSAMBA-CONFIG
+               LIBSAMBA-HOSTCONFIG
 # End BINARY nsstest
 #################################
 
index 3c090b5f5c65a9991709a45c9ca3884c493aa978..2feb1a0efe33a3a8379dcce1a032987e14aa55b9 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/smb_composite/smb_composite.h"
 #include "auth/auth.h"
 #include "auth/credentials/credentials.h"
index 1889bef23d42efa06ee02e34d2ec5dc807828b85..e0f5a9d2aa1e12a151bb4a69d03c472c8070dc88 100644 (file)
@@ -26,7 +26,7 @@
 #include "includes.h"
 #include "ntvfs/sysdep/sys_notify.h"
 
-_PUBLIC_ NTSTATUS ntvfs_common_init(void)
+NTSTATUS ntvfs_common_init(void)
 {
        return sys_notify_init();
 }
index 676706e03f18ddd6f4504253bd2f40ecca106213..2913ea8431c0d9025bc486744d6d081379df3c25 100644 (file)
@@ -58,7 +58,7 @@ void odb_set_ops(const struct opendb_ops *new_ops)
   talloc_free(). We need the messaging_ctx to allow for pending open
   notifications.
 */
-_PUBLIC_ struct odb_context *odb_init(TALLOC_CTX *mem_ctx, 
+struct odb_context *odb_init(TALLOC_CTX *mem_ctx, 
                                      struct ntvfs_context *ntvfs_ctx)
 {
        if (ops == NULL) {
@@ -75,13 +75,13 @@ _PUBLIC_ struct odb_context *odb_init(TALLOC_CTX *mem_ctx,
   get a lock on a entry in the odb. This call returns a lock handle,
   which the caller should unlock using talloc_free().
 */
-_PUBLIC_ struct odb_lock *odb_lock(TALLOC_CTX *mem_ctx,
+struct odb_lock *odb_lock(TALLOC_CTX *mem_ctx,
                                   struct odb_context *odb, DATA_BLOB *file_key)
 {
        return ops->odb_lock(mem_ctx, odb, file_key);
 }
 
-_PUBLIC_ DATA_BLOB odb_get_key(TALLOC_CTX *mem_ctx, struct odb_lock *lck)
+DATA_BLOB odb_get_key(TALLOC_CTX *mem_ctx, struct odb_lock *lck)
 {
        return ops->odb_get_key(mem_ctx, lck);
 }
@@ -95,7 +95,7 @@ _PUBLIC_ DATA_BLOB odb_get_key(TALLOC_CTX *mem_ctx, struct odb_lock *lck)
   Note that the path is only used by the delete on close logic, not
   for comparing with other filenames
 */
-_PUBLIC_ NTSTATUS odb_open_file(struct odb_lock *lck,
+NTSTATUS odb_open_file(struct odb_lock *lck,
                                void *file_handle, const char *path,
                                int *fd, bool allow_level_II_oplock,
                                uint32_t oplock_level, uint32_t *oplock_granted)
@@ -109,7 +109,7 @@ _PUBLIC_ NTSTATUS odb_open_file(struct odb_lock *lck,
 /*
   register a pending open file in the open files database
 */
-_PUBLIC_ NTSTATUS odb_open_file_pending(struct odb_lock *lck, void *private)
+NTSTATUS odb_open_file_pending(struct odb_lock *lck, void *private)
 {
        return ops->odb_open_file_pending(lck, private);
 }
@@ -118,7 +118,7 @@ _PUBLIC_ NTSTATUS odb_open_file_pending(struct odb_lock *lck, void *private)
 /*
   remove a opendb entry
 */
-_PUBLIC_ NTSTATUS odb_close_file(struct odb_lock *lck, void *file_handle,
+NTSTATUS odb_close_file(struct odb_lock *lck, void *file_handle,
                                 const char **delete_path)
 {
        return ops->odb_close_file(lck, file_handle, delete_path);
@@ -128,7 +128,7 @@ _PUBLIC_ NTSTATUS odb_close_file(struct odb_lock *lck, void *file_handle,
 /*
   remove a pending opendb entry
 */
-_PUBLIC_ NTSTATUS odb_remove_pending(struct odb_lock *lck, void *private)
+NTSTATUS odb_remove_pending(struct odb_lock *lck, void *private)
 {
        return ops->odb_remove_pending(lck, private);
 }
@@ -137,7 +137,7 @@ _PUBLIC_ NTSTATUS odb_remove_pending(struct odb_lock *lck, void *private)
 /*
   rename the path in a open file
 */
-_PUBLIC_ NTSTATUS odb_rename(struct odb_lock *lck, const char *path)
+NTSTATUS odb_rename(struct odb_lock *lck, const char *path)
 {
        return ops->odb_rename(lck, path);
 }
@@ -145,7 +145,7 @@ _PUBLIC_ NTSTATUS odb_rename(struct odb_lock *lck, const char *path)
 /*
   get back the path of an open file
 */
-_PUBLIC_ NTSTATUS odb_get_path(struct odb_lock *lck, const char **path)
+NTSTATUS odb_get_path(struct odb_lock *lck, const char **path)
 {
        return ops->odb_get_path(lck, path);
 }
@@ -153,7 +153,7 @@ _PUBLIC_ NTSTATUS odb_get_path(struct odb_lock *lck, const char **path)
 /*
   update delete on close flag on an open file
 */
-_PUBLIC_ NTSTATUS odb_set_delete_on_close(struct odb_lock *lck, bool del_on_close)
+NTSTATUS odb_set_delete_on_close(struct odb_lock *lck, bool del_on_close)
 {
        return ops->odb_set_delete_on_close(lck, del_on_close);
 }
@@ -162,7 +162,7 @@ _PUBLIC_ NTSTATUS odb_set_delete_on_close(struct odb_lock *lck, bool del_on_clos
   return the current value of the delete_on_close bit, and how many
   people still have the file open
 */
-_PUBLIC_ NTSTATUS odb_get_delete_on_close(struct odb_context *odb, 
+NTSTATUS odb_get_delete_on_close(struct odb_context *odb, 
                                          DATA_BLOB *key, bool *del_on_close)
 {
        return ops->odb_get_delete_on_close(odb, key, del_on_close);
@@ -173,7 +173,7 @@ _PUBLIC_ NTSTATUS odb_get_delete_on_close(struct odb_context *odb,
   determine if a file can be opened with the given share_access,
   create_options and access_mask
 */
-_PUBLIC_ NTSTATUS odb_can_open(struct odb_lock *lck,
+NTSTATUS odb_can_open(struct odb_lock *lck,
                               uint32_t stream_id, uint32_t share_access,
                               uint32_t access_mask, bool delete_on_close,
                               uint32_t open_disposition, bool break_to_none)
@@ -182,13 +182,13 @@ _PUBLIC_ NTSTATUS odb_can_open(struct odb_lock *lck,
                                 delete_on_close, open_disposition, break_to_none);
 }
 
-_PUBLIC_ NTSTATUS odb_update_oplock(struct odb_lock *lck, void *file_handle,
+NTSTATUS odb_update_oplock(struct odb_lock *lck, void *file_handle,
                                    uint32_t oplock_level)
 {
        return ops->odb_update_oplock(lck, file_handle, oplock_level);
 }
 
-_PUBLIC_ NTSTATUS odb_break_oplocks(struct odb_lock *lck)
+NTSTATUS odb_break_oplocks(struct odb_lock *lck)
 {
        return ops->odb_break_oplocks(lck);
 }
index 436fe11522357068de38bbc335313ede97090a93..93cbf64d8f0b4dbed570cf5461a0717888bf8e8c 100644 (file)
@@ -79,7 +79,7 @@ PRIVATE_PROTO_HEADER = ntvfs_proto.h
 
 ntvfs_OBJ_FILES = $(addprefix ntvfs/, ntvfs_base.o ntvfs_generic.o ntvfs_interface.o ntvfs_util.o)
 
-PUBLIC_HEADERS += ntvfs/ntvfs.h
+PUBLIC_HEADERS += ntvfs/ntvfs.h
 #
 # End SUBSYSTEM NTVFS
 ################################################
index 4cd6192c776d6704a50a1bd87538e7270d0e6aa2..3706cd172c6c56a032ef5365243115f8ce9f4678 100644 (file)
@@ -43,7 +43,7 @@ static int num_backends;
 
   The 'type' is used to specify whether this is for a disk, printer or IPC$ share
 */
-_PUBLIC_ NTSTATUS ntvfs_register(const struct ntvfs_ops *ops,
+NTSTATUS ntvfs_register(const struct ntvfs_ops *ops,
                                 const struct ntvfs_critical_sizes *const sizes)
 {
        struct ntvfs_ops *new_ops;
@@ -84,7 +84,7 @@ _PUBLIC_ NTSTATUS ntvfs_register(const struct ntvfs_ops *ops,
 /*
   return the operations structure for a named backend of the specified type
 */
-_PUBLIC_ const struct ntvfs_ops *ntvfs_backend_byname(const char *name, enum ntvfs_type type)
+const struct ntvfs_ops *ntvfs_backend_byname(const char *name, enum ntvfs_type type)
 {
        int i;
 
@@ -107,12 +107,12 @@ _PUBLIC_ const struct ntvfs_ops *ntvfs_backend_byname(const char *name, enum ntv
 
 static const NTVFS_CURRENT_CRITICAL_SIZES(critical_sizes);
 
-_PUBLIC_ const struct ntvfs_critical_sizes *ntvfs_interface_version(void)
+const struct ntvfs_critical_sizes *ntvfs_interface_version(void)
 {
        return &critical_sizes;
 }
 
-_PUBLIC_ bool ntvfs_interface_differs(const struct ntvfs_critical_sizes *const iface)
+bool ntvfs_interface_differs(const struct ntvfs_critical_sizes *const iface)
 {
        /* The comparison would be easier with memcmp, but compiler-interset
         * alignment padding is not guaranteed to be zeroed.
index 5092e732b42e4abec3d8dcbdd21a0eaa6c713542..e1a86c07c0468d112f12a291f5c7982032a768fe 100644 (file)
@@ -361,7 +361,7 @@ static NTSTATUS map_openx_open(uint16_t flags, uint16_t open_mode,
 /* 
    NTVFS open generic to any mapper
 */
-_PUBLIC_ NTSTATUS ntvfs_map_open(struct ntvfs_module_context *ntvfs,
+NTSTATUS ntvfs_map_open(struct ntvfs_module_context *ntvfs,
                                 struct ntvfs_request *req,
                                 union smb_open *io)
 {
@@ -512,7 +512,7 @@ done:
 /* 
    NTVFS fsinfo generic to any mapper
 */
-_PUBLIC_ NTSTATUS ntvfs_map_fsinfo(struct ntvfs_module_context *ntvfs,
+NTSTATUS ntvfs_map_fsinfo(struct ntvfs_module_context *ntvfs,
                                   struct ntvfs_request *req,
                                   union smb_fsinfo *fs)
 {
@@ -641,7 +641,7 @@ _PUBLIC_ NTSTATUS ntvfs_map_fsinfo(struct ntvfs_module_context *ntvfs,
 /* 
    NTVFS fileinfo generic to any mapper
 */
-_PUBLIC_ NTSTATUS ntvfs_map_fileinfo(TALLOC_CTX *mem_ctx,
+NTSTATUS ntvfs_map_fileinfo(TALLOC_CTX *mem_ctx,
                                     union smb_fileinfo *info, 
                                     union smb_fileinfo *info2)
 {
@@ -872,7 +872,7 @@ _PUBLIC_ NTSTATUS ntvfs_map_fileinfo(TALLOC_CTX *mem_ctx,
 /* 
    NTVFS fileinfo generic to any mapper
 */
-_PUBLIC_ NTSTATUS ntvfs_map_qfileinfo(struct ntvfs_module_context *ntvfs,
+NTSTATUS ntvfs_map_qfileinfo(struct ntvfs_module_context *ntvfs,
                                      struct ntvfs_request *req,
                                      union smb_fileinfo *info)
 {
@@ -905,7 +905,7 @@ _PUBLIC_ NTSTATUS ntvfs_map_qfileinfo(struct ntvfs_module_context *ntvfs,
 /* 
    NTVFS pathinfo generic to any mapper
 */
-_PUBLIC_ NTSTATUS ntvfs_map_qpathinfo(struct ntvfs_module_context *ntvfs,
+NTSTATUS ntvfs_map_qpathinfo(struct ntvfs_module_context *ntvfs,
                                      struct ntvfs_request *req,
                                      union smb_fileinfo *info)
 {
@@ -939,7 +939,7 @@ _PUBLIC_ NTSTATUS ntvfs_map_qpathinfo(struct ntvfs_module_context *ntvfs,
 /* 
    NTVFS lock generic to any mapper
 */
-_PUBLIC_ NTSTATUS ntvfs_map_lock(struct ntvfs_module_context *ntvfs,
+NTSTATUS ntvfs_map_lock(struct ntvfs_module_context *ntvfs,
                                 struct ntvfs_request *req,
                                 union smb_lock *lck)
 {
@@ -1114,7 +1114,7 @@ static NTSTATUS ntvfs_map_write_finish(struct ntvfs_module_context *ntvfs,
 /* 
    NTVFS write generic to any mapper
 */
-_PUBLIC_ NTSTATUS ntvfs_map_write(struct ntvfs_module_context *ntvfs,
+NTSTATUS ntvfs_map_write(struct ntvfs_module_context *ntvfs,
                                  struct ntvfs_request *req,
                                  union smb_write *wr)
 {
@@ -1226,7 +1226,7 @@ static NTSTATUS ntvfs_map_read_finish(struct ntvfs_module_context *ntvfs,
 /* 
    NTVFS read* to readx mapper
 */
-_PUBLIC_ NTSTATUS ntvfs_map_read(struct ntvfs_module_context *ntvfs,
+NTSTATUS ntvfs_map_read(struct ntvfs_module_context *ntvfs,
                                 struct ntvfs_request *req,
                                 union smb_read *rd)
 {
@@ -1322,7 +1322,7 @@ done:
 /* 
    NTVFS close generic to any mapper
 */
-_PUBLIC_ NTSTATUS ntvfs_map_close(struct ntvfs_module_context *ntvfs,
+NTSTATUS ntvfs_map_close(struct ntvfs_module_context *ntvfs,
                                  struct ntvfs_request *req,
                                  union smb_close *cl)
 {
@@ -1391,7 +1391,7 @@ static NTSTATUS ntvfs_map_notify_finish(struct ntvfs_module_context *ntvfs,
 /* 
    NTVFS notify generic to any mapper
 */
-_PUBLIC_ NTSTATUS ntvfs_map_notify(struct ntvfs_module_context *ntvfs,
+NTSTATUS ntvfs_map_notify(struct ntvfs_module_context *ntvfs,
                                   struct ntvfs_request *req,
                                   union smb_notify *nt)
 {
index 3bd2859388e0da1cdb42b523957c63311e6eaba2..c348558fcac5c0d5d3ef9e75f916bae1f2db9fed 100644 (file)
@@ -22,7 +22,7 @@
 #include "ntvfs/ntvfs.h"
 
 /* connect/disconnect */
-_PUBLIC_ NTSTATUS ntvfs_connect(struct ntvfs_request *req, const char *sharename)
+NTSTATUS ntvfs_connect(struct ntvfs_request *req, const char *sharename)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->connect) {
@@ -31,7 +31,7 @@ _PUBLIC_ NTSTATUS ntvfs_connect(struct ntvfs_request *req, const char *sharename
        return ntvfs->ops->connect(ntvfs, req, sharename);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_disconnect(struct ntvfs_context *ntvfs_ctx)
+NTSTATUS ntvfs_disconnect(struct ntvfs_context *ntvfs_ctx)
 {
        struct ntvfs_module_context *ntvfs;
        if (ntvfs_ctx == NULL) {
@@ -46,7 +46,7 @@ _PUBLIC_ NTSTATUS ntvfs_disconnect(struct ntvfs_context *ntvfs_ctx)
 
 /* async setup - called by a backend that wants to setup any state for
    a async request */
-_PUBLIC_ NTSTATUS ntvfs_async_setup(struct ntvfs_request *req, void *private)
+NTSTATUS ntvfs_async_setup(struct ntvfs_request *req, void *private)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->async_setup) {
@@ -56,7 +56,7 @@ _PUBLIC_ NTSTATUS ntvfs_async_setup(struct ntvfs_request *req, void *private)
 }
 
 /* filesystem operations */
-_PUBLIC_ NTSTATUS ntvfs_fsinfo(struct ntvfs_request *req, union smb_fsinfo *fs)
+NTSTATUS ntvfs_fsinfo(struct ntvfs_request *req, union smb_fsinfo *fs)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->fsinfo) {
@@ -66,7 +66,7 @@ _PUBLIC_ NTSTATUS ntvfs_fsinfo(struct ntvfs_request *req, union smb_fsinfo *fs)
 }
 
 /* path operations */
-_PUBLIC_ NTSTATUS ntvfs_unlink(struct ntvfs_request *req, union smb_unlink *unl)
+NTSTATUS ntvfs_unlink(struct ntvfs_request *req, union smb_unlink *unl)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->unlink) {
@@ -75,7 +75,7 @@ _PUBLIC_ NTSTATUS ntvfs_unlink(struct ntvfs_request *req, union smb_unlink *unl)
        return ntvfs->ops->unlink(ntvfs, req, unl);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_chkpath(struct ntvfs_request *req, union smb_chkpath *cp)
+NTSTATUS ntvfs_chkpath(struct ntvfs_request *req, union smb_chkpath *cp)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->chkpath) {
@@ -84,7 +84,7 @@ _PUBLIC_ NTSTATUS ntvfs_chkpath(struct ntvfs_request *req, union smb_chkpath *cp
        return ntvfs->ops->chkpath(ntvfs, req, cp);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_qpathinfo(struct ntvfs_request *req, union smb_fileinfo *st)
+NTSTATUS ntvfs_qpathinfo(struct ntvfs_request *req, union smb_fileinfo *st)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->qpathinfo) {
@@ -93,7 +93,7 @@ _PUBLIC_ NTSTATUS ntvfs_qpathinfo(struct ntvfs_request *req, union smb_fileinfo
        return ntvfs->ops->qpathinfo(ntvfs, req, st);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_setpathinfo(struct ntvfs_request *req, union smb_setfileinfo *st)
+NTSTATUS ntvfs_setpathinfo(struct ntvfs_request *req, union smb_setfileinfo *st)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->setpathinfo) {
@@ -102,7 +102,7 @@ _PUBLIC_ NTSTATUS ntvfs_setpathinfo(struct ntvfs_request *req, union smb_setfile
        return ntvfs->ops->setpathinfo(ntvfs, req, st);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_open(struct ntvfs_request *req, union smb_open *oi)
+NTSTATUS ntvfs_open(struct ntvfs_request *req, union smb_open *oi)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->open) {
@@ -111,7 +111,7 @@ _PUBLIC_ NTSTATUS ntvfs_open(struct ntvfs_request *req, union smb_open *oi)
        return ntvfs->ops->open(ntvfs, req, oi);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_mkdir(struct ntvfs_request *req, union smb_mkdir *md)
+NTSTATUS ntvfs_mkdir(struct ntvfs_request *req, union smb_mkdir *md)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->mkdir) {
@@ -120,7 +120,7 @@ _PUBLIC_ NTSTATUS ntvfs_mkdir(struct ntvfs_request *req, union smb_mkdir *md)
        return ntvfs->ops->mkdir(ntvfs, req, md);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_rmdir(struct ntvfs_request *req, struct smb_rmdir *rd)
+NTSTATUS ntvfs_rmdir(struct ntvfs_request *req, struct smb_rmdir *rd)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->rmdir) {
@@ -129,7 +129,7 @@ _PUBLIC_ NTSTATUS ntvfs_rmdir(struct ntvfs_request *req, struct smb_rmdir *rd)
        return ntvfs->ops->rmdir(ntvfs, req, rd);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_rename(struct ntvfs_request *req, union smb_rename *ren)
+NTSTATUS ntvfs_rename(struct ntvfs_request *req, union smb_rename *ren)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->rename) {
@@ -138,7 +138,7 @@ _PUBLIC_ NTSTATUS ntvfs_rename(struct ntvfs_request *req, union smb_rename *ren)
        return ntvfs->ops->rename(ntvfs, req, ren);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_copy(struct ntvfs_request *req, struct smb_copy *cp)
+NTSTATUS ntvfs_copy(struct ntvfs_request *req, struct smb_copy *cp)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->copy) {
@@ -148,7 +148,7 @@ _PUBLIC_ NTSTATUS ntvfs_copy(struct ntvfs_request *req, struct smb_copy *cp)
 }
 
 /* directory search */
-_PUBLIC_ NTSTATUS ntvfs_search_first(struct ntvfs_request *req, union smb_search_first *io, void *private,
+NTSTATUS ntvfs_search_first(struct ntvfs_request *req, union smb_search_first *io, void *private,
                                     bool ntvfs_callback(void *private, const union smb_search_data *file))
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
@@ -158,7 +158,7 @@ _PUBLIC_ NTSTATUS ntvfs_search_first(struct ntvfs_request *req, union smb_search
        return ntvfs->ops->search_first(ntvfs, req, io, private, ntvfs_callback);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_search_next(struct ntvfs_request *req, union smb_search_next *io, void *private,
+NTSTATUS ntvfs_search_next(struct ntvfs_request *req, union smb_search_next *io, void *private,
                                    bool ntvfs_callback(void *private, const union smb_search_data *file))
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
@@ -168,7 +168,7 @@ _PUBLIC_ NTSTATUS ntvfs_search_next(struct ntvfs_request *req, union smb_search_
        return ntvfs->ops->search_next(ntvfs, req, io, private, ntvfs_callback);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_search_close(struct ntvfs_request *req, union smb_search_close *io)
+NTSTATUS ntvfs_search_close(struct ntvfs_request *req, union smb_search_close *io)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->search_close) {
@@ -178,7 +178,7 @@ _PUBLIC_ NTSTATUS ntvfs_search_close(struct ntvfs_request *req, union smb_search
 }
 
 /* operations on open files */
-_PUBLIC_ NTSTATUS ntvfs_ioctl(struct ntvfs_request *req, union smb_ioctl *io)
+NTSTATUS ntvfs_ioctl(struct ntvfs_request *req, union smb_ioctl *io)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->ioctl) {
@@ -187,7 +187,7 @@ _PUBLIC_ NTSTATUS ntvfs_ioctl(struct ntvfs_request *req, union smb_ioctl *io)
        return ntvfs->ops->ioctl(ntvfs, req, io);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_read(struct ntvfs_request *req, union smb_read *io)
+NTSTATUS ntvfs_read(struct ntvfs_request *req, union smb_read *io)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->read) {
@@ -196,7 +196,7 @@ _PUBLIC_ NTSTATUS ntvfs_read(struct ntvfs_request *req, union smb_read *io)
        return ntvfs->ops->read(ntvfs, req, io);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_write(struct ntvfs_request *req, union smb_write *io)
+NTSTATUS ntvfs_write(struct ntvfs_request *req, union smb_write *io)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->write) {
@@ -205,7 +205,7 @@ _PUBLIC_ NTSTATUS ntvfs_write(struct ntvfs_request *req, union smb_write *io)
        return ntvfs->ops->write(ntvfs, req, io);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_seek(struct ntvfs_request *req, union smb_seek *io)
+NTSTATUS ntvfs_seek(struct ntvfs_request *req, union smb_seek *io)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->seek) {
@@ -214,7 +214,7 @@ _PUBLIC_ NTSTATUS ntvfs_seek(struct ntvfs_request *req, union smb_seek *io)
        return ntvfs->ops->seek(ntvfs, req, io);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_flush(struct ntvfs_request *req,
+NTSTATUS ntvfs_flush(struct ntvfs_request *req,
                              union smb_flush *flush)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
@@ -224,7 +224,7 @@ _PUBLIC_ NTSTATUS ntvfs_flush(struct ntvfs_request *req,
        return ntvfs->ops->flush(ntvfs, req, flush);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_lock(struct ntvfs_request *req, union smb_lock *lck)
+NTSTATUS ntvfs_lock(struct ntvfs_request *req, union smb_lock *lck)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->lock) {
@@ -233,7 +233,7 @@ _PUBLIC_ NTSTATUS ntvfs_lock(struct ntvfs_request *req, union smb_lock *lck)
        return ntvfs->ops->lock(ntvfs, req, lck);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_qfileinfo(struct ntvfs_request *req, union smb_fileinfo *info)
+NTSTATUS ntvfs_qfileinfo(struct ntvfs_request *req, union smb_fileinfo *info)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->qfileinfo) {
@@ -242,7 +242,7 @@ _PUBLIC_ NTSTATUS ntvfs_qfileinfo(struct ntvfs_request *req, union smb_fileinfo
        return ntvfs->ops->qfileinfo(ntvfs, req, info);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_setfileinfo(struct ntvfs_request *req, union smb_setfileinfo *info)
+NTSTATUS ntvfs_setfileinfo(struct ntvfs_request *req, union smb_setfileinfo *info)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->setfileinfo) {
@@ -251,7 +251,7 @@ _PUBLIC_ NTSTATUS ntvfs_setfileinfo(struct ntvfs_request *req, union smb_setfile
        return ntvfs->ops->setfileinfo(ntvfs, req, info);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_close(struct ntvfs_request *req, union smb_close *io)
+NTSTATUS ntvfs_close(struct ntvfs_request *req, union smb_close *io)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->close) {
@@ -261,7 +261,7 @@ _PUBLIC_ NTSTATUS ntvfs_close(struct ntvfs_request *req, union smb_close *io)
 }
 
 /* trans interface - used by IPC backend for pipes and RAP calls */
-_PUBLIC_ NTSTATUS ntvfs_trans(struct ntvfs_request *req, struct smb_trans2 *trans)
+NTSTATUS ntvfs_trans(struct ntvfs_request *req, struct smb_trans2 *trans)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->trans) {
@@ -271,7 +271,7 @@ _PUBLIC_ NTSTATUS ntvfs_trans(struct ntvfs_request *req, struct smb_trans2 *tran
 }
 
 /* trans2 interface - only used by CIFS backend to prover complete passthru for testing */
-_PUBLIC_ NTSTATUS ntvfs_trans2(struct ntvfs_request *req, struct smb_trans2 *trans2)
+NTSTATUS ntvfs_trans2(struct ntvfs_request *req, struct smb_trans2 *trans2)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->trans2) {
@@ -281,7 +281,7 @@ _PUBLIC_ NTSTATUS ntvfs_trans2(struct ntvfs_request *req, struct smb_trans2 *tra
 }
 
 /* printing specific operations */
-_PUBLIC_ NTSTATUS ntvfs_lpq(struct ntvfs_request *req, union smb_lpq *lpq)
+NTSTATUS ntvfs_lpq(struct ntvfs_request *req, union smb_lpq *lpq)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->lpq) {
@@ -291,7 +291,7 @@ _PUBLIC_ NTSTATUS ntvfs_lpq(struct ntvfs_request *req, union smb_lpq *lpq)
 }
 
 /* logoff - called when a vuid is closed */
-_PUBLIC_ NTSTATUS ntvfs_logoff(struct ntvfs_request *req)
+NTSTATUS ntvfs_logoff(struct ntvfs_request *req)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->logoff) {
@@ -300,7 +300,7 @@ _PUBLIC_ NTSTATUS ntvfs_logoff(struct ntvfs_request *req)
        return ntvfs->ops->logoff(ntvfs, req);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_exit(struct ntvfs_request *req)
+NTSTATUS ntvfs_exit(struct ntvfs_request *req)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->exit) {
@@ -312,7 +312,7 @@ _PUBLIC_ NTSTATUS ntvfs_exit(struct ntvfs_request *req)
 /*
   change notify request
 */
-_PUBLIC_ NTSTATUS ntvfs_notify(struct ntvfs_request *req, union smb_notify *info)
+NTSTATUS ntvfs_notify(struct ntvfs_request *req, union smb_notify *info)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->notify) {
@@ -324,7 +324,7 @@ _PUBLIC_ NTSTATUS ntvfs_notify(struct ntvfs_request *req, union smb_notify *info
 /*
   cancel an outstanding async request
 */
-_PUBLIC_ NTSTATUS ntvfs_cancel(struct ntvfs_request *req)
+NTSTATUS ntvfs_cancel(struct ntvfs_request *req)
 {
        struct ntvfs_module_context *ntvfs = req->ctx->modules;
        if (!ntvfs->ops->cancel) {
@@ -334,7 +334,7 @@ _PUBLIC_ NTSTATUS ntvfs_cancel(struct ntvfs_request *req)
 }
 
 /* initial setup */
-_PUBLIC_ NTSTATUS ntvfs_next_connect(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_connect(struct ntvfs_module_context *ntvfs, 
                                     struct ntvfs_request *req, const char *sharename)
 {
        if (!ntvfs->next || !ntvfs->next->ops->connect) {
@@ -343,7 +343,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_connect(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->connect(ntvfs->next, req, sharename);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_disconnect(struct ntvfs_module_context *ntvfs)
+NTSTATUS ntvfs_next_disconnect(struct ntvfs_module_context *ntvfs)
 {
        if (!ntvfs->next || !ntvfs->next->ops->disconnect) {
                return NT_STATUS_NOT_IMPLEMENTED;
@@ -352,7 +352,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_disconnect(struct ntvfs_module_context *ntvfs)
 }
 
 /* async_setup - called when setting up for a async request */
-_PUBLIC_ NTSTATUS ntvfs_next_async_setup(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_async_setup(struct ntvfs_module_context *ntvfs, 
                                         struct ntvfs_request *req, 
                                         void *private)
 {
@@ -363,7 +363,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_async_setup(struct ntvfs_module_context *ntvfs,
 }
 
 /* filesystem operations */
-_PUBLIC_ NTSTATUS ntvfs_next_fsinfo(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_fsinfo(struct ntvfs_module_context *ntvfs, 
                                    struct ntvfs_request *req,
                                    union smb_fsinfo *fs)
 {
@@ -374,7 +374,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_fsinfo(struct ntvfs_module_context *ntvfs,
 }
 
 /* path operations */
-_PUBLIC_ NTSTATUS ntvfs_next_unlink(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_unlink(struct ntvfs_module_context *ntvfs, 
                                    struct ntvfs_request *req,
                                    union smb_unlink *unl)
 {
@@ -384,7 +384,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_unlink(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->unlink(ntvfs->next, req, unl);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_chkpath(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_chkpath(struct ntvfs_module_context *ntvfs, 
                                     struct ntvfs_request *req,
                                     union smb_chkpath *cp)
 {
@@ -394,7 +394,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_chkpath(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->chkpath(ntvfs->next, req, cp);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_qpathinfo(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_qpathinfo(struct ntvfs_module_context *ntvfs, 
                                       struct ntvfs_request *req,
                                       union smb_fileinfo *st)
 {
@@ -404,7 +404,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_qpathinfo(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->qpathinfo(ntvfs->next, req, st);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_setpathinfo(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_setpathinfo(struct ntvfs_module_context *ntvfs, 
                                         struct ntvfs_request *req,
                                         union smb_setfileinfo *st)
 {
@@ -414,7 +414,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_setpathinfo(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->setpathinfo(ntvfs->next, req, st);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_mkdir(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_mkdir(struct ntvfs_module_context *ntvfs, 
                                   struct ntvfs_request *req,
                                   union smb_mkdir *md)
 {
@@ -424,7 +424,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_mkdir(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->mkdir(ntvfs->next, req, md);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_rmdir(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_rmdir(struct ntvfs_module_context *ntvfs, 
                                   struct ntvfs_request *req,
                                   struct smb_rmdir *rd)
 {
@@ -434,7 +434,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_rmdir(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->rmdir(ntvfs->next, req, rd);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_rename(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_rename(struct ntvfs_module_context *ntvfs, 
                                    struct ntvfs_request *req,
                                    union smb_rename *ren)
 {
@@ -444,7 +444,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_rename(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->rename(ntvfs->next, req, ren);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_copy(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_copy(struct ntvfs_module_context *ntvfs, 
                                  struct ntvfs_request *req,
                                  struct smb_copy *cp)
 {
@@ -454,7 +454,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_copy(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->copy(ntvfs->next, req, cp);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_open(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_open(struct ntvfs_module_context *ntvfs, 
                                  struct ntvfs_request *req,
                                  union smb_open *oi)
 {
@@ -466,7 +466,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_open(struct ntvfs_module_context *ntvfs,
 
 
 /* directory search */
-_PUBLIC_ NTSTATUS ntvfs_next_search_first(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_search_first(struct ntvfs_module_context *ntvfs, 
                                          struct ntvfs_request *req,
                                          union smb_search_first *io, void *private,
                                          bool (*callback)(void *private, const union smb_search_data *file))
@@ -477,7 +477,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_search_first(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->search_first(ntvfs->next, req, io, private, callback);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_search_next(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_search_next(struct ntvfs_module_context *ntvfs, 
                                         struct ntvfs_request *req,
                                         union smb_search_next *io, void *private,
                                         bool (*callback)(void *private, const union smb_search_data *file))
@@ -488,7 +488,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_search_next(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->search_next(ntvfs->next, req, io, private, callback);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_search_close(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_search_close(struct ntvfs_module_context *ntvfs, 
                                          struct ntvfs_request *req,
                                          union smb_search_close *io)
 {
@@ -499,7 +499,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_search_close(struct ntvfs_module_context *ntvfs,
 }
 
 /* operations on open files */
-_PUBLIC_ NTSTATUS ntvfs_next_ioctl(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_ioctl(struct ntvfs_module_context *ntvfs, 
                                   struct ntvfs_request *req,
                                   union smb_ioctl *io)
 {
@@ -509,7 +509,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_ioctl(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->ioctl(ntvfs->next, req, io);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_read(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_read(struct ntvfs_module_context *ntvfs, 
                                  struct ntvfs_request *req,
                                  union smb_read *io)
 {
@@ -519,7 +519,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_read(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->read(ntvfs->next, req, io);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_write(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_write(struct ntvfs_module_context *ntvfs, 
                                   struct ntvfs_request *req,
                                   union smb_write *io)
 {
@@ -529,7 +529,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_write(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->write(ntvfs->next, req, io);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_seek(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_seek(struct ntvfs_module_context *ntvfs, 
                                  struct ntvfs_request *req,
                                  union smb_seek *io)
 {
@@ -539,7 +539,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_seek(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->seek(ntvfs->next, req, io);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_flush(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_flush(struct ntvfs_module_context *ntvfs, 
                                   struct ntvfs_request *req,
                                   union smb_flush *flush)
 {
@@ -549,7 +549,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_flush(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->flush(ntvfs->next, req, flush);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_lock(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_lock(struct ntvfs_module_context *ntvfs, 
                                  struct ntvfs_request *req,
                                  union smb_lock *lck)
 {
@@ -559,7 +559,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_lock(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->lock(ntvfs->next, req, lck);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_qfileinfo(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_qfileinfo(struct ntvfs_module_context *ntvfs, 
                                       struct ntvfs_request *req,
                                       union smb_fileinfo *info)
 {
@@ -569,7 +569,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_qfileinfo(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->qfileinfo(ntvfs->next, req, info);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_setfileinfo(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_setfileinfo(struct ntvfs_module_context *ntvfs, 
                                         struct ntvfs_request *req,
                                         union smb_setfileinfo *info)
 {
@@ -579,7 +579,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_setfileinfo(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->setfileinfo(ntvfs->next, req, info);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_close(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_close(struct ntvfs_module_context *ntvfs, 
                                   struct ntvfs_request *req,
                                   union smb_close *io)
 {
@@ -590,7 +590,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_close(struct ntvfs_module_context *ntvfs,
 }
 
 /* trans interface - used by IPC backend for pipes and RAP calls */
-_PUBLIC_ NTSTATUS ntvfs_next_trans(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_trans(struct ntvfs_module_context *ntvfs, 
                                   struct ntvfs_request *req,
                                   struct smb_trans2 *trans)
 {
@@ -601,7 +601,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_trans(struct ntvfs_module_context *ntvfs,
 }
 
 /* trans2 interface - only used by CIFS backend to prover complete passthru for testing */
-_PUBLIC_ NTSTATUS ntvfs_next_trans2(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_trans2(struct ntvfs_module_context *ntvfs, 
                                    struct ntvfs_request *req,
                                    struct smb_trans2 *trans2)
 {
@@ -614,7 +614,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_trans2(struct ntvfs_module_context *ntvfs,
 /*
   change notify request
 */
-_PUBLIC_ NTSTATUS ntvfs_next_notify(struct ntvfs_module_context *ntvfs,
+NTSTATUS ntvfs_next_notify(struct ntvfs_module_context *ntvfs,
                                    struct ntvfs_request *req,
                                    union smb_notify *info)
 {
@@ -625,7 +625,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_notify(struct ntvfs_module_context *ntvfs,
 }
 
 /* cancel - called to cancel an outstanding async request */
-_PUBLIC_ NTSTATUS ntvfs_next_cancel(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_cancel(struct ntvfs_module_context *ntvfs, 
                                    struct ntvfs_request *req)
 {
        if (!ntvfs->next || !ntvfs->next->ops->cancel) {
@@ -635,7 +635,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_cancel(struct ntvfs_module_context *ntvfs,
 }
 
 /* printing specific operations */
-_PUBLIC_ NTSTATUS ntvfs_next_lpq(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_lpq(struct ntvfs_module_context *ntvfs, 
                                 struct ntvfs_request *req,
                                 union smb_lpq *lpq)
 {
@@ -647,7 +647,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_lpq(struct ntvfs_module_context *ntvfs,
 
 
 /* logoff - called when a vuid is closed */
-_PUBLIC_ NTSTATUS ntvfs_next_logoff(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_logoff(struct ntvfs_module_context *ntvfs, 
                                    struct ntvfs_request *req)
 {
        if (!ntvfs->next || !ntvfs->next->ops->logoff) {
@@ -656,7 +656,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_logoff(struct ntvfs_module_context *ntvfs,
        return ntvfs->next->ops->logoff(ntvfs->next, req);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_next_exit(struct ntvfs_module_context *ntvfs, 
+NTSTATUS ntvfs_next_exit(struct ntvfs_module_context *ntvfs, 
                                  struct ntvfs_request *req)
 {
        if (!ntvfs->next || !ntvfs->next->ops->exit) {
@@ -666,7 +666,7 @@ _PUBLIC_ NTSTATUS ntvfs_next_exit(struct ntvfs_module_context *ntvfs,
 }
 
 /* oplock helpers */
-_PUBLIC_ NTSTATUS ntvfs_set_oplock_handler(struct ntvfs_context *ntvfs,
+NTSTATUS ntvfs_set_oplock_handler(struct ntvfs_context *ntvfs,
                                           NTSTATUS (*handler)(void *private_data, struct ntvfs_handle *handle, uint8_t level),
                                           void *private_data)
 {
@@ -675,7 +675,7 @@ _PUBLIC_ NTSTATUS ntvfs_set_oplock_handler(struct ntvfs_context *ntvfs,
        return NT_STATUS_OK;
 }
 
-_PUBLIC_ NTSTATUS ntvfs_send_oplock_break(struct ntvfs_module_context *ntvfs,
+NTSTATUS ntvfs_send_oplock_break(struct ntvfs_module_context *ntvfs,
                                          struct ntvfs_handle *handle, uint8_t level)
 {
        if (!ntvfs->ctx->oplock.handler) {
@@ -686,7 +686,7 @@ _PUBLIC_ NTSTATUS ntvfs_send_oplock_break(struct ntvfs_module_context *ntvfs,
 }
 
 /* client connection callback */
-_PUBLIC_ NTSTATUS ntvfs_set_addr_callbacks(struct ntvfs_context *ntvfs,
+NTSTATUS ntvfs_set_addr_callbacks(struct ntvfs_context *ntvfs,
                                           struct socket_address *(*my_addr)(void *private_data, TALLOC_CTX *mem_ctx),
                                           struct socket_address *(*peer_addr)(void *private_data, TALLOC_CTX *mem_ctx),
                                           void *private_data)
@@ -697,7 +697,7 @@ _PUBLIC_ NTSTATUS ntvfs_set_addr_callbacks(struct ntvfs_context *ntvfs,
        return NT_STATUS_OK;
 }
 
-_PUBLIC_ struct socket_address *ntvfs_get_my_addr(struct ntvfs_module_context *ntvfs, TALLOC_CTX *mem_ctx)
+struct socket_address *ntvfs_get_my_addr(struct ntvfs_module_context *ntvfs, TALLOC_CTX *mem_ctx)
 {
        if (!ntvfs->ctx->client.get_my_addr) {
                return NULL;
@@ -706,7 +706,7 @@ _PUBLIC_ struct socket_address *ntvfs_get_my_addr(struct ntvfs_module_context *n
        return ntvfs->ctx->client.get_my_addr(ntvfs->ctx->client.private_data, mem_ctx);
 }
 
-_PUBLIC_ struct socket_address *ntvfs_get_peer_addr(struct ntvfs_module_context *ntvfs, TALLOC_CTX *mem_ctx)
+struct socket_address *ntvfs_get_peer_addr(struct ntvfs_module_context *ntvfs, TALLOC_CTX *mem_ctx)
 {
        if (!ntvfs->ctx->client.get_peer_addr) {
                return NULL;
index ebe8008edd05cd157e17f2d2f3e6d0657983e644..fadbe2b80a4bad5e43ab817bb3d26cc3e5534587 100644 (file)
@@ -25,7 +25,7 @@
 #include "ntvfs/ntvfs.h"
 
 
-_PUBLIC_ struct ntvfs_request *ntvfs_request_create(struct ntvfs_context *ctx, TALLOC_CTX *mem_ctx,
+struct ntvfs_request *ntvfs_request_create(struct ntvfs_context *ctx, TALLOC_CTX *mem_ctx,
                                                    struct auth_session_info *session_info,
                                                    uint16_t smbpid,
                                                    struct timeval request_time,
@@ -62,7 +62,7 @@ failed:
        return NULL;
 }
 
-_PUBLIC_ NTSTATUS ntvfs_async_state_push(struct ntvfs_module_context *ntvfs,
+NTSTATUS ntvfs_async_state_push(struct ntvfs_module_context *ntvfs,
                                         struct ntvfs_request *req,
                                         void *private_data,
                                         void (*send_fn)(struct ntvfs_request *))
@@ -84,7 +84,7 @@ _PUBLIC_ NTSTATUS ntvfs_async_state_push(struct ntvfs_module_context *ntvfs,
        return NT_STATUS_OK;
 }
 
-_PUBLIC_ void ntvfs_async_state_pop(struct ntvfs_request *req)
+void ntvfs_async_state_pop(struct ntvfs_request *req)
 {
        struct ntvfs_async_state *async;
 
@@ -98,7 +98,7 @@ _PUBLIC_ void ntvfs_async_state_pop(struct ntvfs_request *req)
        talloc_free(async);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_handle_new(struct ntvfs_module_context *ntvfs,
+NTSTATUS ntvfs_handle_new(struct ntvfs_module_context *ntvfs,
                                   struct ntvfs_request *req,
                                   struct ntvfs_handle **h)
 {
@@ -108,7 +108,7 @@ _PUBLIC_ NTSTATUS ntvfs_handle_new(struct ntvfs_module_context *ntvfs,
        return ntvfs->ctx->handles.create_new(ntvfs->ctx->handles.private_data, req, h);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_handle_set_backend_data(struct ntvfs_handle *h,
+NTSTATUS ntvfs_handle_set_backend_data(struct ntvfs_handle *h,
                                                struct ntvfs_module_context *ntvfs,
                                                TALLOC_CTX *private_data)
 {
@@ -137,7 +137,7 @@ _PUBLIC_ NTSTATUS ntvfs_handle_set_backend_data(struct ntvfs_handle *h,
        return NT_STATUS_OK;
 }
 
-_PUBLIC_ void *ntvfs_handle_get_backend_data(struct ntvfs_handle *h,
+void *ntvfs_handle_get_backend_data(struct ntvfs_handle *h,
                                             struct ntvfs_module_context *ntvfs)
 {
        struct ntvfs_handle_data *d;
@@ -150,7 +150,7 @@ _PUBLIC_ void *ntvfs_handle_get_backend_data(struct ntvfs_handle *h,
        return NULL;
 }
 
-_PUBLIC_ void ntvfs_handle_remove_backend_data(struct ntvfs_handle *h,
+void ntvfs_handle_remove_backend_data(struct ntvfs_handle *h,
                                               struct ntvfs_module_context *ntvfs)
 {
        struct ntvfs_handle_data *d,*n;
@@ -169,7 +169,7 @@ _PUBLIC_ void ntvfs_handle_remove_backend_data(struct ntvfs_handle *h,
        h->ctx->handles.destroy(h->ctx->handles.private_data, h);
 }
 
-_PUBLIC_ struct ntvfs_handle *ntvfs_handle_search_by_wire_key(struct ntvfs_module_context *ntvfs,
+struct ntvfs_handle *ntvfs_handle_search_by_wire_key(struct ntvfs_module_context *ntvfs,
                                                              struct ntvfs_request *req,
                                                              const DATA_BLOB *key)
 {
@@ -179,12 +179,12 @@ _PUBLIC_ struct ntvfs_handle *ntvfs_handle_search_by_wire_key(struct ntvfs_modul
        return ntvfs->ctx->handles.search_by_wire_key(ntvfs->ctx->handles.private_data, req, key);
 }
 
-_PUBLIC_ DATA_BLOB ntvfs_handle_get_wire_key(struct ntvfs_handle *h, TALLOC_CTX *mem_ctx)
+DATA_BLOB ntvfs_handle_get_wire_key(struct ntvfs_handle *h, TALLOC_CTX *mem_ctx)
 {
        return h->ctx->handles.get_wire_key(h->ctx->handles.private_data, h, mem_ctx);
 }
 
-_PUBLIC_ NTSTATUS ntvfs_set_handle_callbacks(struct ntvfs_context *ntvfs,
+NTSTATUS ntvfs_set_handle_callbacks(struct ntvfs_context *ntvfs,
                                             NTSTATUS (*create_new)(void *private_data, struct ntvfs_request *req, struct ntvfs_handle **h),
                                             NTSTATUS (*make_valid)(void *private_data, struct ntvfs_handle *h),
                                             void (*destroy)(void *private_data, struct ntvfs_handle *h),
index f19dc1f41fa332a6b735fa3f6264e32bc5abaf2d..2393a2e7a3c2d3bb19895c3dcf8c8b14d0cc0323 100644 (file)
@@ -38,7 +38,7 @@ static int num_backends;
   The 'name' can be later used by other backends to find the operations
   structure for this backend.  
 */
-_PUBLIC_ NTSTATUS pvfs_acl_register(const struct pvfs_acl_ops *ops)
+NTSTATUS pvfs_acl_register(const struct pvfs_acl_ops *ops)
 {
        struct pvfs_acl_ops *new_ops;
 
@@ -66,7 +66,7 @@ _PUBLIC_ NTSTATUS pvfs_acl_register(const struct pvfs_acl_ops *ops)
 /*
   return the operations structure for a named backend
 */
-_PUBLIC_ const struct pvfs_acl_ops *pvfs_acl_backend_byname(const char *name)
+const struct pvfs_acl_ops *pvfs_acl_backend_byname(const char *name)
 {
        int i;
 
@@ -126,6 +126,8 @@ static NTSTATUS pvfs_default_acl(struct pvfs_state *pvfs,
        NTSTATUS status;
        struct security_ace ace;
        mode_t mode;
+       struct id_mapping *ids;
+       struct composite_context *ctx;
 
        *psd = security_descriptor_initialise(req);
        if (*psd == NULL) {
@@ -133,15 +135,33 @@ static NTSTATUS pvfs_default_acl(struct pvfs_state *pvfs,
        }
        sd = *psd;
 
-       status = sidmap_uid_to_sid(pvfs->sidmap, sd, name->st.st_uid, &sd->owner_sid);
-       if (!NT_STATUS_IS_OK(status)) {
-               return status;
-       }
-       status = sidmap_gid_to_sid(pvfs->sidmap, sd, name->st.st_gid, &sd->group_sid);
-       if (!NT_STATUS_IS_OK(status)) {
-               return status;
-       }
+       ids = talloc_array(sd, struct id_mapping, 2);
+       NT_STATUS_HAVE_NO_MEMORY(ids);
+
+       ids[0].unixid = talloc(ids, struct unixid);
+       NT_STATUS_HAVE_NO_MEMORY(ids[0].unixid);
+
+       ids[0].unixid->id = name->st.st_uid;
+       ids[0].unixid->type = ID_TYPE_UID;
+       ids[0].sid = NULL;
 
+       ids[1].unixid = talloc(ids, struct unixid);
+       NT_STATUS_HAVE_NO_MEMORY(ids[1].unixid);
+
+       ids[1].unixid->id = name->st.st_gid;
+       ids[1].unixid->type = ID_TYPE_GID;
+       ids[1].sid = NULL;
+
+       ctx = wbc_xids_to_sids_send(pvfs->wbc_ctx, ids, 2, ids);
+       NT_STATUS_HAVE_NO_MEMORY(ctx);
+
+       status = wbc_xids_to_sids_recv(ctx, &ids);
+       NT_STATUS_NOT_OK_RETURN(status);
+
+       sd->owner_sid = talloc_steal(sd, ids[0].sid);
+       sd->group_sid = talloc_steal(sd, ids[1].sid);
+
+       talloc_free(ids);
        sd->type |= SEC_DESC_DACL_PRESENT;
 
        mode = name->st.st_mode;
@@ -248,6 +268,8 @@ NTSTATUS pvfs_acl_set(struct pvfs_state *pvfs,
        gid_t old_gid = -1;
        uid_t new_uid = -1;
        gid_t new_gid = -1;
+       struct id_mapping *ids;
+       struct composite_context *ctx;
 
        if (pvfs->acl_ops != NULL) {
                status = pvfs->acl_ops->acl_load(pvfs, name, fd, req, &sd);
@@ -259,6 +281,12 @@ NTSTATUS pvfs_acl_set(struct pvfs_state *pvfs,
                return status;
        }
 
+       ids = talloc(req, struct id_mapping);
+       NT_STATUS_HAVE_NO_MEMORY(ids);
+       ids->unixid = NULL;
+       ids->sid = NULL;
+       ids->status = NT_STATUS_NONE_MAPPED;
+
        new_sd = info->set_secdesc.in.sd;
        orig_sd = *sd;
 
@@ -271,8 +299,16 @@ NTSTATUS pvfs_acl_set(struct pvfs_state *pvfs,
                        return NT_STATUS_ACCESS_DENIED;
                }
                if (!dom_sid_equal(sd->owner_sid, new_sd->owner_sid)) {
-                       status = sidmap_sid_to_unixuid(pvfs->sidmap, new_sd->owner_sid, &new_uid);
+                       ids->sid = new_sd->owner_sid;
+                       ctx = wbc_sids_to_xids_send(pvfs->wbc_ctx, ids, 1, ids);
+                       NT_STATUS_HAVE_NO_MEMORY(ctx);
+                       status = wbc_sids_to_xids_recv(ctx, &ids);
                        NT_STATUS_NOT_OK_RETURN(status);
+
+                       if (ids->unixid->type == ID_TYPE_BOTH ||
+                           ids->unixid->type == ID_TYPE_UID) {
+                               new_uid = ids->unixid->id;
+                       }
                }
                sd->owner_sid = new_sd->owner_sid;
        }
@@ -281,8 +317,17 @@ NTSTATUS pvfs_acl_set(struct pvfs_state *pvfs,
                        return NT_STATUS_ACCESS_DENIED;
                }
                if (!dom_sid_equal(sd->group_sid, new_sd->group_sid)) {
-                       status = sidmap_sid_to_unixgid(pvfs->sidmap, new_sd->group_sid, &new_gid);
+                       ids->sid = new_sd->group_sid;
+                       ctx = wbc_sids_to_xids_send(pvfs->wbc_ctx, ids, 1, ids);
+                       NT_STATUS_HAVE_NO_MEMORY(ctx);
+                       status = wbc_sids_to_xids_recv(ctx, &ids);
                        NT_STATUS_NOT_OK_RETURN(status);
+
+                       if (ids->unixid->type == ID_TYPE_BOTH ||
+                           ids->unixid->type == ID_TYPE_GID) {
+                               new_gid = ids->unixid->id;
+                       }
+
                }
                sd->group_sid = new_sd->group_sid;
        }
@@ -664,6 +709,8 @@ NTSTATUS pvfs_acl_inherit(struct pvfs_state *pvfs,
        struct pvfs_filename *parent;
        struct security_descriptor *parent_sd, *sd;
        bool container;
+       struct id_mapping *ids;
+       struct composite_context *ctx;
 
        /* form the parents path */
        status = pvfs_resolve_parent(pvfs, req, name, &parent);
@@ -705,14 +752,31 @@ NTSTATUS pvfs_acl_inherit(struct pvfs_state *pvfs,
                return NT_STATUS_NO_MEMORY;
        }
 
-       status = sidmap_uid_to_sid(pvfs->sidmap, sd, name->st.st_uid, &sd->owner_sid);
-       if (!NT_STATUS_IS_OK(status)) {
-               return status;
-       }
-       status = sidmap_gid_to_sid(pvfs->sidmap, sd, name->st.st_gid, &sd->group_sid);
-       if (!NT_STATUS_IS_OK(status)) {
-               return status;
-       }
+       ids = talloc_array(sd, struct id_mapping, 2);
+       NT_STATUS_HAVE_NO_MEMORY(ids);
+
+       ids[0].unixid = talloc(ids, struct unixid);
+       NT_STATUS_HAVE_NO_MEMORY(ids[0].unixid);
+       ids[0].unixid->id = name->st.st_uid;
+       ids[0].unixid->type = ID_TYPE_UID;
+       ids[0].sid = NULL;
+       ids[0].status = NT_STATUS_NONE_MAPPED;
+
+       ids[1].unixid = talloc(ids, struct unixid);
+       NT_STATUS_HAVE_NO_MEMORY(ids[1].unixid);
+       ids[1].unixid->id = name->st.st_gid;
+       ids[1].unixid->type = ID_TYPE_GID;
+       ids[1].sid = NULL;
+       ids[1].status = NT_STATUS_NONE_MAPPED;
+
+       ctx = wbc_xids_to_sids_send(pvfs->wbc_ctx, ids, 2, ids);
+       NT_STATUS_HAVE_NO_MEMORY(ctx);
+
+       status = wbc_xids_to_sids_recv(ctx, &ids);
+       NT_STATUS_NOT_OK_RETURN(status);
+
+       sd->owner_sid = talloc_steal(sd, ids[0].sid);
+       sd->group_sid = talloc_steal(sd, ids[1].sid);
 
        sd->type |= SEC_DESC_DACL_PRESENT;
 
index 2abb1482a493325b78488039317972ca4ee18217..fa855555b2af3a9fc286984bf679384e63af09fa 100644 (file)
@@ -38,7 +38,9 @@ static NTSTATUS pvfs_acl_load_nfs4(struct pvfs_state *pvfs, struct pvfs_filename
        NTSTATUS status;
        struct nfs4acl *acl;
        struct security_descriptor *sd;
-       int i;
+       int i, num_ids;
+       struct id_mapping *ids;
+       struct composite_context *ctx;
 
        acl = talloc_zero(mem_ctx, struct nfs4acl);
        NT_STATUS_HAVE_NO_MEMORY(acl);
@@ -57,25 +59,57 @@ static NTSTATUS pvfs_acl_load_nfs4(struct pvfs_state *pvfs, struct pvfs_filename
        sd = *psd;
 
        sd->type |= acl->a_flags;
-       status = sidmap_uid_to_sid(pvfs->sidmap, sd, name->st.st_uid, &sd->owner_sid);
-       NT_STATUS_NOT_OK_RETURN(status);
-       status = sidmap_gid_to_sid(pvfs->sidmap, sd, name->st.st_gid, &sd->group_sid);
+
+       /* the number of ids to map is the acl count plus uid and gid */
+       num_ids = acl->a_count +2;
+       ids = talloc_array(sd, struct id_mapping, num_ids);
+       NT_STATUS_HAVE_NO_MEMORY(ids);
+
+       ids[0].unixid = talloc(ids, struct unixid);
+       NT_STATUS_HAVE_NO_MEMORY(ids[0].unixid);
+       ids[0].unixid->id = name->st.st_uid;
+       ids[0].unixid->type = ID_TYPE_UID;
+       ids[0].sid = NULL;
+       ids[0].status = NT_STATUS_NONE_MAPPED;
+
+       ids[1].unixid = talloc(ids, struct unixid);
+       NT_STATUS_HAVE_NO_MEMORY(ids[1].unixid);
+       ids[1].unixid->id = name->st.st_gid;
+       ids[1].unixid->type = ID_TYPE_GID;
+       ids[1].sid = NULL;
+       ids[1].status = NT_STATUS_NONE_MAPPED;
+
+       for (i=0;i<acl->a_count;i++) {
+               struct nfs4ace *a = &acl->ace[i];
+               ids[i+2].unixid = talloc(ids, struct unixid);
+               NT_STATUS_HAVE_NO_MEMORY(ids[i+2].unixid);
+               ids[i+2].unixid->id = a->e_id;
+               if (a->e_flags & ACE4_IDENTIFIER_GROUP) {
+                       ids[i+2].unixid->type = ID_TYPE_GID;
+               } else {
+                       ids[i+2].unixid->type = ID_TYPE_UID;
+               }
+               ids[i+2].sid = NULL;
+               ids[i+2].status = NT_STATUS_NONE_MAPPED;
+       }
+
+       /* Allocate memory for the sids from the security descriptor to be on
+        * the safe side. */
+       ctx = wbc_xids_to_sids_send(pvfs->wbc_ctx, sd, num_ids, ids);
+       NT_STATUS_HAVE_NO_MEMORY(ctx);
+       status = wbc_xids_to_sids_recv(ctx, &ids);
        NT_STATUS_NOT_OK_RETURN(status);
 
+       sd->owner_sid = talloc_steal(sd, ids[0].sid);
+       sd->group_sid = talloc_steal(sd, ids[1].sid);
+
        for (i=0;i<acl->a_count;i++) {
                struct nfs4ace *a = &acl->ace[i];
                struct security_ace ace;
-               struct dom_sid *sid;
                ace.type = a->e_type;
                ace.flags = a->e_flags;
                ace.access_mask = a->e_mask;
-               if (a->e_flags & ACE4_IDENTIFIER_GROUP) {
-                       status = sidmap_gid_to_sid(pvfs->sidmap, sd, a->e_id, &sid);
-               } else {
-                       status = sidmap_uid_to_sid(pvfs->sidmap, sd, a->e_id, &sid);
-               }
-               NT_STATUS_NOT_OK_RETURN(status);
-               ace.trustee = *sid;
+               ace.trustee = *ids[i+2].sid;
                security_descriptor_dacl_add(sd, &ace);
        }
 
@@ -93,6 +127,8 @@ static NTSTATUS pvfs_acl_save_nfs4(struct pvfs_state *pvfs, struct pvfs_filename
        struct nfs4acl acl;
        int i;
        TALLOC_CTX *tmp_ctx;
+       struct id_mapping *ids;
+       struct composite_context *ctx;
 
        tmp_ctx = talloc_new(pvfs);
        NT_STATUS_HAVE_NO_MEMORY(tmp_ctx);
@@ -110,30 +146,44 @@ static NTSTATUS pvfs_acl_save_nfs4(struct pvfs_state *pvfs, struct pvfs_filename
                return NT_STATUS_NO_MEMORY;
        }
 
+       ids = talloc_array(tmp_ctx, struct id_mapping, acl.a_count);
+       if (ids == NULL) {
+               talloc_free(tmp_ctx);
+               return NT_STATUS_NO_MEMORY;
+       }
+
+       for (i=0;i<acl.a_count;i++) {
+               struct security_ace *ace = &sd->dacl->aces[i];
+               ids[i].unixid = NULL;
+               ids[i].sid = dom_sid_dup(ids, &ace->trustee);
+               if (ids[i].sid == NULL) {
+                       talloc_free(tmp_ctx);
+                       return NT_STATUS_NO_MEMORY;
+               }
+               ids[i].status = NT_STATUS_NONE_MAPPED;
+       }
+
+       ctx = wbc_sids_to_xids_send(pvfs->wbc_ctx,ids, acl.a_count, ids);
+       if (ctx == NULL) {
+               talloc_free(tmp_ctx);
+               return NT_STATUS_NO_MEMORY;
+       }
+       status = wbc_sids_to_xids_recv(ctx, &ids);
+       if (!NT_STATUS_IS_OK(status)) {
+               talloc_free(tmp_ctx);
+               return status;
+       }
+
        for (i=0;i<acl.a_count;i++) {
                struct nfs4ace *a = &acl.ace[i];
                struct security_ace *ace = &sd->dacl->aces[i];
                a->e_type  = ace->type;
                a->e_flags = ace->flags;
                a->e_mask  = ace->access_mask;
-               if (sidmap_sid_is_group(pvfs->sidmap, &ace->trustee)) {
-                       gid_t gid;
+               if (ids[i].unixid->type != ID_TYPE_UID) {
                        a->e_flags |= ACE4_IDENTIFIER_GROUP;
-                       status = sidmap_sid_to_unixgid(pvfs->sidmap, &ace->trustee, &gid);
-                       if (!NT_STATUS_IS_OK(status)) {
-                               talloc_free(tmp_ctx);
-                               return status;
-                       }
-                       a->e_id = gid;
-               } else {
-                       uid_t uid;
-                       status = sidmap_sid_to_unixuid(pvfs->sidmap, &ace->trustee, &uid);
-                       if (!NT_STATUS_IS_OK(status)) {
-                               talloc_free(tmp_ctx);
-                               return status;
-                       }
-                       a->e_id = uid;
                }
+               a->e_id = ids[i].unixid->id;
                a->e_who   = "";
        }
 
index b66d252a45a8bbe0775d17a5f4fa31f306545e5d..3043b80538a9a418683d922e21dfcc9601e4229f 100644 (file)
@@ -101,7 +101,7 @@ NTSTATUS pvfs_xattr_unlink_hook(struct pvfs_state *pvfs, const char *fname)
 /*
   load a NDR structure from a xattr
 */
-_PUBLIC_ NTSTATUS pvfs_xattr_ndr_load(struct pvfs_state *pvfs,
+NTSTATUS pvfs_xattr_ndr_load(struct pvfs_state *pvfs,
                             TALLOC_CTX *mem_ctx,
                             const char *fname, int fd, const char *attr_name,
                             void *p, void *pull_fn)
@@ -131,7 +131,7 @@ _PUBLIC_ NTSTATUS pvfs_xattr_ndr_load(struct pvfs_state *pvfs,
 /*
   save a NDR structure into a xattr
 */
-_PUBLIC_ NTSTATUS pvfs_xattr_ndr_save(struct pvfs_state *pvfs,
+NTSTATUS pvfs_xattr_ndr_save(struct pvfs_state *pvfs,
                             const char *fname, int fd, const char *attr_name, 
                             void *p, void *push_fn)
 {
index ca874d1db1f0551a901c5a39cafe00a481f3f5f3..ebc2d88e701034c102ec770b5cdc649c84383ea6 100644 (file)
@@ -222,8 +222,10 @@ static NTSTATUS pvfs_connect(struct ntvfs_module_context *ntvfs,
                                           event_context_find(pvfs),
                                           pvfs->ntvfs->ctx->config);
 
-       pvfs->sidmap = sidmap_open(pvfs, pvfs->ntvfs->ctx->lp_ctx);
-       if (pvfs->sidmap == NULL) {
+       pvfs->wbc_ctx = wbc_init(pvfs,
+                                pvfs->ntvfs->ctx->msg_ctx,
+                                pvfs->ntvfs->ctx->event_ctx);
+       if (pvfs->wbc_ctx == NULL) {
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        }
 
index 4d22a917149c7d0f7aff4c6c21d53b7de1640a1c..441424142f933555b19fe82b1c179770582de3f8 100644 (file)
@@ -26,6 +26,7 @@
 #include "system/filesys.h"
 #include "ntvfs/ntvfs.h"
 #include "ntvfs/common/ntvfs_common.h"
+#include "libcli/wbclient/wbclient.h"
 #include "dsdb/samdb/samdb.h"
 
 struct pvfs_wait;
@@ -46,7 +47,7 @@ struct pvfs_state {
        struct brl_context *brl_context;
        struct odb_context *odb_context;
        struct notify_context *notify_context;
-       struct sidmap_context *sidmap;
+       struct wbc_context *wbc_ctx;
 
        /* a list of pending async requests. Needed to support
           ntcancel */
index 63889c66772d6765c5d80e0e36f06556d8d67088..66c2cfaf4c195e7ac10b7148ba82708f64058a38 100644 (file)
 #include "system/passwd.h"
 #include "auth/auth.h"
 #include "ntvfs/ntvfs.h"
-#include "dsdb/samdb/samdb.h"
+#include "libcli/wbclient/wbclient.h"
 #include "param/param.h"
 
 struct unixuid_private {
-       struct sidmap_context *sidmap;
+       struct wbc_context *wbc_ctx;
        struct unix_sec_ctx *last_sec_ctx;
        struct security_token *last_token;
 };
@@ -100,9 +100,11 @@ static NTSTATUS nt_token_to_unix_security(struct ntvfs_module_context *ntvfs,
                                          struct security_token *token,
                                          struct unix_sec_ctx **sec)
 {
-       struct unixuid_private *private = ntvfs->private_data;
+       struct unixuid_private *priv = ntvfs->private_data;
        int i;
        NTSTATUS status;
+       struct id_mapping *ids;
+       struct composite_context *ctx;
        *sec = talloc(req, struct unix_sec_ctx);
 
        /* we can't do unix security without a user and group */
@@ -110,29 +112,53 @@ static NTSTATUS nt_token_to_unix_security(struct ntvfs_module_context *ntvfs,
                return NT_STATUS_ACCESS_DENIED;
        }
 
-       status = sidmap_sid_to_unixuid(private->sidmap, 
-                                      token->user_sid, &(*sec)->uid);
-       if (!NT_STATUS_IS_OK(status)) {
-               return status;
-       }
+       ids = talloc_array(req, struct id_mapping, token->num_sids);
+       NT_STATUS_HAVE_NO_MEMORY(ids);
 
-       status = sidmap_sid_to_unixgid(private->sidmap, 
-                                      token->group_sid, &(*sec)->gid);
-       if (!NT_STATUS_IS_OK(status)) {
-               return status;
-       }
+       ids[0].unixid = NULL;
+       ids[0].sid = token->user_sid;
+       ids[0].status = NT_STATUS_NONE_MAPPED;
+
+       ids[1].unixid = NULL;
+       ids[1].sid = token->group_sid;
+       ids[1].status = NT_STATUS_NONE_MAPPED;
 
        (*sec)->ngroups = token->num_sids - 2;
        (*sec)->groups = talloc_array(*sec, gid_t, (*sec)->ngroups);
-       if ((*sec)->groups == NULL) {
-               return NT_STATUS_NO_MEMORY;
+       NT_STATUS_HAVE_NO_MEMORY((*sec)->groups);
+
+       for (i=0;i<(*sec)->ngroups;i++) {
+               ids[i+2].unixid = NULL;
+               ids[i+2].sid = token->sids[i+2];
+               ids[i+2].status = NT_STATUS_NONE_MAPPED;
+       }
+
+       ctx = wbc_sids_to_xids_send(priv->wbc_ctx, ids, token->num_sids, ids);
+       NT_STATUS_HAVE_NO_MEMORY(ctx);
+
+       status = wbc_sids_to_xids_recv(ctx, &ids);
+       NT_STATUS_NOT_OK_RETURN(status);
+
+       if (ids[0].unixid->type == ID_TYPE_BOTH ||
+           ids[0].unixid->type == ID_TYPE_UID) {
+               (*sec)->uid = ids[0].unixid->id;
+       } else {
+               return NT_STATUS_INVALID_SID;
+       }
+
+       if (ids[1].unixid->type == ID_TYPE_BOTH ||
+           ids[1].unixid->type == ID_TYPE_GID) {
+               (*sec)->gid = ids[1].unixid->id;
+       } else {
+               return NT_STATUS_INVALID_SID;
        }
 
        for (i=0;i<(*sec)->ngroups;i++) {
-               status = sidmap_sid_to_unixgid(private->sidmap, 
-                                              token->sids[i+2], &(*sec)->groups[i]);
-               if (!NT_STATUS_IS_OK(status)) {
-                       return status;
+               if (ids[i+2].unixid->type == ID_TYPE_BOTH ||
+                   ids[i+2].unixid->type == ID_TYPE_GID) {
+                       (*sec)->groups[i] = ids[i+2].unixid->id;
+               } else {
+                       return NT_STATUS_INVALID_SID;
                }
        }
 
@@ -216,9 +242,11 @@ static NTSTATUS unixuid_connect(struct ntvfs_module_context *ntvfs,
                return NT_STATUS_NO_MEMORY;
        }
 
-       private->sidmap = sidmap_open(private, ntvfs->ctx->lp_ctx);
-       if (private->sidmap == NULL) {
-               return NT_STATUS_INTERNAL_DB_CORRUPTION;
+       private->wbc_ctx = wbc_init(private, ntvfs->ctx->msg_ctx,
+                                   ntvfs->ctx->event_ctx);
+       if (private->wbc_ctx == NULL) {
+               talloc_free(private);
+               return NT_STATUS_INTERNAL_ERROR;
        }
 
        ntvfs->private_data = private;
diff --git a/source4/param/README b/source4/param/README
new file mode 100644 (file)
index 0000000..403a217
--- /dev/null
@@ -0,0 +1,4 @@
+This directory contains "libsamba-hostconfig". 
+
+The libsamba-hostconfig library provides access to all host-wide configuration
+such as the configured shares, default parameter values and host secret keys.
index 4b5af9b6cbde1b006d8239771b5b8d8d8b733fe0..bc8f7a5dc7b69711649e9bd5d0699d9675ea00e6 100644 (file)
@@ -1,4 +1,6 @@
-[SUBSYSTEM::LIBSAMBA-CONFIG]
+[LIBRARY::LIBSAMBA-HOSTCONFIG]
+VERSION = 0.0.1
+SO_VERSION = 1
 PUBLIC_DEPENDENCIES = LIBSAMBA-UTIL 
 PRIVATE_DEPENDENCIES = DYNCONFIG LIBREPLACE_EXT CHARSET
 PRIVATE_PROTO_HEADER = proto.h
@@ -11,6 +13,8 @@ LIBSAMBA-CONFIG_OBJ_FILES = param/loadparm.o \
 
 PUBLIC_HEADERS += param/param.h
 
+PC_FILES += param/samba-hostconfig.pc
+
 #################################
 # Start SUBSYSTEM share
 [SUBSYSTEM::share]
@@ -52,6 +56,6 @@ SECRETS_OBJ_FILES = param/secrets.o
 
 [PYTHON::param]
 SWIG_FILE = param.i
-PRIVATE_DEPENDENCIES = LIBSAMBA-CONFIG
+PRIVATE_DEPENDENCIES = LIBSAMBA-HOSTCONFIG
 
 param_OBJ_FILES = param/param_wrap.o
index 84f864edaab70ae3dc954b5e3aaa9eed37b4e342..0b276cdff20f60e38c2fe10e93eb75c7c30c0e39 100644 (file)
@@ -61,8 +61,367 @@ struct loadparm_context;
 struct loadparm_service;
 struct smbcli_options;
 
-#include "param/proto.h"
+void reload_charcnv(struct loadparm_context *lp_ctx);
 
 extern struct loadparm_context *global_loadparm;
 
+struct loadparm_service *lp_default_service(struct loadparm_context *lp_ctx);
+struct parm_struct *lp_parm_table(void);
+int lp_server_role(struct loadparm_context *);
+const char **lp_smb_ports(struct loadparm_context *);
+int lp_nbt_port(struct loadparm_context *);
+int lp_dgram_port(struct loadparm_context *);
+int lp_cldap_port(struct loadparm_context *);
+int lp_krb5_port(struct loadparm_context *);
+int lp_kpasswd_port(struct loadparm_context *);
+int lp_web_port(struct loadparm_context *);
+const char *lp_swat_directory(struct loadparm_context *);
+bool lp_tls_enabled(struct loadparm_context *);
+const char *lp_tls_keyfile(struct loadparm_context *);
+const char *lp_tls_certfile(struct loadparm_context *);
+const char *lp_tls_cafile(struct loadparm_context *);
+const char *lp_tls_crlfile(struct loadparm_context *);
+const char *lp_tls_dhpfile(struct loadparm_context *);
+const char *lp_share_backend(struct loadparm_context *);
+const char *lp_sam_url(struct loadparm_context *);
+const char *lp_idmap_url(struct loadparm_context *);
+const char *lp_secrets_url(struct loadparm_context *);
+const char *lp_spoolss_url(struct loadparm_context *);
+const char *lp_wins_config_url(struct loadparm_context *);
+const char *lp_wins_url(struct loadparm_context *);
+const char *lp_winbind_separator(struct loadparm_context *);
+const char *lp_winbindd_socket_directory(struct loadparm_context *);
+const char *lp_template_shell(struct loadparm_context *);
+const char *lp_template_homedir(struct loadparm_context *);
+bool lp_winbind_sealed_pipes(struct loadparm_context *);
+bool lp_idmap_trusted_only(struct loadparm_context *);
+const char *lp_private_dir(struct loadparm_context *);
+const char *lp_serverstring(struct loadparm_context *);
+const char *lp_lockdir(struct loadparm_context *);
+const char *lp_modulesdir(struct loadparm_context *);
+const char *lp_setupdir(struct loadparm_context *);
+const char *lp_ncalrpc_dir(struct loadparm_context *);
+const char *lp_dos_charset(struct loadparm_context *);
+const char *lp_unix_charset(struct loadparm_context *);
+const char *lp_display_charset(struct loadparm_context *);
+const char *lp_piddir(struct loadparm_context *);
+const char **lp_dcerpc_endpoint_servers(struct loadparm_context *);
+const char **lp_server_services(struct loadparm_context *);
+const char *lp_ntptr_providor(struct loadparm_context *);
+const char *lp_auto_services(struct loadparm_context *);
+const char *lp_passwd_chat(struct loadparm_context *);
+const char **lp_passwordserver(struct loadparm_context *);
+const char **lp_name_resolve_order(struct loadparm_context *);
+const char *lp_realm(struct loadparm_context *);
+const char *lp_socket_options(struct loadparm_context *);
+const char *lp_workgroup(struct loadparm_context *);
+const char *lp_netbios_name(struct loadparm_context *);
+const char *lp_netbios_scope(struct loadparm_context *);
+const char **lp_wins_server_list(struct loadparm_context *);
+const char **lp_interfaces(struct loadparm_context *);
+const char *lp_socket_address(struct loadparm_context *);
+const char **lp_netbios_aliases(struct loadparm_context *);
+bool lp_disable_netbios(struct loadparm_context *);
+bool lp_wins_support(struct loadparm_context *);
+bool lp_wins_dns_proxy(struct loadparm_context *);
+const char *lp_wins_hook(struct loadparm_context *);
+bool lp_local_master(struct loadparm_context *);
+bool lp_readraw(struct loadparm_context *);
+bool lp_large_readwrite(struct loadparm_context *);
+bool lp_writeraw(struct loadparm_context *);
+bool lp_null_passwords(struct loadparm_context *);
+bool lp_obey_pam_restrictions(struct loadparm_context *);
+bool lp_encrypted_passwords(struct loadparm_context *);
+bool lp_time_server(struct loadparm_context *);
+bool lp_bind_interfaces_only(struct loadparm_context *);
+bool lp_unicode(struct loadparm_context *);
+bool lp_nt_status_support(struct loadparm_context *);
+bool lp_lanman_auth(struct loadparm_context *);
+bool lp_ntlm_auth(struct loadparm_context *);
+bool lp_client_plaintext_auth(struct loadparm_context *);
+bool lp_client_lanman_auth(struct loadparm_context *);
+bool lp_client_ntlmv2_auth(struct loadparm_context *);
+bool lp_client_use_spnego_principal(struct loadparm_context *);
+bool lp_host_msdfs(struct loadparm_context *);
+bool lp_unix_extensions(struct loadparm_context *);
+bool lp_use_spnego(struct loadparm_context *);
+bool lp_rpc_big_endian(struct loadparm_context *);
+int lp_max_wins_ttl(struct loadparm_context *);
+int lp_min_wins_ttl(struct loadparm_context *);
+int lp_maxmux(struct loadparm_context *);
+int lp_max_xmit(struct loadparm_context *);
+int lp_passwordlevel(struct loadparm_context *);
+int lp_srv_maxprotocol(struct loadparm_context *);
+int lp_srv_minprotocol(struct loadparm_context *);
+int lp_cli_maxprotocol(struct loadparm_context *);
+int lp_cli_minprotocol(struct loadparm_context *);
+int lp_security(struct loadparm_context *);
+bool lp_paranoid_server_security(struct loadparm_context *);
+int lp_announce_as(struct loadparm_context *);
+const char **lp_js_include(struct loadparm_context *);
+
+const char *lp_servicename(const struct loadparm_service *service);
+const char *lp_pathname(struct loadparm_service *, struct loadparm_service *);
+const char **lp_hostsallow(struct loadparm_service *, struct loadparm_service *);
+const char **lp_hostsdeny(struct loadparm_service *, struct loadparm_service *);
+const char *lp_comment(struct loadparm_service *, struct loadparm_service *);
+const char *lp_fstype(struct loadparm_service *, struct loadparm_service *);
+const char **lp_ntvfs_handler(struct loadparm_service *, struct loadparm_service *);
+bool lp_msdfs_root(struct loadparm_service *, struct loadparm_service *);
+bool lp_browseable(struct loadparm_service *, struct loadparm_service *);
+bool lp_readonly(struct loadparm_service *, struct loadparm_service *);
+bool lp_print_ok(struct loadparm_service *, struct loadparm_service *);
+bool lp_map_hidden(struct loadparm_service *, struct loadparm_service *);
+bool lp_map_archive(struct loadparm_service *, struct loadparm_service *);
+bool lp_strict_locking(struct loadparm_service *, struct loadparm_service *);
+bool lp_oplocks(struct loadparm_service *, struct loadparm_service *);
+bool lp_strict_sync(struct loadparm_service *, struct loadparm_service *);
+bool lp_ci_filesystem(struct loadparm_service *, struct loadparm_service *);
+bool lp_map_system(struct loadparm_service *, struct loadparm_service *);
+int lp_max_connections(struct loadparm_service *, struct loadparm_service *);
+int lp_csc_policy(struct loadparm_service *, struct loadparm_service *);
+int lp_create_mask(struct loadparm_service *, struct loadparm_service *);
+int lp_force_create_mode(struct loadparm_service *, struct loadparm_service *);
+int lp_dir_mask(struct loadparm_service *, struct loadparm_service *);
+int lp_force_dir_mode(struct loadparm_service *, struct loadparm_service *);
+int lp_server_signing(struct loadparm_context *);
+int lp_client_signing(struct loadparm_context *);
+const char *lp_get_parametric(struct loadparm_context *lp_ctx,
+                             struct loadparm_service *service,
+                             const char *type, const char *option);
+
+const char *lp_parm_string(struct loadparm_context *lp_ctx,
+                          struct loadparm_service *service, const char *type,
+                          const char *option);
+const char **lp_parm_string_list(TALLOC_CTX *mem_ctx,
+                                struct loadparm_context *lp_ctx,
+                                struct loadparm_service *service,
+                                const char *type,
+                                const char *option, const char *separator);
+int lp_parm_int(struct loadparm_context *lp_ctx,
+               struct loadparm_service *service, const char *type,
+               const char *option, int default_v);
+int lp_parm_bytes(struct loadparm_context *lp_ctx,
+                 struct loadparm_service *service, const char *type,
+                 const char *option, int default_v);
+unsigned long lp_parm_ulong(struct loadparm_context *lp_ctx,
+                           struct loadparm_service *service, const char *type,
+                           const char *option, unsigned long default_v);
+double lp_parm_double(struct loadparm_context *lp_ctx,
+                     struct loadparm_service *service, const char *type,
+                     const char *option, double default_v);
+bool lp_parm_bool(struct loadparm_context *lp_ctx,
+                 struct loadparm_service *service, const char *type,
+                 const char *option, bool default_v);
+struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx,
+                                    const struct loadparm_service *pservice,
+                                    const char *name);
+bool lp_add_home(struct loadparm_context *lp_ctx,
+                const char *pszHomename,
+                struct loadparm_service *default_service,
+                const char *user, const char *pszHomedir);
+bool lp_add_printer(struct loadparm_context *lp_ctx,
+                   const char *pszPrintername,
+                   struct loadparm_service *default_service);
+struct parm_struct *lp_parm_struct(const char *name);
+void *lp_parm_ptr(struct loadparm_context *lp_ctx,
+                 struct loadparm_service *service, struct parm_struct *parm);
+bool lp_file_list_changed(struct loadparm_context *lp_ctx);
+
+bool lp_do_global_parameter(struct loadparm_context *lp_ctx,
+                           const char *pszParmName, const char *pszParmValue);
+bool lp_do_service_parameter(struct loadparm_context *lp_ctx,
+                            struct loadparm_service *service,
+                            const char *pszParmName, const char *pszParmValue);
+
+/**
+ * Process a parameter.
+ */
+bool lp_do_global_parameter_var(struct loadparm_context *lp_ctx,
+                               const char *pszParmName, const char *fmt, ...);
+bool lp_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName,
+                   const char *pszParmValue);
+bool lp_set_option(struct loadparm_context *lp_ctx, const char *option);
+
+/**
+ * Display the contents of a single services record.
+ */
+bool lp_dump_a_parameter(struct loadparm_context *lp_ctx,
+                        struct loadparm_service *service,
+                        const char *parm_name, FILE * f);
+
+/**
+ * Return info about the next service  in a service. snum==-1 gives the globals.
+ * Return NULL when out of parameters.
+ */
+struct parm_struct *lp_next_parameter(struct loadparm_context *lp_ctx, int snum, int *i, 
+                                     int allparameters);
+
+/**
+ * Unload unused services.
+ */
+void lp_killunused(struct loadparm_context *lp_ctx,
+                  struct smbsrv_connection *smb,
+                  bool (*snumused) (struct smbsrv_connection *, int));
+
+/**
+ * Initialise the global parameter structure.
+ */
+struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx);
+const char *lp_configfile(struct loadparm_context *lp_ctx);
+bool lp_load_default(struct loadparm_context *lp_ctx);
+
+/**
+ * Load the services array from the services file.
+ *
+ * Return True on success, False on failure.
+ */
+bool lp_load(struct loadparm_context *lp_ctx, const char *filename);
+
+/**
+ * Return the max number of services.
+ */
+int lp_numservices(struct loadparm_context *lp_ctx);
+
+/**
+ * Display the contents of the services array in human-readable form.
+ */
+void lp_dump(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults,
+            int maxtoprint);
+
+/**
+ * Display the contents of one service in human-readable form.
+ */
+void lp_dump_one(FILE *f, bool show_defaults, struct loadparm_service *service, struct loadparm_service *sDefault);
+struct loadparm_service *lp_servicebynum(struct loadparm_context *lp_ctx,
+                                        int snum);
+struct loadparm_service *lp_service(struct loadparm_context *lp_ctx,
+                                   const char *service_name);
+
+/**
+ * A useful volume label function.
+ */
+const char *volume_label(struct loadparm_service *service, struct loadparm_service *sDefault);
+
+/**
+ * If we are PDC then prefer us as DMB
+ */
+const char *lp_printername(struct loadparm_service *service, struct loadparm_service *sDefault);
+
+/**
+ * Return the max print jobs per queue.
+ */
+int lp_maxprintjobs(struct loadparm_service *service, struct loadparm_service *sDefault);
+struct smb_iconv_convenience *lp_iconv_convenience(struct loadparm_context *lp_ctx);
+void lp_smbcli_options(struct loadparm_context *lp_ctx,
+                        struct smbcli_options *options);
+
+/* The following definitions come from param/generic.c  */
+
+struct param_section *param_get_section(struct param_context *ctx, const char *name);
+struct param_opt *param_section_get(struct param_section *section, 
+                                   const char *name);
+struct param_opt *param_get (struct param_context *ctx, const char *name, const char *section_name);
+struct param_section *param_add_section(struct param_context *ctx, const char *section_name);
+struct param_opt *param_get_add(struct param_context *ctx, const char *name, const char *section_name);
+const char *param_get_string(struct param_context *ctx, const char *param, const char *section);
+int param_set_string(struct param_context *ctx, const char *param, const char *value, const char *section);
+const char **param_get_string_list(struct param_context *ctx, const char *param, const char *separator, const char *section);
+int param_set_string_list(struct param_context *ctx, const char *param, const char **list, const char *section);
+int param_get_int(struct param_context *ctx, const char *param, int default_v, const char *section);
+void param_set_int(struct param_context *ctx, const char *param, int value, const char *section);
+unsigned long param_get_ulong(struct param_context *ctx, const char *param, unsigned long default_v, const char *section);
+void param_set_ulong(struct param_context *ctx, const char *name, unsigned long value, const char *section);
+struct param_context *param_init(TALLOC_CTX *mem_ctx);
+int param_read(struct param_context *ctx, const char *fn);
+int param_use(struct loadparm_context *lp_ctx, struct param_context *ctx);
+int param_write(struct param_context *ctx, const char *fn);
+
+/* The following definitions come from param/util.c  */
+
+
+/**
+ * @file
+ * @brief Misc utility functions
+ */
+bool lp_is_mydomain(struct loadparm_context *lp_ctx, 
+                            const char *domain);
+
+/**
+  see if a string matches either our primary or one of our secondary 
+  netbios aliases. do a case insensitive match
+*/
+bool lp_is_myname(struct loadparm_context *lp_ctx, const char *name);
+
+/**
+ A useful function for returning a path in the Samba lock directory.
+**/
+char *lock_path(TALLOC_CTX* mem_ctx, struct loadparm_context *lp_ctx,
+                        const char *name);
+
+/**
+ * @brief Returns an absolute path to a file in the directory containing the current config file
+ *
+ * @param name File to find, relative to the config file directory.
+ *
+ * @retval Pointer to a talloc'ed string containing the full path.
+ **/
+char *config_path(TALLOC_CTX* mem_ctx, struct loadparm_context *lp_ctx,
+                          const char *name);
+
+/**
+ * @brief Returns an absolute path to a file in the Samba private directory.
+ *
+ * @param name File to find, relative to PRIVATEDIR.
+ * if name is not relative, then use it as-is
+ *
+ * @retval Pointer to a talloc'ed string containing the full path.
+ **/
+char *private_path(TALLOC_CTX* mem_ctx, 
+                           struct loadparm_context *lp_ctx,
+                           const char *name);
+
+/**
+  return a path in the smbd.tmp directory, where all temporary file
+  for smbd go. If NULL is passed for name then return the directory 
+  path itself
+*/
+char *smbd_tmp_path(TALLOC_CTX *mem_ctx, 
+                            struct loadparm_context *lp_ctx, 
+                            const char *name);
+
+/**
+ * Obtain the init function from a shared library file
+ */
+init_module_fn load_module(TALLOC_CTX *mem_ctx, const char *path);
+
+/**
+ * Obtain list of init functions from the modules in the specified
+ * directory
+ */
+init_module_fn *load_modules(TALLOC_CTX *mem_ctx, const char *path);
+
+/**
+ * Run the specified init functions.
+ *
+ * @return true if all functions ran successfully, false otherwise
+ */
+bool run_init_functions(init_module_fn *fns);
+
+/**
+ * Load the initialization functions from DSO files for a specific subsystem.
+ *
+ * Will return an array of function pointers to initialization functions
+ */
+init_module_fn *load_samba_modules(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, const char *subsystem);
+const char *lp_messaging_path(TALLOC_CTX *mem_ctx, 
+                                      struct loadparm_context *lp_ctx);
+struct smb_iconv_convenience *smb_iconv_convenience_init_lp(TALLOC_CTX *mem_ctx,
+                                                        struct loadparm_context *lp_ctx);
+
+/* The following definitions come from lib/version.c  */
+
+const char *samba_version_string(void);
+
+
 #endif /* _PARAM_H */
similarity index 59%
rename from source4/param/samba-config.pc.in
rename to source4/param/samba-hostconfig.pc.in
index 801f6aeda47ae8669e47e079a95d88f6080fc1eb..b8ba24096df51029f727dcc3cc6437c48efe35e1 100644 (file)
@@ -3,8 +3,8 @@ exec_prefix=@exec_prefix@
 libdir=@libdir@
 includedir=@includedir@
 
-Name: samba-config
-Description: Reading Samba configuration files
+Name: samba-hostconfig
+Description: Host-wide Samba configuration
 Version: 0.0.1
-Libs: -L${libdir} -lsamba-config 
+Libs: -L${libdir} -lsamba-hostconfig 
 Cflags: -I${includedir}  -DHAVE_IMMEDIATE_STRUCTURES=1
index bc4327188ad44c659af2d646b39638ac65a87d47..06dc850c8e6b317388c6e237775420ac89fa1a48 100644 (file)
@@ -32,8 +32,6 @@
 #include "lib/util/util_ldb.h"
 #include "librpc/gen_ndr/ndr_security.h"
 
-static struct tdb_wrap *tdb;
-
 /**
  * Use a TDB to store an incrementing random seed.
  *
@@ -42,42 +40,31 @@ static struct tdb_wrap *tdb;
  * 
  * @note Not called by systems with a working /dev/urandom.
  */
-static void get_rand_seed(int *new_seed) 
+static void get_rand_seed(struct tdb_wrap *secretsdb, int *new_seed) 
 {
        *new_seed = getpid();
-       if (tdb != NULL) {
-               tdb_change_int32_atomic(tdb->tdb, "INFO/random_seed", new_seed, 1);
+       if (secretsdb != NULL) {
+               tdb_change_int32_atomic(secretsdb->tdb, "INFO/random_seed", new_seed, 1);
        }
 }
 
-/**
- * close the secrets database
- */
-void secrets_shutdown(void)
-{
-       talloc_free(tdb);
-}
-
 /**
  * open up the secrets database
  */
-bool secrets_init(struct loadparm_context *lp_ctx)
+struct tdb_wrap *secrets_init(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
 {
        char *fname;
        uint8_t dummy;
+       struct tdb_wrap *tdb;
 
-       if (tdb != NULL)
-               return true;
+       fname = private_path(mem_ctx, lp_ctx, "secrets.tdb");
 
-       fname = private_path(NULL, lp_ctx, "secrets.tdb");
-
-       tdb = tdb_wrap_open(talloc_autofree_context(), fname, 0, TDB_DEFAULT, 
-                                               O_RDWR|O_CREAT, 0600);
+       tdb = tdb_wrap_open(mem_ctx, fname, 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 
        if (!tdb) {
                DEBUG(0,("Failed to open %s\n", fname));
                talloc_free(fname);
-               return false;
+               return NULL;
        }
        talloc_free(fname);
 
@@ -87,12 +74,12 @@ bool secrets_init(struct loadparm_context *lp_ctx)
         * This avoids a problem where systems without /dev/urandom
         * could send the same challenge to multiple clients
         */
-       set_rand_reseed_callback(get_rand_seed);
+       set_rand_reseed_callback((void (*) (void *, int *))get_rand_seed, tdb);
 
        /* Ensure that the reseed is done now, while we are root, etc */
        generate_random_buffer(&dummy, sizeof(dummy));
 
-       return true;
+       return tdb;
 }
 
 /**
index 4a9eb25e7e034939a12795c55d387d09609de3bf..bd6ff4a4015ec1a70d39d794cbfecfcc4abdf21d 100644 (file)
@@ -43,8 +43,7 @@ struct machine_acct_pass {
  * @note Not called by systems with a working /dev/urandom.
  */
 struct loadparm_context;
-void secrets_shutdown(void);
-bool secrets_init(struct loadparm_context *lp_ctx);
+struct tdb_wrap *secrets_init(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx);
 struct ldb_context *secrets_db_connect(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx);
 struct dom_sid *secrets_get_domain_sid(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, const char *domain);
 
index 1cf05d4fa7a5ca77ea88478aa21d0a8533f8d27a..2baaefda8b351e51e0d63b02cfcdb3b61bd48809 100644 (file)
@@ -35,7 +35,7 @@
  */
 
 
-_PUBLIC_ bool lp_is_mydomain(struct loadparm_context *lp_ctx, 
+bool lp_is_mydomain(struct loadparm_context *lp_ctx, 
                             const char *domain)
 {
        return strequal(lp_workgroup(lp_ctx), domain);
@@ -45,7 +45,7 @@ _PUBLIC_ bool lp_is_mydomain(struct loadparm_context *lp_ctx,
   see if a string matches either our primary or one of our secondary 
   netbios aliases. do a case insensitive match
 */
-_PUBLIC_ bool lp_is_myname(struct loadparm_context *lp_ctx, const char *name)
+bool lp_is_myname(struct loadparm_context *lp_ctx, const char *name)
 {
        const char **aliases;
        int i;
@@ -68,7 +68,7 @@ _PUBLIC_ bool lp_is_myname(struct loadparm_context *lp_ctx, const char *name)
 /**
  A useful function for returning a path in the Samba lock directory.
 **/
-_PUBLIC_ char *lock_path(TALLOC_CTX* mem_ctx, struct loadparm_context *lp_ctx,
+char *lock_path(TALLOC_CTX* mem_ctx, struct loadparm_context *lp_ctx,
                         const char *name)
 {
        char *fname, *dname;
@@ -101,7 +101,7 @@ _PUBLIC_ char *lock_path(TALLOC_CTX* mem_ctx, struct loadparm_context *lp_ctx,
  * @retval Pointer to a talloc'ed string containing the full path.
  **/
 
-_PUBLIC_ char *config_path(TALLOC_CTX* mem_ctx, struct loadparm_context *lp_ctx,
+char *config_path(TALLOC_CTX* mem_ctx, struct loadparm_context *lp_ctx,
                           const char *name)
 {
        char *fname, *config_dir, *p;
@@ -127,7 +127,7 @@ _PUBLIC_ char *config_path(TALLOC_CTX* mem_ctx, struct loadparm_context *lp_ctx,
  *
  * @retval Pointer to a talloc'ed string containing the full path.
  **/
-_PUBLIC_ char *private_path(TALLOC_CTX* mem_ctx, 
+char *private_path(TALLOC_CTX* mem_ctx, 
                            struct loadparm_context *lp_ctx,
                            const char *name)
 {
@@ -147,7 +147,7 @@ _PUBLIC_ char *private_path(TALLOC_CTX* mem_ctx,
   for smbd go. If NULL is passed for name then return the directory 
   path itself
 */
-_PUBLIC_ char *smbd_tmp_path(TALLOC_CTX *mem_ctx, 
+char *smbd_tmp_path(TALLOC_CTX *mem_ctx, 
                             struct loadparm_context *lp_ctx, 
                             const char *name)
 {
@@ -171,7 +171,7 @@ _PUBLIC_ char *smbd_tmp_path(TALLOC_CTX *mem_ctx,
 /**
  * Obtain the init function from a shared library file
  */
-_PUBLIC_ init_module_fn load_module(TALLOC_CTX *mem_ctx, const char *path)
+init_module_fn load_module(TALLOC_CTX *mem_ctx, const char *path)
 {
        void *handle;
        void *init_fn;
@@ -198,7 +198,7 @@ _PUBLIC_ init_module_fn load_module(TALLOC_CTX *mem_ctx, const char *path)
  * Obtain list of init functions from the modules in the specified
  * directory
  */
-_PUBLIC_ init_module_fn *load_modules(TALLOC_CTX *mem_ctx, const char *path)
+init_module_fn *load_modules(TALLOC_CTX *mem_ctx, const char *path)
 {
        DIR *dir;
        struct dirent *entry;
@@ -240,7 +240,7 @@ _PUBLIC_ init_module_fn *load_modules(TALLOC_CTX *mem_ctx, const char *path)
  *
  * @return true if all functions ran successfully, false otherwise
  */
-_PUBLIC_ bool run_init_functions(init_module_fn *fns)
+bool run_init_functions(init_module_fn *fns)
 {
        int i;
        bool ret = true;
@@ -268,7 +268,7 @@ static char *modules_path(TALLOC_CTX* mem_ctx, struct loadparm_context *lp_ctx,
  * Will return an array of function pointers to initialization functions
  */
 
-_PUBLIC_ init_module_fn *load_samba_modules(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, const char *subsystem)
+init_module_fn *load_samba_modules(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, const char *subsystem)
 {
        char *path = modules_path(mem_ctx, lp_ctx, subsystem);
        init_module_fn *ret;
@@ -280,7 +280,7 @@ _PUBLIC_ init_module_fn *load_samba_modules(TALLOC_CTX *mem_ctx, struct loadparm
        return ret;
 }
 
-_PUBLIC_ const char *lp_messaging_path(TALLOC_CTX *mem_ctx, 
+const char *lp_messaging_path(TALLOC_CTX *mem_ctx, 
                                       struct loadparm_context *lp_ctx)
 {
        return smbd_tmp_path(mem_ctx, lp_ctx, "messaging");
diff --git a/source4/pidl/config.m4 b/source4/pidl/config.m4
new file mode 100644 (file)
index 0000000..8b8bc5a
--- /dev/null
@@ -0,0 +1,9 @@
+# Check whether ExtUtils::ExtMaker is available
+
+if perl -e "use ExtUtils::MakeMaker" 2>/dev/null; then
+       HAVE_PERL_EXTUTILS_MAKEMAKER=1
+else
+       HAVE_PERL_EXTUTILS_MAKEMAKER=0
+fi
+
+AC_SUBST(HAVE_PERL_EXTUTILS_MAKEMAKER)
index 37930083192615fe129cd827299cd64edcaa5ead..0d36473ade2c31c2cfcb409aec6a50f63e3a2ed4 100644 (file)
@@ -5,10 +5,11 @@ pidl-testcov: pidl/Makefile
        cd pidl && cover -test
 
 installpidl:: pidl/Makefile
-       $(MAKE) -C pidl install
+       $(MAKE) -C pidl install_vendor PREFIX=$(prefix)
 
-uninstallpidl:: pidl/Makefile
-       $(MAKE) -C pidl uninstall
+ifeq ($(HAVE_PERL_EXTUTILS_MAKEMAKER),1)
+install:: installpidl
+endif
 
 idl_full:: pidl/lib/Parse/Pidl/IDL.pm pidl/lib/Parse/Pidl/Expr.pm 
        @CPP="$(CPP)" PERL="$(PERL)" srcdir=$(srcdir) $(srcdir)/script/build_idl.sh FULL
index c7ca0c76042f6f24ccd8f3c9abdb4c6394ca268d..a0323af8ee6532af10522ef466d35f3df75111be 100644 (file)
@@ -1,7 +1,7 @@
 ########################
 # IDL Parse::Yapp parser
 # Copyright (C) Andrew Tridgell <tridge@samba.org>
-# released under the GNU GPL version 2 or later
+# released under the GNU GPL version 3 or later
 
 
 
index 86ed1a8d10451ab1212c13bcfbc2e5a4bfcbf639..33e5ad31961d938d1b6a4077f80cd06fd88e55bf 100644 (file)
@@ -866,6 +866,7 @@ my %property_list = (
        "nosize"                => ["FUNCTION", "TYPEDEF"],
        "noprint"               => ["FUNCTION", "TYPEDEF"],
        "noejs"                 => ["FUNCTION", "TYPEDEF"],
+       "todo"                  => ["FUNCTION"],
 
        # union
        "switch_is"             => ["ELEMENT"],
index a959dc84f60780782fd83581e543f586ad12a40b..0d1806a0fae31201cfb847e8735b0d75f382cd1f 100644 (file)
@@ -2190,6 +2190,26 @@ sub ParseFunctionPull($$)
        $self->pidl("");
 }
 
+sub AuthServiceStruct($$$)
+{
+       my ($self, $ifacename, $authservice) = @_;
+       my @a = split /,/, $authservice;
+       my $authservice_count = $#a + 1;
+
+       $self->pidl("static const char * const $ifacename\_authservice_strings[] = {");
+       foreach my $ap (@a) {
+               $self->pidl("\t$ap, ");
+       }
+       $self->pidl("};");
+       $self->pidl("");
+
+       $self->pidl("static const struct ndr_interface_string_array $ifacename\_authservices = {");
+       $self->pidl("\t.count\t= $authservice_count,");
+       $self->pidl("\t.names\t= $ifacename\_authservice_strings");
+       $self->pidl("};");
+       $self->pidl("");
+}
+
 #####################################################################
 # produce a function call table
 sub FunctionTable($$)
@@ -2237,21 +2257,8 @@ sub FunctionTable($$)
                $interface->{PROPERTIES}->{authservice} = "\"host\"";
        }
 
-       my @a = split /,/, $interface->{PROPERTIES}->{authservice};
-       my $authservice_count = $#a + 1;
-
-       $self->pidl("static const char * const $interface->{NAME}\_authservice_strings[] = {");
-       foreach my $ap (@a) {
-               $self->pidl("\t$ap, ");
-       }
-       $self->pidl("};");
-       $self->pidl("");
-
-       $self->pidl("static const struct ndr_interface_string_array $interface->{NAME}\_authservices = {");
-       $self->pidl("\t.count\t= $endpoint_count,");
-       $self->pidl("\t.names\t= $interface->{NAME}\_authservice_strings");
-       $self->pidl("};");
-       $self->pidl("");
+       $self->AuthServiceStruct($interface->{NAME}, 
+                                    $interface->{PROPERTIES}->{authservice});
 
        $self->pidl("\nconst struct ndr_interface_table ndr_table_$interface->{NAME} = {");
        $self->pidl("\t.name\t\t= \"$interface->{NAME}\",");
index 2475925377269c95a7a8c7c72372bf212eb72adf..c04324e99290d2302cb54242e51741d870bbcc0f 100644 (file)
@@ -21,7 +21,7 @@ $VERSION = '0.01';
 sub new($) {
        my ($class) = @_;
        my $self = { res => "", res_hdr => "", tabs => "", constants => {},
-                    module_methods => []};
+                    module_methods => [], module_objects => [], module_types => []};
        bless($self, $class);
 }
 
@@ -163,46 +163,35 @@ sub FromPythonToUnionFunction($$$$$)
        $self->pidl("return ret;");
 }
 
-sub PythonStruct($$$$)
+sub PythonStruct($$$$$$)
 {
-       my ($self, $name, $cname, $d) = @_;
+       my ($self, $modulename, $prettyname, $name, $cname, $d) = @_;
 
        my $env = GenerateStructEnv($d, "object");
 
        $self->pidl("");
 
-       $self->pidl("static PyObject *py_$name\_getattr(PyObject *obj, char *name)");
-       $self->pidl("{");
-       $self->indent;
+       my $getsetters = "NULL";
+
        if ($#{$d->{ELEMENTS}} > -1) {
-               $self->pidl("$cname *object = py_talloc_get_ptr(obj);");
                foreach my $e (@{$d->{ELEMENTS}}) {
-                       $self->pidl("if (!strcmp(name, \"$e->{NAME}\")) {");
                        my $varname = "object->$e->{NAME}";
+                       $self->pidl("static PyObject *py_$name\_get_$e->{NAME}(PyObject *obj, void *closure)");
+                       $self->pidl("{");
                        $self->indent;
+                       $self->pidl("$cname *object = py_talloc_get_ptr(obj);");
                        $self->pidl("PyObject *py_$e->{NAME};");
                        $self->ConvertObjectToPython("py_talloc_get_mem_ctx(obj)", $env, $e, $varname, "py_$e->{NAME}");
                        $self->pidl("return py_$e->{NAME};");
                        $self->deindent;
                        $self->pidl("}");
-               }
-       }
-       $self->pidl("PyErr_SetString(PyExc_AttributeError, \"no such attribute\");");
-       $self->pidl("return NULL;");
-       $self->deindent;
-       $self->pidl("}");
-       $self->pidl("");
+                       $self->pidl("");
 
-       $self->pidl("static int py_$name\_setattr(PyObject *py_obj, char *name, PyObject *value)");
-       $self->pidl("{");
-       $self->indent;
-       if ($#{$d->{ELEMENTS}} > -1) {
-               $self->pidl("$cname *object = py_talloc_get_ptr(py_obj);");
-               my $mem_ctx = "py_talloc_get_mem_ctx(py_obj)";
-               foreach my $e (@{$d->{ELEMENTS}}) {
-                       $self->pidl("if (!strcmp(name, \"$e->{NAME}\")) {");
-                       my $varname = "object->$e->{NAME}";
+                       $self->pidl("static int py_$name\_set_$e->{NAME}(PyObject *py_obj, PyObject *value, void *closure)");
+                       $self->pidl("{");
                        $self->indent;
+                       $self->pidl("$cname *object = py_talloc_get_ptr(py_obj);");
+                       my $mem_ctx = "py_talloc_get_mem_ctx(py_obj)";
                        my $l = $e->{LEVELS}[0];
                        my $nl = GetNextLevel($e, $l);
                        if ($l->{TYPE} eq "POINTER" and 
@@ -214,52 +203,60 @@ sub PythonStruct($$$$)
                        $self->pidl("return 0;");
                        $self->deindent;
                        $self->pidl("}");
+               $self->pidl("");
+               }
+
+               $getsetters = "py_$name\_getsetters";
+               $self->pidl("static PyGetSetDef ".$getsetters."[] = {");
+               $self->indent;
+               foreach my $e (@{$d->{ELEMENTS}}) {
+                       $self->pidl("{ discard_const_p(char, \"$e->{NAME}\"), py_$name\_get_$e->{NAME}, py_$name\_set_$e->{NAME} },");
                }
+               $self->pidl("{ NULL }");
+               $self->deindent;
+               $self->pidl("};");
+               $self->pidl("");
        }
-       $self->pidl("PyErr_SetString(PyExc_AttributeError, \"no such attribute\");");
-       $self->pidl("return -1;");
+
+       $self->pidl("static PyObject *py_$name\_new(PyTypeObject *self, PyObject *args, PyObject *kwargs)");
+       $self->pidl("{");
+       $self->indent;
+       $self->pidl("$cname *ret = talloc_zero(NULL, $cname);");
+       $self->pidl("return py_talloc_import(&$name\_Type, ret);");
        $self->deindent;
        $self->pidl("}");
+
        $self->pidl("");
 
        $self->pidl_hdr("PyAPI_DATA(PyTypeObject) $name\_Type;\n");
        $self->pidl_hdr("#define $name\_Check(op) PyObject_TypeCheck(op, &$name\_Type)\n");
        $self->pidl_hdr("#define $name\_CheckExact(op) ((op)->ob_type == &$name\_Type)\n");
        $self->pidl_hdr("\n");
-       $self->pidl("PyTypeObject $name\_Type = {");
+       my $docstring = ($self->DocString($d, $name) or "NULL");
+       my $typeobject = "$name\_Type";
+       $self->pidl("PyTypeObject $typeobject = {");
        $self->indent;
        $self->pidl("PyObject_HEAD_INIT(NULL) 0,");
-       $self->pidl(".tp_name = \"$name\",");
+       $self->pidl(".tp_name = \"$modulename.$prettyname\",");
        $self->pidl(".tp_basicsize = sizeof(py_talloc_Object),");
        $self->pidl(".tp_dealloc = py_talloc_dealloc,");
-       $self->pidl(".tp_getattr = py_$name\_getattr,");
-       $self->pidl(".tp_setattr = py_$name\_setattr,");
+       $self->pidl(".tp_getset = $getsetters,");
        $self->pidl(".tp_repr = py_talloc_default_repr,");
+       $self->pidl(".tp_doc = $docstring,");
+       $self->pidl(".tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,");
+       $self->pidl(".tp_new = py_$name\_new,");
        $self->deindent;
        $self->pidl("};");
 
        $self->pidl("");
 
-       my $py_fnname = "py_$name";
-       $self->pidl("static PyObject *$py_fnname(PyObject *self, PyObject *args)");
-       $self->pidl("{");
-       $self->indent;
-       $self->pidl("$cname *ret = talloc_zero(NULL, $cname);");
-       $self->pidl("return py_talloc_import(&$name\_Type, ret);");
-       $self->deindent;
-       $self->pidl("}");
-       $self->pidl("");
-
-       return $py_fnname;
+       return "&$typeobject";
 }
 
-sub PythonFunction($$$)
+sub PythonFunctionBody($$$)
 {
-       my ($self, $fn, $iface) = @_;
+       my ($self, $fn, $iface, $prettyname) = @_;
 
-       $self->pidl("static PyObject *py_$fn->{NAME}(PyObject *self, PyObject *args, PyObject *kwargs)");
-       $self->pidl("{");
-       $self->indent;
        $self->pidl("$iface\_InterfaceObject *iface = ($iface\_InterfaceObject *)self;");
        $self->pidl("NTSTATUS status;");
        $self->pidl("TALLOC_CTX *mem_ctx = talloc_new(NULL);");
@@ -273,6 +270,8 @@ sub PythonFunction($$$)
        my $args_string = "";
        my $args_names = "";
 
+       my $signature = "S.$prettyname(";
+
        foreach my $e (@{$fn->{ELEMENTS}}) {
                $self->pidl("PyObject *py_$e->{NAME};");
                if (grep(/out/,@{$e->{DIRECTION}})) {
@@ -282,8 +281,14 @@ sub PythonFunction($$$)
                        $args_format .= "O";
                        $args_string .= ", &py_$e->{NAME}";
                        $args_names .= "\"$e->{NAME}\", ";
+                       $signature .= "$e->{NAME}, ";
                }
        }
+       if (substr($signature, -2) eq ", ") {
+               $signature = substr($signature, 0, -2);
+       }
+       $signature.= ") -> ";
+
        $self->pidl("const char *kwnames[] = {");
        $self->indent;
        $self->pidl($args_names . "NULL");
@@ -314,6 +319,9 @@ sub PythonFunction($$$)
 
        if ($result_size > 1) {
                $self->pidl("result = PyTuple_New($result_size);");
+               $signature .= "(";
+       } elsif ($result_size == 0) {
+               $signature .= "None";
        }
 
        foreach my $e (@{$fn->{ELEMENTS}}) {
@@ -323,8 +331,10 @@ sub PythonFunction($$$)
                        if ($result_size > 1) {
                                $self->pidl("PyTuple_SetItem(result, $i, $py_name);");
                                $i++;
+                               $signature .= "$e->{NAME}, ";
                        } else {
                                $self->pidl("result = $py_name;");
+                               $signature .= "result";
                        }
                }
        }
@@ -337,16 +347,55 @@ sub PythonFunction($$$)
                my $conv = $self->ConvertObjectToPythonData("r", $fn->{RETURN_TYPE}, "r->out.result");
                if ($result_size > 1) {
                        $self->pidl("PyTuple_SetItem(result, $i, $conv);");
+                       $signature .= "result";
                } else {
                        $self->pidl("result = $conv;");
+                       $signature .= "result";
                }
        }
 
+       if (substr($signature, -2) eq ", ") {
+               $signature = substr($signature, 0, -2);
+       }
+       if ($result_size > 1) {
+               $signature .= ")";
+       }
+
        $self->pidl("talloc_free(mem_ctx);");
        $self->pidl("return result;");
+
+       return $signature;
+}
+
+sub PythonFunction($$$)
+{
+       my ($self, $fn, $iface, $prettyname) = @_;
+
+       my $fnname = "py_$fn->{NAME}";
+       my $docstring = $self->DocString($fn, $fn->{NAME});
+
+       $self->pidl("static PyObject *$fnname(PyObject *self, PyObject *args, PyObject *kwargs)");
+       $self->pidl("{");
+       $self->indent;
+       if (has_property($fn, "todo")) {
+               $self->pidl("PyErr_SetString(PyExc_NotImplementedError, \"No marshalling code available yet for $prettyname\");");
+               $self->pidl("return NULL;");
+               unless ($docstring) { $docstring = "NULL"; }
+       } else {
+               my $signature = $self->PythonFunctionBody($fn, $iface, $prettyname);
+
+               if ($docstring) {
+                       $docstring = "\"$signature\\n\\n\"$docstring";
+               } else {
+                       $docstring = "\"$signature\"";
+               }
+       }
+
        $self->deindent;
        $self->pidl("}");
        $self->pidl("");
+
+       return ($fnname, $docstring);
 }
 
 sub handle_werror($$$$)
@@ -377,9 +426,9 @@ sub handle_ntstatus($$$$)
        $self->pidl("");
 }
 
-sub PythonType($$$)
+sub PythonType($$$$)
 {
-       my ($self, $d, $interface, $basename) = @_;
+       my ($self, $modulename, $d, $interface, $basename) = @_;
 
        my $actual_ctype = $d;
        if ($actual_ctype->{TYPE} eq "TYPEDEF") {
@@ -387,19 +436,20 @@ sub PythonType($$$)
        }
 
        if ($actual_ctype->{TYPE} eq "STRUCT") {
-               my $py_fnname;
-               if ($d->{TYPE} eq "STRUCT") {
-                       $py_fnname = $self->PythonStruct($d->{NAME}, mapTypeName($d), $d);
-               } else {
-                       $py_fnname = $self->PythonStruct($d->{NAME}, mapTypeName($d), $d->{DATA});
-               }
-
+               my $typeobject;
                my $fn_name = $d->{NAME};
 
                $fn_name =~ s/^$interface->{NAME}_//;
                $fn_name =~ s/^$basename\_//;
 
-               $self->register_module_method($fn_name, $py_fnname, "METH_NOARGS", "NULL");
+
+               if ($d->{TYPE} eq "STRUCT") {
+                       $typeobject = $self->PythonStruct($modulename, $fn_name, $d->{NAME}, mapTypeName($d), $d);
+               } else {
+                       $typeobject = $self->PythonStruct($modulename, $fn_name, $d->{NAME}, mapTypeName($d), $d->{DATA});
+               }
+
+               $self->register_module_typeobject($fn_name, $typeobject);
        }
 
        if ($d->{TYPE} eq "ENUM" or $d->{TYPE} eq "BITMAP") {
@@ -429,6 +479,18 @@ sub PythonType($$$)
        }
 }
 
+sub DocString($$$)
+{
+       my ($self, $d, $name) = @_;
+       if (has_property($d, "helpstring")) {
+               my $docstring = uc("py_doc_$name");
+               $self->pidl("#define $docstring ".has_property($d, "helpstring"));
+               return $docstring;
+       }
+
+       return undef;
+}
+
 sub Interface($$$)
 {
        my($self,$interface,$basename) = @_;
@@ -443,7 +505,7 @@ sub Interface($$$)
        foreach my $d (@{$interface->{TYPES}}) {
                next if has_property($d, "nopython");
 
-               $self->PythonType($d, $interface, $basename);
+               $self->PythonType($basename, $d, $interface, $basename);
        }
 
        if (defined $interface->{PROPERTIES}->{uuid}) {
@@ -457,25 +519,27 @@ sub Interface($$$)
 
                $self->pidl("");
 
+               my @fns = ();
+
                foreach my $d (@{$interface->{FUNCTIONS}}) {
                        next if not defined($d->{OPNUM});
                        next if has_property($d, "nopython");
 
-                       $self->PythonFunction($d, $interface->{NAME});
-               }
+                       my $prettyname = $d->{NAME};
 
-               $self->pidl("static PyMethodDef interface_$interface->{NAME}\_methods[] = {");
-               $self->indent;
-               foreach my $d (@{$interface->{FUNCTIONS}}) {
-                       next if not defined($d->{OPNUM});
-                       next if has_property($d, "nopython");
+                       $prettyname =~ s/^$interface->{NAME}_//;
+                       $prettyname =~ s/^$basename\_//;
 
-                       my $fn_name = $d->{NAME};
+                       my ($fnname, $fndocstring) = $self->PythonFunction($d, $interface->{NAME}, $prettyname);
 
-                       $fn_name =~ s/^$interface->{NAME}_//;
-                       $fn_name =~ s/^$basename\_//;
+                       push (@fns, [$fnname, $prettyname, $fndocstring]);
+               }
 
-                       $self->pidl("{ \"$fn_name\", (PyCFunction)py_$d->{NAME}, METH_VARARGS|METH_KEYWORDS, NULL },");
+               $self->pidl("static PyMethodDef interface_$interface->{NAME}\_methods[] = {");
+               $self->indent;
+               foreach my $d (@fns) {
+                       my ($c_fn, $prettyname, $docstring) = @$d;
+                       $self->pidl("{ \"$prettyname\", (PyCFunction)$c_fn, METH_VARARGS|METH_KEYWORDS, $docstring },");
                }
                $self->pidl("{ NULL, NULL, 0, NULL }");
                $self->deindent;
@@ -492,29 +556,7 @@ sub Interface($$$)
                $self->pidl("}");
                $self->pidl("");
 
-               $self->pidl("static PyObject *interface_$interface->{NAME}_getattr(PyObject *obj, char *name)");
-               $self->pidl("{");
-               $self->indent;
-               $self->pidl("return Py_FindMethod(interface_$interface->{NAME}\_methods, obj, name);");
-               $self->deindent;
-               $self->pidl("}");
-
-               $self->pidl("");
-
-               $self->pidl("PyTypeObject $interface->{NAME}_InterfaceType = {");
-               $self->indent;
-               $self->pidl("PyObject_HEAD_INIT(NULL) 0,");
-               $self->pidl(".tp_name = \"$interface->{NAME}\",");
-               $self->pidl(".tp_basicsize = sizeof($interface->{NAME}_InterfaceObject),");
-               $self->pidl(".tp_dealloc = interface_$interface->{NAME}_dealloc,");
-               $self->pidl(".tp_getattr = interface_$interface->{NAME}_getattr,");
-               $self->deindent;
-               $self->pidl("};");
-
-               $self->pidl("");
-
-               $self->register_module_method($interface->{NAME}, "interface_$interface->{NAME}", "METH_VARARGS|METH_KEYWORDS", "NULL");
-               $self->pidl("static PyObject *interface_$interface->{NAME}(PyObject *self, PyObject *args, PyObject *kwargs)");
+               $self->pidl("static PyObject *interface_$interface->{NAME}_new(PyTypeObject *self, PyObject *args, PyObject *kwargs)");
                $self->pidl("{");
                $self->indent;
                $self->pidl("$interface->{NAME}_InterfaceObject *ret;");
@@ -574,6 +616,38 @@ sub Interface($$$)
                $self->pidl("}");
                
                $self->pidl("");
+
+               my $signature = 
+"\"$interface->{NAME}(binding, lp_ctx=None, credentials=None) -> Connection to DCE/RPC interface.\\n\"
+\"\\n\"
+\"binding should be a DCE/RPC binding string (for example: ncacn_ip_tcp:127.0.0.1)\\n\"
+\"lp_ctx should be a path to a smb.conf file or a param.LoadParm object\\n\"
+\"credentials should be a credentials.Credentials object.\\n\\n\"";
+
+               my $docstring = $self->DocString($interface, $interface->{NAME});
+
+               if ($docstring) {
+                       $docstring = "$signature$docstring";
+               } else {
+                       $docstring = $signature;
+               }
+
+               $self->pidl("PyTypeObject $interface->{NAME}_InterfaceType = {");
+               $self->indent;
+               $self->pidl("PyObject_HEAD_INIT(NULL) 0,");
+               $self->pidl(".tp_name = \"$basename.$interface->{NAME}\",");
+               $self->pidl(".tp_basicsize = sizeof($interface->{NAME}_InterfaceObject),");
+               $self->pidl(".tp_dealloc = interface_$interface->{NAME}_dealloc,");
+               $self->pidl(".tp_methods = interface_$interface->{NAME}_methods,");
+               $self->pidl(".tp_doc = $docstring,");
+               $self->pidl(".tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,");
+               $self->pidl(".tp_new = interface_$interface->{NAME}_new,");
+               $self->deindent;
+               $self->pidl("};");
+
+               $self->pidl("");
+
+               $self->register_module_typeobject($interface->{NAME}, "&$interface->{NAME}_InterfaceType");
        }
 
        $self->pidl_hdr("\n");
@@ -587,6 +661,22 @@ sub register_module_method($$$$$)
        push (@{$self->{module_methods}}, [$fn_name, $pyfn_name, $flags, $doc])
 }
 
+sub register_module_typeobject($$$)
+{
+       my ($self, $name, $py_name) = @_;
+
+       $self->register_module_object($name, "(PyObject *)$py_name");
+
+       push (@{$self->{module_types}}, [$name, $py_name])
+}
+
+sub register_module_object($$$)
+{
+       my ($self, $name, $py_name) = @_;
+
+       push (@{$self->{module_objects}}, [$name, $py_name])
+}
+
 sub assign($$$)
 {
        my ($self, $dest, $src) = @_;
@@ -929,7 +1019,20 @@ sub Parse($$$$$)
        $self->pidl("{");
        $self->indent;
        $self->pidl("PyObject *m;");
-       $self->pidl("m = Py_InitModule(\"$basename\", $basename\_methods);");
+       $self->pidl("");
+
+       foreach (@{$self->{module_types}}) {
+               my ($object_name, $c_name) = @$_;
+               $self->pidl("if (PyType_Ready($c_name) < 0)");
+               $self->pidl("\treturn;");
+       }
+
+       $self->pidl("");
+
+       $self->pidl("m = Py_InitModule3(\"$basename\", $basename\_methods, \"$basename DCE/RPC\");");
+       $self->pidl("if (m == NULL)");
+       $self->pidl("\treturn;");
+       $self->pidl("");
        foreach my $name (keys %{$self->{constants}}) {
                my $py_obj;
                my ($ctype, $cvar) = @{$self->{constants}->{$name}};
@@ -943,6 +1046,13 @@ sub Parse($$$$$)
 
                $self->pidl("PyModule_AddObject(m, \"$name\", $py_obj);");
        }
+
+       foreach (@{$self->{module_objects}}) {
+               my ($object_name, $c_name) = @$_;
+               $self->pidl("Py_INCREF($c_name);");
+               $self->pidl("PyModule_AddObject(m, \"$object_name\", $c_name);");
+       }
+
        $self->deindent;
        $self->pidl("}");
     return ($self->{res_hdr}, $self->{res});
index 220d62cd715f8be269b5f62412124a3f86d9d41f..b7a22f04997b307dc0ea1b523215f25af3daaaeb 100755 (executable)
@@ -403,8 +403,8 @@ pidl README by Andrew Tridgell.
 
 use strict;
 use FindBin qw($RealBin $Script);
-use lib "$RealBin";
 use lib "$RealBin/lib";
+use lib "$RealBin/../share/perl5";
 use Getopt::Long;
 use File::Basename;
 use Parse::Pidl qw ( $VERSION );
index a14111961f58024bd731e0cccd8da3b13c3e2b9f..114ca01cfa55ee95b1e75553fe7f3bb448748b48 100755 (executable)
@@ -4,7 +4,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 30;
+use Test::More tests => 31;
 use FindBin qw($RealBin);
 use lib "$RealBin";
 use Util;
@@ -277,3 +277,17 @@ $generator->ParseElementPrint({ NAME => "x", TYPE => "uint32", REPRESENTATION_TY
                                    PROPERTIES => { value => "23" },
                                    LEVELS => [ { TYPE => "DATA", DATA_TYPE => "uint32"} ]}, "var", { "x" => "r->foobar" } );
 is($generator->{res}, "ndr_print_uint32(ndr, \"x\", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?23:var);\n");
+
+$generator = new Parse::Pidl::Samba4::NDR::Parser();
+$generator->AuthServiceStruct("bridge", "\"rot13\",\"onetimepad\"");
+is($generator->{res}, "static const char * const bridge_authservice_strings[] = {
+       \"rot13\", 
+       \"onetimepad\", 
+};
+
+static const struct ndr_interface_string_array bridge_authservices = {
+       .count  = 2,
+       .names  = bridge_authservice_strings
+};
+
+");
index 5ddfca43b5885246a9babcf1ce8f89ac556caf4d..af2d96cb3e3794ed0d90fee9896ace7ad602943a 100644 (file)
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-/* a useful macro for generating a RPC fault in the backend code */
-#define DCESRV_FAULT(code) do { \
-       dce_call->fault_code = code; \
-       return r->out.result; \
-} while(0)
-
-/* a useful macro for generating a RPC fault in the backend code */
-#define DCESRV_FAULT_VOID(code) do { \
-       dce_call->fault_code = code; \
-       return; \
-} while(0)
-
-/* a useful macro for checking the validity of a dcerpc policy handle
-   and giving the right fault code if invalid */
-#define DCESRV_CHECK_HANDLE(h) do {if (!(h)) DCESRV_FAULT(DCERPC_FAULT_CONTEXT_MISMATCH); } while (0)
-
-/* this checks for a valid policy handle, and gives a fault if an
-   invalid handle or retval if the handle is of the
-   wrong type */
-#define DCESRV_PULL_HANDLE_RETVAL(h, inhandle, t, retval) do { \
-       (h) = dcesrv_handle_fetch(dce_call->context, (inhandle), DCESRV_HANDLE_ANY); \
-       DCESRV_CHECK_HANDLE(h); \
-       if ((t) != DCESRV_HANDLE_ANY && (h)->wire_handle.handle_type != (t)) { \
-               return retval; \
-       } \
-} while (0)
-
-/* this checks for a valid policy handle and gives a dcerpc fault 
-   if its the wrong type of handle */
-#define DCESRV_PULL_HANDLE_FAULT(h, inhandle, t) do { \
-       (h) = dcesrv_handle_fetch(dce_call->context, (inhandle), t); \
-       DCESRV_CHECK_HANDLE(h); \
-} while (0)
-
-#define DCESRV_PULL_HANDLE(h, inhandle, t) DCESRV_PULL_HANDLE_RETVAL(h, inhandle, t, NT_STATUS_INVALID_HANDLE)
-#define DCESRV_PULL_HANDLE_WERR(h, inhandle, t) DCESRV_PULL_HANDLE_RETVAL(h, inhandle, t, WERR_BADFID)
-
+struct share_config;
 struct dcesrv_context;
+enum srvsvc_ShareType dcesrv_common_get_share_type(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx, struct share_config *scfg);
+enum srvsvc_PlatformId dcesrv_common_get_platform_id(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx);
+const char *dcesrv_common_get_domain_name(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx);
+const char *dcesrv_common_get_lan_root(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx);
+const char *dcesrv_common_get_server_name(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx, const char *server_unc);
+uint32_t dcesrv_common_get_version_major(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx);
+uint32_t dcesrv_common_get_version_minor(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx);
+uint32_t dcesrv_common_get_version_build(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx);
+uint32_t dcesrv_common_get_share_permissions(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx, struct share_config *scfg);
+uint32_t dcesrv_common_get_share_current_users(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx, struct share_config *scfg);
+const char *dcesrv_common_get_share_path(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx, struct share_config *scfg);
 
-#include "param/share.h"
-#include "rpc_server/common/proto.h"
+struct dcesrv_context;
index 0a44493df58236a1245ffafbd159e8256ec41273..646879ad0d5ddb9dbaa65698ab27da87dfa5d06e 100644 (file)
@@ -32,7 +32,7 @@
 */
 
 /* This hardcoded value should go into a ldb database! */
-_PUBLIC_ enum srvsvc_PlatformId dcesrv_common_get_platform_id(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
+enum srvsvc_PlatformId dcesrv_common_get_platform_id(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
 {
        enum srvsvc_PlatformId id;
 
@@ -41,7 +41,7 @@ _PUBLIC_ enum srvsvc_PlatformId dcesrv_common_get_platform_id(TALLOC_CTX *mem_ct
        return id;
 }
 
-_PUBLIC_ const char *dcesrv_common_get_server_name(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx, const char *server_unc)
+const char *dcesrv_common_get_server_name(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx, const char *server_unc)
 {
        const char *p = server_unc;
 
@@ -64,25 +64,25 @@ const char *dcesrv_common_get_domain_name(TALLOC_CTX *mem_ctx, struct dcesrv_con
 }
 
 /* This hardcoded value should go into a ldb database! */
-_PUBLIC_ uint32_t dcesrv_common_get_version_major(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
+uint32_t dcesrv_common_get_version_major(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
 {
        return lp_parm_int(lp_ctx, NULL, "server_info", "version_major", 5);
 }
 
 /* This hardcoded value should go into a ldb database! */
-_PUBLIC_ uint32_t dcesrv_common_get_version_minor(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
+uint32_t dcesrv_common_get_version_minor(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
 {
        return lp_parm_int(lp_ctx, NULL, "server_info", "version_minor", 2);
 }
 
 /* This hardcoded value should go into a ldb database! */
-_PUBLIC_ uint32_t dcesrv_common_get_version_build(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
+uint32_t dcesrv_common_get_version_build(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
 {
        return lp_parm_int(lp_ctx, NULL, "server_info", "version_build", 3790);
 }
 
 /* This hardcoded value should go into a ldb database! */
-_PUBLIC_ uint32_t dcesrv_common_get_server_type(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
+uint32_t dcesrv_common_get_server_type(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
 {
        int default_server_announce = 0;
        default_server_announce |= SV_TYPE_WORKSTATION;
@@ -158,56 +158,56 @@ _PUBLIC_ uint32_t dcesrv_common_get_server_type(TALLOC_CTX *mem_ctx, struct dces
 }
 
 /* This hardcoded value should go into a ldb database! */
-_PUBLIC_ const char *dcesrv_common_get_lan_root(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
+const char *dcesrv_common_get_lan_root(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
 {
        return talloc_strdup(mem_ctx, "");
 }
 
 /* This hardcoded value should go into a ldb database! */
-_PUBLIC_ uint32_t dcesrv_common_get_users(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
+uint32_t dcesrv_common_get_users(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
 {
        return -1;
 }
 
 /* This hardcoded value should go into a ldb database! */
-_PUBLIC_ uint32_t dcesrv_common_get_disc(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
+uint32_t dcesrv_common_get_disc(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
 {
        return 15;
 }
 
 /* This hardcoded value should go into a ldb database! */
-_PUBLIC_ uint32_t dcesrv_common_get_hidden(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
+uint32_t dcesrv_common_get_hidden(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
 {
        return 0;
 }
 
 /* This hardcoded value should go into a ldb database! */
-_PUBLIC_ uint32_t dcesrv_common_get_announce(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
+uint32_t dcesrv_common_get_announce(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
 {
        return 240;
 }
 
 /* This hardcoded value should go into a ldb database! */
-_PUBLIC_ uint32_t dcesrv_common_get_anndelta(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
+uint32_t dcesrv_common_get_anndelta(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
 {
        return 3000;
 }
 
 /* This hardcoded value should go into a ldb database! */
-_PUBLIC_ uint32_t dcesrv_common_get_licenses(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
+uint32_t dcesrv_common_get_licenses(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
 {
        return 0;
 }
 
 /* This hardcoded value should go into a ldb database! */
-_PUBLIC_ const char *dcesrv_common_get_userpath(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
+const char *dcesrv_common_get_userpath(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
 {
        return talloc_strdup(mem_ctx, "c:\\");
 }
 
 #define INVALID_SHARE_NAME_CHARS " \"*+,./:;<=>?[\\]|"
 
-_PUBLIC_ bool dcesrv_common_validate_share_name(TALLOC_CTX *mem_ctx, const char *share_name)
+bool dcesrv_common_validate_share_name(TALLOC_CTX *mem_ctx, const char *share_name)
 {
        if (strpbrk(share_name, INVALID_SHARE_NAME_CHARS)) {
                return false;
index ea3053392254c7cfdb4bcc909b490516b92ad0e3..974d12c882346278eb10d4358a50b6ed2ff070b7 100644 (file)
@@ -80,7 +80,8 @@ PRIVATE_DEPENDENCIES = \
                DCERPC_COMMON \
                SAMDB \
                NDR_UNIXINFO \
-               NSS_WRAPPER
+               NSS_WRAPPER \
+               LIBWBCLIENT
 # End MODULE dcerpc_unixinfo
 ################################################
 
index cc9819e40c4a8c6c2fecdf12a076398c93ae309f..1962a97d5b49d3863e283a5ee1a15c156e06f7d8 100644 (file)
@@ -26,6 +26,8 @@
 #include "auth/gensec/gensec.h"
 #include "lib/util/dlinklist.h"
 #include "rpc_server/dcerpc_server.h"
+#include "rpc_server/dcerpc_server_proto.h"
+#include "librpc/rpc/dcerpc_proto.h"
 #include "lib/events/events.h"
 #include "smbd/service_task.h"
 #include "smbd/service_stream.h"
@@ -298,7 +300,7 @@ static int dcesrv_endpoint_destructor(struct dcesrv_connection *p)
 /*
   connect to a dcerpc endpoint
 */
-NTSTATUS dcesrv_endpoint_connect(struct dcesrv_context *dce_ctx,
+_PUBLIC_ NTSTATUS dcesrv_endpoint_connect(struct dcesrv_context *dce_ctx,
                                 TALLOC_CTX *mem_ctx,
                                 const struct dcesrv_endpoint *ep,
                                 struct auth_session_info *session_info,
index 5d4accc538f9b64bfa49acc421b0188130cef462..058dfe3ab24e7737aa9931613da197bb2bc97147 100644 (file)
@@ -282,6 +282,90 @@ struct dcesrv_critical_sizes {
 
 struct model_ops;
 
-#include "rpc_server/dcerpc_server_proto.h"
+NTSTATUS dcesrv_interface_register(struct dcesrv_context *dce_ctx,
+                                  const char *ep_name,
+                                  const struct dcesrv_interface *iface,
+                                  const struct security_descriptor *sd);
+NTSTATUS dcerpc_register_ep_server(const void *_ep_server);
+NTSTATUS dcesrv_init_context(TALLOC_CTX *mem_ctx, 
+                                     struct loadparm_context *lp_ctx,
+                                     const char **endpoint_servers, struct dcesrv_context **_dce_ctx);
+NTSTATUS dcesrv_init_ipc_context(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx,
+                                         struct dcesrv_context **_dce_ctx);
+NTSTATUS dcesrv_endpoint_search_connect(struct dcesrv_context *dce_ctx,
+                                       TALLOC_CTX *mem_ctx,
+                                       const struct dcerpc_binding *ep_description,
+                                       struct auth_session_info *session_info,
+                                       struct event_context *event_ctx,
+                                       struct messaging_context *msg_ctx,
+                                       struct server_id server_id,
+                                       uint32_t state_flags,
+                                       struct dcesrv_connection **dce_conn_p);
+NTSTATUS dcesrv_output(struct dcesrv_connection *dce_conn, 
+                      void *private_data,
+                      NTSTATUS (*write_fn)(void *private_data, DATA_BLOB *output, size_t *nwritten));
+NTSTATUS dcesrv_input(struct dcesrv_connection *dce_conn, const DATA_BLOB *data);
+NTSTATUS dcesrv_endpoint_connect(struct dcesrv_context *dce_ctx,
+                                TALLOC_CTX *mem_ctx,
+                                const struct dcesrv_endpoint *ep,
+                                struct auth_session_info *session_info,
+                                struct event_context *event_ctx,
+                                struct messaging_context *msg_ctx,
+                                struct server_id server_id,
+                                uint32_t state_flags,
+                                struct dcesrv_connection **_p);
+
+NTSTATUS dcesrv_reply(struct dcesrv_call_state *call);
+struct dcesrv_handle *dcesrv_handle_new(struct dcesrv_connection_context *context, 
+                                       uint8_t handle_type);
+
+struct dcesrv_handle *dcesrv_handle_fetch(
+                                         struct dcesrv_connection_context *context, 
+                                         struct policy_handle *p,
+                                         uint8_t handle_type);
+struct socket_address *dcesrv_connection_get_my_addr(struct dcesrv_connection *conn, TALLOC_CTX *mem_ctx);
+
+struct socket_address *dcesrv_connection_get_peer_addr(struct dcesrv_connection *conn, TALLOC_CTX *mem_ctx);
+
+NTSTATUS dcesrv_fetch_session_key(struct dcesrv_connection *p, DATA_BLOB *session_key);
+
+/* a useful macro for generating a RPC fault in the backend code */
+#define DCESRV_FAULT(code) do { \
+       dce_call->fault_code = code; \
+       return r->out.result; \
+} while(0)
+
+/* a useful macro for generating a RPC fault in the backend code */
+#define DCESRV_FAULT_VOID(code) do { \
+       dce_call->fault_code = code; \
+       return; \
+} while(0)
+
+/* a useful macro for checking the validity of a dcerpc policy handle
+   and giving the right fault code if invalid */
+#define DCESRV_CHECK_HANDLE(h) do {if (!(h)) DCESRV_FAULT(DCERPC_FAULT_CONTEXT_MISMATCH); } while (0)
+
+/* this checks for a valid policy handle, and gives a fault if an
+   invalid handle or retval if the handle is of the
+   wrong type */
+#define DCESRV_PULL_HANDLE_RETVAL(h, inhandle, t, retval) do { \
+       (h) = dcesrv_handle_fetch(dce_call->context, (inhandle), DCESRV_HANDLE_ANY); \
+       DCESRV_CHECK_HANDLE(h); \
+       if ((t) != DCESRV_HANDLE_ANY && (h)->wire_handle.handle_type != (t)) { \
+               return retval; \
+       } \
+} while (0)
+
+/* this checks for a valid policy handle and gives a dcerpc fault 
+   if its the wrong type of handle */
+#define DCESRV_PULL_HANDLE_FAULT(h, inhandle, t) do { \
+       (h) = dcesrv_handle_fetch(dce_call->context, (inhandle), t); \
+       DCESRV_CHECK_HANDLE(h); \
+} while (0)
+
+#define DCESRV_PULL_HANDLE(h, inhandle, t) DCESRV_PULL_HANDLE_RETVAL(h, inhandle, t, NT_STATUS_INVALID_HANDLE)
+#define DCESRV_PULL_HANDLE_WERR(h, inhandle, t) DCESRV_PULL_HANDLE_RETVAL(h, inhandle, t, WERR_BADFID)
+
+
 
 #endif /* SAMBA_DCERPC_SERVER_H */
index 75b13bb82436b64b37379445827418f878483986..1d89441170be883ca9feb19a74f46b45a4e462d1 100644 (file)
@@ -22,6 +22,8 @@
 
 #include "includes.h"
 #include "rpc_server/dcerpc_server.h"
+#include "rpc_server/dcerpc_server_proto.h"
+#include "librpc/rpc/dcerpc_proto.h"
 #include "librpc/gen_ndr/ndr_dcerpc.h"
 #include "auth/credentials/credentials.h"
 #include "auth/gensec/gensec.h"
index db148d3dcb8da317fcb22c1f52bd5961ee8ed221..b7c41486a2da5a79087054465e571fd28cf74d60 100644 (file)
@@ -40,7 +40,6 @@
 struct lsa_policy_state {
        struct dcesrv_handle *handle;
        struct ldb_context *sam_ldb;
-       struct sidmap_context *sidmap;
        uint32_t access_mask;
        struct ldb_dn *domain_dn;
        struct ldb_dn *forest_dn;
index 57599b96a22552d1e0f5d929acbf5ae04c1b56f6..4dcd6064353b1554423ca55f91feb3e3f332dc5c 100644 (file)
@@ -57,11 +57,6 @@ NTSTATUS dcesrv_lsa_get_policy_state(struct dcesrv_call_state *dce_call, TALLOC_
 
        partitions_basedn = samdb_partitions_dn(state->sam_ldb, mem_ctx);
 
-       state->sidmap = sidmap_open(state, dce_call->conn->dce_ctx->lp_ctx);
-       if (state->sidmap == NULL) {
-               return NT_STATUS_INVALID_SYSTEM_SERVICE;
-       }
-
        /* work out the domain_dn - useful for so many calls its worth
           fetching here */
        state->domain_dn = samdb_base_dn(state->sam_ldb);
index e01efa823387736d014a6895b75ec46bb4461175..c6b9e3bd406c78eeca6147ab5da4418ae3feff7c 100644 (file)
@@ -360,7 +360,7 @@ static NTSTATUS dcesrv_lsa_lookup_name(struct loadparm_context *lp_ctx,
                return NT_STATUS_OK;
        }
 
-       /* need to add a call into sidmap to check for a allocated sid */
+       /* need to check for an allocated sid */
 
        return NT_STATUS_INVALID_SID;
 }
@@ -466,8 +466,7 @@ static NTSTATUS dcesrv_lsa_lookup_sid(struct lsa_policy_state *state, TALLOC_CTX
                return NT_STATUS_OK;
        }
 
-       /* need to re-add a call into sidmap to check for a allocated sid */
-       /* status = sidmap_allocated_sid_lookup(state->sidmap, mem_ctx, sid, name, rtype); */
+       /* need to re-add a check for an allocated sid */
 
        return NT_STATUS_NOT_FOUND;
 }
index ebbeb2d0df8b89b6cbae4ca8ff2107af3a325c68..23e40d997653b95b16665536954f0d3d167b11cd 100644 (file)
@@ -24,6 +24,7 @@
 #include "rpc_server/dcerpc_server.h"
 #include "librpc/gen_ndr/ndr_srvsvc.h"
 #include "rpc_server/common/common.h"
+#include "rpc_server/common/proto.h"
 #include "auth/auth.h"
 #include "libcli/security/security.h"
 #include "system/time.h"
index 2c08d501d16de8dc358bab62523d2e247c66f0e5..e6313b771ca8ec29b9e4c5e4186cc71cb0b96f96 100644 (file)
 #include "rpc_server/dcerpc_server.h"
 #include "rpc_server/common/common.h"
 #include "librpc/gen_ndr/ndr_unixinfo.h"
+#include "libcli/wbclient/wbclient.h"
 #include "lib/events/events.h"
-#include "dsdb/samdb/samdb.h"
 #include "system/passwd.h"
 #include "param/param.h"
 
+static NTSTATUS dcerpc_unixinfo_bind(struct dcesrv_call_state *dce_call,
+                                    const struct dcesrv_interface *iface)
+{
+       struct wbc_context *wbc_ctx;
+
+       wbc_ctx = wbc_init(dce_call->context, dce_call->msg_ctx,
+                          dce_call->event_ctx);
+       NT_STATUS_HAVE_NO_MEMORY(wbc_ctx);
+
+       dce_call->context->private = wbc_ctx;
+
+       return NT_STATUS_OK;
+}
+
+#define DCESRV_INTERFACE_UNIXINFO_BIND dcerpc_unixinfo_bind
+
 static NTSTATUS dcesrv_unixinfo_SidToUid(struct dcesrv_call_state *dce_call,
                                  TALLOC_CTX *mem_ctx,
                                  struct unixinfo_SidToUid *r)
 {
        NTSTATUS status;
-       struct sidmap_context *sidmap;
-       uid_t uid;
+       struct wbc_context *wbc_ctx = talloc_get_type_abort(
+                                               dce_call->context->private,
+                                               struct wbc_context);
+       struct id_mapping *ids;
+       struct composite_context *ctx;
 
-       sidmap = sidmap_open(mem_ctx, dce_call->conn->dce_ctx->lp_ctx);
-       if (sidmap == NULL) {
-               DEBUG(10, ("sidmap_open failed\n"));
-               return NT_STATUS_NO_MEMORY;
-       }
+       DEBUG(5, ("dcesrv_unixinfo_SidToUid called\n"));
+
+       ids = talloc(mem_ctx, struct  id_mapping);
+       NT_STATUS_HAVE_NO_MEMORY(ids);
 
-       status = sidmap_sid_to_unixuid(sidmap, &r->in.sid, &uid);
+       ids->sid = &r->in.sid;
+       ids->status = NT_STATUS_NONE_MAPPED;
+       ids->unixid = NULL;
+       ctx = wbc_sids_to_xids_send(wbc_ctx, ids, 1, ids);
+       NT_STATUS_HAVE_NO_MEMORY(ctx);
+
+       status = wbc_sids_to_xids_recv(ctx, &ids);
        NT_STATUS_NOT_OK_RETURN(status);
 
-       *r->out.uid = uid;
-       return NT_STATUS_OK;
+       if (ids->unixid->type == ID_TYPE_BOTH ||
+           ids->unixid->type == ID_TYPE_UID) {
+               *r->out.uid = ids->unixid->id;
+               return NT_STATUS_OK;
+       } else {
+               return NT_STATUS_INVALID_SID;
+       }
 }
 
 static NTSTATUS dcesrv_unixinfo_UidToSid(struct dcesrv_call_state *dce_call,
                                  TALLOC_CTX *mem_ctx,
                                  struct unixinfo_UidToSid *r)
 {
-       struct sidmap_context *sidmap;
-       uid_t uid;
-
-       sidmap = sidmap_open(mem_ctx, dce_call->conn->dce_ctx->lp_ctx);
-       if (sidmap == NULL) {
-               DEBUG(10, ("sidmap_open failed\n"));
-               return NT_STATUS_NO_MEMORY;
-       }
+       struct wbc_context *wbc_ctx = talloc_get_type_abort(
+                                               dce_call->context->private,
+                                               struct wbc_context);
+       struct id_mapping *ids;
+       struct composite_context *ctx;
+       uint32_t uid;
+       NTSTATUS status;
 
-       uid = r->in.uid;        /* This cuts uid to (probably) 32 bit */
+       DEBUG(5, ("dcesrv_unixinfo_UidToSid called\n"));
 
+       uid = r->in.uid;        /* This cuts uid to 32 bit */
        if ((uint64_t)uid != r->in.uid) {
                DEBUG(10, ("uid out of range\n"));
                return NT_STATUS_INVALID_PARAMETER;
        }
 
-       return sidmap_uid_to_sid(sidmap, mem_ctx, uid, &r->out.sid);
+       ids = talloc(mem_ctx, struct id_mapping);
+       NT_STATUS_HAVE_NO_MEMORY(ids);
+
+       ids->sid = NULL;
+       ids->status = NT_STATUS_NONE_MAPPED;
+       ids->unixid = talloc(ids, struct unixid);
+       NT_STATUS_HAVE_NO_MEMORY(ids->unixid);
+
+       ids->unixid->id = uid;
+       ids->unixid->type = ID_TYPE_UID;
+
+       ctx = wbc_xids_to_sids_send(wbc_ctx, ids, 1, ids);
+       NT_STATUS_HAVE_NO_MEMORY(ctx);
+
+       status = wbc_xids_to_sids_recv(ctx, &ids);
+       NT_STATUS_NOT_OK_RETURN(status);
+
+       r->out.sid = ids->sid;
+       return NT_STATUS_OK;
 }
 
 static NTSTATUS dcesrv_unixinfo_SidToGid(struct dcesrv_call_state *dce_call,
@@ -77,43 +124,74 @@ static NTSTATUS dcesrv_unixinfo_SidToGid(struct dcesrv_call_state *dce_call,
                                  struct unixinfo_SidToGid *r)
 {
        NTSTATUS status;
-       struct sidmap_context *sidmap;
-       gid_t gid;
+       struct wbc_context *wbc_ctx = talloc_get_type_abort(
+                                               dce_call->context->private,
+                                               struct wbc_context);
+       struct id_mapping *ids;
+       struct composite_context *ctx;
 
-       sidmap = sidmap_open(mem_ctx, dce_call->conn->dce_ctx->lp_ctx);
-       if (sidmap == NULL) {
-               DEBUG(10, ("sidmap_open failed\n"));
-               return NT_STATUS_NO_MEMORY;
-       }
+       DEBUG(5, ("dcesrv_unixinfo_SidToGid called\n"));
 
-       status = sidmap_sid_to_unixgid(sidmap, &r->in.sid, &gid);
+       ids = talloc(mem_ctx, struct  id_mapping);
+       NT_STATUS_HAVE_NO_MEMORY(ids);
+
+       ids->sid = &r->in.sid;
+       ids->status = NT_STATUS_NONE_MAPPED;
+       ids->unixid = NULL;
+       ctx = wbc_sids_to_xids_send(wbc_ctx, ids, 1, ids);
+       NT_STATUS_HAVE_NO_MEMORY(ctx);
+
+       status = wbc_sids_to_xids_recv(ctx, &ids);
        NT_STATUS_NOT_OK_RETURN(status);
 
-       *r->out.gid = gid;
-       return NT_STATUS_OK;
+       if (ids->unixid->type == ID_TYPE_BOTH ||
+           ids->unixid->type == ID_TYPE_GID) {
+               *r->out.gid = ids->unixid->id;
+               return NT_STATUS_OK;
+       } else {
+               return NT_STATUS_INVALID_SID;
+       }
 }
 
 static NTSTATUS dcesrv_unixinfo_GidToSid(struct dcesrv_call_state *dce_call,
                                  TALLOC_CTX *mem_ctx,
                                  struct unixinfo_GidToSid *r)
 {
-       struct sidmap_context *sidmap;
-       gid_t gid;
-
-       sidmap = sidmap_open(mem_ctx, dce_call->conn->dce_ctx->lp_ctx);
-       if (sidmap == NULL) {
-               DEBUG(10, ("sidmap_open failed\n"));
-               return NT_STATUS_NO_MEMORY;
-       }
+       struct wbc_context *wbc_ctx = talloc_get_type_abort(
+                                               dce_call->context->private,
+                                               struct wbc_context);
+       struct id_mapping *ids;
+       struct composite_context *ctx;
+       uint32_t gid;
+       NTSTATUS status;
 
-       gid = r->in.gid;        /* This cuts gid to (probably) 32 bit */
+       DEBUG(5, ("dcesrv_unixinfo_GidToSid called\n"));
 
+       gid = r->in.gid;        /* This cuts gid to 32 bit */
        if ((uint64_t)gid != r->in.gid) {
                DEBUG(10, ("gid out of range\n"));
                return NT_STATUS_INVALID_PARAMETER;
        }
 
-       return sidmap_gid_to_sid(sidmap, mem_ctx, gid, &r->out.sid);
+       ids = talloc(mem_ctx, struct id_mapping);
+       NT_STATUS_HAVE_NO_MEMORY(ids);
+
+       ids->sid = NULL;
+       ids->status = NT_STATUS_NONE_MAPPED;
+       ids->unixid = talloc(ids, struct unixid);
+       NT_STATUS_HAVE_NO_MEMORY(ids->unixid);
+
+       ids->unixid->id = gid;
+       ids->unixid->type = ID_TYPE_GID;
+
+       ctx = wbc_xids_to_sids_send(wbc_ctx, ids, 1, ids);
+       NT_STATUS_HAVE_NO_MEMORY(ctx);
+
+       status = wbc_xids_to_sids_recv(ctx, &ids);
+       NT_STATUS_NOT_OK_RETURN(status);
+
+       r->out.sid = ids->sid;
+       return NT_STATUS_OK;
 }
 
 static NTSTATUS dcesrv_unixinfo_GetPWUid(struct dcesrv_call_state *dce_call,
index 4d2da6ed646434e1a31b22c17c481d8593f8372c..19ff924794d3c92969f1c66f418573f24398955d 100644 (file)
@@ -46,3 +46,4 @@ nss.test                                              # Fails
 samba4.samba3sam.python                # Conversion from EJS not yet finished
 samba4.samdb.python                    # Not finished yet
 raw.offline                    # Samba 4 doesn't have much offline support yet
+winreg*  #Does not authenticate against the target server
index 87a68e33fa47ef1152dad08355d4d59ab227e3d3..e1b790d41da216ce04cc8a98bec094607bed2c05 100755 (executable)
@@ -192,6 +192,7 @@ sub process_file($$$)
 
                if ($line =~ /^_PUBLIC_ FN_/) {
                        handle_loadparm($public_file, $line);
+                       handle_loadparm($private_file, $line);
                        next;
                }
 
index a6e7c8493bec9876b65146e51341a069371fcb8e..0af738deb52e3a647c4ad634f99e339ef42c8511 100755 (executable)
@@ -1,10 +1,15 @@
 #!/bin/sh
 
-TMPDIR=`mktemp samba-XXXXX`
-rm $TMPDIR || exit 1
-svn export . $TMPDIR || exit 1
+if [ ! -d ".git" -o `dirname $0` != "./source/script" ]; then
+       echo "Run this script from the top-level directory in the"
+       echo "repository as: ./source/script/mkrelease.sh"
+       exit 1
+fi
 
-( cd $TMPDIR/source
+TMPDIR=`mktemp -d samba-XXXXX`
+(git archive --format=tar HEAD | (cd $TMPDIR/ && tar xf -))
+
+( cd $TMPDIR/source || exit 1
  ./autogen.sh || exit 1
  ./configure || exit 1
  make dist  || exit 1
@@ -12,7 +17,8 @@ svn export . $TMPDIR || exit 1
 
 VERSION=`sed -n 's/^SAMBA_VERSION_STRING=//p' $TMPDIR/source/version.h`
 mv $TMPDIR samba-$VERSION || exit 1
-tar -cf samba-$VERSION.tar samba-$VERSION || exit 1
+tar -cf samba-$VERSION.tar samba-$VERSION || (rm -rf samba-$VERSION; exit 1)
+rm -rf samba-$VERSION || exit 1
 echo "Now run: "
 echo "gpg --detach-sign --armor samba-$VERSION.tar"
 echo "gzip samba-$VERSION.tar" 
index ea41289dce28772e29f3fc9d48a6135c63f08ad2..4dfc3365a17496e8e55ddb779dfe7423a94e3b1e 100755 (executable)
@@ -3,7 +3,7 @@ exec smbscript "$0" ${1+"$@"}
 /*
   provide information on connected users and open files
   Copyright Andrew Tridgell 2005
-  Released under the GNU GPL v2 or later
+  Released under the GNU GPL version 3 or later
 */     
 
 libinclude("base.js");
index 2114394f455fb8472515d9c9464bf9b0cfa4a803..883c6d7ee3b76da80733eb6c27a3e494e667393b 100755 (executable)
@@ -3,7 +3,7 @@ exec smbscript "$0" ${1+"$@"}
 /*
   tool to manipulate a remote registry
   Copyright Andrew Tridgell 2005
-  Released under the GNU GPL v2 or later
+  Released under the GNU GPL version 3 or later
 */     
 
 var options = GetOptions(ARGV,
index 0d10fc6e3a3b8791e0948f9e9a54583f758c9cf1..4eef0207f98f9e0c3de74d86fbde6b291d87f29a 100644 (file)
@@ -102,7 +102,7 @@ smbcalls_OBJ_FILES = $(addprefix scripting/ejs/, \
 # Start BINARY SMBSCRIPT
 [BINARY::smbscript]
 INSTALLDIR = BINDIR
-PRIVATE_DEPENDENCIES = EJS LIBSAMBA-UTIL smbcalls LIBSAMBA-CONFIG
+PRIVATE_DEPENDENCIES = EJS LIBSAMBA-UTIL smbcalls LIBSAMBA-HOSTCONFIG
 # End BINARY SMBSCRIPT
 #######################
 
index a2db1f0d6d8c040954dca5e594c541fe2d8d1205..58e0fa1fd1aac01c98cc7474045bc000f6bf432b 100644 (file)
@@ -23,6 +23,7 @@
 #include "scripting/ejs/smbcalls.h"
 #include "lib/appweb/ejs/ejs.h"
 #include "librpc/gen_ndr/ndr_misc.h"
+#include "librpc/ndr/libndr.h"
 
 /*
   usage:
index 73d864521829acda9342f717856e17883127fd33..3fe81d0ea764b2d0217ebf76d8f314c9f0d30cca 100644 (file)
@@ -1,7 +1,7 @@
 /*
        auth js library functions
        Copyright Andrew Tridgell 2005
-       released under the GNU GPL v2 or later
+       released under the GNU GPL version 3 or later
 */
 
 
index df0bfe0ce93e757edf93b7f9ca449da945542de0..d861073a074cf81de229bdd4d235e2feda42fba8 100644 (file)
@@ -1,7 +1,7 @@
 /*
        base js library functions
        Copyright Andrew Tridgell 2005
-       released under the GNU GPL v2 or later
+       released under the GNU GPL version 3 or later
 */
 
 if (global["HAVE_BASE_JS"] != undefined) {
index d96b8595470184f6d1751f77e33ffe6c47e76bf9..6cb780c00d62b0411dbb4480d2279e481766b91c 100644 (file)
@@ -2,7 +2,7 @@
        server side js functions for encoding/decoding objects into linear strings
 
        Copyright Andrew Tridgell 2005
-       released under the GNU GPL Version 2 or later
+       released under the GNU GPL Version 3 or later
 */
 /*
        usage:
index e54b5e283bed08d0d007bfd54e639873b6a8e251..4a43275156702559c39e0940db76bb15cbe048a2 100644 (file)
@@ -1,7 +1,7 @@
 /*
        backend code for Samba4 management
        Copyright Andrew Tridgell 2005
-       Released under the GNU GPL v2 or later
+       Released under the GNU GPL version 3 or later
 */
 
 
index 86baa0c003810037393eefb843b84980371037a2..51e2785762bd79a29c2beba5b478f08066f80a05 100644 (file)
@@ -1,7 +1,7 @@
 /*
        backend code for provisioning a Samba4 server
        Copyright Andrew Tridgell 2005
-       Released under the GNU GPL v2 or later
+       Released under the GNU GPL version 3 or later
 */
 
 sys = sys_init();
index a7d7d964fb1682e7eb32e993cc7676248f129011..6e8c70af3cb30d55b4e879f83b9efbacf0b6f124 100644 (file)
@@ -1,7 +1,7 @@
 /*
        samr rpc utility functions 
        Copyright Andrew Tridgell 2005
-       released under the GNU GPL v2 or later
+       released under the GNU GPL version 3 or later
 */     
 
 if (global["HAVE_SAMR_JS"] != undefined) {
index a8c08780f9e66f623279571b22efd8c95846fedc..46414a90ddf61faceab50d0a819ea48f3d483306 100644 (file)
@@ -2,7 +2,7 @@
        server side js functions for handling async calls from js clients
 
        Copyright Andrew Tridgell 2005
-       released under the GNU GPL Version 2 or later
+       released under the GNU GPL Version 3 or later
 */
 
 libinclude("encoder.js");
index 29338abc5a318b77a63c2a79cf76359d8fe87712..9db415694dee9f698d8797030a3da14c6fc32d75 100644 (file)
@@ -1,7 +1,7 @@
 /*
        winreg rpc utility functions 
        Copyright Andrew Tridgell 2005
-       released under the GNU GPL v2 or later
+       released under the GNU GPL version 3 or later
 */     
 
 libinclude("base.js");
index a11b2fb825a608c7bca18886cdf82a81776e6661..e04e6a6906d5681bd90dec4e721ea76bd614fd7b 100644 (file)
@@ -25,6 +25,7 @@
 #include "auth/credentials/credentials.h"
 #include "dsdb/samdb/samdb.h"
 #include "lib/ldb-samba/ldif_handlers.h"
+#include "librpc/ndr/libndr.h"
 %}
 
 %import "stdint.i"
index cf85e91e1e6bc61bcdef165b34e29bf0b11a41e9..579d1f379f183fba67f283c6e6a646b7adfcced0 100644 (file)
@@ -2533,6 +2533,7 @@ static swig_module_info swig_module = {swig_types, 27, 0, 0, 0, 0};
 #include "auth/credentials/credentials.h"
 #include "dsdb/samdb/samdb.h"
 #include "lib/ldb-samba/ldif_handlers.h"
+#include "librpc/ndr/libndr.h"
 
 
 SWIGINTERN int
index 2c10a35c60cbff125edb025a530d2349d08c7f48..08f3c1156c432dd678e85ff10d3457a35ad62767 100644 (file)
@@ -34,6 +34,8 @@ extern void init_events(void);
 extern void inituuid(void);
 extern void init_net(void);
 extern void initecho(void);
+extern void initdfs(void);
+extern void initdrsuapi(void);
 extern void initwinreg(void);
 extern void initepmapper(void);
 extern void initinitshutdown(void);
@@ -45,6 +47,7 @@ static void initdcerpc_security(void) {}
 extern void initlsa(void);
 extern void initsvcctl(void);
 extern void initwkssvc(void);
+extern void initunixinfo(void);
 extern void init_libcli_nbt(void);
 extern void init_libcli_smb(void);
 
index 3a5d235cfccb6a968f248aa6be1859a26c79ab0b..f4d0f37c39410e00dc565d580be196f0e5ba1fb4 100644 (file)
@@ -26,7 +26,7 @@
 #define dom_sid2_Type dom_sid_Type
 #define dom_sid28_Type dom_sid_Type
 #define dom_sid2_Check dom_sid_Check
-#define dom_sid28_Check dom_sid28_Check
+#define dom_sid28_Check dom_sid_Check
 
 /* This macro is only provided by Python >= 2.3 */
 #ifndef PyAPI_DATA
index 088a5acf6fc84f5fe48c58880499a4b2eb083169..82cb004b621eebd263a17f944a075d92b866d113 100644 (file)
@@ -18,7 +18,7 @@
 #
 
 import optparse
-from credentials import Credentials
+from credentials import Credentials, AUTO_USE_KERBEROS, DONT_USE_KERBEROS, MUST_USE_KERBEROS
 
 class SambaOptions(optparse.OptionGroup):
     def __init__(self, parser):
@@ -65,6 +65,9 @@ class CredentialsOptions(optparse.OptionGroup):
                         help="Workgroup", callback=self._parse_workgroup)
         self.add_option("-N", "--no-pass", action="store_true",
                         help="Don't ask for a password")
+        self.add_option("-k", "--kerberos", metavar="KERBEROS", 
+                        action="callback", type=str,
+                        help="Use Kerberos", callback=self._set_kerberos)
         self.creds = Credentials()
 
     def _parse_username(self, option, opt_str, arg, parser):
@@ -76,11 +79,17 @@ class CredentialsOptions(optparse.OptionGroup):
     def _set_password(self, option, opt_str, arg, parser):
         self.creds.set_password(arg)
 
+    def _set_kerberos(self, option, opt_str, arg, parser):
+        if bool(arg) or arg.lower() == "yes":
+            self.creds.set_kerberos_state(MUST_USE_KERBEROS)
+        else:
+            self.creds.set_kerberos_state(DONT_USE_KERBEROS)
+
     def _set_simple_bind_dn(self, option, opt_str, arg, parser):
         self.creds.set_bind_dn(arg)
 
-    def get_credentials(self):
-        self.creds.guess()
+    def get_credentials(self, lp):
+        self.creds.guess(lp)
         if not self.no_pass:
             self.creds.set_cmdline_callbacks()
         return self.creds
diff --git a/source4/scripting/python/samba/idmap.py b/source4/scripting/python/samba/idmap.py
new file mode 100644 (file)
index 0000000..3555659
--- /dev/null
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+
+# Unix SMB/CIFS implementation.
+# Copyright (C) 2008 Kai Blin <kai@samba.org>
+#
+#
+# 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/>.
+#
+
+"""Convenience functions for using the idmap database."""
+
+import samba
+import ldb
+
+class IDmapDB(samba.Ldb):
+    """The IDmap database."""
+
+    # Mappings for ID_TYPE_UID, ID_TYPE_GID and ID_TYPE_BOTH
+    TYPE_UID = 1
+    TYPE_GID = 2
+    TYPE_BOTH = 3
+
+    def __init__(self, url=None, session_info=None, credentials=None,
+                 modules_dir=None, lp=None):
+        """Open the IDmap Database.
+
+        :param url: URL of the database.
+        """
+        super(IDmapDB, self).__init__(session_info=session_info, credentials=credentials,
+                                    modules_dir=modules_dir, lp=lp)
+        if url:
+            self.connect(url)
+
+
+    def setup_name_mapping(self, sid, type, unixid):
+        """Setup a mapping between a sam name and a unix name.
+
+        :param sid: SID of the NT-side of the mapping.
+        :param unixname: Unix name to map to.
+        """
+        type_string = ""
+        if type == self.TYPE_UID:
+            type_string = "ID_TYPE_UID"
+        elif type == self.TYPE_GID:
+            type_string = "ID_TYPE_GID"
+        elif type == self.TYPE_BOTH:
+            type_string = "ID_TYPE_BOTH"
+        else:
+            return
+
+        mod = """
+dn: CN=%s
+xidNumber: %s
+objectSid: %s
+objectClass: sidMap
+type: %s
+cn: %s
+
+""" % (sid, unixid, sid, type_string, sid)
+        self.add(self.parse_ldif(mod).next()[1])
+
+
index d5e66d842c154cbb1094f5dd49bb59bd04fd6333..6917aa1a543381227e0b4afaf01559d24555cc3f 100644 (file)
@@ -28,13 +28,14 @@ import pwd
 import grp
 import time
 import uuid, misc
-from socket import gethostname, gethostbyname
+import socket
 import param
 import registry
 import samba
 from auth import system_session
 from samba import Ldb, substitute_var, valid_netbios_name, check_all_substituted
 from samba.samdb import SamDB
+from samba.idmap import IDmapDB
 import security
 import urllib
 from ldb import SCOPE_SUBTREE, SCOPE_ONELEVEL, SCOPE_BASE, LdbError, \
@@ -267,7 +268,7 @@ def guess_names(lp=None, hostname=None, domain=None, dnsdomain=None, serverrole=
               rootdn=None, domaindn=None, configdn=None, schemadn=None, sitename=None):
 
     if hostname is None:
-        hostname = gethostname().split(".")[0].lower()
+        hostname = socket.gethostname().split(".")[0].lower()
 
     netbiosname = hostname.upper()
     if not valid_netbios_name(netbiosname):
@@ -348,7 +349,7 @@ def load_or_make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrol
 
     if not os.path.exists(smbconf):
         if hostname is None:
-            hostname = gethostname().split(".")[0].lower()
+            hostname = socket.gethostname().split(".")[0].lower()
 
         if serverrole is None:
             serverrole = "standalone"
@@ -397,45 +398,30 @@ def load_or_make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrol
 
     return lp
 
-def setup_name_mappings(ldb, sid, domaindn, root, nobody, nogroup, users, 
-                        wheel, backup):
+def setup_name_mappings(samdb, idmap, sid, domaindn, root_uid, nobody_uid,
+                        users_gid, wheel_gid):
     """setup reasonable name mappings for sam names to unix names.
-    
-    :param ldb: SamDB object.
+
+    :param samdb: SamDB object.
+    :param idmap: IDmap db object.
     :param sid: The domain sid.
     :param domaindn: The domain DN.
-    :param root: Name of the UNIX root user.
-    :param nobody: Name of the UNIX nobody user.
-    :param nogroup: Name of the unix nobody group.
-    :param users: Name of the unix users group.
-    :param wheel: Name of the wheel group (users that can become root).
-    :param backup: Name of the backup group."""
+    :param root_uid: uid of the UNIX root user.
+    :param nobody_uid: uid of the UNIX nobody user.
+    :param users_gid: gid of the UNIX users group.
+    :param wheel_gid: gid of the UNIX wheel group."""
     # add some foreign sids if they are not present already
-    ldb.add_foreign(domaindn, "S-1-5-7", "Anonymous")
-    ldb.add_foreign(domaindn, "S-1-1-0", "World")
-    ldb.add_foreign(domaindn, "S-1-5-2", "Network")
-    ldb.add_foreign(domaindn, "S-1-5-18", "System")
-    ldb.add_foreign(domaindn, "S-1-5-11", "Authenticated Users")
-
-    # some well known sids
-    ldb.setup_name_mapping(domaindn, "S-1-5-7", nobody)
-    ldb.setup_name_mapping(domaindn, "S-1-1-0", nogroup)
-    ldb.setup_name_mapping(domaindn, "S-1-5-2", nogroup)
-    ldb.setup_name_mapping(domaindn, "S-1-5-18", root)
-    ldb.setup_name_mapping(domaindn, "S-1-5-11", users)
-    ldb.setup_name_mapping(domaindn, "S-1-5-32-544", wheel)
-    ldb.setup_name_mapping(domaindn, "S-1-5-32-545", users)
-    ldb.setup_name_mapping(domaindn, "S-1-5-32-546", nogroup)
-    ldb.setup_name_mapping(domaindn, "S-1-5-32-551", backup)
-
-    # and some well known domain rids
-    ldb.setup_name_mapping(domaindn, sid + "-500", root)
-    ldb.setup_name_mapping(domaindn, sid + "-518", wheel)
-    ldb.setup_name_mapping(domaindn, sid + "-519", wheel)
-    ldb.setup_name_mapping(domaindn, sid + "-512", wheel)
-    ldb.setup_name_mapping(domaindn, sid + "-513", users)
-    ldb.setup_name_mapping(domaindn, sid + "-520", wheel)
+    samdb.add_foreign(domaindn, "S-1-5-7", "Anonymous")
+    samdb.add_foreign(domaindn, "S-1-1-0", "World")
+    samdb.add_foreign(domaindn, "S-1-5-2", "Network")
+    samdb.add_foreign(domaindn, "S-1-5-18", "System")
+    samdb.add_foreign(domaindn, "S-1-5-11", "Authenticated Users")
+
+    idmap.setup_name_mapping("S-1-5-7", idmap.TYPE_UID, nobody_uid)
+    idmap.setup_name_mapping("S-1-5-32-544", idmap.TYPE_GID, wheel_gid)
 
+    idmap.setup_name_mapping(sid + "-500", idmap.TYPE_UID, root_uid)
+    idmap.setup_name_mapping(sid + "-513", idmap.TYPE_GID, users_gid)
 
 def setup_samdb_partitions(samdb_path, setup_path, message, lp, session_info, 
                            credentials, names,
@@ -663,8 +649,8 @@ def setup_idmapdb(path, setup_path, session_info, credentials, lp):
     if os.path.exists(path):
         os.unlink(path)
 
-    idmap_ldb = Ldb(path, session_info=session_info, credentials=credentials,
-                    lp=lp)
+    idmap_ldb = IDmapDB(path, session_info=session_info,
+                        credentials=credentials, lp=lp)
 
     idmap_ldb.erase()
     idmap_ldb.load_ldif_file_add(setup_path("idmap_init.ldif"))
@@ -695,13 +681,8 @@ def setup_samdb_rootdse(samdb, setup_path, schemadn, domaindn, hostname,
 def setup_self_join(samdb, names,
                     machinepass, dnspass, 
                     domainsid, invocationid, setup_path,
-                    policyguid, hostguid=None):
+                    policyguid):
     """Join a host to its own domain."""
-    if hostguid is not None:
-        hostguid_add = "objectGUID: %s" % hostguid
-    else:
-        hostguid_add = ""
-
     setup_add_ldif(samdb, setup_path("provision_self_join.ldif"), { 
               "CONFIGDN": names.configdn, 
               "SCHEMADN": names.schemadn,
@@ -714,7 +695,6 @@ def setup_self_join(samdb, names,
               "DNSPASS_B64": b64encode(dnspass),
               "REALM": names.realm,
               "DOMAIN": names.domain,
-              "HOSTGUID_ADD": hostguid_add,
               "DNSDOMAIN": names.dnsdomain})
     setup_add_ldif(samdb, setup_path("provision_group_policy.ldif"), { 
               "POLICYGUID": policyguid,
@@ -727,7 +707,7 @@ def setup_samdb(path, setup_path, session_info, credentials, lp,
                 names, message, 
                 domainsid, aci, domainguid, policyguid, 
                 fill, adminpass, krbtgtpass, 
-                machinepass, hostguid, invocationid, dnspass,
+                machinepass, invocationid, dnspass,
                 serverrole, ldap_backend=None, 
                 ldap_backend_type=None):
     """Setup a complete SAM Database.
@@ -880,7 +860,6 @@ def setup_samdb(path, setup_path, session_info, credentials, lp,
                                 dnspass=dnspass,  
                                 machinepass=machinepass, 
                                 domainsid=domainsid, policyguid=policyguid,
-                                hostguid=hostguid, 
                                 setup_path=setup_path)
 
     #We want to setup the index last, as adds are faster unindexed
@@ -901,8 +880,8 @@ FILL_DRS = "DRS"
 def provision(setup_dir, message, session_info, 
               credentials, smbconf=None, targetdir=None, samdb_fill=FILL_FULL, realm=None, 
               rootdn=None, domaindn=None, schemadn=None, configdn=None,
-              domain=None, hostname=None, hostip=None, domainsid=None, 
-              hostguid=None, adminpass=None, krbtgtpass=None, domainguid=None, 
+              domain=None, hostname=None, hostip=None, hostip6=None, 
+              domainsid=None, adminpass=None, krbtgtpass=None, domainguid=None, 
               policyguid=None, invocationid=None, machinepass=None, 
               dnspass=None, root=None, nobody=None, nogroup=None, users=None, 
               wheel=None, backup=None, aci=None, serverrole=None, 
@@ -931,18 +910,21 @@ def provision(setup_dir, message, session_info,
     if dnspass is None:
         dnspass = misc.random_password(12)
     if root is None:
-        root = findnss(pwd.getpwnam, ["root"])[0]
+        root_uid = findnss(pwd.getpwnam, ["root"])[2]
+    else:
+        root_uid = findnss(pwd.getpwnam, [root])[2]
     if nobody is None:
-        nobody = findnss(pwd.getpwnam, ["nobody"])[0]
-    if nogroup is None:
-        nogroup = findnss(grp.getgrnam, ["nogroup", "nobody"])[0]
+        nobody_uid = findnss(pwd.getpwnam, ["nobody"])[2]
+    else:
+        nobody_uid = findnss(pwd.getpwnam, [nobody])[2]
     if users is None:
-        users = findnss(grp.getgrnam, ["users", "guest", "other", "unknown", 
-                        "usr"])[0]
+        users_gid = findnss(grp.getgrnam, ["users"])[2]
+    else:
+        users_gid = findnss(grp.getgrnam, [users])[2]
     if wheel is None:
-        wheel = findnss(grp.getgrnam, ["wheel", "root", "staff", "adm"])[0]
-    if backup is None:
-        backup = findnss(grp.getgrnam, ["backup", "wheel", "root", "staff"])[0]
+        wheel_gid = findnss(grp.getgrnam, ["wheel", "adm"])[2]
+    else:
+        wheel_gid = findnss(grp.getgrnam, [wheel])[2]
     if aci is None:
         aci = "# no aci for local ldb"
 
@@ -955,7 +937,12 @@ def provision(setup_dir, message, session_info,
     paths = provision_paths_from_lp(lp, names.dnsdomain)
 
     if hostip is None:
-        hostip = gethostbyname(names.hostname)
+        hostip = socket.getaddrinfo(names.hostname, None, socket.AF_INET, socket.AI_CANONNAME, socket.IPPROTO_IP)[0][-1][0]
+
+    if hostip6 is None:
+        try:
+            hostip6 = socket.getaddrinfo(names.hostname, None, socket.AF_INET6, socket.AI_CANONNAME, socket.IPPROTO_IP)[0][-1][0]
+        except socket.gaierror: pass
 
     if serverrole is None:
         serverrole = lp.get("server role")
@@ -974,10 +961,6 @@ def provision(setup_dir, message, session_info,
             # provision-backend will set this path suggested slapd command line / fedorads.inf
             ldap_backend = "ldapi://" % urllib.quote(os.path.join(paths.private_dir, "ldap", "ldapi"), safe="")
              
-    message("set DOMAIN SID: %s" % str(domainsid))
-    message("Provisioning for %s in realm %s" % (names.domain, realm))
-    message("Using administrator password: %s" % adminpass)
-
     # only install a new shares config db if there is none
     if not os.path.exists(paths.shareconf):
         message("Setting up share.ldb")
@@ -1000,8 +983,8 @@ def provision(setup_dir, message, session_info,
                       credentials=credentials, lp=lp)
 
     message("Setting up idmap db")
-    setup_idmapdb(paths.idmapdb, setup_path, session_info=session_info,
-                  credentials=credentials, lp=lp)
+    idmap = setup_idmapdb(paths.idmapdb, setup_path, session_info=session_info,
+                          credentials=credentials, lp=lp)
 
     samdb = setup_samdb(paths.samdb, setup_path, session_info=session_info, 
                         credentials=credentials, lp=lp, names=names,
@@ -1010,7 +993,7 @@ def provision(setup_dir, message, session_info,
                         aci=aci, domainguid=domainguid, policyguid=policyguid, 
                         fill=samdb_fill, 
                         adminpass=adminpass, krbtgtpass=krbtgtpass,
-                        hostguid=hostguid, invocationid=invocationid, 
+                        invocationid=invocationid, 
                         machinepass=machinepass, dnspass=dnspass,
                         serverrole=serverrole, ldap_backend=ldap_backend, 
                         ldap_backend_type=ldap_backend_type)
@@ -1032,10 +1015,10 @@ def provision(setup_dir, message, session_info,
                            machinepass=machinepass, dnsdomain=names.dnsdomain)
 
     if samdb_fill == FILL_FULL:
-        setup_name_mappings(samdb, str(domainsid), names.domaindn, root=root, 
-                            nobody=nobody, nogroup=nogroup, wheel=wheel, 
-                            users=users, backup=backup)
-   
+        setup_name_mappings(samdb, idmap, str(domainsid), names.domaindn,
+                            root_uid=root_uid, nobody_uid=nobody_uid,
+                            users_gid=users_gid, wheel_gid=wheel_gid)
+
         message("Setting up sam.ldb rootDSE marking as synchronized")
         setup_modify_ldif(samdb, setup_path("provision_rootdse_modify.ldif"))
 
@@ -1051,19 +1034,26 @@ def provision(setup_dir, message, session_info,
                                        scope=SCOPE_SUBTREE)
             assert isinstance(hostguid, str)
             
-            message("Setting up DNS zone: %s" % names.dnsdomain)
             create_zone_file(paths.dns, setup_path, samdb, 
-                             hostname=names.hostname, hostip=hostip, dnsdomain=names.dnsdomain,
+                             hostname=names.hostname, hostip=hostip,
+                             hostip6=hostip6, dnsdomain=names.dnsdomain,
                              domaindn=names.domaindn, dnspass=dnspass, realm=names.realm, 
                              domainguid=domainguid, hostguid=hostguid)
             message("Please install the zone located in %s into your DNS server" % paths.dns)
             
-    message("Setting up phpLDAPadmin configuration")
     create_phpldapadmin_config(paths.phpldapadminconfig, setup_path, 
                                ldapi_url)
 
     message("Please install the phpLDAPadmin configuration located at %s into /etc/phpldapadmin/config.php" % paths.phpldapadminconfig)
 
+    message("Once the above files are installed, your server will be ready to use")
+    message("Server Type:    %s" % serverrole)
+    message("Hostname:       %s" % names.hostname)
+    message("NetBIOS Domain: %s" % names.domain)
+    message("DNS Domain:     %s" % names.dnsdomain)
+    message("DOMAIN SID:     %s" % str(domainsid))
+    message("Admin password: %s" % adminpass)
+
     result = ProvisionResult()
     result.domaindn = domaindn
     result.paths = paths
@@ -1075,7 +1065,7 @@ def provision_become_dc(setup_dir=None,
                         smbconf=None, targetdir=None, realm=None, 
                         rootdn=None, domaindn=None, schemadn=None, configdn=None,
                         domain=None, hostname=None, domainsid=None, 
-                        hostguid=None, adminpass=None, krbtgtpass=None, domainguid=None, 
+                        adminpass=None, krbtgtpass=None, domainguid=None, 
                         policyguid=None, invocationid=None, machinepass=None, 
                         dnspass=None, root=None, nobody=None, nogroup=None, users=None, 
                         wheel=None, backup=None, aci=None, serverrole=None, 
@@ -1112,7 +1102,7 @@ def provision_backend(setup_dir=None, message=None,
         return os.path.join(setup_dir, file)
 
     if hostname is None:
-        hostname = gethostname().split(".")[0].lower()
+        hostname = socket.gethostname().split(".")[0].lower()
 
     if root is None:
         root = findnss(pwd.getpwnam, ["root"])[0]
@@ -1245,7 +1235,7 @@ def create_phpldapadmin_config(path, setup_path, ldapi_uri):
 
 
 def create_zone_file(path, setup_path, samdb, dnsdomain, domaindn, 
-                  hostip, hostname, dnspass, realm, domainguid, hostguid):
+                  hostip, hostip6, hostname, dnspass, realm, domainguid, hostguid):
     """Write out a DNS zone file, from the info in the current database.
     
     :param path: Path of the new file.
@@ -1253,7 +1243,8 @@ def create_zone_file(path, setup_path, samdb, dnsdomain, domaindn,
     :param samdb: SamDB object
     :param dnsdomain: DNS Domain name
     :param domaindn: DN of the Domain
-    :param hostip: Local IP
+    :param hostip: Local IPv4 IP
+    :param hostip6: Local IPv6 IP
     :param hostname: Local hostname
     :param dnspass: Password for DNS
     :param realm: Realm name
@@ -1262,6 +1253,13 @@ def create_zone_file(path, setup_path, samdb, dnsdomain, domaindn,
     """
     assert isinstance(domainguid, str)
 
+    hostip6_base_line = ""
+    hostip6_host_line = ""
+
+    if hostip6 is not None:
+        hostip6_base_line = "                  IN AAAA " + hostip6
+        hostip6_host_line = hostname + "               IN AAAA " + hostip6
+
     setup_file(setup_path("provision.zone"), path, {
             "DNSPASS_B64": b64encode(dnspass),
             "HOSTNAME": hostname,
@@ -1272,6 +1270,8 @@ def create_zone_file(path, setup_path, samdb, dnsdomain, domaindn,
             "DATESTRING": time.strftime("%Y%m%d%H"),
             "DEFAULTSITE": DEFAULTSITE,
             "HOSTGUID": hostguid,
+            "HOSTIP6_BASE_LINE": hostip6_base_line,
+            "HOSTIP6_HOST_LINE": hostip6_host_line,
         })
 
 def load_schema(setup_path, samdb, schemadn, netbiosname, configdn, sitename):
index 3c6bb23c0212c992443055592a0c0aa58fce8063..bc3eef7879c50c04566709ef7fd7186d18cdf729 100644 (file)
@@ -53,34 +53,20 @@ description: %s
         for msg in self.parse_ldif(add):
             self.add(msg[1])
 
-    def setup_name_mapping(self, domaindn, sid, unixname):
-        """Setup a mapping between a sam name and a unix name.
-        
-        :param domaindn: DN of the domain.
-        :param sid: SID of the NT-side of the mapping.
-        :param unixname: Unix name to map to.
-        """
-        res = self.search(domaindn, ldb.SCOPE_SUBTREE, 
-                         "objectSid=%s" % sid, ["dn"])
-        assert len(res) == 1, "Failed to find record for objectSid %s" % sid
-
-        mod = """
-dn: %s
-changetype: modify
-replace: unixName
-unixName: %s
-""" % (res[0].dn, unixname)
-        self.modify(self.parse_ldif(mod).next()[1])
-
     def enable_account(self, user_dn):
         """Enable an account.
         
         :param user_dn: Dn of the account to enable.
         """
-        res = self.search(user_dn, SCOPE_ONELEVEL, None, ["userAccountControl"])
+        res = self.search(user_dn, ldb.SCOPE_BASE, None, ["userAccountControl"])
         assert len(res) == 1
-        userAccountControl = res[0].userAccountControl
-        userAccountControl = userAccountControl - 2 # remove disabled bit
+        userAccountControl = res[0]["userAccountControl"][0]
+        userAccountControl = int(userAccountControl)
+        if (userAccountControl & 0x2):
+            userAccountControl = userAccountControl & ~0x2 # remove disabled bit
+        if (userAccountControl & 0x20):
+            userAccountControl = userAccountControl & ~0x20 # remove 'no password required' bit
+
         mod = """
 dn: %s
 changetype: modify
@@ -103,13 +89,9 @@ userAccountControl: %u
         res = self.search("", scope=ldb.SCOPE_BASE, 
                           expression="(defaultNamingContext=*)", 
                           attrs=["defaultNamingContext"])
-        assert(len(res) == 1 and res[0].defaultNamingContext is not None)
+        assert(len(res) == 1 and res[0]["defaultNamingContext"] is not None)
         domain_dn = res[0]["defaultNamingContext"][0]
         assert(domain_dn is not None)
-        dom_users = self.searchone(basedn=domain_dn, attribute="dn", 
-                                   expression="name=Domain Users")
-        assert(dom_users is not None)
-
         user_dn = "CN=%s,CN=Users,%s" % (username, domain_dn)
 
         #
@@ -123,19 +105,44 @@ userAccountControl: %u
             "sambaPassword": password,
             "objectClass": "user"})
 
-        #  add the user to the users group as well
-        modgroup = """
+        #  modify the userAccountControl to remove the disabled bit
+        self.enable_account(user_dn)
+        self.transaction_commit()
+
+    def setpassword(self, filter, password):
+        """Set a password on a user record
+        
+        :param filter: LDAP filter to find the user (eg samccountname=name)
+        :param password: Password for the user
+        """
+        # connect to the sam 
+        self.transaction_start()
+
+        # find the DNs for the domain
+        res = self.search("", scope=ldb.SCOPE_BASE, 
+                          expression="(defaultNamingContext=*)", 
+                          attrs=["defaultNamingContext"])
+        assert(len(res) == 1 and res[0]["defaultNamingContext"] is not None)
+        domain_dn = res[0]["defaultNamingContext"][0]
+        assert(domain_dn is not None)
+
+        res = self.search(domain_dn, scope=ldb.SCOPE_SUBTREE, 
+                          expression=filter,
+                          attrs=[])
+        assert(len(res) == 1)
+        user_dn = res[0].dn
+
+        setpw = """
 dn: %s
 changetype: modify
-add: member
-member: %s
-""" % (dom_users, user_dn)
-
+replace: sambaPassword
+sambaPassword: %s
+""" % (user_dn, password)
 
-        self.modify(modgroup)
+        self.modify_ldif(setpw)
 
         #  modify the userAccountControl to remove the disabled bit
-        enable_account(self, user_dn)
+        self.enable_account(user_dn)
         self.transaction_commit()
 
     def set_domain_sid(self, sid):
diff --git a/source4/scripting/python/samba/tests/dcerpc/unix.py b/source4/scripting/python/samba/tests/dcerpc/unix.py
new file mode 100644 (file)
index 0000000..99c84c0
--- /dev/null
@@ -0,0 +1,30 @@
+#!/usr/bin/python
+
+# Unix SMB/CIFS implementation.
+# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2008
+#   
+# 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/>.
+#
+
+import unixinfo
+import unittest
+from samba.tests import get_loadparm
+
+class UnixinfoTests(unittest.TestCase):
+    def setUp(self):
+        self.conn = unixinfo.unixinfo("ncalrpc:", get_loadparm())
+
+    def test_getpwuid(self):
+        (count, infos) = self.conn.GetPWUid(1, [0])
+        self.assertEquals(1, len(infos))
index 40e56bebb54db993e0e47e9ccaee28fce59c3a2e..3745dba6fc27474312f265ae199b02e3cf8f8745 100644 (file)
@@ -38,6 +38,7 @@ class SamDBTestCase(TestCaseInTempDir):
         policyguid = uuid.random()
         setup_path = lambda x: os.path.join("setup", x)
         creds = Credentials()
+        creds.set_anonymous()
         domainsid = security.random_sid()
         hostguid = uuid.random()
         path = os.path.join(self.tempdir, "samdb.ldb")
index 3abfbf522e4832ea09fe0b8674b6c88ed523ebb0..ac3d0c3a403add6ea8d7f3a810d86fa221a1ca33 100644 (file)
@@ -5,7 +5,7 @@
 #
 #  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 2 of the License, or
+#  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,
index 8102095958c4b554146b27ed5ef43572284b95db..7e545664d1ff105c4881506284bef03f970c0a91 100755 (executable)
@@ -266,7 +266,7 @@ fi
 bbdir=$incdir/../../testprogs/blackbox
 
 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" 
+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" 
 plantest "blackbox.nmblookup" dc $samba4srcdir/utils/tests/test_nmblookup.sh "\$NETBIOSNAME" "\$NETBIOSALIAS" "\$SERVER" "\$SERVER_IP" 
 plantest "blackbox.nmblookup" member $samba4srcdir/utils/tests/test_nmblookup.sh "\$NETBIOSNAME" "\$NETBIOSALIAS" "\$SERVER" "\$SERVER_IP"
@@ -338,6 +338,7 @@ plantest "provision.python" none $SUBUNITRUN samba.tests.provision
 plantest "samba3.python" none $SUBUNITRUN samba.tests.samba3
 plantest "samr.python" dc $SUBUNITRUN samba.tests.dcerpc.sam
 plantest "samdb.python" dc $SUBUNITRUN samba.tests.samdb
+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
index 960bd20dedf30b428116507e51a5ca0b05aaef19..bc40620af5108300b5c7d2478819f3f6e8d7c16a 100755 (executable)
@@ -5,7 +5,7 @@
 # run the test,
 # and remove the previously configured directory and share.
 # Copyright Brad Henry <brad@samba.org> 2006
-# Released under the GNU GPL v2 or later.
+# Released under the GNU GPL version 3 or later.
 
 . selftest/test_functions.sh
 
index 359d8df3155684cde6dd3760e2ca0b16aef9c69b..1f02f21c284a1f02cf7d0316e34a713c6da0e922 100644 (file)
@@ -3,7 +3,7 @@
 # A perl object to provide a simple, unified method of handling some
 # VMware Server VM management functions using the perl and VIX API's.
 # Copyright Brad Henry <brad@samba.org> 2006
-# Released under the GNU GPL v2 or later.
+# Released under the GNU GPL version 3 or later.
 
 # VMware Perl API
 use VMware::VmPerl;
index a7ba95d722550f359e703cd1e47b1bdf65239e7c..28a3d7a6a19183b22a253b8bd9e725025becb8c8 100644 (file)
@@ -1,6 +1,6 @@
 # A library of commonly used functions written in expect.
 # Copyright Brad Henry <brad@samba.org> 2006
-# Released under the GNU GPL v2 or later.
+# Released under the GNU GPL version 3 or later.
 
 # This function maps a drive letter to a share point.
 proc map_share { remote_prompt share_drive sharepoint username domain password } {
index 9286786155b3d4464578e2a67ae3c4e80ce684d5..9657a34790f59e1d6b156dd5579e509827b1becf 100644 (file)
@@ -2,7 +2,7 @@
 
 # A perl script to connect to a VMware server and get the IP address of a VM.
 # Copyright Brad Henry <brad@samba.org> 2006
-# Released under the GNU GPL v2 or later.
+# Released under the GNU GPL version 3 or later.
 
 use VMHost;
 
index e8ba9b39cfaf2b5aa77316e77269be2d850193a8..35e80badce205ad0379b8b9b5ad5a665ca96c679 100644 (file)
@@ -2,7 +2,7 @@
 
 # A perl script to connect to a VMware server and revert a VM snapshot.
 # Copyright Brad Henry <brad@samba.org> 2006
-# Released under the GNU GPL v2 or later.
+# Released under the GNU GPL version 3 or later.
 
 use VMHost;
 
index 5b45eb2bb035793cf20f492956822dbd815c7c29..ccf5d06ea9ee0c86d4dff1f7663114daf60e2b8b 100644 (file)
@@ -1,7 +1,7 @@
 # An expect script to create a temporary file, map a share, copy the file to the share,
 # and compare the contents of the two files.
 # Copyright Brad Henry <brad@samba.org> 2006
-# Released under the GNU GPL v2 or later.
+# Released under the GNU GPL version 3 or later.
 
 proc run_test { remote_prompt tmp_filename share_drive host_drive buildhost_ip buildhost_share username domain password } {
 
index a361db295832d6820d1725e39076244d0d083990..36dc4a7d24e4a7c1eae7cfd4fca9d297643ddbbc 100644 (file)
@@ -1,7 +1,7 @@
 # An expect script to remove a directory and share which was
 # previously setup for an smbtorture test.
 # Copyright Brad Henry <brad@samba.org> 2006
-# Released under the GNU GPL v2 or later.
+# Released under the GNU GPL version 3 or later.
 
 proc remove_test { remote_prompt sharepath sharename hosts_file_path \
                        backup_hosts_filename } {
index 1dcbabb4883bf21a5702f625f14a891b52e01b26..f55732ac008e23ccc5ea709d40a39ff8270ba5a4 100644 (file)
@@ -1,6 +1,6 @@
 # An expect script to setup a directory and share for an smbtorture test.
 # Copyright Brad Henry <brad@samba.org> 2006
-# Released under the GNU GPL v2 or later.
+# Released under the GNU GPL version 3 or later.
 
 proc setup_test { remote_prompt sharepath sharename username local_hostname \
                        local_ip hosts_file_path backup_hosts_filename } {
diff --git a/source4/setup/enableaccount b/source4/setup/enableaccount
new file mode 100644 (file)
index 0000000..849b515
--- /dev/null
@@ -0,0 +1,75 @@
+#!/usr/bin/python
+#
+#      add a new user to a Samba4 server
+#      Copyright Andrew Tridgell 2005
+#      Copyright Jelmer Vernooij 2008
+#      Released under the GNU GPL version 3 or later
+#
+
+import samba.getopt as options
+import optparse
+import pwd
+import sys
+import ldb
+
+from auth import system_session
+from samba.samdb import SamDB
+
+parser = optparse.OptionParser("setpassword [username] [options]")
+sambaopts = options.SambaOptions(parser)
+parser.add_option_group(sambaopts)
+parser.add_option_group(options.VersionOptions(parser))
+credopts = options.CredentialsOptions(parser)
+parser.add_option_group(credopts)
+parser.add_option("-H", help="LDB URL for database or target server", type=str)
+parser.add_option("--base", help="Base DN to search for user under", type=str)
+
+opts, args = parser.parse_args()
+
+#
+#  print a message if quiet is not set
+#
+def message(text):
+       if not opts.quiet:
+               print text
+
+if len(args) == 0:
+       parser.print_usage()
+       sys.exit(1)
+
+username = args[0]
+
+if username is None:
+       print "username must be specified"
+
+lp = sambaopts.get_loadparm()
+
+creds = credopts.get_credentials(lp)
+
+if opts.H is not None:
+       url = opts.H
+else:
+       url = lp.get("sam database")
+
+samdb = SamDB(url=url, session_info=system_session(), 
+              credentials=creds, lp=lp)
+
+domain_dn = opts.base
+if opts.base is None:
+       res = samdb.search("", scope=ldb.SCOPE_BASE, 
+                         expression="(defaultNamingContext=*)", 
+                         attrs=["defaultNamingContext"])
+       assert(len(res) == 1 and res[0]["defaultNamingContext"] is not None)
+       domain_dn = res[0]["defaultNamingContext"][0]
+else:
+       domain_dn = opts.base
+
+filter = "(&(objectClass=user)(samAccountName=%s))" % username
+
+res = samdb.search(domain_dn, scope=ldb.SCOPE_SUBTREE, 
+                 expression=filter,
+                 attrs=[])
+assert(len(res) == 1)
+user_dn = res[0].dn
+
+samdb.enable_account(user_dn)
index 03ae4e5ffb69176ea5ac8e3df65643579241c94a..f622058a5d0858ecae21c7ce293f10663242fef3 100755 (executable)
@@ -3,14 +3,14 @@
 #      add a new user to a Samba4 server
 #      Copyright Andrew Tridgell 2005
 #      Copyright Jelmer Vernooij 2008
-#      Released under the GNU GPL v2 or later
+#      Released under the GNU GPL version 3 or later
 #
 
 import samba.getopt as options
 import optparse
 import pwd
 import sys
-
+from getpass import getpass
 from auth import system_session
 from samba.samdb import SamDB
 
@@ -40,9 +40,7 @@ username = args[0]
 if len(args) > 1:
        password = args[1]
 else:
-       random_init(local)
-       options.password = randpass(12)
-       print "chose random password %s\n" % password
+       password = getpass("New Password: ")
 
 if opts.unixname is None:
        opts.unixname = username
index b0363d8a8f2a24a15284e082d465e5eba6e5dd3b..259bd814a4be20e07cdd2c48ac4fdb36b947ccbb 100755 (executable)
@@ -52,14 +52,14 @@ parser.add_option("--domain-sid", type="string", metavar="SID",
                help="set domainsid (otherwise random)")
 parser.add_option("--policy-guid", type="string", metavar="GUID",
                                  help="set policy guid")
+parser.add_option("--invocationid", type="string", metavar="GUID", 
+                 help="set invocationid (otherwise random)")
 parser.add_option("--host-name", type="string", metavar="HOSTNAME", 
                help="set hostname")
 parser.add_option("--host-ip", type="string", metavar="IPADDRESS", 
-               help="set ipaddress")
-parser.add_option("--host-guid", type="string", metavar="GUID", 
-               help="set hostguid (otherwise random)")
-parser.add_option("--invocationid", type="string", metavar="GUID", 
-               help="set invocationid (otherwise random)")
+               help="set IPv4 ipaddress")
+parser.add_option("--host-ip6", type="string", metavar="IP6ADDRESS", 
+               help="set IPv6 ipaddress")
 parser.add_option("--adminpass", type="string", metavar="PASSWORD", 
                help="choose admin password (otherwise random)")
 parser.add_option("--krbtgtpass", type="string", metavar="PASSWORD", 
@@ -111,7 +111,8 @@ if opts.realm is None or opts.domain is None:
        parser.print_usage()
        sys.exit(1)
 
-smbconf = sambaopts.get_loadparm().configfile()
+lp = sambaopts.get_loadparm()
+smbconf = lp.configfile()
 
 if opts.aci is not None:
        print "set ACI: %s" % opts.aci
@@ -123,7 +124,7 @@ elif opts.server_role == "member":
 else:
         server_role = opts.server_role
 
-creds = credopts.get_credentials()
+creds = credopts.get_credentials(lp)
 
 setup_dir = opts.setupdir
 if setup_dir is None:
@@ -140,7 +141,7 @@ provision(setup_dir, message,
           samdb_fill=samdb_fill, realm=opts.realm, domain=opts.domain,
           domainguid=opts.domain_guid, domainsid=opts.domain_sid,
           policyguid=opts.policy_guid, hostname=opts.host_name,
-          hostip=opts.host_ip, hostguid=opts.host_guid, 
+          hostip=opts.host_ip, hostip6=opts.host_ip6,
           invocationid=opts.invocationid, adminpass=opts.adminpass,
           krbtgtpass=opts.krbtgtpass, machinepass=opts.machinepass,
           dnspass=opts.dnspass, root=opts.root, nobody=opts.nobody,
@@ -148,12 +149,3 @@ provision(setup_dir, message,
           aci=opts.aci, serverrole=server_role, 
           ldap_backend=opts.ldap_backend, 
           ldap_backend_type=opts.ldap_backend_type)
-
-message("To reproduce this provision, run with:")
-def shell_escape(arg):
-    if " " in arg:
-        return '"%s"' % arg
-    return arg
-message(" ".join([shell_escape(arg) for arg in sys.argv]))
-
-message("All OK")
index edc09907a893cbc3e7cd4bf42c13391c32504e0c..9482d8c43503662a8f7a80b25201e48059a3e0a1 100644 (file)
@@ -3,7 +3,7 @@ exec smbscript "$0" ${1+"$@"}
 /*
        provision a Samba4 server
        Copyright Andrew Tridgell 2005
-       Released under the GNU GPL v2 or later
+       Released under the GNU GPL version 3 or later
 */
 
 options = GetOptions(ARGV,
index 371dfd9e7243acdf6ca6c6ac09855f272210b7bb..28c1c2976219e5fc67dfefcd25883c7f90abe03d 100644 (file)
@@ -9,8 +9,10 @@ $TTL 1W
                                 6W              ; expiry
                                 1W )            ; minimum
                        IN NS   ${HOSTNAME}
+${HOSTIP6_BASE_LINE}
                        IN A    ${HOSTIP}
 ;
+${HOSTIP6_HOST_LINE}
 ${HOSTNAME}            IN A    ${HOSTIP}
 ${HOSTGUID}._msdcs     IN CNAME ${HOSTNAME}
 ;
index 503656a9bff00b894e4db98179b72b50e75b7132..a0cfa7eb23ae71ec8efaa4d56b8ab4333e007d9d 100644 (file)
@@ -19,7 +19,6 @@ servicePrincipalName: HOST/${DNSNAME}/${REALM}
 servicePrincipalName: HOST/${NETBIOSNAME}/${REALM}
 servicePrincipalName: HOST/${DNSNAME}/${DOMAIN}
 servicePrincipalName: HOST/${NETBIOSNAME}/${DOMAIN}
-${HOSTGUID_ADD}
 
 #Provide a account for DNS keytab export
 dn: CN=dns,CN=Users,${DOMAINDN}
index 618e304077379bce4b61b8a27131e0ddd9cef896..31b2f73a256b6078cf3c2efb5de7476f43c1d7c8 100644 (file)
-#!/bin/sh
-exec smbscript "$0" ${1+"$@"}
-/*
-       set a user's password on a Samba4 server
-       Copyright Andrew Tridgell 2005
-       Copyright Andrew Bartlett 2006
-       Released under the GNU GPL v2 or later
-*/
-
-options = GetOptions(ARGV,
-               "POPT_AUTOHELP",
-               'username=s',
-               'filter=s',
-               'newpassword=s',
-               "POPT_COMMON_SAMBA",
-               "POPT_COMMON_VERSION",
-               "POPT_COMMON_CREDENTIALS",
-               'quiet');
-
-if (options == undefined) {
-   println("Failed to parse options");
-   return -1;
-}
-
-libinclude("base.js");
-libinclude("provision.js");
-
-/*
-  print a message if quiet is not set
-*/
-function message() 
-{
-       if (options["quiet"] == undefined) {
-               print(vsprintf(arguments));
-       }
-}
-
-/*
- show some help
-*/
-function ShowHelp()
-{
-       print("
-Samba4 newuser
-
-newuser [options]
-  --username     USERNAME     username
-  --filter       LDAPFILTER   LDAP Filter to set password on
-  --newpassword  PASSWORD     set password
-
-You must provide either a filter or a username, as well as password
-");
-       exit(1);
-}
-
-if (options['username'] == undefined && options['filter'] == undefined) {
-       ShowHelp();
-}
-
-if (options['newpassword'] == undefined) {
-       ShowHelp();
-}
-
-       var lp = loadparm_init();
-       var samdb = lp.get("sam database");
-       var ldb = ldb_init();
-       random_init(local);
-       ldb.session_info = system_session();
-       ldb.credentials = options.get_credentials();
-
-       /* connect to the sam */
-       var ok = ldb.connect(samdb);
-       assert(ok);
-
-       ldb.transaction_start();
-
-/* find the DNs for the domain and the domain users group */
-var attrs = new Array("defaultNamingContext");
-var attrs2 = new Array("cn");
-res = ldb.search("defaultNamingContext=*", "", ldb.SCOPE_BASE, attrs);
-assert(res.error == 0);
-assert(res.msgs.length == 1 && res.msgs[0].defaultNamingContext != undefined);
-var domain_dn = res.msgs[0].defaultNamingContext;
-assert(domain_dn != undefined);
-
-if (options['filter'] != undefined) {
-    var res = ldb.search(options['filter'],
-       domain_dn, ldb.SCOPE_SUBTREE, attrs2);
-    if (res.error != 0 || res.msgs.length != 1) {
-       message("Failed to find record for filter %s\n", options['filter']);
-       exit(1);
-    }
-} else {
-    var res = ldb.search(sprintf("samAccountName=%s", options['username']), 
-    domain_dn, ldb.SCOPE_SUBTREE, attrs2);
-    if (res.error != 0 || res.msgs.length != 1) {
-       message("Failed to find record for user %s\n", options['username']);
-       exit(1);
-    }
-}
-
-var mod = sprintf("
-dn: %s
-changetype: modify
-replace: sambaPassword
-sambaPassword: %s
-",
-    res[0].dn, options['newpassword']);
-var ok = ldb.modify(mod);
-if (ok.error != 0) {
-       message("set password for %s failed - %s\n",
-           res[0].dn, ok.errstr);
-       ldb.transaction_cancel();
-       exit(1);
-} else {
-       message("set password for %s (%s) succeded\n",
-           res[0].dn, res[0].cn);
-       
-       ldb.transaction_commit();
-}
-
-
-return 0;
+#!/usr/bin/python
+#
+#      add a new user to a Samba4 server
+#      Copyright Andrew Tridgell 2005
+#      Copyright Jelmer Vernooij 2008
+#      Released under the GNU GPL version 3 or later
+#
+
+import samba.getopt as options
+import optparse
+import pwd
+import sys
+from getpass import getpass
+from auth import system_session
+from samba.samdb import SamDB
+
+parser = optparse.OptionParser("setpassword [username] [options]")
+sambaopts = options.SambaOptions(parser)
+parser.add_option_group(sambaopts)
+parser.add_option_group(options.VersionOptions(parser))
+credopts = options.CredentialsOptions(parser)
+parser.add_option_group(credopts)
+parser.add_option("--filter", help="LDAP Filter to set password on", type=str)
+parser.add_option("--newpassword", help="Set password", type=str)
+
+opts, args = parser.parse_args()
+
+#
+#  print a message if quiet is not set
+#
+def message(text):
+       if not opts.quiet:
+               print text
+
+if len(args) == 0:
+       parser.print_usage()
+       sys.exit(1)
+
+password = opts.password;
+if password is None:
+       password = getpass("New Password: ")
+
+filter = opts.filter
+
+if filter is None:
+       username = args[0]
+       if username is None:
+               print "Either username or --filter must be specified"
+
+       filter = "(&(objectclass=user)(samAccountName=" + username + "))"
+
+
+creds = credopts.get_credentials()
+
+lp = sambaopts.get_loadparm()
+samdb = SamDB(url=lp.get("sam database"), session_info=system_session(), 
+              credentials=creds, lp=lp)
+samdb.setpassword(filter, password)
index 569b1795442f0ef3386f51269011351c864e6cdc..3bcc57ab64770169ca7d13b7fd2ee5a8259d1cf4 100755 (executable)
@@ -57,7 +57,9 @@ setup_dir = opts.setupdir
 if setup_dir is None:
        setup_dir = "setup"
 
-creds = credopts.get_credentials()
+lp = sambaopts.get_loadparm()
+smbconf = lp.configfile()
+creds = credopts.get_credentials(lp)
 
 upgrade_provision(samba3, setup_dir, message, credentials=creds, session_info=system_session(), 
-                  smbconf=sambaopts.get_loadparm_path(), targetdir=opts.targetdir)
+                  smbconf=smbconf, targetdir=opts.targetdir)
index 8c813204f3a5be210c070ff687c9a09d474ea67a..8834c4483c1e2b2562d1ff8c6ca1c0848454ec45 100644 (file)
@@ -24,6 +24,7 @@
 #include "librpc/gen_ndr/ndr_misc.h"
 #include "ntvfs/ntvfs.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "param/param.h"
 
 #define BLOB_CHECK(cmd) do { \
index 1b49e235113ccd1e53a18ee0ca08bea870af07c8..b31e026946d488d871a41a41fc3e3ba1a592139c 100644 (file)
@@ -25,6 +25,7 @@
 #include "smb_server/smb_server.h"
 #include "ntvfs/ntvfs.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "librpc/gen_ndr/ndr_security.h"
 #include "param/param.h"
 
index 3693579c460453ccbe0008206ff070d4cb1a108c..186f5548ab8cb2c6a28822dd871222d4005d84d2 100644 (file)
@@ -20,6 +20,7 @@
 #include "includes.h"
 #include "smb_server/smb_server.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "param/param.h"
 
 
index 3336169bb0462e4fc2d1680c54e2da1ab31701b6..e5ba814cb21c9f77253fb18079a2c070165471ed 100644 (file)
@@ -26,6 +26,7 @@
 #include "librpc/gen_ndr/ndr_misc.h"
 #include "ntvfs/ntvfs.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 
 #define TRANS2_CHECK_ASYNC_STATUS_SIMPLE do { \
        if (!NT_STATUS_IS_OK(req->ntvfs->async_states->status)) { \
index 5bbd7f7d5e884008cb9a361f3d4f5998fe6bc5d9..e7352f7c423972410fa728d7bdd44c64ce6ac8cb 100644 (file)
@@ -22,6 +22,7 @@
 #include "auth/credentials/credentials.h"
 #include "auth/gensec/gensec.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
 #include "smb_server/smb_server.h"
@@ -29,6 +30,7 @@
 #include "smb_server/smb2/smb2_server.h"
 #include "smbd/service_stream.h"
 #include "param/param.h"
+#include "librpc/ndr/libndr.h"
 
 static NTSTATUS smb2srv_negprot_secblob(struct smb2srv_request *req, DATA_BLOB *_blob)
 {
index dc8afeba7833320fb36458132456e849989e265a..006135f818a763f321aa7597b76b5d0fd4147707 100644 (file)
@@ -22,7 +22,7 @@ INSTALLDIR = SBINDIR
 PRIVATE_DEPENDENCIES = \
                process_model \
                service \
-               LIBSAMBA-CONFIG \
+               LIBSAMBA-HOSTCONFIG \
                LIBSAMBA-UTIL \
                POPT_SAMBA \
                PIDFILE \
index e267995596bf2b8aaa22cfeb28040cdf1d33f94f..e631975b37613d7b29a9c30ada7f4e4e9d017ac1 100644 (file)
@@ -79,7 +79,7 @@ _PUBLIC_ NTSTATUS register_process_model(const void *_ops)
        return NT_STATUS_OK;
 }
 
-NTSTATUS process_model_init(struct loadparm_context *lp_ctx)
+_PUBLIC_ NTSTATUS process_model_init(struct loadparm_context *lp_ctx)
 {
        extern NTSTATUS process_model_standard_init(void);
        extern NTSTATUS process_model_prefork_init(void);
@@ -98,7 +98,7 @@ NTSTATUS process_model_init(struct loadparm_context *lp_ctx)
 /*
   return the operations structure for a named backend of the specified type
 */
-const struct model_ops *process_model_byname(const char *name)
+_PUBLIC_ const struct model_ops *process_model_byname(const char *name)
 {
        int i;
 
index 796c8ee17bd67d27f707aa722768dd6d9c53556f..b545212091ad90ddd117d3c03784628eac81223e 100644 (file)
@@ -77,6 +77,9 @@ struct process_model_critical_sizes {
 
 extern const struct model_ops single_ops;
 
-#include "smbd/process_model_proto.h"
+const struct model_ops *process_model_startup(struct event_context *ev, const char *model);
+const struct model_ops *process_model_byname(const char *name);
+NTSTATUS register_process_model(const void *_ops);
+NTSTATUS process_model_init(struct loadparm_context *lp_ctx);
 
 #endif /* __PROCESS_MODEL_H__ */
index 638b280564d7cedde3c131f37240e5f0192af57a..48899078f7803c4912c08bedbed7e35aed9c8cae 100644 (file)
@@ -44,6 +44,6 @@ process_model_prefork_OBJ_FILES = smbd/process_prefork.o
 
 [SUBSYSTEM::process_model]
 PRIVATE_PROTO_HEADER = process_model_proto.h
-PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL LIBSAMBA-CONFIG
+PRIVATE_DEPENDENCIES = LIBSAMBA-UTIL LIBSAMBA-HOSTCONFIG
 
 process_model_OBJ_FILES = smbd/process_model.o
index deb44c0a6860529f4d0b61bec7efb44d35ed5f06..820859400e7e0ef503c20dd8711b2779a494bd6d 100644 (file)
@@ -204,9 +204,6 @@ _NORETURN_ static void standard_terminate(struct event_context *ev, const char *
           which makes leak checking easier */
        reload_charcnv(global_loadparm);
 
-       /* the secrets db should really hang off the connection structure */
-       secrets_shutdown();
-
        talloc_free(ev);
 
        /* terminate this process */
index ded84f24269b11502a16b3d6de2b2aae6fb79fbf..e1ebd133ce19ebd3c0ea59ad72f9a20649b14b08 100644 (file)
@@ -289,7 +289,7 @@ static int binary_smbd_main(const char *binary_name, int argc, const char *argv[
        /* Do *not* remove this, until you have removed
         * passdb/secrets.c, and proved that Samba still builds... */
        /* Setup the SECRETS subsystem */
-       if (!secrets_init(cmdline_lp_ctx)) {
+       if (secrets_init(talloc_autofree_context(), cmdline_lp_ctx) == NULL) {
                exit(1);
        }
 
index f2cc0a91824e8cc11ed52f847a6c0e041419f7b8..9366de986a4918fd9fae488a925eb68963c828fd 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "includes.h"
 #include "auth/gensec/gensec.h"
+#include "auth/gensec/gensec_proto.h"
 #include "auth/ntlmssp/ntlmssp.h"
 #include "lib/cmdline/popt_common.h"
 #include "torture/torture.h"
@@ -141,7 +142,7 @@ static bool torture_ntlmssp_self_check(struct torture_context *tctx)
        return true;
 }
 
-_PUBLIC_ struct torture_suite *torture_ntlmssp(TALLOC_CTX *mem_ctx)
+struct torture_suite *torture_ntlmssp(TALLOC_CTX *mem_ctx)
 {
        struct torture_suite *suite = torture_suite_create(mem_ctx, 
                                                                                                           "NTLMSSP");
index 68bbd3483a20627091f5931f331e90112e58d866..7fdd7e58bfb4f548240e714a838378474108eba3 100644 (file)
@@ -28,6 +28,7 @@
 #include "samba3/samba3.h"
 #include "libcli/security/security.h"
 #include "torture/torture.h"
+#include "auth/session_proto.h"
 
 static bool torture_pac_self_check(struct torture_context *tctx)
 {
@@ -659,7 +660,7 @@ static bool torture_pac_saved_check(struct torture_context *tctx)
        return true;
 }
 
-_PUBLIC_ struct torture_suite *torture_pac(TALLOC_CTX *mem_ctx)
+struct torture_suite *torture_pac(TALLOC_CTX *mem_ctx)
 {
        struct torture_suite *suite = torture_suite_create(mem_ctx, "PAC");
 
index 660009704b9f44515a885847e8cd80f7f443422a..89146de99d84d1fd1d2b9b8cc796948db438344a 100644 (file)
@@ -20,6 +20,7 @@
 #include "includes.h"
 #include "lib/util/dlinklist.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "torture/torture.h"
 #include "libcli/libcli.h"
 #include "torture/util.h"
index 66f9359744d5b6217cf42c016942bb5ccf94fa5d..ac71d14116b1bac0be95440572cf24229ef72386 100644 (file)
@@ -22,6 +22,7 @@
 #include "torture/torture.h"
 #include "torture/basic/proto.h"
 #include "libcli/libcli.h"
+#include "libcli/raw/raw_proto.h"
 #include "torture/util.h"
 #include "system/filesys.h"
 #include "system/time.h"
index 8644c656eba30f29beb6107bd91217280c879c48..e3d63c09ecc74f57a723c37d994579ddbf83c8c5 100644 (file)
@@ -24,6 +24,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "system/time.h"
 #include "system/filesys.h"
 #include "libcli/libcli.h"
index 8b84880c06c57ab8f8411cdb45b3ba98ae81b466..b71c85aeb875bf98b694261801fed950cdb6e1e7 100644 (file)
@@ -25,6 +25,7 @@
 #include "torture/util.h"
 #include "system/filesys.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 
 #include "torture/raw/proto.h"
 
index 09f54ed6a709bc367c041a8a8f8cb10c5d00d878..89e05d6839fa762f68be8f778cfb76b6e1ad1e4a 100644 (file)
@@ -23,6 +23,7 @@
 #include "torture/torture.h"
 #include "system/filesys.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 #include "torture/util.h"
 
index d991f117cdc8f9a733fcb92e33060fa4c8f8be26..188fc1bc69b437849cad8a3e1e1053658321565a 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "system/time.h"
 #include "system/wait.h"
 #include "system/filesys.h"
index d462f97da4ae60b22fcb221a8e5c0779cdfb227b..6ccd4ba1ccacd1920b7987d1e2528a5fd990e055 100644 (file)
@@ -22,6 +22,7 @@
 #include "libcli/libcli.h"
 #include "torture/util.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "system/filesys.h"
 #include "param/param.h"
 
index d0c048425d197f1ef4173ad8b3df40aa8001c274..4caeee72a47ae65188fc92b5fde42445228d5c31 100644 (file)
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 #include "torture/util.h"
 #include "system/time.h"
 #include "libcli/smb_composite/smb_composite.h"
+#include "libcli/smb_composite/proto.h"
 #include "auth/credentials/credentials.h"
 #include "param/param.h"
 
index 8c61771e9be8ac4840ecd42594c99bc2a05607cd..7209838d33a26e46aa03a752a47e9556c94d88e8 100644 (file)
@@ -2,7 +2,7 @@
 [LIBRARY::torture]
 PRIVATE_PROTO_HEADER = proto.h
 PUBLIC_DEPENDENCIES = \
-               LIBSAMBA-CONFIG \
+               LIBSAMBA-HOSTCONFIG \
                LIBSAMBA-UTIL \
                LIBTALLOC \
                LIBPOPT
@@ -263,7 +263,7 @@ MANPAGES += torture/man/smbtorture.1
 [BINARY::gentest]
 INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG \
+               LIBSAMBA-HOSTCONFIG \
                LIBSAMBA-UTIL \
                LIBPOPT \
                POPT_SAMBA \
@@ -282,7 +282,7 @@ MANPAGES += torture/man/gentest.1
 [BINARY::masktest]
 INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG \
+               LIBSAMBA-HOSTCONFIG \
                LIBSAMBA-UTIL \
                LIBPOPT \
                POPT_SAMBA \
@@ -305,7 +305,7 @@ PRIVATE_DEPENDENCIES = \
                POPT_CREDENTIALS \
                LIBSAMBA-UTIL \
                LIBCLI_SMB \
-               LIBSAMBA-CONFIG
+               LIBSAMBA-HOSTCONFIG
 # End BINARY locktest
 #################################
 
index 11b11dcc00de2bdb52911d7f10217f6e9ce81a84..65b02ed5e8e1fea277b73d546fbdc4eee68bac87 100644 (file)
@@ -21,7 +21,7 @@
 */
 
 #include "includes.h"
-#include "libcli/ldap/ldap.h"
+#include "libcli/ldap/ldap_client.h"
 #include "torture/torture.h"
 #include "torture/ldap/proto.h"
 
@@ -38,7 +38,7 @@ NTSTATUS torture_ldap_bind(struct ldap_connection *conn, const char *userdn, con
        return status;
 }
 
-_PUBLIC_ NTSTATUS torture_ldap_bind_sasl(struct ldap_connection *conn, 
+NTSTATUS torture_ldap_bind_sasl(struct ldap_connection *conn, 
                                struct cli_credentials *creds, 
                                struct loadparm_context *lp_ctx)
 {
@@ -54,7 +54,7 @@ _PUBLIC_ NTSTATUS torture_ldap_bind_sasl(struct ldap_connection *conn,
 }
 
 /* open a ldap connection to a server */
-_PUBLIC_ NTSTATUS torture_ldap_connection(struct torture_context *tctx, 
+NTSTATUS torture_ldap_connection(struct torture_context *tctx, 
                                          struct ldap_connection **conn, 
                                          const char *url)
 {
index edc74ee23e6c2fe349be1ef7ea535a652f5aa6d8..4b5f4b582c581eb3a18d32db47d2b9092d503962 100644 (file)
@@ -443,7 +443,7 @@ static bool test_netserverenum(struct torture_context *tctx,
        return true;
 }
 
-_PUBLIC_ NTSTATUS smbcli_rap_netservergetinfo(struct smbcli_tree *tree,
+NTSTATUS smbcli_rap_netservergetinfo(struct smbcli_tree *tree,
                                              struct smb_iconv_convenience *iconv_convenience, 
                                     TALLOC_CTX *mem_ctx,
                                     struct rap_WserverGetInfo *r)
index 7fd74e3cbee1faf80f635039ee1d22c6a7667b31..2ed83d308cf35ec7dfab6d89cd2edf30872db093 100644 (file)
@@ -20,6 +20,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 #include "torture/util.h"
 
index 6f139f8530df9187761561fbf80ebde460034bc2..01175836df0fc714b77ec2e9453cdb506f5c13ec 100644 (file)
@@ -21,6 +21,7 @@
 #include "torture/torture.h"
 #include "system/time.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 #include "torture/util.h"
 
index 20135d2fa9169b4256961110321013a51cb1481d..15e736fff51be6ae951eb995c1d00922ddcbeb6c 100644 (file)
@@ -20,6 +20,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/composite/composite.h"
 #include "libcli/smb_composite/smb_composite.h"
 #include "lib/cmdline/popt_common.h"
index c4dd4c5bf2b96b667987685206f085fa5a7b0ca6..4cb366f807dfdaa6d794a82ed23a70c7198864e2 100644 (file)
@@ -22,6 +22,7 @@
 #include "torture/torture.h"
 #include "libcli/raw/ioctl.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 #include "torture/util.h"
 
index 6eb43bd538e7d1392b5ebf12b988f039268f9103..cd8d60679520258a21ab96e28e5f63d53ca73e49 100644 (file)
@@ -20,6 +20,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "system/time.h"
 #include "system/filesys.h"
 #include "libcli/libcli.h"
index 16e9f0ec759e4fd6e184cfd863c4f6ddba35ffa1..86030c538abc3aff66ff4852d8bda88c4b45248e 100644 (file)
@@ -22,6 +22,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "system/time.h"
 #include "system/filesys.h"
 #include "libcli/libcli.h"
index 93e94150d74b9a855f67c2c9791fcb191438b202..cea959347d8cf38bc483028114cf0ed9d204512f 100644 (file)
@@ -20,6 +20,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 #include "torture/util.h"
 #include "param/param.h"
index 846a9787cb455da0a445ec8b22ce199483593732..5b5db3a55726f80c870ed082d830fa80464e4899 100644 (file)
@@ -21,6 +21,7 @@
 #include "torture/torture.h"
 #include "system/filesys.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 #include "torture/util.h"
 
index 2967abdbe3cca1acfb2e5414d2d960103a5bfb4c..25c91eb88bc9cce202e88c71d038334a900c1565 100644 (file)
@@ -20,6 +20,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 #include "system/filesys.h"
 #include "torture/util.h"
index 76bc0ca53de2fc8b4362429d30d8bbbc3ccdb1f5..d28a8bd14eb562726fddec07c7736b6f97ebe495 100644 (file)
@@ -20,6 +20,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "system/time.h"
 #include "system/filesys.h"
 #include "librpc/gen_ndr/security.h"
index e8b2f5681354158c6b278e3384dbc91c9521c018..a5b1434a47417e2a2f27771493ec982ee2ca4b9b 100644 (file)
@@ -22,6 +22,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "system/time.h"
 #include "system/filesys.h"
 #include "libcli/libcli.h"
index 8b2e4fb17718f699559b0de5ec604a8d6b5374eb..1927a0f027df77b3697275faf3ce426ec78fb296 100644 (file)
@@ -21,6 +21,7 @@
 #include "torture/torture.h"
 #include "librpc/gen_ndr/security.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 #include "torture/util.h"
 #include "lib/events/events.h"
index 65d803882c63bb03c1f1a7da8ea3a4f05394ebd8..c7673be52633121714f4f81b3c420de56d9d26c1 100644 (file)
@@ -21,6 +21,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 #include "torture/util.h"
 #include "librpc/rpc/dcerpc.h"
index b052da2d69be34d4eeab5142e46cddc7a08941df..c8420c279eb43b5f19ac5150ddae96589d90baab 100644 (file)
@@ -20,6 +20,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "system/time.h"
 #include "system/filesys.h"
 #include "libcli/libcli.h"
index 749b10cc074336f39aced9259cbf07418d1de431..15a7f6c4a32cbbe6a3bc11af774809600b0b0a91 100644 (file)
@@ -20,6 +20,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "system/time.h"
 #include "system/filesys.h"
 #include "libcli/libcli.h"
index 725ed261aace300d6038c6e7dc2a8a24dc18063d..2a6aef20b595fa64a2eb1166ba22a1ed0e0790cc 100644 (file)
@@ -21,6 +21,7 @@
 #include "torture/torture.h"
 #include "system/filesys.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 #include "torture/util.h"
 
@@ -42,7 +43,7 @@ static bool single_search_callback(void *private, const union smb_search_data *f
 /*
   do a single file (non-wildcard) search 
 */
-_PUBLIC_ NTSTATUS torture_single_search(struct smbcli_state *cli, 
+NTSTATUS torture_single_search(struct smbcli_state *cli, 
                               TALLOC_CTX *tctx,
                               const char *pattern,
                               enum smb_search_level level,
index 90ccde72133d06125aa90911dd82c49862863542..10eaa6710d42a4f792c85c81ac2d030fb6b8b4b2 100644 (file)
@@ -21,6 +21,7 @@
 #include "torture/torture.h"
 #include "system/time.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 #include "torture/util.h"
 #include "torture/raw/proto.h"
index d34bbeb9a5667713e71e7877c5d26090a3534732..ddddeba41be378626ef911fdd164adc36baa8f16 100644 (file)
@@ -21,6 +21,7 @@
 #include "torture/torture.h"
 #include "system/filesys.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/libcli.h"
 #include "torture/util.h"
 #include "param/param.h"
index 98a0dde8c7f9a43d40ac929ea2161b2cf55c21f3..5d3628ca86ff866bfd9afa28f8fd5a2b4ffd5f00 100644 (file)
@@ -21,6 +21,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "system/time.h"
 #include "system/filesys.h"
 #include "libcli/libcli.h"
index 71965397f6081506e627ea6a90bd871c355c11c6..5ae0201855fe2247309a2b3e235918e1b5a51ed8 100644 (file)
@@ -25,6 +25,7 @@
 #include "librpc/gen_ndr/ndr_misc.h"
 #include "librpc/ndr/ndr_table.h"
 #include "torture/rpc/rpc.h"
+#include "librpc/rpc/dcerpc_proto.h"
 
 
 #if 1
index f70649d55808c47b39d3f0608bc8b02a2224661f..205ee1ec861e809d2f8b57c9bf85174c8cf9cbaf 100644 (file)
@@ -26,6 +26,7 @@
 #include "librpc/ndr/ndr_table.h"
 #include "torture/rpc/rpc.h"
 #include "param/param.h"
+#include "librpc/rpc/dcerpc_proto.h"
 
 
        
index dc2601d86e6110d4ce99935bdc73f6fa1f024be2..9cfdd805785053ffd40dec2986ec2c7fe2a0fc60 100644 (file)
@@ -6,7 +6,7 @@
 
    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 2 of the License, or
+   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,
index 830b77aed97855804a4c8a0ed10c9d1ba4651cfa..708d46a5dcb2a167108c0913f6df7bef6a354427 100644 (file)
@@ -22,6 +22,7 @@
 #include "torture/torture.h"
 #include "librpc/gen_ndr/ndr_epmapper_c.h"
 #include "librpc/ndr/ndr_table.h"
+#include "librpc/rpc/dcerpc_proto.h"
 #include "torture/rpc/rpc.h"
 
 
index a39c91f853aa09d6b4afd4e35c073a2c19d328d5..c8e421a674980201bd45a6b8835fc9e0d5c77bf8 100644 (file)
@@ -6,7 +6,7 @@
 
    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 2 of the License, or
+   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,
index d4b5fa9c6feddc3d5119b3bfcf3369eff5b88ad1..fed432f31c5f1555a78f1f0887455c05cd3b764f 100644 (file)
@@ -25,6 +25,7 @@
 #include "librpc/ndr/ndr_table.h"
 #include "torture/rpc/rpc.h"
 #include "param/param.h"
+#include "librpc/rpc/dcerpc_proto.h"
 
 
 /*
index 385c734d9c2cafdd526a9e887d2a0b525dd2a208..d0a07277877887ab10703f2e3f6a49ec504c9fba 100644 (file)
@@ -42,6 +42,48 @@ struct torture_rpc_tcase_data {
        struct cli_credentials *credentials;
 };
 
+NTSTATUS torture_rpc_connection(struct torture_context *tctx,
+                               struct dcerpc_pipe **p, 
+                               const struct ndr_interface_table *table);
+
+struct test_join *torture_join_domain(struct torture_context *tctx,
+                                              const char *machine_name, 
+                                     uint32_t acct_flags,
+                                     struct cli_credentials **machine_credentials);
+const struct dom_sid *torture_join_sid(struct test_join *join);
+void torture_leave_domain(struct test_join *join);
+struct torture_rpc_tcase *torture_suite_add_rpc_iface_tcase(struct torture_suite *suite, 
+                                                               const char *name,
+                                                               const struct ndr_interface_table *table);
+
+struct torture_test *torture_rpc_tcase_add_test(
+                                       struct torture_rpc_tcase *tcase, 
+                                       const char *name, 
+                                       bool (*fn) (struct torture_context *, struct dcerpc_pipe *));
+struct torture_rpc_tcase *torture_suite_add_anon_rpc_iface_tcase(struct torture_suite *suite, 
+                                                               const char *name,
+                                                               const struct ndr_interface_table *table);
+
+struct torture_test *torture_rpc_tcase_add_test_ex(
+                                       struct torture_rpc_tcase *tcase, 
+                                       const char *name, 
+                                       bool (*fn) (struct torture_context *, struct dcerpc_pipe *,
+                                                               void *),
+                                       void *userdata);
+struct torture_rpc_tcase *torture_suite_add_machine_rpc_iface_tcase(
+                               struct torture_suite *suite, 
+                               const char *name,
+                               const struct ndr_interface_table *table,
+                               const char *machine_name);
+struct torture_test *torture_rpc_tcase_add_test_creds(
+                                       struct torture_rpc_tcase *tcase, 
+                                       const char *name, 
+                                       bool (*fn) (struct torture_context *, struct dcerpc_pipe *, struct cli_credentials *));
+bool torture_suite_init_rpc_tcase(struct torture_suite *suite, 
+                                          struct torture_rpc_tcase *tcase, 
+                                          const char *name,
+                                          const struct ndr_interface_table *table);
+
 
 
 #endif /* __TORTURE_RPC_H__ */
index 204a9f2865cb76f02ed0683203518a000de4da6a..8eb1f54b4fd3d3bd9223e36e907a4660f108c4fd 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/rap/rap.h"
 #include "torture/torture.h"
 #include "torture/util.h"
index aba71477168c655c6d12f2a05fc824f85cfd7c12..24b2511bc75e98e77f1ce021ada80e327f6ee2d3 100644 (file)
@@ -30,6 +30,7 @@
 #include "lib/cmdline/popt_common.h"
 #include "torture/rpc/rpc.h"
 #include "auth/gensec/schannel_proto.h"
+#include "auth/gensec/gensec.h"
 #include "libcli/auth/libcli_auth.h"
 #include "param/param.h"
 
index 865ebf9fd21be6b8cf153cb526da9e4b5d67a5b4..3b152d92aa739ad083f22b0bc152ddff828747b1 100644 (file)
@@ -29,6 +29,7 @@
 #include "system/time.h"
 #include "torture/rpc/rpc.h"
 #include "auth/gensec/schannel_proto.h"
+#include "auth/gensec/gensec.h"
 #include "libcli/auth/libcli_auth.h"
 #include "libcli/security/security.h"
 #include "librpc/gen_ndr/ndr_netlogon.h"
index 03a2c9fd078e2bde8468a794afec0c8d3ca4ab79..b761f406ec2c5d45d6ace07927d1707a4407758d 100644 (file)
@@ -25,6 +25,7 @@
 #include "librpc/ndr/ndr_table.h"
 #include "torture/rpc/rpc.h"
 #include "param/param.h"
+#include "librpc/rpc/dcerpc_proto.h"
 
 /*
   work out how many calls there are for an interface
index 5a91366980b1cddf826ff4c447d282c48cbf2407..19b871f9c092bb08639ab69ba94e7cdd76f86c4e 100644 (file)
@@ -31,6 +31,8 @@
 #include "libcli/security/security.h"
 #include "system/filesys.h"
 #include "param/param.h"
+#include "librpc/rpc/dcerpc_proto.h"
+#include "auth/gensec/gensec.h"
 
 #define TEST_MACHINE_NAME "schannel"
 
index 96db7d1ec509c4ca406fb0c92df1445cac1293c7..19cff53d8479d5dc90eed1923dd1d958513f9642 100644 (file)
@@ -6,7 +6,7 @@
    
    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 2 of the License, or
+   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,
@@ -28,6 +28,7 @@
 #include "lib/events/events.h"
 #include "smbd/process_model.h"
 #include "smb_server/smb_server.h"
+#include "librpc/rpc/dcerpc_proto.h"
 #include "lib/socket/netif.h"
 #include "util/dlinklist.h"
 #include "ntvfs/ntvfs.h"
index f234700cb8f9b53ab225b10996fd772388d79f39..d07611264bcca226eb9b1d444f07459988b382a2 100644 (file)
@@ -46,7 +46,7 @@ static bool wrap_simple_1smb2_test(struct torture_context *torture_ctx,
        return ret;
 }
 
-_PUBLIC_ struct torture_test *torture_suite_add_1smb2_test(struct torture_suite *suite,
+struct torture_test *torture_suite_add_1smb2_test(struct torture_suite *suite,
                                                           const char *name,
                                                           bool (*run) (struct torture_context *,
                                                                        struct smb2_tree *))
index 8f6dae7665c49d5422114cda716f32aa868121ec..39d85e0572f9f968aa4e37da4b0f088a4ad1f796 100644 (file)
@@ -45,7 +45,7 @@ bool torture_register_suite(struct torture_suite *suite)
 }
 
 
-int torture_init(void)
+_PUBLIC_ int torture_init(void)
 {
        extern NTSTATUS torture_base_init(void);
        extern NTSTATUS torture_ldap_init(void);
index e191fb362978a988b6746a8f57e3cb088ce62ae1..26ecdb567b4a7f77de8d537c056dbdd293df2c0e 100644 (file)
@@ -34,7 +34,8 @@ extern int torture_failures;
 extern int torture_numasync;
 
 struct torture_test;
+int torture_init(void);
+bool torture_register_suite(struct torture_suite *suite);
 
-#include "torture/proto.h"
 
 #endif /* __TORTURE_H__ */
index 503a4f4decd6b65c73fc5de1ffd6ee4ff30a2839..6645d9b012852eb9ff52577cded922525235ba3c 100644 (file)
@@ -368,5 +368,20 @@ bool torture_setting_bool(struct torture_context *test,
 struct torture_suite *torture_find_suite(struct torture_suite *parent, 
                                                                                 const char *name);
 
+NTSTATUS torture_temp_dir(struct torture_context *tctx, 
+                                  const char *prefix, 
+                                  char **tempdir);
+
+struct torture_test *torture_tcase_add_simple_test(struct torture_tcase *tcase,
+               const char *name,
+               bool (*run) (struct torture_context *test, void *tcase_data));
+
+
+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, 
+                                            const struct torture_ui_ops *ui_ops);
 
 #endif /* __TORTURE_UI_H__ */
index 3203f91bc03df05372471c329388678c8d495342..a1333ac5bdfc91faaf5cbc63c4b16e366f562fd9 100644 (file)
@@ -22,6 +22,7 @@
 #include "torture/basic/proto.h"
 #include "libcli/libcli.h"
 #include "libcli/raw/interfaces.h"
+#include "libcli/raw/raw_proto.h"
 #include "lib/cmdline/popt_common.h"
 #include "auth/credentials/credentials.h"
 #include "param/param.h"
index d7c8f479e648008061690baa2e127f3574096516..cce8e18fdcc7772ee1dc5acf607d3aca8935decd 100644 (file)
 #include "includes.h"
 #include "auth/auth.h"
 #include "lib/ldb_wrap.h"
+#include "torture/torture.h"
+#include "libcli/raw/libcliraw.h"
 #include "torture/util.h"
+#include "librpc/ndr/libndr.h"
 
 #include "param/param.h"
 #include <Python.h>
 #include "scripting/python/modules.h"
 
 NTSTATUS provision_bare(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx,
-                                               struct provision_settings *settings)
+                       struct provision_settings *settings)
 {
-       bool ok;
        PyObject *provision_mod, *provision_dict, *provision_fn, *result, *parameters;
-       struct ldb_context *ldb;
-       char *sam_ldb_path;
        
        DEBUG(0,("Provision for Become-DC test using python\n"));
 
index ba62f3789c1cc3d6611bd7f777d3149f851fddb4..513070500ed78de38960259e746065e9807bb8ca 100644 (file)
@@ -21,6 +21,7 @@
 #include "includes.h"
 #include "lib/cmdline/popt_common.h"
 #include "libcli/raw/libcliraw.h"
+#include "libcli/raw/raw_proto.h"
 #include "libcli/raw/ioctl.h"
 #include "libcli/libcli.h"
 #include "system/filesys.h"
index 9e79898373af2cec460c043f6514d6a1afa24604..a7d82684e4305f232943251d2969374576b1a70b 100644 (file)
@@ -5,7 +5,7 @@
 [BINARY::ntlm_auth]
 INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG \
+               LIBSAMBA-HOSTCONFIG \
                LIBSAMBA-UTIL \
                LIBPOPT \
                POPT_SAMBA \
@@ -27,7 +27,7 @@ MANPAGES += utils/man/ntlm_auth.1
 [BINARY::getntacl]
 INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG \
+               LIBSAMBA-HOSTCONFIG \
                LIBSAMBA-UTIL \
                NDR_XATTR \
                WRAP_XATTR \
@@ -65,7 +65,7 @@ setnttoken_OBJ_FILES = utils/setnttoken.o
 [BINARY::nmblookup]
 INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG \
+               LIBSAMBA-HOSTCONFIG \
                LIBSAMBA-UTIL \
                LIBCLI_NBT \
                LIBPOPT \
@@ -82,7 +82,7 @@ nmblookup_OBJ_FILES = utils/nmblookup.o
 [BINARY::testparm]
 INSTALLDIR = BINDIR
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG \
+               LIBSAMBA-HOSTCONFIG \
                LIBSAMBA-UTIL \
                LIBPOPT \
                samba-socket \
index d3ed02b50e91814451da88e62935743a9fb87a69..4423c44c15cafa13ff248eb0f08b0a9b4574c53d 100644 (file)
@@ -6,7 +6,7 @@
 INSTALLDIR = BINDIR
 PRIVATE_PROTO_HEADER = net_proto.h
 PRIVATE_DEPENDENCIES = \
-               LIBSAMBA-CONFIG \
+               LIBSAMBA-HOSTCONFIG \
                LIBSAMBA-UTIL \
                LIBSAMBA-NET \
                LIBPOPT \
index de8a43ec02c24df626017d93beb0ca30dff8f785..92ac41f1d2522ef4b28f40fff5eb4bafabb61ae5 100644 (file)
@@ -210,13 +210,26 @@ NTSTATUS idmap_xid_to_sid(struct idmap_context *idmap_ctx, TALLOC_CTX *mem_ctx,
        NTSTATUS status = NT_STATUS_NONE_MAPPED;
        struct ldb_context *ldb = idmap_ctx->ldb_ctx;
        struct ldb_result *res = NULL;
-       uint32_t low, high;
        struct dom_sid *unix_sid, *new_sid;
        TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
+       const char *id_type;
+
+       switch (unixid->type) {
+               case ID_TYPE_UID:
+                       id_type = "ID_TYPE_UID";
+                       break;
+               case ID_TYPE_GID:
+                       id_type = "ID_TYPE_GID";
+                       break;
+               default:
+                       DEBUG(1, ("unixid->type must be type gid or uid\n"));
+                       status = NT_STATUS_NONE_MAPPED;
+                       goto failed;
+       }
 
        ret = ldb_search_exp_fmt(ldb, tmp_ctx, &res, NULL, LDB_SCOPE_SUBTREE,
-                                NULL, "(&(objectClass=sidMap)(xidNumber=%u))",
-                                unixid->id);
+                                NULL, "(&(|(type=ID_TYPE_BOTH)(type=%s))"
+                                "(xidNumber=%u))", id_type, unixid->id);
        if (ret != LDB_SUCCESS) {
                DEBUG(1, ("Search failed: %s\n", ldb_errstring(ldb)));
                status = NT_STATUS_NONE_MAPPED;
@@ -235,40 +248,9 @@ NTSTATUS idmap_xid_to_sid(struct idmap_context *idmap_ctx, TALLOC_CTX *mem_ctx,
                return NT_STATUS_OK;
        }
 
-       DEBUG(6, ("xid not found in idmap db, trying to allocate SID.\n"));
-
-       /* Now redo the search to make sure noone added a mapping for that SID
-        * while we weren't looking.*/
-       ret = ldb_search_exp_fmt(ldb, tmp_ctx, &res, NULL, LDB_SCOPE_SUBTREE,
-                                NULL, "(&(objectClass=sidMap)(xidNumber=%u))",
-                                unixid->id);
-       if (ret != LDB_SUCCESS) {
-               DEBUG(1, ("Search failed: %s\n", ldb_errstring(ldb)));
-               status = NT_STATUS_NONE_MAPPED;
-               goto failed;
-       }
-
-       if (res->count > 0) {
-               DEBUG(1, ("sidMap modified while trying to add a mapping.\n"));
-               status = NT_STATUS_RETRY;
-               goto failed;
-       }
-
-       ret = idmap_get_bounds(idmap_ctx, &low, &high);
-       if (ret != LDB_SUCCESS) {
-               DEBUG(1, ("Failed to get id bounds from db: %u\n", ret));
-               status = NT_STATUS_NONE_MAPPED;
-               goto failed;
-       }
-
-       if (unixid->id >= low && unixid->id <= high) {
-               /* An existing xid would have been mapped before */
-               status = NT_STATUS_NONE_MAPPED;
-               goto failed;
-       }
+       DEBUG(6, ("xid not found in idmap db, create S-1-22- SID.\n"));
 
-       /* For local users, we just create a rid = uid +1, so root doesn't end
-        * up with a 0 rid */
+       /* For local users/groups , we just create a rid = uid/gid */
        if (unixid->type == ID_TYPE_UID) {
                unix_sid = dom_sid_parse_talloc(tmp_ctx, "S-1-22-1");
        } else {
@@ -279,7 +261,7 @@ NTSTATUS idmap_xid_to_sid(struct idmap_context *idmap_ctx, TALLOC_CTX *mem_ctx,
                goto failed;
        }
 
-       new_sid = dom_sid_add_rid(mem_ctx, unix_sid, unixid->id + 1);
+       new_sid = dom_sid_add_rid(mem_ctx, unix_sid, unixid->id);
        if (new_sid == NULL) {
                status = NT_STATUS_NO_MEMORY;
                goto failed;
@@ -326,42 +308,27 @@ NTSTATUS idmap_sid_to_xid(struct idmap_context *idmap_ctx, TALLOC_CTX *mem_ctx,
        bool hwm_entry_exists;
        TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
 
-       ret = ldb_search_exp_fmt(ldb, tmp_ctx, &res, NULL, LDB_SCOPE_SUBTREE,
-                                NULL, "(&(objectClass=sidMap)(objectSid=%s))",
-                                ldap_encode_ndr_dom_sid(tmp_ctx, sid));
-       if (ret != LDB_SUCCESS) {
-               DEBUG(1, ("Search failed: %s\n", ldb_errstring(ldb)));
-               status = NT_STATUS_NONE_MAPPED;
-               goto failed;
-       }
-
-       if (res->count == 1) {
-               new_xid = ldb_msg_find_attr_as_uint(res->msgs[0], "xidNumber",
-                                                   -1);
-               if (new_xid == (uint32_t) -1) {
-                       DEBUG(1, ("Invalid xid mapping.\n"));
-                       status = NT_STATUS_NONE_MAPPED;
-                       goto failed;
-               }
+       if (dom_sid_in_domain(idmap_ctx->unix_users_sid, sid)) {
+               uint32_t rid;
+               DEBUG(6, ("This is a local unix uid, just calculate that.\n"));
+               status = dom_sid_split_rid(tmp_ctx, sid, NULL, &rid);
+               if (!NT_STATUS_IS_OK(status)) goto failed;
 
                *unixid = talloc(mem_ctx, struct unixid);
                if (*unixid == NULL) {
                        status = NT_STATUS_NO_MEMORY;
                        goto failed;
                }
-
-               (*unixid)->id = new_xid;
-               (*unixid)->type = ID_TYPE_BOTH;
+               (*unixid)->id = rid;
+               (*unixid)->type = ID_TYPE_UID;
 
                talloc_free(tmp_ctx);
                return NT_STATUS_OK;
        }
 
-       DEBUG(6, ("No existing mapping found, attempting to create one.\n"));
-
-       if (dom_sid_in_domain(idmap_ctx->unix_users_sid, sid)) {
+       if (dom_sid_in_domain(idmap_ctx->unix_groups_sid, sid)) {
                uint32_t rid;
-               DEBUG(6, ("This is a local unix uid, just calculate that.\n"));
+               DEBUG(6, ("This is a local unix gid, just calculate that.\n"));
                status = dom_sid_split_rid(tmp_ctx, sid, NULL, &rid);
                if (!NT_STATUS_IS_OK(status)) goto failed;
 
@@ -370,30 +337,60 @@ NTSTATUS idmap_sid_to_xid(struct idmap_context *idmap_ctx, TALLOC_CTX *mem_ctx,
                        status = NT_STATUS_NO_MEMORY;
                        goto failed;
                }
-               (*unixid)->id = rid - 1;
-               (*unixid)->type = ID_TYPE_UID;
+               (*unixid)->id = rid;
+               (*unixid)->type = ID_TYPE_GID;
 
                talloc_free(tmp_ctx);
                return NT_STATUS_OK;
+        }
+
+       ret = ldb_search_exp_fmt(ldb, tmp_ctx, &res, NULL, LDB_SCOPE_SUBTREE,
+                                NULL, "(&(objectClass=sidMap)(objectSid=%s))",
+                                ldap_encode_ndr_dom_sid(tmp_ctx, sid));
+       if (ret != LDB_SUCCESS) {
+               DEBUG(1, ("Search failed: %s\n", ldb_errstring(ldb)));
+               status = NT_STATUS_NONE_MAPPED;
+               goto failed;
        }
 
-       if (dom_sid_in_domain(idmap_ctx->unix_groups_sid, sid)) {
-               uint32_t rid;
-               DEBUG(6, ("This is a local unix gid, just calculate that.\n"));
-               status = dom_sid_split_rid(tmp_ctx, sid, NULL, &rid);
-               if (!NT_STATUS_IS_OK(status)) goto failed;
+       if (res->count == 1) {
+               const char *type = ldb_msg_find_attr_as_string(res->msgs[0],
+                                                              "type", NULL);
+               new_xid = ldb_msg_find_attr_as_uint(res->msgs[0], "xidNumber",
+                                                   -1);
+               if (new_xid == (uint32_t) -1) {
+                       DEBUG(1, ("Invalid xid mapping.\n"));
+                       status = NT_STATUS_NONE_MAPPED;
+                       goto failed;
+               }
+
+               if (type == NULL) {
+                       DEBUG(1, ("Invalid type for mapping entry.\n"));
+                       status = NT_STATUS_NONE_MAPPED;
+                       goto failed;
+               }
 
                *unixid = talloc(mem_ctx, struct unixid);
                if (*unixid == NULL) {
                        status = NT_STATUS_NO_MEMORY;
                        goto failed;
                }
-               (*unixid)->id = rid - 1;
-               (*unixid)->type = ID_TYPE_GID;
+
+               (*unixid)->id = new_xid;
+
+               if (strcmp(type, "ID_TYPE_BOTH") == 0) {
+                       (*unixid)->type = ID_TYPE_BOTH;
+               } else if (strcmp(type, "ID_TYPE_UID") == 0) {
+                       (*unixid)->type = ID_TYPE_UID;
+               } else {
+                       (*unixid)->type = ID_TYPE_GID;
+               }
 
                talloc_free(tmp_ctx);
                return NT_STATUS_OK;
-        }
+       }
+
+       DEBUG(6, ("No existing mapping found, attempting to create one.\n"));
 
        trans = ldb_transaction_start(ldb);
        if (trans != LDB_SUCCESS) {
@@ -585,6 +582,12 @@ NTSTATUS idmap_sid_to_xid(struct idmap_context *idmap_ctx, TALLOC_CTX *mem_ctx,
                goto failed;
        }
 
+       ret = ldb_msg_add_string(map_msg, "type", "ID_TYPE_BOTH");
+       if (ret != LDB_SUCCESS) {
+               status = NT_STATUS_NONE_MAPPED;
+               goto failed;
+       }
+
        ret = ldb_msg_add_string(map_msg, "cn", sid_string);
        if (ret != LDB_SUCCESS) {
                status = NT_STATUS_NONE_MAPPED;
index 045d50c568b593f0a9bd1cfcf3d511e1e5c46bde..6eae92cc68c4ed0f7221ace5ecce031c0e7bc1f9 100644 (file)
@@ -22,6 +22,8 @@
 #ifndef _IDMAP_H_
 #define _IDMAP_H_
 
+#include "librpc/gen_ndr/winbind.h"
+
 struct idmap_context {
        struct loadparm_context *lp_ctx;
        struct ldb_context *ldb_ctx;
@@ -29,24 +31,6 @@ struct idmap_context {
        struct dom_sid *unix_users_sid;
 };
 
-enum id_type {
-        ID_TYPE_NOT_SPECIFIED = 0,
-        ID_TYPE_UID,
-        ID_TYPE_GID,
-       ID_TYPE_BOTH
-};
-
-struct unixid {
-        uint32_t id;
-        enum id_type type;
-};
-
-struct id_mapping {
-       struct unixid *unixid;
-       struct dom_sid *sid;
-       NTSTATUS status;
-};
-
 #include "winbind/idmap_proto.h"
 
 #endif
index 5d7f7fd7a652b4ed10301bbc69485482d5108a62..0535045adb200ebf7c9e6d8b57b9d189bf9a37d7 100644 (file)
@@ -22,6 +22,7 @@
 #include "winbind/wb_server.h"
 #include "lib/messaging/irpc.h"
 #include "libcli/composite/composite.h"
+#include "libcli/security/proto.h"
 #include "librpc/gen_ndr/ndr_winbind.h"
 #include "smbd/service_task.h"
 
@@ -71,6 +72,71 @@ static void wb_irpc_SamLogon_callback(struct composite_context *ctx)
        irpc_send_reply(s->msg, status);
 }
 
+struct wb_irpc_get_idmap_state {
+       struct irpc_message *msg;
+       struct winbind_get_idmap *req;
+       int level;
+};
+
+static void wb_irpc_get_idmap_callback(struct composite_context *ctx);
+
+static NTSTATUS wb_irpc_get_idmap(struct irpc_message *msg,
+                                 struct winbind_get_idmap *req)
+{
+       struct wbsrv_service *service = talloc_get_type(msg->private,
+                                       struct wbsrv_service);
+       struct wb_irpc_get_idmap_state *s;
+       struct composite_context *ctx;
+
+       DEBUG(5, ("wb_irpc_get_idmap called\n"));
+
+       s = talloc(msg, struct wb_irpc_get_idmap_state);
+       NT_STATUS_HAVE_NO_MEMORY(s);
+
+       s->msg = msg;
+       s->req = req;
+       s->level = req->in.level;
+
+       switch(s->level) {
+               case WINBIND_IDMAP_LEVEL_SIDS_TO_XIDS:
+                       ctx = wb_sids2xids_send(msg, service, req->in.count,
+                                               req->in.ids);
+                       break;
+               case WINBIND_IDMAP_LEVEL_XIDS_TO_SIDS:
+                       ctx = wb_xids2sids_send(msg, service, req->in.count,
+                                               req->in.ids);
+                       break;
+       }
+       NT_STATUS_HAVE_NO_MEMORY(ctx);
+
+       composite_continue(ctx, ctx, wb_irpc_get_idmap_callback, s);
+       msg->defer_reply = true;
+
+       return NT_STATUS_OK;
+}
+
+static void wb_irpc_get_idmap_callback(struct composite_context *ctx)
+{
+       struct wb_irpc_get_idmap_state *s;
+       NTSTATUS status;
+
+       DEBUG(5, ("wb_irpc_get_idmap_callback called\n"));
+
+       s = talloc_get_type(ctx->async.private_data,
+                           struct wb_irpc_get_idmap_state);
+
+       switch(s->level) {
+               case WINBIND_IDMAP_LEVEL_SIDS_TO_XIDS:
+                       status = wb_sids2xids_recv(ctx, &s->req->out.ids);
+                       break;
+               case WINBIND_IDMAP_LEVEL_XIDS_TO_SIDS:
+                       status = wb_xids2sids_recv(ctx, &s->req->out.ids);
+                       break;
+       }
+
+       irpc_send_reply(s->msg, status);
+}
+
 NTSTATUS wbsrv_init_irpc(struct wbsrv_service *service)
 {
        NTSTATUS status;
@@ -81,5 +147,9 @@ NTSTATUS wbsrv_init_irpc(struct wbsrv_service *service)
                               wb_irpc_SamLogon, service);
        NT_STATUS_NOT_OK_RETURN(status);
 
+       status = IRPC_REGISTER(service->task->msg_ctx, winbind, WINBIND_GET_IDMAP,
+                              wb_irpc_get_idmap, service);
+       NT_STATUS_NOT_OK_RETURN(status);
+
        return NT_STATUS_OK;
 }
index 843d292c070fc4daac3466ea9e7d6277b4fc8de1..1be394d276a2d8f329ed1639e7e077f3ee1ca37e 100644 (file)
@@ -41,7 +41,7 @@ struct composite_context *wb_xids2sids_send(TALLOC_CTX *mem_ctx,
        struct composite_context *result;
        struct xids2sids_state *state;
 
-       DEBUG(0, ("wb_xids2sids_send called\n"));
+       DEBUG(5, ("wb_xids2sids_send called\n"));
 
        result = composite_create(mem_ctx, service->task->event_ctx);
        if (!result) return NULL;
@@ -68,7 +68,7 @@ NTSTATUS wb_xids2sids_recv(struct composite_context *ctx,
 {
        NTSTATUS status = composite_wait(ctx);
 
-       DEBUG(0, ("wb_xids2sids_recv called.\n"));
+       DEBUG(5, ("wb_xids2sids_recv called.\n"));
 
        if (NT_STATUS_IS_OK(status)) {
                struct xids2sids_state *state =
index 2886471db2144a3a51236eddf01e333b8d816979..316dec5bb14474ec6f1b157637e34886b03311a6 100644 (file)
@@ -2,7 +2,7 @@
        client side js functions for remote calls into the server
 
        Copyright Andrew Tridgell 2005
-       released under the GNU GPL Version 2 or later
+       released under the GNU GPL Version 3 or later
 */
 
 var __call = new Object();
index 9e1a34293609a156441d05adf991dd82801b8766..8e55cc94ee3a62c90f9e58fca1e1c97f9215f7be 100644 (file)
@@ -2,7 +2,7 @@
    Windows, tabs, and general widgetry for SWAT.
 
    Copyright (C) Deryck Hodge 2005
-   released under the GNU GPL Version 2 or later
+   released under the GNU GPL Version 3 or later
 */
 
 /* Qooxdoo's browser sniffer doesn't distinguish IE version.
index 4aa4cc095473d199c52952795d7ad176e4092275..2a4d174b0eecfea697e30f5ef6e39bc7247b0a72 100644 (file)
@@ -2,7 +2,7 @@
        client side js functions for encoding/decoding objects into linear strings
 
        Copyright Andrew Tridgell 2005
-       released under the GNU GPL Version 2 or later
+       released under the GNU GPL Version 3 or later
 */
 /*
        usage:
index 1c6e5806f4cb3929ffb28206277a4a0e88155c29..ea87df02c83cbbb6abdecd3ef14e39fd0f1766c0 100644 (file)
@@ -2,7 +2,7 @@
    Beginnnigs of a script manager for SWAT.
 
    Copyright (C) Deryck Hodge 2005
-   released under the GNU GPL Version 2 or later
+   released under the GNU GPL Version 3 or later
 */
 
 var head = document.getElementsByTagName('head')[0];
index 9175017c2ef35604370f1c3fbee2cae50c42d3a2..555ba9fb90118074b233c3eefa73458f06b78628 100644 (file)
@@ -2,7 +2,7 @@
        client side js functions for registry editing
 
        Copyright Andrew Tridgell 2005
-       released under the GNU GPL Version 2 or later
+       released under the GNU GPL Version 3 or later
 */
 
 
index 31ee31c43b736272feec4ac3ade1e33ffc01f056..a41038d5e963b56413d0a8075b477419bd78726f 100644 (file)
@@ -1,7 +1,7 @@
 /*
        server status library for SWAT
 
-       released under the GNU GPL Version 2 or later
+       released under the GNU GPL Version 3 or later
 */
 
 
index d4eff07c8de56f63c164576bf476866ffeabbec7..dbcdcf11126d193d74e602b04aa0ea1792a818ab 100755 (executable)
@@ -23,6 +23,7 @@ samba4bindir=`dirname $0`/../../source/bin
 smbclient=$samba4bindir/smbclient
 samba4kinit=$samba4bindir/samba4kinit
 net=$samba4bindir/net
+enableaccount="$samba4bindir/smbpython `dirname $0`/../../source/setup/enableaccount"
 
 testit() {
        name="$1"
@@ -60,8 +61,10 @@ KRB5CCNAME="$PREFIX/tmpccache"
 export KRB5CCNAME
 
 echo $PASSWORD > ./tmppassfile
+#testit "kinit with keytab" $samba4kinit --keytab=$PREFIX/dc/private/secrets.keytab $SERVER\$@$REALM   || failed=`expr $failed + 1`
 testit "kinit with password" $samba4kinit --password-file=./tmppassfile --request-pac $USERNAME@$REALM   || failed=`expr $failed + 1`
-testit "kinit with pkinit" $samba4kinit --request-pac --pk-user=FILE:$PREFIX/dc/private/tls/admincert.pem,$PREFIX/dc/private/tls/adminkey.pem $USERNAME@$REALM || failed=`expr $failed + 1`
+testit "kinit with pkinit" $samba4kinit --request-pac --renewable --pk-user=FILE:$PREFIX/dc/private/tls/admincert.pem,$PREFIX/dc/private/tls/adminkey.pem $USERNAME@$REALM || failed=`expr $failed + 1`
+testit "kinit renew ticket" $samba4kinit --request-pac -R
 
 test_smbclient "Test login with kerberos ccache" 'ls' -k yes || failed=`expr $failed + 1`
 
@@ -70,18 +73,23 @@ testit "check time with kerberos ccache" $VALGRIND $net time $SERVER $CONFIGURAT
 
 testit "add user with kerberos ccache" $VALGRIND $net user add nettestuser $CONFIGURATION  -k yes $@ || failed=`expr $failed + 1`
 USERPASS=testPass@12%
+echo $USERPASS > ./tmpuserpassfile
 
 testit "set user password with kerberos ccache" $VALGRIND $net password set $DOMAIN\\nettestuser $USERPASS $CONFIGURATION  -k yes $@ || failed=`expr $failed + 1`
 
-#KRB5CCNAME=`pwd`/tmpuserccache
-#export KRB5CCNAME
-#
-#testit "kinit with user password" bin/samba4kinit --password-file=./tmpuserpassfile --request-pac nettestuser@$REALM   || failed=`expr $failed + 1`
-#
-#KRB5CCNAME=`pwd`/tmpccache
-#export KRB5CCNAME
+testit "enable user with kerberos cache" $VALGRIND $enableaccount nettestuser -H ldap://$SERVER -k yes $@ || failed=`expr $failed + 1`
 
-testit "del user with kerberos ccache" $VALGRIND $net user delete nettestuser $CONFIGURATION  -k yes $@ || failed=`expr $failed + 1`
+KRB5CCNAME="$PREFIX/tmpuserccache"
+export KRB5CCNAME
+
+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
+
+testit "del user with kerberos ccache" $VALGRIND $net user delete nettestuser $CONFIGURATION -k yes $@ || failed=`expr $failed + 1`
 
-rm -f tmpccfile tmppassfile tmpuserccache
+rm -f tmpccfile tmppassfile tmpuserpassfile tmpuserccache
 exit $failed