[SCM] Samba Shared Repository - branch v3-3-test updated - release-3-2-0pre2-3403-gd78667c

Michael Adam obnox at samba.org
Wed Jul 23 21:21:53 GMT 2008


The branch, v3-3-test has been updated
       via  d78667c88515aa4fffc49b44c00f470f7d25bd4d (commit)
       via  5db983d1538453f0ba35d67a099396a18c7ab736 (commit)
       via  a5de166833631dbc8450277d180c69086deacd4b (commit)
       via  5459745369092a4d48fee18fb1be53f195405370 (commit)
       via  e33af40ad41816531c3189ef146f192a902d3229 (commit)
       via  38aca9c11783daf30e19b4951451ec9a6b85cd30 (commit)
       via  398702a818a0c292ab5b4f76be95168de83ffa25 (commit)
       via  fb0379aede4665987679c2e1b5ae943f124804b6 (commit)
      from  4b8362f9777debd21c47154e786b7017fbf847f7 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test


- Log -----------------------------------------------------------------
commit d78667c88515aa4fffc49b44c00f470f7d25bd4d
Author: Michael Adam <obnox at samba.org>
Date:   Wed Jul 23 23:10:34 2008 +0200

    re-run "make idl" after adding idl for idl for Primary:Kerberos-Newer-Keys
    
    Michael

commit 5db983d1538453f0ba35d67a099396a18c7ab736
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jul 22 12:28:07 2008 +0200

    drsblobs.idl: add idl for Primary:Kerberos-Newer-Keys blob in supplementalCredentials
    
    metze
    (cherry picked from commit 97b7901afbccc9647ad2958d4cf12300de2655d1)

commit a5de166833631dbc8450277d180c69086deacd4b
Author: Michael Adam <obnox at samba.org>
Date:   Wed Jul 23 23:06:30 2008 +0200

    re-run "make idl" after fixing unknowns in package_PrimaryKerberos (drsblobs.idl)
    
    Michael

commit 5459745369092a4d48fee18fb1be53f195405370
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jul 23 08:53:34 2008 +0200

    drsblobs.idl: fix unknowns in package_PrimaryKerberos idl
    
    metze
    (cherry picked from commit da9ceb2bf17f964334d9317829d40483e2c04b10)

commit e33af40ad41816531c3189ef146f192a902d3229
Author: Michael Adam <obnox at samba.org>
Date:   Wed Jul 23 23:02:09 2008 +0200

    re-run "make idl" after fixing idl for supplementalCredentialsSubBlob.
    
    Michael

commit 38aca9c11783daf30e19b4951451ec9a6b85cd30
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jul 23 13:06:32 2008 +0200

    drsblobs.idl: fix idl for supplementalCredentialsSubBlob
    
    metze
    (cherry picked from commit 24c5b10136f6e640832193aaf9e6d7e865c288bc)

commit 398702a818a0c292ab5b4f76be95168de83ffa25
Author: Michael Adam <obnox at samba.org>
Date:   Wed Jul 23 22:42:18 2008 +0200

    re-run "make idl" after changing unknown1->reserved in drsblobs.idl
    
    Michael

commit fb0379aede4665987679c2e1b5ae943f124804b6
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jul 23 13:53:03 2008 +0200

    drsblobs.idl: rename unknown1 -> reserved
    
    metze

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

Summary of changes:
 source/librpc/gen_ndr/drsblobs.h     |   68 ++++-
 source/librpc/gen_ndr/ndr_drsblobs.c |  542 +++++++++++++++++++++++++++++----
 source/librpc/gen_ndr/ndr_drsblobs.h |   20 +-
 source/librpc/idl/drsblobs.idl       |   64 ++++-
 4 files changed, 605 insertions(+), 89 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/librpc/gen_ndr/drsblobs.h b/source/librpc/gen_ndr/drsblobs.h
index e6df05f..c0db9e9 100644
--- a/source/librpc/gen_ndr/drsblobs.h
+++ b/source/librpc/gen_ndr/drsblobs.h
@@ -7,7 +7,7 @@
 #ifndef _HEADER_drsblobs
 #define _HEADER_drsblobs
 
-#define SUPPLEMENTAL_CREDENTIALS_PREFIX	( "                                                P" )
+#define SUPPLEMENTAL_CREDENTIALS_PREFIX	( "                                                " )
 enum drsuapi_DsAttributeId;
 
 struct replPropertyMetaData1 {
@@ -149,13 +149,25 @@ struct ldapControlDirSyncCookie {
 struct supplementalCredentialsPackage {
 	uint16_t name_len;/* [value(2*strlen_m(name))] */
 	uint16_t data_len;/* [value(strlen(data))] */
-	uint16_t unknown1;
+	uint16_t reserved;
 	const char *name;/* [charset(UTF16)] */
 	const char *data;/* [charset(DOS)] */
 };
 
+enum supplementalCredentialsSignature
+#ifndef USE_UINT_ENUMS
+ {
+	SUPPLEMENTAL_CREDENTIALS_SIGNATURE=0x0050
+}
+#else
+ { __donnot_use_enum_supplementalCredentialsSignature=0x7FFFFFFF}
+#define SUPPLEMENTAL_CREDENTIALS_SIGNATURE ( 0x0050 )
+#endif
+;
+
 struct supplementalCredentialsSubBlob {
 	const char *prefix;/* [value(SUPPLEMENTAL_CREDENTIALS_PREFIX),charset(UTF16)] */
+	enum supplementalCredentialsSignature signature;/* [value(SUPPLEMENTAL_CREDENTIALS_SIGNATURE)] */
 	uint16_t num_packages;
 	struct supplementalCredentialsPackage *packages;
 }/* [gensize] */;
@@ -179,23 +191,25 @@ struct package_PrimaryKerberosString {
 };
 
 struct package_PrimaryKerberosKey {
+	uint16_t reserved1;/* [value(0)] */
+	uint16_t reserved2;/* [value(0)] */
+	uint32_t reserved3;/* [value(0)] */
 	uint32_t keytype;
 	uint32_t value_len;/* [value((value?value->length:0))] */
 	DATA_BLOB *value;/* [relative,subcontext_size(value_len),subcontext(0),flag(LIBNDR_FLAG_REMAINING)] */
-	uint32_t unknown1;/* [value(0)] */
-	uint32_t unknown2;/* [value(0)] */
 };
 
 struct package_PrimaryKerberosCtr3 {
 	uint16_t num_keys;
 	uint16_t num_old_keys;
 	struct package_PrimaryKerberosString salt;
-	uint32_t unknown1;/* [value(0)] */
-	uint32_t unknown2;/* [value(0)] */
 	struct package_PrimaryKerberosKey *keys;
 	struct package_PrimaryKerberosKey *old_keys;
-	uint64_t *unknown3;
-	uint64_t *unknown3_old;
+	uint32_t padding1;/* [value(0)] */
+	uint32_t padding2;/* [value(0)] */
+	uint32_t padding3;/* [value(0)] */
+	uint32_t padding4;/* [value(0)] */
+	uint32_t padding5;/* [value(0)] */
 };
 
 union package_PrimaryKerberosCtr {
@@ -207,6 +221,36 @@ struct package_PrimaryKerberosBlob {
 	union package_PrimaryKerberosCtr ctr;/* [switch_is(version)] */
 }/* [public] */;
 
+struct package_PrimaryKerberosNewerKey {
+	uint32_t unknown1;/* [value(0)] */
+	uint32_t unknown2;/* [value(0)] */
+	uint32_t unknown3;/* [value(0x00001000)] */
+	uint32_t keytype;
+	uint32_t value_len;/* [value((value?value->length:0))] */
+	DATA_BLOB *value;/* [relative,subcontext_size(value_len),subcontext(0),flag(LIBNDR_FLAG_REMAINING)] */
+};
+
+struct package_PrimaryKerberosNewerCtr4 {
+	uint16_t num_keys;
+	uint16_t unknown1;/* [value(0)] */
+	uint16_t num_old_keys1;
+	uint16_t num_old_keys2;
+	struct package_PrimaryKerberosString salt;
+	uint32_t unknown2;/* [value(0x00001000)] */
+	struct package_PrimaryKerberosNewerKey *keys;
+	struct package_PrimaryKerberosNewerKey *old_keys1;
+	struct package_PrimaryKerberosNewerKey *old_keys2;
+};
+
+union package_PrimaryKerberosNewerCtr {
+	struct package_PrimaryKerberosNewerCtr4 ctr4;/* [case(4)] */
+}/* [nodiscriminant] */;
+
+struct package_PrimaryKerberosNewerBlob {
+	uint32_t version;/* [value(4)] */
+	union package_PrimaryKerberosNewerCtr ctr;/* [switch_is(version)] */
+}/* [public] */;
+
 struct package_PrimaryCLEARTEXTBlob {
 	const char * cleartext;/* [flag(LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING)] */
 }/* [public] */;
@@ -354,6 +398,14 @@ struct decode_PrimaryKerberos {
 };
 
 
+struct decode_PrimaryKerberosNewer {
+	struct {
+		struct package_PrimaryKerberosNewerBlob blob;
+	} in;
+
+};
+
+
 struct decode_PrimaryCLEARTEXT {
 	struct {
 		struct package_PrimaryCLEARTEXTBlob blob;
diff --git a/source/librpc/gen_ndr/ndr_drsblobs.c b/source/librpc/gen_ndr/ndr_drsblobs.c
index 1c86a26..7292298 100644
--- a/source/librpc/gen_ndr/ndr_drsblobs.c
+++ b/source/librpc/gen_ndr/ndr_drsblobs.c
@@ -1200,7 +1200,7 @@ static enum ndr_err_code ndr_push_supplementalCredentialsPackage(struct ndr_push
 		NDR_CHECK(ndr_push_align(ndr, 2));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 2 * strlen_m(r->name)));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen(r->data)));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown1));
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->reserved));
 		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, 2 * strlen_m(r->name), sizeof(uint8_t), CH_UTF16));
 		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->data, strlen(r->data), sizeof(uint8_t), CH_DOS));
 	}
@@ -1215,7 +1215,7 @@ static enum ndr_err_code ndr_pull_supplementalCredentialsPackage(struct ndr_pull
 		NDR_CHECK(ndr_pull_align(ndr, 2));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->name_len));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->data_len));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown1));
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->reserved));
 		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, r->name_len, sizeof(uint8_t), CH_UTF16));
 		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->data, r->data_len, sizeof(uint8_t), CH_DOS));
 	}
@@ -1230,18 +1230,58 @@ _PUBLIC_ void ndr_print_supplementalCredentialsPackage(struct ndr_print *ndr, co
 	ndr->depth++;
 	ndr_print_uint16(ndr, "name_len", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2 * strlen_m(r->name):r->name_len);
 	ndr_print_uint16(ndr, "data_len", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen(r->data):r->data_len);
-	ndr_print_uint16(ndr, "unknown1", r->unknown1);
+	ndr_print_uint16(ndr, "reserved", r->reserved);
 	ndr_print_string(ndr, "name", r->name);
 	ndr_print_string(ndr, "data", r->data);
 	ndr->depth--;
 }
 
+static enum ndr_err_code ndr_push_supplementalCredentialsSignature(struct ndr_push *ndr, int ndr_flags, enum supplementalCredentialsSignature r)
+{
+	{
+		uint32_t _flags_save_ENUM = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+		ndr->flags = _flags_save_ENUM;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_supplementalCredentialsSignature(struct ndr_pull *ndr, int ndr_flags, enum supplementalCredentialsSignature *r)
+{
+	uint16_t v;
+	{
+		uint32_t _flags_save_ENUM = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+		*r = v;
+		ndr->flags = _flags_save_ENUM;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_supplementalCredentialsSignature(struct ndr_print *ndr, const char *name, enum supplementalCredentialsSignature r)
+{
+	const char *val = NULL;
+
+	{
+		uint32_t _flags_save_ENUM = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
+		switch (r) {
+			case SUPPLEMENTAL_CREDENTIALS_SIGNATURE: val = "SUPPLEMENTAL_CREDENTIALS_SIGNATURE"; break;
+		}
+		ndr_print_enum(ndr, name, "ENUM", val, r);
+		ndr->flags = _flags_save_ENUM;
+	}
+}
+
 static enum ndr_err_code ndr_push_supplementalCredentialsSubBlob(struct ndr_push *ndr, int ndr_flags, const struct supplementalCredentialsSubBlob *r)
 {
 	uint32_t cntr_packages_0;
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 2));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, SUPPLEMENTAL_CREDENTIALS_PREFIX, 0x31, sizeof(uint16_t), CH_UTF16));
+		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, SUPPLEMENTAL_CREDENTIALS_PREFIX, 0x30, sizeof(uint16_t), CH_UTF16));
+		NDR_CHECK(ndr_push_supplementalCredentialsSignature(ndr, NDR_SCALARS, SUPPLEMENTAL_CREDENTIALS_SIGNATURE));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_packages));
 		for (cntr_packages_0 = 0; cntr_packages_0 < r->num_packages; cntr_packages_0++) {
 			NDR_CHECK(ndr_push_supplementalCredentialsPackage(ndr, NDR_SCALARS, &r->packages[cntr_packages_0]));
@@ -1258,7 +1298,8 @@ static enum ndr_err_code ndr_pull_supplementalCredentialsSubBlob(struct ndr_pull
 	TALLOC_CTX *_mem_save_packages_0;
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 2));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->prefix, 0x31, sizeof(uint16_t), CH_UTF16));
+		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->prefix, 0x30, sizeof(uint16_t), CH_UTF16));
+		NDR_CHECK(ndr_pull_supplementalCredentialsSignature(ndr, NDR_SCALARS, &r->signature));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_packages));
 		NDR_PULL_ALLOC_N(ndr, r->packages, r->num_packages);
 		_mem_save_packages_0 = NDR_PULL_GET_MEM_CTX(ndr);
@@ -1279,6 +1320,7 @@ _PUBLIC_ void ndr_print_supplementalCredentialsSubBlob(struct ndr_print *ndr, co
 	ndr_print_struct(ndr, name, "supplementalCredentialsSubBlob");
 	ndr->depth++;
 	ndr_print_string(ndr, "prefix", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?SUPPLEMENTAL_CREDENTIALS_PREFIX:r->prefix);
+	ndr_print_supplementalCredentialsSignature(ndr, "signature", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?SUPPLEMENTAL_CREDENTIALS_SIGNATURE:r->signature);
 	ndr_print_uint16(ndr, "num_packages", r->num_packages);
 	ndr->print(ndr, "%s: ARRAY(%d)", "packages", (int)r->num_packages);
 	ndr->depth++;
@@ -1487,6 +1529,9 @@ static enum ndr_err_code ndr_push_package_PrimaryKerberosKey(struct ndr_push *nd
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 0));
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 0));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->keytype));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, (r->value?r->value->length:0)));
 		{
@@ -1495,8 +1540,6 @@ static enum ndr_err_code ndr_push_package_PrimaryKerberosKey(struct ndr_push *nd
 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->value));
 			ndr->flags = _flags_save_DATA_BLOB;
 		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
 		{
@@ -1523,6 +1566,9 @@ static enum ndr_err_code ndr_pull_package_PrimaryKerberosKey(struct ndr_pull *nd
 	TALLOC_CTX *_mem_save_value_0;
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->reserved1));
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->reserved2));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved3));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->keytype));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value_len));
 		{
@@ -1537,8 +1583,6 @@ static enum ndr_err_code ndr_pull_package_PrimaryKerberosKey(struct ndr_pull *nd
 			}
 			ndr->flags = _flags_save_DATA_BLOB;
 		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
 		{
@@ -1569,6 +1613,9 @@ _PUBLIC_ void ndr_print_package_PrimaryKerberosKey(struct ndr_print *ndr, const
 {
 	ndr_print_struct(ndr, name, "package_PrimaryKerberosKey");
 	ndr->depth++;
+	ndr_print_uint16(ndr, "reserved1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved1);
+	ndr_print_uint16(ndr, "reserved2", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved2);
+	ndr_print_uint32(ndr, "reserved3", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved3);
 	ndr_print_uint32(ndr, "keytype", r->keytype);
 	ndr_print_uint32(ndr, "value_len", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?(r->value?r->value->length:0):r->value_len);
 	ndr_print_ptr(ndr, "value", r->value);
@@ -1577,8 +1624,6 @@ _PUBLIC_ void ndr_print_package_PrimaryKerberosKey(struct ndr_print *ndr, const
 		ndr_print_DATA_BLOB(ndr, "value", *r->value);
 	}
 	ndr->depth--;
-	ndr_print_uint32(ndr, "unknown1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->unknown1);
-	ndr_print_uint32(ndr, "unknown2", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->unknown2);
 	ndr->depth--;
 }
 
@@ -1586,27 +1631,22 @@ static enum ndr_err_code ndr_push_package_PrimaryKerberosCtr3(struct ndr_push *n
 {
 	uint32_t cntr_keys_0;
 	uint32_t cntr_old_keys_0;
-	uint32_t cntr_unknown3_0;
-	uint32_t cntr_unknown3_old_0;
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_keys));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_old_keys));
 		NDR_CHECK(ndr_push_package_PrimaryKerberosString(ndr, NDR_SCALARS, &r->salt));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 		for (cntr_keys_0 = 0; cntr_keys_0 < r->num_keys; cntr_keys_0++) {
 			NDR_CHECK(ndr_push_package_PrimaryKerberosKey(ndr, NDR_SCALARS, &r->keys[cntr_keys_0]));
 		}
 		for (cntr_old_keys_0 = 0; cntr_old_keys_0 < r->num_old_keys; cntr_old_keys_0++) {
 			NDR_CHECK(ndr_push_package_PrimaryKerberosKey(ndr, NDR_SCALARS, &r->old_keys[cntr_old_keys_0]));
 		}
-		for (cntr_unknown3_0 = 0; cntr_unknown3_0 < r->num_keys; cntr_unknown3_0++) {
-			NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->unknown3[cntr_unknown3_0]));
-		}
-		for (cntr_unknown3_old_0 = 0; cntr_unknown3_old_0 < r->num_old_keys; cntr_unknown3_old_0++) {
-			NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->unknown3_old[cntr_unknown3_old_0]));
-		}
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
 		NDR_CHECK(ndr_push_package_PrimaryKerberosString(ndr, NDR_BUFFERS, &r->salt));
@@ -1626,17 +1666,11 @@ static enum ndr_err_code ndr_pull_package_PrimaryKerberosCtr3(struct ndr_pull *n
 	TALLOC_CTX *_mem_save_keys_0;
 	uint32_t cntr_old_keys_0;
 	TALLOC_CTX *_mem_save_old_keys_0;
-	uint32_t cntr_unknown3_0;
-	TALLOC_CTX *_mem_save_unknown3_0;
-	uint32_t cntr_unknown3_old_0;
-	TALLOC_CTX *_mem_save_unknown3_old_0;
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 4));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_keys));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_old_keys));
 		NDR_CHECK(ndr_pull_package_PrimaryKerberosString(ndr, NDR_SCALARS, &r->salt));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
 		NDR_PULL_ALLOC_N(ndr, r->keys, r->num_keys);
 		_mem_save_keys_0 = NDR_PULL_GET_MEM_CTX(ndr);
 		NDR_PULL_SET_MEM_CTX(ndr, r->keys, 0);
@@ -1651,20 +1685,11 @@ static enum ndr_err_code ndr_pull_package_PrimaryKerberosCtr3(struct ndr_pull *n
 			NDR_CHECK(ndr_pull_package_PrimaryKerberosKey(ndr, NDR_SCALARS, &r->old_keys[cntr_old_keys_0]));
 		}
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_old_keys_0, 0);
-		NDR_PULL_ALLOC_N(ndr, r->unknown3, r->num_keys);
-		_mem_save_unknown3_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->unknown3, 0);
-		for (cntr_unknown3_0 = 0; cntr_unknown3_0 < r->num_keys; cntr_unknown3_0++) {
-			NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->unknown3[cntr_unknown3_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown3_0, 0);
-		NDR_PULL_ALLOC_N(ndr, r->unknown3_old, r->num_old_keys);
-		_mem_save_unknown3_old_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->unknown3_old, 0);
-		for (cntr_unknown3_old_0 = 0; cntr_unknown3_old_0 < r->num_old_keys; cntr_unknown3_old_0++) {
-			NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->unknown3_old[cntr_unknown3_old_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown3_old_0, 0);
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->padding1));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->padding2));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->padding3));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->padding4));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->padding5));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
 		NDR_CHECK(ndr_pull_package_PrimaryKerberosString(ndr, NDR_BUFFERS, &r->salt));
@@ -1688,15 +1713,11 @@ _PUBLIC_ void ndr_print_package_PrimaryKerberosCtr3(struct ndr_print *ndr, const
 {
 	uint32_t cntr_keys_0;
 	uint32_t cntr_old_keys_0;
-	uint32_t cntr_unknown3_0;
-	uint32_t cntr_unknown3_old_0;
 	ndr_print_struct(ndr, name, "package_PrimaryKerberosCtr3");
 	ndr->depth++;
 	ndr_print_uint16(ndr, "num_keys", r->num_keys);
 	ndr_print_uint16(ndr, "num_old_keys", r->num_old_keys);
 	ndr_print_package_PrimaryKerberosString(ndr, "salt", &r->salt);
-	ndr_print_uint32(ndr, "unknown1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->unknown1);
-	ndr_print_uint32(ndr, "unknown2", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->unknown2);
 	ndr->print(ndr, "%s: ARRAY(%d)", "keys", (int)r->num_keys);
 	ndr->depth++;
 	for (cntr_keys_0=0;cntr_keys_0<r->num_keys;cntr_keys_0++) {
@@ -1717,26 +1738,11 @@ _PUBLIC_ void ndr_print_package_PrimaryKerberosCtr3(struct ndr_print *ndr, const
 		}
 	}
 	ndr->depth--;
-	ndr->print(ndr, "%s: ARRAY(%d)", "unknown3", (int)r->num_keys);
-	ndr->depth++;
-	for (cntr_unknown3_0=0;cntr_unknown3_0<r->num_keys;cntr_unknown3_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_unknown3_0) != -1) {
-			ndr_print_udlong(ndr, "unknown3", r->unknown3[cntr_unknown3_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->print(ndr, "%s: ARRAY(%d)", "unknown3_old", (int)r->num_old_keys);
-	ndr->depth++;
-	for (cntr_unknown3_old_0=0;cntr_unknown3_old_0<r->num_old_keys;cntr_unknown3_old_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_unknown3_old_0) != -1) {
-			ndr_print_udlong(ndr, "unknown3_old", r->unknown3_old[cntr_unknown3_old_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
+	ndr_print_uint32(ndr, "padding1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->padding1);
+	ndr_print_uint32(ndr, "padding2", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->padding2);
+	ndr_print_uint32(ndr, "padding3", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->padding3);
+	ndr_print_uint32(ndr, "padding4", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->padding4);
+	ndr_print_uint32(ndr, "padding5", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->padding5);
 	ndr->depth--;
 }
 
@@ -1847,6 +1853,361 @@ _PUBLIC_ void ndr_print_package_PrimaryKerberosBlob(struct ndr_print *ndr, const
 	ndr->depth--;
 }
 
+static enum ndr_err_code ndr_push_package_PrimaryKerberosNewerKey(struct ndr_push *ndr, int ndr_flags, const struct package_PrimaryKerberosNewerKey *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0x00001000));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->keytype));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, (r->value?r->value->length:0)));
+		{
+			uint32_t _flags_save_DATA_BLOB = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->value));
+			ndr->flags = _flags_save_DATA_BLOB;
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		{
+			uint32_t _flags_save_DATA_BLOB = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+			if (r->value) {
+				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->value));
+				{
+					struct ndr_push *_ndr_value;
+					NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_value, 0, (r->value?r->value->length:0)));
+					NDR_CHECK(ndr_push_DATA_BLOB(_ndr_value, NDR_SCALARS, *r->value));
+					NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_value, 0, (r->value?r->value->length:0)));
+				}
+			}
+			ndr->flags = _flags_save_DATA_BLOB;
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_package_PrimaryKerberosNewerKey(struct ndr_pull *ndr, int ndr_flags, struct package_PrimaryKerberosNewerKey *r)
+{
+	uint32_t _ptr_value;
+	TALLOC_CTX *_mem_save_value_0;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->keytype));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value_len));
+		{
+			uint32_t _flags_save_DATA_BLOB = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value));
+			if (_ptr_value) {
+				NDR_PULL_ALLOC(ndr, r->value);
+				NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->value, _ptr_value));
+			} else {
+				r->value = NULL;
+			}
+			ndr->flags = _flags_save_DATA_BLOB;
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		{
+			uint32_t _flags_save_DATA_BLOB = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+			if (r->value) {
+				uint32_t _relative_save_offset;
+				_relative_save_offset = ndr->offset;
+				NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->value));
+				_mem_save_value_0 = NDR_PULL_GET_MEM_CTX(ndr);
+				NDR_PULL_SET_MEM_CTX(ndr, r->value, 0);
+				{
+					struct ndr_pull *_ndr_value;
+					NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_value, 0, r->value_len));
+					NDR_CHECK(ndr_pull_DATA_BLOB(_ndr_value, NDR_SCALARS, r->value));
+					NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_value, 0, r->value_len));
+				}
+				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_0, 0);
+				ndr->offset = _relative_save_offset;
+			}
+			ndr->flags = _flags_save_DATA_BLOB;
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_package_PrimaryKerberosNewerKey(struct ndr_print *ndr, const char *name, const struct package_PrimaryKerberosNewerKey *r)
+{
+	ndr_print_struct(ndr, name, "package_PrimaryKerberosNewerKey");
+	ndr->depth++;
+	ndr_print_uint32(ndr, "unknown1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->unknown1);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list