[SCM] Samba Shared Repository - branch master updated

Kamen Mazdrashki kamenim at samba.org
Fri Aug 20 15:51:01 MDT 2010


The branch, master has been updated
       via  7e936e3... s4-ndr_basic.c: Fix ndr_*_hyper() when [bigendian] data is processed
       via  26efea1... s4-drsuapi: Implement custom printing for drsuapi protocol for
      from  f35811b... s3: Use sconn->client_id in session_claim

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 7e936e3122aed539b348bc5deea1732b65d94950
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Fri Aug 20 21:58:22 2010 +0300

    s4-ndr_basic.c: Fix ndr_*_hyper() when [bigendian] data is processed

commit 26efea195ae3d5a26b1152923f114cd841e89b5f
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Thu Aug 19 15:52:49 2010 +0300

    s4-drsuapi: Implement custom printing for drsuapi protocol for
    
    drsuapi_DsReplicaAttribute and drsuapi_DsAttributeValueCtr objects
    
    This makes tracing what data has been transferred much easier

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

Summary of changes:
 librpc/idl/drsuapi.idl   |    2 +-
 librpc/ndr/ndr_basic.c   |    6 +++
 librpc/ndr/ndr_drsuapi.c |  107 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 114 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/idl/drsuapi.idl b/librpc/idl/drsuapi.idl
index 8540057..9010efc 100644
--- a/librpc/idl/drsuapi.idl
+++ b/librpc/idl/drsuapi.idl
@@ -562,7 +562,7 @@ interface drsuapi
 		[flag(NDR_REMAINING)] DATA_BLOB binary;
 	} drsuapi_DsReplicaObjectIdentifier3Binary;
 
-	typedef [public] struct {
+	typedef [public,noprint] struct {
 		drsuapi_DsAttributeId attid;
 		drsuapi_DsAttributeValueCtr value_ctr;
 	} drsuapi_DsReplicaAttribute;
diff --git a/librpc/ndr/ndr_basic.c b/librpc/ndr/ndr_basic.c
index 0becf38..58d4e46 100644
--- a/librpc/ndr/ndr_basic.c
+++ b/librpc/ndr/ndr_basic.c
@@ -252,6 +252,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_dlong(struct ndr_pull *ndr, int ndr_flags, i
 _PUBLIC_ enum ndr_err_code ndr_pull_hyper(struct ndr_pull *ndr, int ndr_flags, uint64_t *v)
 {
 	NDR_PULL_ALIGN(ndr, 8);
+	if (NDR_BE(ndr)) {
+		return ndr_pull_udlongr(ndr, ndr_flags, v);
+	}
 	return ndr_pull_udlong(ndr, ndr_flags, v);
 }
 
@@ -549,6 +552,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_dlong(struct ndr_push *ndr, int ndr_flags, i
 _PUBLIC_ enum ndr_err_code ndr_push_hyper(struct ndr_push *ndr, int ndr_flags, uint64_t v)
 {
 	NDR_PUSH_ALIGN(ndr, 8);
+	if (NDR_BE(ndr)) {
+		return ndr_push_udlongr(ndr, NDR_SCALARS, v);
+	}
 	return ndr_push_udlong(ndr, NDR_SCALARS, v);
 }
 
diff --git a/librpc/ndr/ndr_drsuapi.c b/librpc/ndr/ndr_drsuapi.c
index 0cc3e52..9cde737 100644
--- a/librpc/ndr/ndr_drsuapi.c
+++ b/librpc/ndr/ndr_drsuapi.c
@@ -86,6 +86,113 @@ _PUBLIC_ void ndr_print_drsuapi_DsReplicaOID(struct ndr_print *ndr, const char *
 	ndr->depth--;
 }
 
+static void _print_drsuapi_DsAttributeValue_attid(struct ndr_print *ndr, const char *name,
+						  const struct drsuapi_DsAttributeValue *r)
+{
+	uint32_t v;
+
+	ndr_print_struct(ndr, name, "drsuapi_DsAttributeValue");
+	ndr->depth++;
+	v = IVAL(r->blob->data, 0);
+	ndr_print_uint32(ndr, "attid", v);
+	ndr->depth--;
+}
+
+static void _print_drsuapi_DsAttributeValue_str(struct ndr_print *ndr, const char *name,
+						const struct drsuapi_DsAttributeValue *r)
+{
+	char *str;
+
+	ndr_print_struct(ndr, name, "drsuapi_DsAttributeValue");
+	ndr->depth++;
+	if (!convert_string_talloc(ndr,
+	                           CH_UTF16, CH_UNIX,
+	                           r->blob->data,
+	                           r->blob->length,
+	                           (void **)&str, NULL, false)) {
+		ndr_print_string(ndr, "string", "INVALID CONVERSION");
+	} else {
+		ndr_print_string(ndr, "string", str);
+		talloc_free(str);
+	}
+	ndr->depth--;
+}
+
+static void _print_drsuapi_DsAttributeValueCtr(struct ndr_print *ndr,
+					       const char *name,
+					       const struct drsuapi_DsAttributeValueCtr *r,
+					       void (*print_val_fn)(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAttributeValue *r))
+{
+	uint32_t cntr_values_1;
+	ndr_print_struct(ndr, name, "drsuapi_DsAttributeValueCtr");
+	ndr->depth++;
+	ndr_print_uint32(ndr, "num_values", r->num_values);
+	ndr_print_ptr(ndr, "values", r->values);
+	ndr->depth++;
+	if (r->values) {
+		ndr->print(ndr, "%s: ARRAY(%d)", "values", (int)r->num_values);
+		ndr->depth++;
+		for (cntr_values_1=0;cntr_values_1<r->num_values;cntr_values_1++) {
+			char *idx_1=NULL;
+			if (asprintf(&idx_1, "[%d]", cntr_values_1) != -1) {
+				//ndr_print_drsuapi_DsAttributeValue(ndr, "values", &r->values[cntr_values_1]);
+				print_val_fn(ndr, "values", &r->values[cntr_values_1]);
+				free(idx_1);
+			}
+		}
+		ndr->depth--;
+	}
+	ndr->depth--;
+	ndr->depth--;
+}
+
+_PUBLIC_ void ndr_print_drsuapi_DsReplicaAttribute(struct ndr_print *ndr,
+						   const char *name,
+						   const struct drsuapi_DsReplicaAttribute *r)
+{
+	ndr_print_struct(ndr, name, "drsuapi_DsReplicaAttribute");
+	ndr->depth++;
+	ndr_print_drsuapi_DsAttributeId(ndr, "attid", r->attid);
+	switch (r->attid) {
+	case DRSUAPI_ATTRIBUTE_objectClass:
+	case DRSUAPI_ATTRIBUTE_possSuperiors:
+	case DRSUAPI_ATTRIBUTE_subClassOf:
+	case DRSUAPI_ATTRIBUTE_governsID:
+	case DRSUAPI_ATTRIBUTE_mustContain:
+	case DRSUAPI_ATTRIBUTE_mayContain:
+	case DRSUAPI_ATTRIBUTE_rDNAttId:
+	case DRSUAPI_ATTRIBUTE_attributeID:
+	case DRSUAPI_ATTRIBUTE_attributeSyntax:
+	case DRSUAPI_ATTRIBUTE_auxiliaryClass:
+	case DRSUAPI_ATTRIBUTE_systemPossSuperiors:
+	case DRSUAPI_ATTRIBUTE_systemMayContain:
+	case DRSUAPI_ATTRIBUTE_systemMustContain:
+	case DRSUAPI_ATTRIBUTE_systemAuxiliaryClass:
+	case DRSUAPI_ATTRIBUTE_transportAddressAttribute:
+		/* ATTIDs for classSchema and attributeSchema */
+		_print_drsuapi_DsAttributeValueCtr(ndr, "value_ctr", &r->value_ctr,
+		                                   _print_drsuapi_DsAttributeValue_attid);
+		break;
+	case DRSUAPI_ATTRIBUTE_cn:
+	case DRSUAPI_ATTRIBUTE_ou:
+	case DRSUAPI_ATTRIBUTE_description:
+	case DRSUAPI_ATTRIBUTE_displayName:
+	case DRSUAPI_ATTRIBUTE_dMDLocation:
+	case DRSUAPI_ATTRIBUTE_adminDisplayName:
+	case DRSUAPI_ATTRIBUTE_adminDescription:
+	case DRSUAPI_ATTRIBUTE_lDAPDisplayName:
+	case DRSUAPI_ATTRIBUTE_name:
+		_print_drsuapi_DsAttributeValueCtr(ndr, "value_ctr", &r->value_ctr,
+		                                   _print_drsuapi_DsAttributeValue_str);
+		break;
+	default:
+		_print_drsuapi_DsAttributeValueCtr(ndr, "value_ctr", &r->value_ctr,
+		                                   ndr_print_drsuapi_DsAttributeValue);
+		break;
+	}
+	ndr->depth--;
+}
+
 enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesMSZIPCtr1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesMSZIPCtr1 *r)
 {
 	if (ndr_flags & NDR_SCALARS) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list