[PATCH 3/5] idl: introduce new file: dfsblobs.idl

Matthieu Patou mat at matws.net
Sat Dec 12 19:03:03 MST 2009


---
 librpc/idl/dfsblobs.idl |  119 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 119 insertions(+), 0 deletions(-)
 create mode 100644 librpc/idl/dfsblobs.idl

diff --git a/librpc/idl/dfsblobs.idl b/librpc/idl/dfsblobs.idl
new file mode 100644
index 0000000..1c97059
--- /dev/null
+++ b/librpc/idl/dfsblobs.idl
@@ -0,0 +1,119 @@
+#include "idl_types.h"
+
+import "misc.idl";
+/*
+dfs blobs interface definition
+*/
+
+
+[
+	pointer_default(unique),
+	helpstring("dfs referral blobs"),
+  	uuid("12345778-1234-abcd-0001-00000003")
+]
+
+
+interface dfsblobs 
+{
+
+
+	typedef [bitmap32bit] bitmap {
+		DFS_HEADER_FLAG_REFERAL_SVR	= 0x00000001,
+		DFS_HEADER_FLAG_STORAGE_SVR	= 0x00000002,
+		DFS_HEADER_FLAG_TARGET_BCK	= 0x00000004
+	} DFS_HEADER_FLAG;
+
+	typedef [enum16bit] enum {
+		DFS_SERVER_NON_ROOT	= 0x0000,
+		DFS_SERVER_ROOT	= 0x0001
+	} DFS_SERVER_TYPE;
+
+	typedef [enum16bit] enum {
+		DFS_FLAG_REFERRAL_DOMAIN_RESP		= 0x0002,
+		DFS_FLAG_REFERRAL_FIRST_TARGET_SET	= 0x0004
+	} DFS_FLAGS_REFERRAL;
+
+	typedef struct {
+		uint16	size;
+		uint16	server_type;
+		uint16	entry_flags;
+		nstring *share_name;
+	} dfs_referral_v1;
+
+	typedef struct {
+		uint16	size;
+		DFS_SERVER_TYPE	server_type;
+		DFS_FLAGS_REFERRAL	entry_flags;
+		uint32	proximity;
+		uint32	ttl;
+		[relative_short] nstring	*DFS_path;
+		[relative_short] nstring	*DFS_alt_path;
+		[relative_short] nstring	*netw_address;
+	} dfs_referral_v2;
+
+	typedef struct {
+		[relative_short] nstring	*DFS_path;
+		[relative_short] nstring	*DFS_alt_path;
+		[relative_short] nstring	*netw_address;
+		/* As stated in MS DFSC 2.2.4.3.1 this array was guid but now MUST be 16 null bytes*/
+		uint8	service_site_guid[16];
+	} dfs_normal_referral;
+
+	typedef struct {
+		[relative_short] nstring *special_name;
+		uint16	nb_expanded_names;
+		[relative_short] [flag(STR_NOTERM|NDR_REMAINING)] string_array *expanded_names;
+		/*[relative_short] nstring_array expanded_names2;*/
+		/* As stated in MS DFSC 2.2.4.3.1 this array was guid but now MUST be 16 null bytes*/
+		uint8	service_site_guid[16];
+	} dfs_domain_referral;
+
+	typedef [nodiscriminant] union {
+		[case(0)]	dfs_normal_referral	 r1;
+		[case(2)]	dfs_domain_referral	 r2;
+		[default] ;
+	} dfs_referral;
+
+	typedef [flag(NDR_NOALIGN)] struct {
+		uint16	size;
+		DFS_SERVER_TYPE	server_type;
+		DFS_FLAGS_REFERRAL	entry_flags;
+		uint32	ttl;
+		[switch_is(entry_flags & DFS_FLAG_REFERRAL_DOMAIN_RESP)]  dfs_referral referrals;
+	} dfs_referral_v3;
+
+	typedef struct {
+		uint16	size;
+		DFS_SERVER_TYPE	server_type;
+		DFS_FLAGS_REFERRAL	entry_flags;
+		uint32	ttl;
+		dfs_normal_referral referrals;
+	} dfs_referral_v4;
+
+	typedef [nodiscriminant] union {
+		[case(1)]  dfs_referral_v1 v1;
+		[case(2)]  dfs_referral_v2 v2;
+		[case(3)]  dfs_referral_v3 v3;
+		[case(4)]  dfs_referral_v4 v4;
+		[default];
+		} dfs_referral_version;
+
+	typedef [flag(NDR_NOALIGN)] [relative_base] struct {
+		uint16	version;
+		[switch_is(version)] dfs_referral_version referral;
+	} dfs_referral_type;
+
+	typedef [public] struct {
+		uint16	path_consumed;
+		uint16	nb_referrals;
+		uint32	header_flags;
+		dfs_referral_type referral_entries[nb_referrals];
+	} dfs_referral_resp;
+
+	[public] void dfs_GetDFSReferral(
+		[in]		uint16 max_referral_level,
+		[in]		nstring  servername,
+		[out,ref]	dfs_referral_resp *resp
+		);
+
+}
-- 
1.6.3.3


--------------080502050808070106020509
Content-Type: text/x-patch;
 name="0004-torture-add-new-tests-for-dfsblobs.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="0004-torture-add-new-tests-for-dfsblobs.patch"



More information about the samba-technical mailing list