s4/drs(NDR): Print implementation for drsuapi_DsReplicaOID
authorKamen Mazdrashki <kamen.mazdrashki@postpath.com>
Mon, 5 Oct 2009 10:28:12 +0000 (13:28 +0300)
committerAnatoliy Atanasov <anatoliy.atanasov@postpath.com>
Fri, 16 Oct 2009 09:54:13 +0000 (12:54 +0300)
Custom ndr_print functions is implemented so that transmited
partia-binary-oid to be printed both in hex and
partial-oid formats

librpc/ndr/ndr_drsuapi.c

index a551a01cca703c3d49f896bf08ed62feff6150cb..bfc3c75b4e704eec2b46b031a381f11c38ced306 100644 (file)
@@ -82,6 +82,25 @@ void ndr_print_drsuapi_DsReplicaObjectListItemEx(struct ndr_print *ndr, const ch
        } \
 } while (0)
 
+_PUBLIC_ void ndr_print_drsuapi_DsReplicaOID(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaOID *r)
+{
+       ndr_print_struct(ndr, name, "drsuapi_DsReplicaOID");
+       ndr->depth++;
+       ndr_print_uint32(ndr, "length", r->length);
+       ndr->print(ndr, "%-25s: length=%u", "oid", r->length);
+       if (r->binary_oid) {
+               char *partial_oid = NULL;
+               DATA_BLOB oid_blob = data_blob_const(r->binary_oid, r->length);
+               char *hex_str = data_blob_hex_string(ndr, &oid_blob);
+               ber_read_partial_OID_String(ndr, oid_blob, (const char **)&partial_oid);
+               ndr->depth++;
+               ndr->print(ndr, "%-25s: 0x%s (%s)", "binary_oid", hex_str, partial_oid);
+               ndr->depth--;
+               talloc_free(hex_str);
+               talloc_free(partial_oid);
+       }
+       ndr->depth--;
+}
 
 enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesMSZIPCtr1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesMSZIPCtr1 *r)
 {