svn commit: samba r20359 - in branches/SAMBA_4_0/source: librpc/idl torture/rpc

metze at samba.org metze at samba.org
Wed Dec 27 17:57:20 GMT 2006


Author: metze
Date: 2006-12-27 17:57:20 +0000 (Wed, 27 Dec 2006)
New Revision: 20359

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

Log:
level -1 of DsGetDomainControllerInfo gives back a list
of all active connections to the Directory Service Agent (DSA)
(This can be LDAP or DRSUAPI connections)

abartlet: you had just luck by using flag(BIG_ENDIAN) as BIG_ENDIAN is
          defined in <endian.h>, it should be flag(NDR_BIG_ENDIAN)...

metze
Modified:
   branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl
   branches/SAMBA_4_0/source/torture/rpc/drsuapi.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl	2006-12-27 15:36:50 UTC (rev 20358)
+++ branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl	2006-12-27 17:57:20 UTC (rev 20359)
@@ -1064,31 +1064,44 @@
 		[size_is(count)] drsuapi_DsGetDCInfo2 *array;
 	} drsuapi_DsGetDCInfoCtr2;
 
+	/*
+	 * this represents an active connection to the
+	 * Directory System Agent (DSA)
+	 * this can be via LDAP or DRSUAPI
+	 */
 	typedef struct {
-		[flag(BIG_ENDIAN)] ipv4address last_logon_ipv4_ip;
+		[flag(NDR_BIG_ENDIAN)] ipv4address client_ip_address;
 		uint32 unknown2;
-		uint32 unknown3;
+		uint32 connection_time; /* in seconds */
 		uint32 unknown4;
 		uint32 unknown5;
 		uint32 unknown6;
-		[charset(UTF16),string] uint16 *nt4_account;
-	} drsuapi_DsGetDCInfo01;
+		/*
+		 * client_account can be the following:
+		 * "W2K3\Administrator"
+		 * "Administrator at W2K3"
+		 * "cn=Administrator,cn=Users,DC=w2k3,DC=vmnet1,DC=vm,DC=base"
+		 * ""
+		 * or NULL
+		 */
+		[charset(UTF16),string] uint16 *client_account;
+	} drsuapi_DsGetDCConnection01;
 
 	typedef struct {
 		[range(0,10000)] uint32 count;
-		[size_is(count)] drsuapi_DsGetDCInfo01 *array;
-	} drsuapi_DsGetDCInfoCtr01;
+		[size_is(count)] drsuapi_DsGetDCConnection01 *array;
+	} drsuapi_DsGetDCConnectionCtr01;
 
 	typedef [v1_enum] enum {
 		DRSUAPI_DC_INFO_CTR_1  = 1,
 		DRSUAPI_DC_INFO_CTR_2  = 2,
-		DRSUAPI_DC_INFO_CTR_01 = -1
+		DRSUAPI_DC_CONNECTION_CTR_01 = -1
 	} drsuapi_DsGetDCInfoCtrLevels;
 
         typedef [switch_type(int32)] union {
 		[case(DRSUAPI_DC_INFO_CTR_1)]  drsuapi_DsGetDCInfoCtr1  ctr1;
 		[case(DRSUAPI_DC_INFO_CTR_2)]  drsuapi_DsGetDCInfoCtr2  ctr2;
-		[case(DRSUAPI_DC_INFO_CTR_01)] drsuapi_DsGetDCInfoCtr01 ctr01;
+		[case(DRSUAPI_DC_CONNECTION_CTR_01)] drsuapi_DsGetDCConnectionCtr01 ctr01;
 	} drsuapi_DsGetDCInfoCtr;
 
 	WERROR drsuapi_DsGetDomainControllerInfo(

Modified: branches/SAMBA_4_0/source/torture/rpc/drsuapi.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/drsuapi.c	2006-12-27 15:36:50 UTC (rev 20358)
+++ branches/SAMBA_4_0/source/torture/rpc/drsuapi.c	2006-12-27 17:57:20 UTC (rev 20359)
@@ -200,8 +200,8 @@
 		const char *dc_account = talloc_asprintf(mem_ctx, "%s\\%s$",
 							 torture_join_dom_netbios_name(priv->join), 
 							 priv->dcinfo.netbios_name);
-		for (k=0; k < r.out.ctr.ctr1.count; k++) {
-			if (strcasecmp_m(r.out.ctr.ctr01.array[k].nt4_account, 
+		for (k=0; k < r.out.ctr.ctr01.count; k++) {
+			if (strcasecmp_m(r.out.ctr.ctr01.array[k].client_account, 
 					 dc_account)) {
 				found = True;
 			}



More information about the samba-cvs mailing list