svn commit: samba r9518 - in branches/SAMBA_4_0/source: include librpc/idl librpc/ndr

metze at samba.org metze at samba.org
Tue Aug 23 13:12:08 GMT 2005


Author: metze
Date: 2005-08-23 13:12:07 +0000 (Tue, 23 Aug 2005)
New Revision: 9518

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

Log:
- remove the subcontext_size() hack from rev 9509
  as it isn't needed
- parse some more DsAddEntry() errors
- add some more attid constands so that all attribute that are needed
  for a DsAddEntry in the DC Domain Join are mapped
- add value() for __ndr_size, to more attribute container, so that the caller
  doesn't need to fill them in, that was the reason for getting an NDR_FAULT

metze
Modified:
   branches/SAMBA_4_0/source/include/structs.h
   branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl
   branches/SAMBA_4_0/source/librpc/ndr/ndr_drsuapi.c


Changeset:
Modified: branches/SAMBA_4_0/source/include/structs.h
===================================================================
--- branches/SAMBA_4_0/source/include/structs.h	2005-08-23 13:03:39 UTC (rev 9517)
+++ branches/SAMBA_4_0/source/include/structs.h	2005-08-23 13:12:07 UTC (rev 9518)
@@ -80,8 +80,6 @@
 struct drsuapi_DsCrackNames;
 struct drsuapi_DsReplicaObjectListItem;
 struct drsuapi_DsReplicaObjectListItemEx;
-struct drsuapi_DsAttributeValueDNString;
-struct drsuapi_DsReplicaObjectIdentifier3;
 
 struct MULTI_QI;
 struct COSERVERINFO;

Modified: branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl	2005-08-23 13:03:39 UTC (rev 9517)
+++ branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl	2005-08-23 13:12:07 UTC (rev 9518)
@@ -365,21 +365,28 @@
 	 * 2.5.5.17	=> dom_sid
 	 */
 
-	typedef [v1_enum] enum {
+	typedef [flag(NDR_PAHEX),v1_enum] enum {
 		DRSUAPI_OBJECTCLASS_top			= 0x00010000
 	} drsuapi_DsObjectClassId;
 
-	typedef [v1_enum,public] enum {
+	typedef [flag(NDR_PAHEX),v1_enum,public] enum {
 		DRSUAPI_ATTRIBUTE_objectClass		= 0x00000000,
 		DRSUAPI_ATTRIBUTE_description		= 0x0000000d,
+		DRSUAPI_ATTRIBUTE_hasMasterNCs		= 0x0002000e,
 		DRSUAPI_ATTRIBUTE_invocationId		= 0x00020073,
+		DRSUAPI_ATTRIBUTE_dMDLocation		= 0x00020024,
 		DRSUAPI_ATTRIBUTE_ntSecurityDescriptor	= 0x00020119,
 		DRSUAPI_ATTRIBUTE_objectSid		= 0x00090092,
 		DRSUAPI_ATTRIBUTE_dBCSPwd		= 0x00090037,/* lmPwdHash */
 		DRSUAPI_ATTRIBUTE_unicodePwd		= 0x0009005a,/* ntPwdHash */
 		DRSUAPI_ATTRIBUTE_ntPwdHistory		= 0x0009005e,
 		DRSUAPI_ATTRIBUTE_lmPwdHistory		= 0x000900a0,
-		DRSUAPI_ATTRIBUTE_objectCategory	= 0x0009030e
+		DRSUAPI_ATTRIBUTE_systemFlags		= 0x00090177,
+		DRSUAPI_ATTRIBUTE_serverReference	= 0x00090203,
+		DRSUAPI_ATTRIBUTE_objectCategory	= 0x0009030e,
+		DRSUAPI_ATTRIBUTE_msDS_Behavior_Version	= 0x000905b3,
+		DRSUAPI_ATTRIBUTE_msDS_HasDomainNCs	= 0x0009071c,
+		DRSUAPI_ATTRIBUTE_msDS_hasMasterNCs	= 0x0009072c
 	} drsuapi_DsAttributeId;
 
 	/* Generic DATA_BLOB values */
@@ -395,7 +402,7 @@
 
 	/* objectClass values */
 	typedef struct {
-		[range(0,10485760)] uint32 length;
+		[range(0,10485760),value(4)] uint32 __ndr_size;
 		[subcontext(4)] drsuapi_DsObjectClassId *objectClassId;
 	} drsuapi_DsAttributeValueObjectClassId;
 
@@ -406,7 +413,7 @@
 
 	/* uint32 values */
 	typedef struct {
-		[range(0,10485760)] uint32 length;
+		[range(0,10485760),value(4)] uint32 __ndr_size;
 		[subcontext(4)] uint32 *value;
 	} drsuapi_DsAttributeValueUINT32;
 
@@ -436,8 +443,8 @@
 	} drsuapi_DsReplicaObjectIdentifier3;
 
 	typedef struct {
-		[range(0,10485760),value(_ndr_size_drsuapi_DsReplicaObjectIdentifier3(ndr, r, object, ndr->flags))] uint32 __ndr_size;
-		[subcontext(4),subcontext_size(_ndr_size_drsuapi_DsReplicaObjectIdentifier3(ndr, r, object, ndr->flags))] drsuapi_DsReplicaObjectIdentifier3 *object;
+		[range(0,10485760),value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(object, ndr->flags))] uint32 __ndr_size;
+		[subcontext(4)] drsuapi_DsReplicaObjectIdentifier3 *object;
 	} drsuapi_DsAttributeValueDNString;
 
 	typedef struct {
@@ -447,7 +454,7 @@
 
 	/* GUID values */
 	typedef struct {
-		[range(0,10485760)] uint32 length;
+		[range(0,10485760),value(ndr_size_GUID(guid, ndr->flags))] uint32 __ndr_size;
 		[subcontext(4)] GUID *guid;
 	} drsuapi_DsAttributeValueGUID;
 
@@ -458,7 +465,7 @@
 
 	/* SID values */
 	typedef struct {
-		[range(0,10485760)] uint32 length;
+		[range(0,10485760),value(ndr_size_dom_sid(sid))] uint32 __ndr_size;
 		[subcontext(4)] dom_sid *sid;
 	} drsuapi_DsAttributeValueSID;
 
@@ -469,7 +476,7 @@
 
 	/* SecurityDescriptor values */
 	typedef struct {
-		[range(0,10485760)] uint32 length;
+		[range(0,10485760),value(ndr_size_security_descriptor(sd))] uint32 __ndr_size;
 		[subcontext(4)] security_descriptor *sd;
 	} drsuapi_DsAttributeValueSecurityDescriptor;
 
@@ -480,7 +487,7 @@
 
 	/* NTTIME_1sec values */
 	typedef struct {
-		[range(0,10485760)] uint32 length;
+		[range(0,10485760),value(8)] uint32 __ndr_size;
 		[subcontext(4)] NTTIME_1sec *time;
 	} drsuapi_DsAttributeValueNTTIME_1sec;
 
@@ -531,7 +538,7 @@
 		[default] drsuapi_DsAttributeValueCtrDataBlob data_blob;
 	} drsuapi_DsReplicaAttributeValueCtr;
 
-	typedef [flag(NDR_PAHEX)] struct {
+	typedef struct {
 		drsuapi_DsAttributeId attid;
 		[switch_is(attid)] drsuapi_DsReplicaAttributeValueCtr value_ctr;
 	} drsuapi_DsReplicaAttribute;
@@ -941,9 +948,32 @@
 		uint16 unknown3;
 	} drsuapi_DsAddEntryErrorInfoX;
 
+	typedef struct {
+		[range(0,10485760)] uint32 size;
+		[size_is(size)] uint8 *data;
+	} drsuapi_DsAddEntryExtraErrorBuffer;
+
+	typedef struct {
+		drsuapi_DsAddEntryErrorInfoX error;
+		drsuapi_DsAttributeId attid;
+		uint32 unknown2;
+		drsuapi_DsAddEntryExtraErrorBuffer buffer;
+	} drsuapi_DsAddEntryExtraError1;
+
+	typedef /*[noprint]*/ struct {
+		drsuapi_DsAddEntryErrorListItem1 *next;
+		drsuapi_DsAddEntryExtraError1 error;
+	} drsuapi_DsAddEntryErrorListItem1;
+
+	typedef struct {
+		drsuapi_DsReplicaObjectIdentifier *id;
+		WERROR status;
+		drsuapi_DsAddEntryErrorListItem1 first;
+	} drsuapi_DsAddEntryErrorInfo1;
+
 	typedef [switch_type(uint32)] union {
-/*		[case(1)] drsuapi_DsAddEntryErrorInfo1 error1;
-		[case(2)] drsuapi_DsAddEntryErrorInfo2 error2;
+		[case(1)] drsuapi_DsAddEntryErrorInfo1 error1;
+/*		[case(2)] drsuapi_DsAddEntryErrorInfo2 error2;
 		[case(3)] drsuapi_DsAddEntryErrorInfo3 error3;
 */		[case(4)] drsuapi_DsAddEntryErrorInfoX error4;
 		[case(5)] drsuapi_DsAddEntryErrorInfoX error5;

Modified: branches/SAMBA_4_0/source/librpc/ndr/ndr_drsuapi.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/ndr/ndr_drsuapi.c	2005-08-23 13:03:39 UTC (rev 9517)
+++ branches/SAMBA_4_0/source/librpc/ndr/ndr_drsuapi.c	2005-08-23 13:12:07 UTC (rev 9518)
@@ -61,18 +61,3 @@
 		ndr_print_drsuapi_DsReplicaObjectListItemEx(ndr, "next_object", r->next_object);
 	}
 }
-
-uint32_t _ndr_size_drsuapi_DsReplicaObjectIdentifier3(const void *ndr,
-						      const struct drsuapi_DsAttributeValueDNString *dn,
-						      const struct drsuapi_DsReplicaObjectIdentifier3 *id,
-						      uint32_t flags)
-{
-	if (talloc_get_type(ndr, struct ndr_pull)) {
-		return dn->__ndr_size;
-	} else if (talloc_get_type(ndr, struct ndr_push)) {
-		return ndr_size_drsuapi_DsReplicaObjectIdentifier3(id, flags) + 2;
-	} else if  (talloc_get_type(ndr, struct ndr_print)) {
-		return ndr_size_drsuapi_DsReplicaObjectIdentifier3(id, flags) + 2;
-	}
-	return 0;
-}



More information about the samba-cvs mailing list