[SCM] Samba Shared Repository - branch v4-4-test updated

Stefan Metzmacher metze at samba.org
Tue Jan 26 20:18:35 UTC 2016


The branch, v4-4-test has been updated
       via  1133650 VERSION: Bump version up to 4.4.0rc2...
       via  6c547b3 VERSION: Set version to 4.4.0rc1...
       via  d201a20 WHATSNEW: Add smbstatus changes.
       via  c1bbe58 WHATSNEW: Extend release notes for Samba 4.4.0rc1.
       via  192f151 waf: Only build smb_krb5_wrapper if we have CUPS
       via  91eeeb7 disk_quotas: style fix
       via  6689499 vfs_gpfs: make sure get_quota does not return bogus values
       via  de3c2ed make disk_norm() static
       via  a8eea0c vfs_gpfs: do not call disk_norm() on disk_free_fn
       via  9e60cbf vfs_ceph: do not call disk_norm() on disk_free_fn
       via  279c9ce vfs_fake_dfq: remove quota code from disk_free
       via  19f9b31 smbd: refactor disk_free handling
       via  72231ec vfs_snapper: add get_quota function
       via  cc25335 vfs_shadow_copy2: add get_quota function
       via  22d757c vfs_cap: add get_quota function
       via  c464b9e vfs: add path parameter to get_quota
       via  f71761c selftest: add disk-free and quota tests based on fake_dfq VFS module
       via  540dcfa vfs_fake_dfq: add vfs module
       via  345f084 smbd: enable unit-testing of NT_TRANSACT_GET_USER_QUOTA
       via  17c9b8d quotas: correct comment about SMB_GROUP_QUOTA_TYPE
       via  798fcfd loadparm: introduce lp_parm_ulonglong() and lpcfg_parm_ulonglong()
       via  7a890a7 smbd:smb2_negprot: implement connection passing based on client_guid
       via  cfbf450 smbd:smb2_server: let smbd_server_connection_terminate() only call exit_server() for the last connection
       via  a446966 smbd:process: use smbXsrv_client_create.
       via  0010dc8 smbd:process: treat initialized table in smbXsrv_connection_init_tables
       via  d77238f smbd: add smbXsrv_client.c
       via  8ab4629 smbd:globals.h: add guid_verified to smbXsrv_connection.smb2.client
       via  3590f3f idl:smbXsrv: add smbXsrv_connection_pass structures.
       via  bae1b94 idl:smbXsrv: add smbXsrv_client_global structures
       via  5e91bf0 idl:messagaing: add MSG_SMBXSRV_CONNECTION_PASS
      from  6a24ccc s3:smbd: only process fsctl_network_iface_info if multi channel is enabled

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-4-test


- Log -----------------------------------------------------------------
commit 11336502f3e588dc014beff7a88f9d1ad6c52a9f
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jan 26 21:16:15 2016 +0100

    VERSION: Bump version up to 4.4.0rc2...
    
    ...and re-enable git snapshots.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 VERSION                                  |   4 +-
 WHATSNEW.txt                             | 141 +++++-
 examples/VFS/skel_opaque.c               |   5 +-
 examples/VFS/skel_transparent.c          |   7 +-
 lib/param/loadparm.c                     |  33 ++
 lib/param/param.h                        |   4 +
 librpc/idl/messaging.idl                 |   1 +
 selftest/selftesthelpers.py              |   1 +
 selftest/target/Samba3.pm                |  12 +
 source3/include/ntquotas.h               |   2 +-
 source3/include/proto.h                  |   3 +
 source3/include/vfs.h                    |   6 +-
 source3/include/vfs_macros.h             |   8 +-
 source3/librpc/idl/smbXsrv.idl           |  69 +++
 source3/modules/vfs_cap.c                |  14 +
 source3/modules/vfs_ceph.c               |   5 +-
 source3/modules/vfs_default.c            |  14 +-
 source3/modules/vfs_default_quota.c      |  13 +-
 source3/modules/vfs_fake_dfq.c           | 174 +++++++
 source3/modules/vfs_full_audit.c         |   8 +-
 source3/modules/vfs_gpfs.c               |  28 +-
 source3/modules/vfs_shadow_copy2.c       |  34 ++
 source3/modules/vfs_snapper.c            |  34 ++
 source3/modules/vfs_time_audit.c         |   6 +-
 source3/modules/wscript_build            |   7 +
 source3/param/loadparm.c                 |  16 +
 source3/script/tests/test_dfree_quota.sh | 174 +++++++
 source3/selftest/tests.py                |   1 +
 source3/smbd/dfree.c                     |  15 +-
 source3/smbd/globals.h                   |  17 +
 source3/smbd/ntquotas.c                  |   2 +-
 source3/smbd/nttrans.c                   |   2 +-
 source3/smbd/process.c                   |  15 +-
 source3/smbd/proto.h                     |   4 +-
 source3/smbd/quotas.c                    |  25 +-
 source3/smbd/smb2_negprot.c              |  58 +++
 source3/smbd/smb2_server.c               |  17 +-
 source3/smbd/smbXsrv_client.c            | 770 +++++++++++++++++++++++++++++++
 source3/smbd/vfs.c                       |   4 +-
 source3/wscript                          |   1 +
 source3/wscript_build                    |   4 +-
 41 files changed, 1675 insertions(+), 83 deletions(-)
 create mode 100644 source3/modules/vfs_fake_dfq.c
 create mode 100755 source3/script/tests/test_dfree_quota.sh
 create mode 100644 source3/smbd/smbXsrv_client.c


Changeset truncated at 500 lines:

diff --git a/VERSION b/VERSION
index 7966f82..1c22759 100644
--- a/VERSION
+++ b/VERSION
@@ -77,7 +77,7 @@ SAMBA_VERSION_BETA_RELEASE=
 # e.g. SAMBA_VERSION_PRE_RELEASE=1                     #
 #  ->  "2.2.9pre1"                                     #
 ########################################################
-SAMBA_VERSION_PRE_RELEASE=1
+SAMBA_VERSION_PRE_RELEASE=
 
 ########################################################
 # For 'rc' releases the version will be                #
@@ -87,7 +87,7 @@ SAMBA_VERSION_PRE_RELEASE=1
 # e.g. SAMBA_VERSION_RC_RELEASE=1                      #
 #  ->  "3.0.0rc1"                                      #
 ########################################################
-SAMBA_VERSION_RC_RELEASE=
+SAMBA_VERSION_RC_RELEASE=2
 
 ########################################################
 # To mark SVN snapshots this should be set to 'yes'    #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index e396ff9..399fb2b 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,7 +1,7 @@
 Release Announcements
 =====================
 
-This is the first preview release of Samba 4.4.  This is *not*
+This is the first release candidate of Samba 4.4.  This is *not*
 intended for production environments and is designed for testing
 purposes only.  Please report any defects via the Samba bug reporting
 system at https://bugzilla.samba.org/.
@@ -14,33 +14,100 @@ UPGRADING
 
 Nothing special.
 
-NEW FEATURES
-============
+
+NEW FEATURES/CHANGES
+====================
+
+Asynchronous flush requests
+---------------------------
 
 Flush requests from SMB2/3 clients are handled asynchronously and do
 not block the processing of other requests. Note that 'strict sync'
 has to be set to 'yes' for Samba to honor flush requests from SMB
 clients.
 
+s3: smbd
+--------
+
+Remove '--with-aio-support' configure option. We no longer would ever prefer
+POSIX-RT aio, use pthread_aio instead.
+
+samba-tool sites
+----------------
+
+The 'samba-tool sites' subcommand can now be run against another server by
+specifying an LDB URL using the '-H' option and not against the local database
+only (which is still the default when no URL is given).
+
+samba-tool domain demote
+------------------------
+
+Add '--remove-other-dead-server' option to 'samba-tool domain demote'
+subcommand. The new version of this tool now can remove another DC that is
+itself offline.  The '--remove-other-dead-server' removes as many references
+to the DC as possible.
+
+samba-tool drs clone-dc-database
+--------------------------------
+
+Replicate an initial clone of domain, but do not join it.
+This is developed for debugging purposes, but not for setting up another DC.
+
+pdbedit
+-------
+
+Add '--set-nt-hash' option to pdbedit to update user password from nt-hash
+hexstring. 'pdbedit -vw' shows also password hashes.
+
+smbstatus
+---------
+
+'smbstatus' was enhanced to show the state of signing and encryption for
+sessions and shares.
+
+s4-rpc_server
+-------------
+
+Add a GnuTLS based backupkey implementation.
+
+ntlm_auth
+---------
+
+Using the '--offline-logon' enables ntlm_auth to use cached passwords when the
+DC is offline.
+
+Allow '--password' force a local password check for ntlm-server-1 mode.
+
+vfs_offline
+-----------
+
+A new VFS module called vfs_offline has been added to mark all files in the
+share as offline. It can be useful for shares mounted on top of a remote file
+system (either through a samba VFS module or via FUSE).
+
+KCC
+---
+
+The Samba KCC has been improved, but is still disabled by default.
+
+DNS
+---
+
+There were several improvements concerning the Samba DNS server.
+
+Active Directory
+----------------
+
+There were some improvements in the Active Directory area.
+
 WINS nsswitch module
-====================
+--------------------
 
 The WINS nsswitch module has been rewritten to address memory issues and to
 simplify the code. The module now uses libwbclient to do WINS queries. This
 means that winbind needs to be running in order to resolve WINS names using
 the nss_wins module. This does not affect smbd.
 
-######################################################################
-Changes
-#######
-
-smb.conf changes
-----------------
-
-  Parameter Name		Description		Default
-  --------------		-----------		-------
-  aio max threads               New                     100
-
 CTDB changes
 ------------
 
@@ -113,6 +180,48 @@ CTDB changes
 
 * All CTDB current manual pages are now correctly installed
 
+
+REMOVED FEATURES
+================
+
+Public headers
+--------------
+
+Several public headers are not installed any longer. They are made for internal
+use only. More public headers will very likely be removed in future releases.
+
+The following headers are not installed any longer:
+dlinklist.h, gen_ndr/epmapper.h, gen_ndr/mgmt.h, gen_ndr/ndr_atsvc_c.h,
+gen_ndr/ndr_epmapper_c.h, gen_ndr/ndr_epmapper.h, gen_ndr/ndr_mgmt_c.h,
+gen_ndr/ndr_mgmt.h,gensec.h, ldap_errors.h, ldap_message.h, ldap_ndr.h,
+ldap-util.h, pytalloc.h, read_smb.h, registry.h, roles.h, samba_util.h,
+smb2_constants.h, smb2_create_blob.h, smb2.h, smb2_lease.h, smb2_signing.h,
+smb_cli.h, smb_cliraw.h, smb_common.h, smb_composite.h, smb_constants.h,
+smb_raw.h, smb_raw_interfaces.h, smb_raw_signing.h, smb_raw_trans2.h,
+smb_request.h, smb_seal.h, smb_signing.h, smb_unix_ext.h, smb_util.h,
+torture.h, tstream_smbXcli_np.h.
+
+vfs_smb_traffic_analyzer
+------------------------
+
+The SMB traffic analyzer VFS module has been removed, because it is not
+maintained any longer and not widely used.
+
+vfs_scannedonly
+---------------
+
+The scannedonly VFS module has been removed, because it is not maintained
+any longer.
+
+smb.conf changes
+----------------
+
+  Parameter Name		Description		Default
+  --------------		-----------		-------
+  aio max threads               New                     100
+  ldap page size		Changed default		1000
+
+
 KNOWN ISSUES
 ============
 
@@ -128,7 +237,7 @@ joining the #samba-technical IRC channel on irc.freenode.net.
 If you do report problems then please try to send high quality
 feedback. If you don't provide vital information to help us track down
 the problem then you will probably be ignored.  All bug reports should
-be filed under the Samba 4.3 product in the project's Bugzilla
+be filed under the Samba 4.1 and newer product in the project's Bugzilla
 database (https://bugzilla.samba.org/).
 
 
diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c
index 29fe6f4..a4309d4 100644
--- a/examples/VFS/skel_opaque.c
+++ b/examples/VFS/skel_opaque.c
@@ -54,8 +54,9 @@ static uint64_t skel_disk_free(vfs_handle_struct *handle, const char *path,
 	return 0;
 }
 
-static int skel_get_quota(vfs_handle_struct *handle, enum SMB_QUOTA_TYPE qtype,
-			  unid_t id, SMB_DISK_QUOTA *dq)
+static int skel_get_quota(vfs_handle_struct *handle, const char *path,
+			  enum SMB_QUOTA_TYPE qtype, unid_t id,
+			  SMB_DISK_QUOTA *dq)
 {
 	errno = ENOSYS;
 	return -1;
diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c
index c5a36a6..2d1ed79 100644
--- a/examples/VFS/skel_transparent.c
+++ b/examples/VFS/skel_transparent.c
@@ -55,10 +55,11 @@ static uint64_t skel_disk_free(vfs_handle_struct *handle, const char *path,
 	return SMB_VFS_NEXT_DISK_FREE(handle, path, bsize, dfree, dsize);
 }
 
-static int skel_get_quota(vfs_handle_struct *handle, enum SMB_QUOTA_TYPE qtype,
-			  unid_t id, SMB_DISK_QUOTA *dq)
+static int skel_get_quota(vfs_handle_struct *handle, const char *path,
+			  enum SMB_QUOTA_TYPE qtype, unid_t id,
+			  SMB_DISK_QUOTA *dq)
 {
-	return SMB_VFS_NEXT_GET_QUOTA(handle, qtype, id, dq);
+	return SMB_VFS_NEXT_GET_QUOTA(handle, path, qtype, id, dq);
 }
 
 static int skel_set_quota(vfs_handle_struct *handle, enum SMB_QUOTA_TYPE qtype,
diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
index 9b36c7e..9a3451f 100644
--- a/lib/param/loadparm.c
+++ b/lib/param/loadparm.c
@@ -329,6 +329,20 @@ unsigned long lp_ulong(const char *s)
 }
 
 /**
+ * convenience routine to return unsigned long long parameters.
+ */
+unsigned long long lp_ulonglong(const char *s)
+{
+
+	if (!s || !*s) {
+		DEBUG(0, ("lp_ulonglong(%s): is called with NULL!\n", s));
+		return -1;
+	}
+
+	return strtoull(s, NULL, 0);
+}
+
+/**
  * convenience routine to return unsigned long parameters.
  */
 static long lp_long(const char *s)
@@ -473,6 +487,25 @@ unsigned long lpcfg_parm_ulong(struct loadparm_context *lp_ctx,
 	return default_v;
 }
 
+/**
+ * Return parametric option from a given service.
+ * Type is a part of option before ':'
+ * Parametric option has following syntax: 'Type: option = value'
+ */
+unsigned long long lpcfg_parm_ulonglong(struct loadparm_context *lp_ctx,
+					struct loadparm_service *service,
+					const char *type, const char *option,
+					unsigned long long default_v)
+{
+	const char *value = lpcfg_get_parametric(lp_ctx, service, type, option);
+
+	if (value) {
+		return lp_ulonglong(value);
+	}
+
+	return default_v;
+}
+
 long lpcfg_parm_long(struct loadparm_context *lp_ctx,
 		     struct loadparm_service *service, const char *type,
 		     const char *option, long default_v)
diff --git a/lib/param/param.h b/lib/param/param.h
index 500f52d..fb28218 100644
--- a/lib/param/param.h
+++ b/lib/param/param.h
@@ -98,6 +98,10 @@ int lpcfg_parm_bytes(struct loadparm_context *lp_ctx,
 unsigned long lpcfg_parm_ulong(struct loadparm_context *lp_ctx,
 			    struct loadparm_service *service, const char *type,
 			    const char *option, unsigned long default_v);
+unsigned long long lpcfg_parm_ulonglong(struct loadparm_context *lp_ctx,
+					struct loadparm_service *service,
+					const char *type, const char *option,
+					unsigned long long default_v);
 long lpcfg_parm_long(struct loadparm_context *lp_ctx,
 		     struct loadparm_service *service, const char *type,
 		     const char *option, long default_v);
diff --git a/librpc/idl/messaging.idl b/librpc/idl/messaging.idl
index ca99f41..6232322 100644
--- a/librpc/idl/messaging.idl
+++ b/librpc/idl/messaging.idl
@@ -126,6 +126,7 @@ interface messaging
 
 		/* smbXsrv messages */
 		MSG_SMBXSRV_SESSION_CLOSE	= 0x0600,
+		MSG_SMBXSRV_CONNECTION_PASS	= 0x0601,
 
 		/* source4 and NTVFS smb server messages */
 		MSG_BRL_RETRY                   = 0x0700,
diff --git a/selftest/selftesthelpers.py b/selftest/selftesthelpers.py
index 0dfcf54..a5ab3f9 100644
--- a/selftest/selftesthelpers.py
+++ b/selftest/selftesthelpers.py
@@ -183,3 +183,4 @@ scriptdir = os.path.join(srcdir(), "script/tests")
 wbinfo = binpath('wbinfo')
 dbwrap_tool = binpath('dbwrap_tool')
 vfstest = binpath('vfstest')
+smbcquotas = binpath('smbcquotas')
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index 44dadfb..5002a81 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -1244,6 +1244,7 @@ sub provision($$$$$$$$)
 	symlink "$widelinks_shrdir", "$widelinks_shrdir/dot";
 
 	my $conffile="$libdir/server.conf";
+	my $dfqconffile="$libdir/dfq.conf";
 
 	my $nss_wrapper_pl = "$ENV{PERL} $self->{srcdir}/lib/nss_wrapper/nss_wrapper.pl";
 	my $nss_wrapper_passwd = "$privatedir/passwd";
@@ -1630,9 +1631,20 @@ sub provision($$$$$$$$)
 	vfs objects = shadow_copy2
 	shadow:mountpoint = $shadow_mntdir
 	wide links = yes
+[dfq]
+	path = $shrdir/dfree
+	vfs objects = fake_dfq
+	admin users = $unix_name
+	include = $dfqconffile
 	";
 	close(CONF);
 
+	unless (open(DFQCONF, ">$dfqconffile")) {
+	        warn("Unable to open $dfqconffile");
+		return undef;
+	}
+	close(DFQCONF);
+
 	##
 	## create a test account
 	##
diff --git a/source3/include/ntquotas.h b/source3/include/ntquotas.h
index d8a0dc3..6fbbbb9 100644
--- a/source3/include/ntquotas.h
+++ b/source3/include/ntquotas.h
@@ -63,7 +63,7 @@ enum SMB_QUOTA_TYPE {
 	SMB_USER_FS_QUOTA_TYPE = 1,
 	SMB_USER_QUOTA_TYPE = 2,
 	SMB_GROUP_FS_QUOTA_TYPE = 3,/* not used yet */
-	SMB_GROUP_QUOTA_TYPE = 4 /* not in use yet, maybe for disk_free queries */
+	SMB_GROUP_QUOTA_TYPE = 4 /* used by disk_free queries */
 };
 
 typedef struct _SMB_NTQUOTA_STRUCT {
diff --git a/source3/include/proto.h b/source3/include/proto.h
index ce9e277..e18aaf4 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -966,6 +966,9 @@ const char *lp_parm_const_string_service(struct loadparm_service *service, const
 const char **lp_parm_string_list(int snum, const char *type, const char *option, const char **def);
 int lp_parm_int(int snum, const char *type, const char *option, int def);
 unsigned long lp_parm_ulong(int snum, const char *type, const char *option, unsigned long def);
+unsigned long long lp_parm_ulonglong(int snum, const char *type,
+				     const char *option,
+				     unsigned long long def);
 bool lp_parm_bool(int snum, const char *type, const char *option, bool def);
 struct enum_list;
 int lp_parm_enum(int snum, const char *type, const char *option,
diff --git a/source3/include/vfs.h b/source3/include/vfs.h
index 66e4fc6..c18ea59 100644
--- a/source3/include/vfs.h
+++ b/source3/include/vfs.h
@@ -526,7 +526,9 @@ struct vfs_fn_pointers {
 	void (*disconnect_fn)(struct vfs_handle_struct *handle);
 	uint64_t (*disk_free_fn)(struct vfs_handle_struct *handle, const char *path, uint64_t *bsize,
 			      uint64_t *dfree, uint64_t *dsize);
-	int (*get_quota_fn)(struct vfs_handle_struct *handle, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *qt);
+	int (*get_quota_fn)(struct vfs_handle_struct *handle, const char *path,
+			    enum SMB_QUOTA_TYPE qtype, unid_t id,
+			    SMB_DISK_QUOTA *qt);
 	int (*set_quota_fn)(struct vfs_handle_struct *handle, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *qt);
 	int (*get_shadow_copy_data_fn)(struct vfs_handle_struct *handle, struct files_struct *fsp, struct shadow_copy_data *shadow_copy_data, bool labels);
 	int (*statvfs_fn)(struct vfs_handle_struct *handle, const char *path, struct vfs_statvfs_struct *statbuf);
@@ -931,7 +933,7 @@ void smb_vfs_call_disconnect(struct vfs_handle_struct *handle);
 uint64_t smb_vfs_call_disk_free(struct vfs_handle_struct *handle,
 				const char *path, uint64_t *bsize,
 				uint64_t *dfree, uint64_t *dsize);
-int smb_vfs_call_get_quota(struct vfs_handle_struct *handle,
+int smb_vfs_call_get_quota(struct vfs_handle_struct *handle, const char *path,
 			   enum SMB_QUOTA_TYPE qtype, unid_t id,
 			   SMB_DISK_QUOTA *qt);
 int smb_vfs_call_set_quota(struct vfs_handle_struct *handle,
diff --git a/source3/include/vfs_macros.h b/source3/include/vfs_macros.h
index eaf0c19..16d5bfd 100644
--- a/source3/include/vfs_macros.h
+++ b/source3/include/vfs_macros.h
@@ -44,10 +44,10 @@
 #define SMB_VFS_NEXT_DISK_FREE(handle, path, bsize, dfree ,dsize)\
 	smb_vfs_call_disk_free((handle)->next, (path), (bsize), (dfree), (dsize))
 
-#define SMB_VFS_GET_QUOTA(conn, qtype, id, qt) \
-	smb_vfs_call_get_quota((conn)->vfs_handles, (qtype), (id), (qt))
-#define SMB_VFS_NEXT_GET_QUOTA(handle, qtype, id, qt) \
-	smb_vfs_call_get_quota((handle)->next, (qtype), (id), (qt))
+#define SMB_VFS_GET_QUOTA(conn, path, qtype, id, qt)                           \
+	smb_vfs_call_get_quota((conn)->vfs_handles, (path), (qtype), (id), (qt))
+#define SMB_VFS_NEXT_GET_QUOTA(handle, path, qtype, id, qt)                    \
+	smb_vfs_call_get_quota((handle)->next, (path), (qtype), (id), (qt))
 
 #define SMB_VFS_SET_QUOTA(conn, qtype, id, qt) \
 	smb_vfs_call_set_quota((conn)->vfs_handles, (qtype), (id), (qt))
diff --git a/source3/librpc/idl/smbXsrv.idl b/source3/librpc/idl/smbXsrv.idl
index 5fc3603..fe86545 100644
--- a/source3/librpc/idl/smbXsrv.idl
+++ b/source3/librpc/idl/smbXsrv.idl
@@ -79,10 +79,39 @@ interface smbXsrv
 
 	/* client */
 
+	typedef struct {
+		[ignore] db_record 			*db_rec;
+		server_id				server_id;
+		[charset(UTF8),string] char		local_address[];
+		[charset(UTF8),string] char		remote_address[];
+		[charset(UTF8),string] char		remote_name[];
+		NTTIME					initial_connect_time;
+		GUID					client_guid;
+		boolean8				stored;
+	} smbXsrv_client_global0;
+
+	typedef union {
+		[case(0)] smbXsrv_client_global0	*info0;
+		[default] hyper				*dummy;
+	} smbXsrv_client_globalU;
+
 	typedef [public] struct {
+		smbXsrv_version_values			version;
+		uint32					seqnum;
+		[switch_is(version)] smbXsrv_client_globalU info;
+	} smbXsrv_client_globalB;
+
+	void smbXsrv_client_global_decode(
+		[in] smbXsrv_client_globalB blob
+		);
+
+	typedef [public] struct {
+		[ignore] smbXsrv_client_table		*table;
 		[ignore] struct tevent_context		*ev_ctx;
 		[ignore] struct messaging_context	*msg_ctx;
 
+		[ref] smbXsrv_client_global0		*global;
+
 		/*
 		 * There's just one 'sconn' per client.
 		 * It holds the FSA layer details, which are global
@@ -115,6 +144,46 @@ interface smbXsrv
 		boolean8		server_multi_channel_enabled;
 	} smbXsrv_client;
 
+	typedef union {
+		[case(0)] smbXsrv_client		*info0;
+		[default] hyper				*dummy;
+	} smbXsrv_clientU;
+
+	typedef [public] struct {
+		smbXsrv_version_values			version;
+		[value(0)] uint32			reserved;
+		[switch_is(version)] smbXsrv_clientU	info;
+	} smbXsrv_clientB;
+
+	void smbXsrv_client_decode(
+		[in] smbXsrv_clientB blob
+		);
+
+	/*
+	 * smbXsrv_connection_pass is used in the MSG_SMBXSRV_CONNECTION_PASS
+	 * message
+	 */


-- 
Samba Shared Repository



More information about the samba-cvs mailing list