svn commit: samba r9888 - in branches/SAMBA_4_0/source: librpc/idl rpc_server/lsa torture/rpc

gd at samba.org gd at samba.org
Thu Sep 1 10:36:49 GMT 2005


Author: gd
Date: 2005-09-01 10:36:48 +0000 (Thu, 01 Sep 2005)
New Revision: 9888

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9888

Log:
add IDL for lsa_QueryDomainInformationPolicy to query Kerberos Settings.

Guenther

Modified:
   branches/SAMBA_4_0/source/librpc/idl/lsa.idl
   branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c
   branches/SAMBA_4_0/source/torture/rpc/lsa.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/lsa.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/lsa.idl	2005-09-01 09:34:03 UTC (rev 9887)
+++ branches/SAMBA_4_0/source/librpc/idl/lsa.idl	2005-09-01 10:36:48 UTC (rev 9888)
@@ -738,10 +738,45 @@
 	NTSTATUS lsa_CloseTrustedDomainEx();
 
 	/* Function 0x35 */
-	NTSTATUS lsa_QueryDomainInformationPolicy();
 
+	/* w2k3 returns either 0x000bbbd000000000 or 0x000a48e800000000 
+	   for unknown6 - gd */
+	typedef struct {
+		uint32 enforce_restrictions;
+		hyper service_tkt_lifetime;
+		hyper user_tkt_lifetime;
+		hyper user_tkt_renewaltime;
+		hyper clock_skew;
+		hyper unknown6;
+	} lsa_DomainInfoKerberos;
+
+	typedef struct {
+		uint32 blob_size;
+		[size_is(blob_size)] uint8 *efs_blob;
+	} lsa_DomainInfoEfs;
+
+	typedef enum {
+		LSA_DOMAIN_INFO_POLICY_EFS=2,
+		LSA_DOMAIN_INFO_POLICY_KERBEROS=3
+	} lsa_DomainInfoEnum;
+
+	typedef [switch_type(uint16)] union {
+		[case(LSA_DOMAIN_INFO_POLICY_EFS)]	lsa_DomainInfoEfs	efs_info;
+		[case(LSA_DOMAIN_INFO_POLICY_KERBEROS)]	lsa_DomainInfoKerberos	kerberos_info;
+	} lsa_DomainInformationPolicy;
+
+	NTSTATUS lsa_QueryDomainInformationPolicy(
+		[in,ref]		policy_handle *handle,
+		[in] 			uint16 level,
+		[out,switch_is(level)]	lsa_DomainInformationPolicy *info
+		);
+
 	/* Function 0x36 */
-	NTSTATUS lsa_SetDomInfoPolicy();
+	NTSTATUS lsa_SetDomainInformationPolicy(
+		[in,ref]		policy_handle *handle,
+		[in] 			uint16 level,
+		[in,switch_is(level)]	lsa_DomainInformationPolicy *info
+		);
 
 	/**********************/
 	/* Function 0x37 */

Modified: branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c	2005-09-01 09:34:03 UTC (rev 9887)
+++ branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c	2005-09-01 10:36:48 UTC (rev 9888)
@@ -2479,9 +2479,9 @@
 /*
   lsa_SetDomInfoPolicy
 */
-static NTSTATUS lsa_SetDomInfoPolicy(struct dcesrv_call_state *dce_call,
-				     TALLOC_CTX *mem_ctx,
-				     struct lsa_SetDomInfoPolicy *r)
+static NTSTATUS lsa_SetDomainInformationPolicy(struct dcesrv_call_state *dce_call,
+					      TALLOC_CTX *mem_ctx,
+					      struct lsa_SetDomainInformationPolicy *r)
 {
 	DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
 }

Modified: branches/SAMBA_4_0/source/torture/rpc/lsa.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/lsa.c	2005-09-01 09:34:03 UTC (rev 9887)
+++ branches/SAMBA_4_0/source/torture/rpc/lsa.c	2005-09-01 10:36:48 UTC (rev 9888)
@@ -1477,6 +1477,35 @@
 	return ret;
 }
 
+static BOOL test_QueryDomainInfoPolicy(struct dcerpc_pipe *p, 
+				 TALLOC_CTX *mem_ctx, 
+				 struct policy_handle *handle)
+{
+	struct lsa_QueryDomainInformationPolicy r;
+	NTSTATUS status;
+	int i;
+	BOOL ret = True;
+	printf("\nTesting QueryDomainInformationPolicy\n");
+
+	for (i=2;i<4;i++) {
+		r.in.handle = handle;
+		r.in.level = i;
+
+		printf("\ntrying QueryDomainInformationPolicy level %d\n", i);
+
+		status = dcerpc_lsa_QueryDomainInformationPolicy(p, mem_ctx, &r);
+
+		if (!NT_STATUS_IS_OK(status)) {
+			printf("QueryDomainInformationPolicy failed - %s\n", nt_errstr(status));
+			ret = False;
+			continue;
+		}
+	}
+
+	return ret;
+}
+
+
 static BOOL test_QueryInfoPolicy(struct dcerpc_pipe *p, 
 				 TALLOC_CTX *mem_ctx, 
 				 struct policy_handle *handle)
@@ -1630,6 +1659,10 @@
 		ret = False;
 	}
 
+	if (!test_QueryDomainInfoPolicy(p, mem_ctx, &handle)) {
+		ret = False;
+	}
+
 	if (!test_many_LookupSids(p, mem_ctx, &handle)) {
 		ret = False;
 	}



More information about the samba-cvs mailing list