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

Günther Deschner gd at samba.org
Wed Apr 30 09:43:13 GMT 2008


The branch, v3-3-test has been updated
       via  067a6931a23631dfb902fb4a180f3c44a5455d51 (commit)
       via  08b5758e00597a4828044c4d4ac97be0741b0cf2 (commit)
       via  5a46f34fa364dfb20d7de93164b56d08dc4fb427 (commit)
       via  163f17f84bc602f9944153854e42cf643c5c4768 (commit)
       via  5f5658b3dc6407ca05368f657dc3296425844434 (commit)
       via  5963bbea82bf0c11158bd1db00710c3157299bcc (commit)
       via  de946e6158526ec109b0c3381bab6e6d8e9cc1b2 (commit)
       via  7ccca9a004c7a4794781cbd7c703c53a0481bd51 (commit)
       via  89284792722ab38d98e874e477c7a4046ee2aba0 (commit)
       via  85a758c0b8398b682450b692744f7a49c7734faf (commit)
       via  0e8e05d556a7f84e500cca3fa858f9b4a9522a5f (commit)
       via  b9ac03bdfa5763c713674acd966ab5d4371992a5 (commit)
       via  686d8939d90eab958d3a352fe53917ba7a17f39a (commit)
      from  fbd99071f99cadd21aa2b8971f745a323a9cda13 (commit)

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


- Log -----------------------------------------------------------------
commit 067a6931a23631dfb902fb4a180f3c44a5455d51
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 00:58:49 2008 +0200

    build: fix some build dependencies.
    
    Guenther

commit 08b5758e00597a4828044c4d4ac97be0741b0cf2
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 00:58:28 2008 +0200

    Re-run make idl.
    
    Guenther

commit 5a46f34fa364dfb20d7de93164b56d08dc4fb427
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 01:10:13 2008 +0200

    IDL: use nbt_dc_sock_addr.
    
    Guenther

commit 163f17f84bc602f9944153854e42cf643c5c4768
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 00:56:31 2008 +0200

    IDL: move some netlogon DS flags to NBT where they actually showup first.
    
    Guenther

commit 5f5658b3dc6407ca05368f657dc3296425844434
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 00:35:57 2008 +0200

    IDL: use samr_AcctFlags in nbt_ntlogon_sam_logon.
    
    Guenther

commit 5963bbea82bf0c11158bd1db00710c3157299bcc
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 00:34:43 2008 +0200

    IDL: add nbt_netlogon_version.
    
    Guenther

commit de946e6158526ec109b0c3381bab6e6d8e9cc1b2
Author: Günther Deschner <gd at samba.org>
Date:   Tue Apr 29 20:14:17 2008 +0200

    rpcclient: fix another srv_name_slash.
    
    Guenther

commit 7ccca9a004c7a4794781cbd7c703c53a0481bd51
Author: Günther Deschner <gd at samba.org>
Date:   Tue Apr 29 20:13:22 2008 +0200

    _netr_LogonSamLogon: fix lm session key length.
    
    Thanks Volker for pointing this out.
    
    Guenther

commit 89284792722ab38d98e874e477c7a4046ee2aba0
Author: Günther Deschner <gd at samba.org>
Date:   Tue Apr 29 20:12:26 2008 +0200

    Re-run make idl.
    
    Guenther

commit 85a758c0b8398b682450b692744f7a49c7734faf
Author: Günther Deschner <gd at samba.org>
Date:   Tue Apr 29 20:11:59 2008 +0200

    IDL: Add DFS_MANAGER_VERSION_W2K8.
    
    Guenther

commit 0e8e05d556a7f84e500cca3fa858f9b4a9522a5f
Author: Günther Deschner <gd at samba.org>
Date:   Tue Apr 29 20:11:02 2008 +0200

    netapi: fix returned name buffer in NetGetJoinInformation_r().
    
    Guenther

commit b9ac03bdfa5763c713674acd966ab5d4371992a5
Author: Günther Deschner <gd at samba.org>
Date:   Tue Apr 29 20:10:17 2008 +0200

    errors: add WERR_NOT_FOUND.
    
    Guenther

commit 686d8939d90eab958d3a352fe53917ba7a17f39a
Author: Günther Deschner <gd at samba.org>
Date:   Fri Apr 25 20:06:19 2008 +0200

    Merge data_blob_hex_string from Samba4.
    
    Guenther

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

Summary of changes:
 source/Makefile.in                |    9 +-
 source/include/doserr.h           |    1 +
 source/lib/data_blob.c            |   22 +++
 source/lib/netapi/joindomain.c    |    6 +-
 source/librpc/gen_ndr/dfs.h       |    4 +-
 source/librpc/gen_ndr/nbt.h       |   34 ++++-
 source/librpc/gen_ndr/ndr_dfs.c   |    1 +
 source/librpc/gen_ndr/ndr_nbt.c   |  270 +++++++++++++++++++++++--------------
 source/librpc/gen_ndr/ndr_nbt.h   |    2 +
 source/librpc/gen_ndr/netlogon.h  |    6 +-
 source/librpc/idl/dfs.idl         |    3 +-
 source/librpc/idl/nbt.idl         |   80 +++++++-----
 source/librpc/idl/netlogon.idl    |    6 +-
 source/libsmb/doserr.c            |    1 +
 source/rpc_server/srv_netlog_nt.c |    2 +-
 source/rpcclient/cmd_srvsvc.c     |    7 +-
 16 files changed, 291 insertions(+), 163 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/Makefile.in b/source/Makefile.in
index f438fbd..35f304d 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -720,7 +720,8 @@ NMBD_OBJ1 = nmbd/asyncdns.o nmbd/nmbd.o nmbd/nmbd_become_dmb.o \
             nmbd/nmbd_workgroupdb.o nmbd/nmbd_synclists.o smbd/connection.o
 
 NMBD_OBJ = $(NMBD_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
-           $(PROFILE_OBJ) $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ)
+           $(PROFILE_OBJ) $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ) \
+	   librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 SWAT_OBJ1 = web/cgi.o web/diagnose.o web/startstop.o web/statuspage.o \
            web/swat.o web/neg_lang.o
@@ -899,7 +900,8 @@ NET_OBJ = $(NET_OBJ1) \
 	  $(PRIVILEGES_BASIC_OBJ)
 
 CUPS_OBJ = client/smbspool.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
-	  $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) $(POPT_LIB_OBJ)
+	  $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) $(POPT_LIB_OBJ) \
+	  librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 CIFS_MOUNT_OBJ = client/mount.cifs.o
 
@@ -1004,7 +1006,8 @@ PROTO_OBJ = $(SMBD_OBJ_MAIN) $(LIBNDR_OBJ) $(LIBNDR_GEN_OBJ) \
 	    $(PRIVILEGES_BASIC_OBJ)
 
 WINBIND_WINS_NSS_OBJ = nsswitch/wins.o $(PARAM_OBJ) \
-	$(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(NSSWINS_OBJ) $(KRBCLIENT_OBJ)
+	$(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(NSSWINS_OBJ) $(KRBCLIENT_OBJ) \
+	librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 PAM_SMBPASS_OBJ_0 = pam_smbpass/pam_smb_auth.o pam_smbpass/pam_smb_passwd.o \
 		pam_smbpass/pam_smb_acct.o pam_smbpass/support.o
diff --git a/source/include/doserr.h b/source/include/doserr.h
index d4fefb2..44ce739 100644
--- a/source/include/doserr.h
+++ b/source/include/doserr.h
@@ -202,6 +202,7 @@
 #define WERR_SERVICE_ALREADY_RUNNING W_ERROR(1056)
 #define WERR_SERVICE_DISABLED W_ERROR(1058)
 #define WERR_SERVICE_NEVER_STARTED W_ERROR(1077)
+#define WERR_NOT_FOUND W_ERROR(1168)
 #define WERR_INVALID_COMPUTER_NAME W_ERROR(1210)
 #define WERR_INVALID_DOMAINNAME W_ERROR(1212)
 #define WERR_MACHINE_LOCKED W_ERROR(1271)
diff --git a/source/lib/data_blob.c b/source/lib/data_blob.c
index daba17d..66c5daf 100644
--- a/source/lib/data_blob.c
+++ b/source/lib/data_blob.c
@@ -156,3 +156,25 @@ DATA_BLOB data_blob_talloc_zero(TALLOC_CTX *mem_ctx, size_t length)
 	data_blob_clear(&blob);
 	return blob;
 }
+
+/**
+print the data_blob as hex string
+**/
+_PUBLIC_ char *data_blob_hex_string(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob)
+{
+	int i;
+	char *hex_string;
+
+	hex_string = talloc_array(mem_ctx, char, (blob->length*2)+1);
+	if (!hex_string) {
+		return NULL;
+	}
+
+	for (i = 0; i < blob->length; i++)
+		slprintf(&hex_string[i*2], 3, "%02X", blob->data[i]);
+
+	hex_string[(blob->length*2)] = '\0';
+	return hex_string;
+}
+
+
diff --git a/source/lib/netapi/joindomain.c b/source/lib/netapi/joindomain.c
index 8e0a62e..74ed8f2 100644
--- a/source/lib/netapi/joindomain.c
+++ b/source/lib/netapi/joindomain.c
@@ -282,6 +282,7 @@ WERROR NetGetJoinInformation_r(struct libnetapi_ctx *ctx,
 	struct rpc_pipe_client *pipe_cli = NULL;
 	NTSTATUS status;
 	WERROR werr;
+	const char *buffer = NULL;
 
 	werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
 	if (!W_ERROR_IS_OK(werr)) {
@@ -295,7 +296,7 @@ WERROR NetGetJoinInformation_r(struct libnetapi_ctx *ctx,
 
 	status = rpccli_wkssvc_NetrGetJoinInformation(pipe_cli, ctx,
 						      r->in.server_name,
-						      r->out.name_buffer,
+						      &buffer,
 						      (enum wkssvc_NetJoinStatus *)r->out.name_type,
 						      &werr);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -303,6 +304,9 @@ WERROR NetGetJoinInformation_r(struct libnetapi_ctx *ctx,
 		goto done;
 	}
 
+	*r->out.name_buffer = talloc_strdup(ctx, buffer);
+	W_ERROR_HAVE_NO_MEMORY(*r->out.name_buffer);
+
  done:
 	return werr;
 }
diff --git a/source/librpc/gen_ndr/dfs.h b/source/librpc/gen_ndr/dfs.h
index dc11e70..8957eae 100644
--- a/source/librpc/gen_ndr/dfs.h
+++ b/source/librpc/gen_ndr/dfs.h
@@ -11,13 +11,15 @@ enum dfs_ManagerVersion
  {
 	DFS_MANAGER_VERSION_NT4=1,
 	DFS_MANAGER_VERSION_W2K=2,
-	DFS_MANAGER_VERSION_W2K3=4
+	DFS_MANAGER_VERSION_W2K3=4,
+	DFS_MANAGER_VERSION_W2K8=6
 }
 #else
  { __donnot_use_enum_dfs_ManagerVersion=0x7FFFFFFF}
 #define DFS_MANAGER_VERSION_NT4 ( 1 )
 #define DFS_MANAGER_VERSION_W2K ( 2 )
 #define DFS_MANAGER_VERSION_W2K3 ( 4 )
+#define DFS_MANAGER_VERSION_W2K8 ( 6 )
 #endif
 ;
 
diff --git a/source/librpc/gen_ndr/nbt.h b/source/librpc/gen_ndr/nbt.h
index bd9bfcd..8093648 100644
--- a/source/librpc/gen_ndr/nbt.h
+++ b/source/librpc/gen_ndr/nbt.h
@@ -5,6 +5,7 @@
 #include "librpc/gen_ndr/misc.h"
 #include "librpc/gen_ndr/security.h"
 #include "librpc/gen_ndr/svcctl.h"
+#include "librpc/gen_ndr/samr.h"
 #ifndef _HEADER_nbt
 #define _HEADER_nbt
 
@@ -410,6 +411,18 @@ enum nbt_netlogon_command
 #endif
 ;
 
+/* bitmap nbt_netlogon_version */
+#define NETLOGON_VERSION_1 ( 0x00000001 )
+#define NETLOGON_VERSION_5 ( 0x00000002 )
+#define NETLOGON_VERSION_5EX ( 0x00000004 )
+#define NETLOGON_VERSION_5EX_WITH_IP ( 0x00000008 )
+#define NETLOGON_VERSION_WITH_CLOSEST_SITE ( 0x00000010 )
+#define NETLOGON_VERSION_AVOID_NT4_EMUL ( 0x01000000 )
+#define NETLOGON_VERSION_PDC ( 0x10000000 )
+#define NETLOGON_VERSION_IP ( 0x20000000 )
+#define NETLOGON_VERSION_LOCAL ( 0x40000000 )
+#define NETLOGON_VERSION_GC ( 0x80000000 )
+
 struct nbt_netlogon_query_for_pdc {
 	const char * computer_name;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
 	const char * mailslot_name;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
@@ -451,6 +464,15 @@ struct nbt_netlogon_response_from_pdc {
 #define NBT_SERVER_CLOSEST ( 0x00000080 )
 #define NBT_SERVER_WRITABLE ( 0x00000100 )
 #define NBT_SERVER_GOOD_TIMESERV ( 0x00000200 )
+#define NBT_SERVER_NDNC ( 0x00000400 )
+#define NBT_SERVER_SELECT_SECRET_DOMAIN_6 ( 0x00000800 )
+#define NBT_SERVER_FULL_SECRET_DOMAIN_6 ( 0x00001000 )
+
+struct nbt_dc_sock_addr {
+	uint32_t sa_family;
+	const char * pdc_ip;/* [flag(LIBNDR_FLAG_BIGENDIAN)] */
+	DATA_BLOB remaining;/* [flag(LIBNDR_FLAG_REMAINING)] */
+};
 
 struct nbt_netlogon_response_from_pdc2 {
 	DATA_BLOB _pad;/* [flag(LIBNDR_FLAG_ALIGN4)] */
@@ -464,10 +486,8 @@ struct nbt_netlogon_response_from_pdc2 {
 	const char * user_name;
 	const char * server_site;
 	const char * client_site;
-	uint8_t unknown;
-	uint32_t unknown2;
-	const char * pdc_ip;/* [flag(LIBNDR_FLAG_BIGENDIAN)] */
-	uint32_t unknown3[2];
+	uint8_t dc_sock_addr_size;
+	struct nbt_dc_sock_addr dc_sock_addr;/* [subcontext_size(dc_sock_addr_size),subcontext(0)] */
 	uint32_t nt_version;
 	uint16_t lmnt_token;
 	uint16_t lm20_token;
@@ -569,10 +589,8 @@ struct nbt_cldap_netlogon_13 {
 	const char * user_name;
 	const char * server_site;
 	const char * client_site;
-	uint8_t unknown;
-	uint32_t unknown2;
-	const char * pdc_ip;/* [flag(LIBNDR_FLAG_BIGENDIAN)] */
-	uint32_t unknown3[2];
+	uint8_t dc_sock_addr_size;
+	struct nbt_dc_sock_addr dc_sock_addr;/* [subcontext_size(dc_sock_addr_size),subcontext(0)] */
 	uint32_t nt_version;/* [value(13)] */
 	uint16_t lmnt_token;
 	uint16_t lm20_token;
diff --git a/source/librpc/gen_ndr/ndr_dfs.c b/source/librpc/gen_ndr/ndr_dfs.c
index 1897550..4ac0096 100644
--- a/source/librpc/gen_ndr/ndr_dfs.c
+++ b/source/librpc/gen_ndr/ndr_dfs.c
@@ -25,6 +25,7 @@ _PUBLIC_ void ndr_print_dfs_ManagerVersion(struct ndr_print *ndr, const char *na
 		case DFS_MANAGER_VERSION_NT4: val = "DFS_MANAGER_VERSION_NT4"; break;
 		case DFS_MANAGER_VERSION_W2K: val = "DFS_MANAGER_VERSION_W2K"; break;
 		case DFS_MANAGER_VERSION_W2K3: val = "DFS_MANAGER_VERSION_W2K3"; break;
+		case DFS_MANAGER_VERSION_W2K8: val = "DFS_MANAGER_VERSION_W2K8"; break;
 	}
 	ndr_print_enum(ndr, name, "ENUM", val, r);
 }
diff --git a/source/librpc/gen_ndr/ndr_nbt.c b/source/librpc/gen_ndr/ndr_nbt.c
index 92a9488..85514ed 100644
--- a/source/librpc/gen_ndr/ndr_nbt.c
+++ b/source/librpc/gen_ndr/ndr_nbt.c
@@ -6,6 +6,7 @@
 #include "librpc/gen_ndr/ndr_misc.h"
 #include "librpc/gen_ndr/ndr_security.h"
 #include "librpc/gen_ndr/ndr_svcctl.h"
+#include "librpc/gen_ndr/ndr_samr.h"
 static enum ndr_err_code ndr_push_nbt_operation(struct ndr_push *ndr, int ndr_flags, uint16_t r)
 {
 	NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
@@ -1576,6 +1577,52 @@ _PUBLIC_ void ndr_print_nbt_netlogon_command(struct ndr_print *ndr, const char *
 	ndr_print_enum(ndr, name, "ENUM", val, r);
 }
 
+static enum ndr_err_code ndr_push_nbt_netlogon_version(struct ndr_push *ndr, int ndr_flags, uint32_t r)
+{
+	{
+		uint32_t _flags_save_BITMAP = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+		ndr->flags = _flags_save_BITMAP;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_nbt_netlogon_version(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
+{
+	uint32_t v;
+	{
+		uint32_t _flags_save_BITMAP = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+		*r = v;
+		ndr->flags = _flags_save_BITMAP;
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_nbt_netlogon_version(struct ndr_print *ndr, const char *name, uint32_t r)
+{
+	{
+		uint32_t _flags_save_BITMAP = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
+		ndr_print_uint32(ndr, name, r);
+		ndr->depth++;
+		ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_VERSION_1", NETLOGON_VERSION_1, r);
+		ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_VERSION_5", NETLOGON_VERSION_5, r);
+		ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_VERSION_5EX", NETLOGON_VERSION_5EX, r);
+		ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_VERSION_5EX_WITH_IP", NETLOGON_VERSION_5EX_WITH_IP, r);
+		ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_VERSION_WITH_CLOSEST_SITE", NETLOGON_VERSION_WITH_CLOSEST_SITE, r);
+		ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_VERSION_AVOID_NT4_EMUL", NETLOGON_VERSION_AVOID_NT4_EMUL, r);
+		ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_VERSION_PDC", NETLOGON_VERSION_PDC, r);
+		ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_VERSION_IP", NETLOGON_VERSION_IP, r);
+		ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_VERSION_LOCAL", NETLOGON_VERSION_LOCAL, r);
+		ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_VERSION_GC", NETLOGON_VERSION_GC, r);
+		ndr->depth--;
+		ndr->flags = _flags_save_BITMAP;
+	}
+}
+
 static enum ndr_err_code ndr_push_nbt_netlogon_query_for_pdc(struct ndr_push *ndr, int ndr_flags, const struct nbt_netlogon_query_for_pdc *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
@@ -1604,7 +1651,7 @@ static enum ndr_err_code ndr_push_nbt_netlogon_query_for_pdc(struct ndr_push *nd
 			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->unicode_name));
 			ndr->flags = _flags_save_string;
 		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->nt_version));
+		NDR_CHECK(ndr_push_nbt_netlogon_version(ndr, NDR_SCALARS, r->nt_version));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lmnt_token));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lm20_token));
 	}
@@ -1641,7 +1688,7 @@ static enum ndr_err_code ndr_pull_nbt_netlogon_query_for_pdc(struct ndr_pull *nd
 			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->unicode_name));
 			ndr->flags = _flags_save_string;
 		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->nt_version));
+		NDR_CHECK(ndr_pull_nbt_netlogon_version(ndr, NDR_SCALARS, &r->nt_version));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lmnt_token));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lm20_token));
 	}
@@ -1658,7 +1705,7 @@ _PUBLIC_ void ndr_print_nbt_netlogon_query_for_pdc(struct ndr_print *ndr, const
 	ndr_print_string(ndr, "mailslot_name", r->mailslot_name);
 	ndr_print_DATA_BLOB(ndr, "_pad", r->_pad);
 	ndr_print_string(ndr, "unicode_name", r->unicode_name);
-	ndr_print_uint32(ndr, "nt_version", r->nt_version);
+	ndr_print_nbt_netlogon_version(ndr, "nt_version", r->nt_version);
 	ndr_print_uint16(ndr, "lmnt_token", r->lmnt_token);
 	ndr_print_uint16(ndr, "lm20_token", r->lm20_token);
 	ndr->depth--;
@@ -1691,7 +1738,7 @@ static enum ndr_err_code ndr_push_nbt_netlogon_query_for_pdc2(struct ndr_push *n
 		for (cntr_unknown_0 = 0; cntr_unknown_0 < 2; cntr_unknown_0++) {
 			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown[cntr_unknown_0]));
 		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->nt_version));
+		NDR_CHECK(ndr_push_nbt_netlogon_version(ndr, NDR_SCALARS, r->nt_version));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lmnt_token));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lm20_token));
 	}
@@ -1727,7 +1774,7 @@ static enum ndr_err_code ndr_pull_nbt_netlogon_query_for_pdc2(struct ndr_pull *n
 		for (cntr_unknown_0 = 0; cntr_unknown_0 < 2; cntr_unknown_0++) {
 			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown[cntr_unknown_0]));
 		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->nt_version));
+		NDR_CHECK(ndr_pull_nbt_netlogon_version(ndr, NDR_SCALARS, &r->nt_version));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lmnt_token));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lm20_token));
 	}
@@ -1755,7 +1802,7 @@ _PUBLIC_ void ndr_print_nbt_netlogon_query_for_pdc2(struct ndr_print *ndr, const
 		}
 	}
 	ndr->depth--;
-	ndr_print_uint32(ndr, "nt_version", r->nt_version);
+	ndr_print_nbt_netlogon_version(ndr, "nt_version", r->nt_version);
 	ndr_print_uint16(ndr, "lmnt_token", r->lmnt_token);
 	ndr_print_uint16(ndr, "lm20_token", r->lm20_token);
 	ndr->depth--;
@@ -1789,7 +1836,7 @@ static enum ndr_err_code ndr_push_nbt_netlogon_response_from_pdc(struct ndr_push
 			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->domain_name));
 			ndr->flags = _flags_save_string;
 		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->nt_version));
+		NDR_CHECK(ndr_push_nbt_netlogon_version(ndr, NDR_SCALARS, r->nt_version));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lmnt_token));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lm20_token));
 	}
@@ -1826,7 +1873,7 @@ static enum ndr_err_code ndr_pull_nbt_netlogon_response_from_pdc(struct ndr_pull
 			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->domain_name));
 			ndr->flags = _flags_save_string;
 		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->nt_version));
+		NDR_CHECK(ndr_pull_nbt_netlogon_version(ndr, NDR_SCALARS, &r->nt_version));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lmnt_token));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lm20_token));
 	}
@@ -1843,7 +1890,7 @@ _PUBLIC_ void ndr_print_nbt_netlogon_response_from_pdc(struct ndr_print *ndr, co
 	ndr_print_DATA_BLOB(ndr, "_pad", r->_pad);
 	ndr_print_string(ndr, "unicode_pdc_name", r->unicode_pdc_name);
 	ndr_print_string(ndr, "domain_name", r->domain_name);
-	ndr_print_uint32(ndr, "nt_version", r->nt_version);
+	ndr_print_nbt_netlogon_version(ndr, "nt_version", r->nt_version);
 	ndr_print_uint16(ndr, "lmnt_token", r->lmnt_token);
 	ndr_print_uint16(ndr, "lm20_token", r->lm20_token);
 	ndr->depth--;
@@ -1876,12 +1923,70 @@ _PUBLIC_ void ndr_print_nbt_server_type(struct ndr_print *ndr, const char *name,
 	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NBT_SERVER_CLOSEST", NBT_SERVER_CLOSEST, r);
 	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NBT_SERVER_WRITABLE", NBT_SERVER_WRITABLE, r);
 	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NBT_SERVER_GOOD_TIMESERV", NBT_SERVER_GOOD_TIMESERV, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NBT_SERVER_NDNC", NBT_SERVER_NDNC, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NBT_SERVER_SELECT_SECRET_DOMAIN_6", NBT_SERVER_SELECT_SECRET_DOMAIN_6, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NBT_SERVER_FULL_SECRET_DOMAIN_6", NBT_SERVER_FULL_SECRET_DOMAIN_6, r);
+	ndr->depth--;
+}
+
+static enum ndr_err_code ndr_push_nbt_dc_sock_addr(struct ndr_push *ndr, int ndr_flags, const struct nbt_dc_sock_addr *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sa_family));
+		{
+			uint32_t _flags_save_ipv4address = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
+			NDR_CHECK(ndr_push_ipv4address(ndr, NDR_SCALARS, r->pdc_ip));
+			ndr->flags = _flags_save_ipv4address;
+		}
+		{
+			uint32_t _flags_save_DATA_BLOB = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+			NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->remaining));
+			ndr->flags = _flags_save_DATA_BLOB;
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_nbt_dc_sock_addr(struct ndr_pull *ndr, int ndr_flags, struct nbt_dc_sock_addr *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sa_family));
+		{
+			uint32_t _flags_save_ipv4address = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
+			NDR_CHECK(ndr_pull_ipv4address(ndr, NDR_SCALARS, &r->pdc_ip));
+			ndr->flags = _flags_save_ipv4address;
+		}
+		{
+			uint32_t _flags_save_DATA_BLOB = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+			NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->remaining));
+			ndr->flags = _flags_save_DATA_BLOB;
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_nbt_dc_sock_addr(struct ndr_print *ndr, const char *name, const struct nbt_dc_sock_addr *r)
+{
+	ndr_print_struct(ndr, name, "nbt_dc_sock_addr");
+	ndr->depth++;
+	ndr_print_uint32(ndr, "sa_family", r->sa_family);
+	ndr_print_ipv4address(ndr, "pdc_ip", r->pdc_ip);
+	ndr_print_DATA_BLOB(ndr, "remaining", r->remaining);
 	ndr->depth--;
 }
 
 static enum ndr_err_code ndr_push_nbt_netlogon_response_from_pdc2(struct ndr_push *ndr, int ndr_flags, const struct nbt_netlogon_response_from_pdc2 *r)
 {
-	uint32_t cntr_unknown3_0;
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
 		{
@@ -1900,18 +2005,14 @@ static enum ndr_err_code ndr_push_nbt_netlogon_response_from_pdc2(struct ndr_pus
 		NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS, r->user_name));
 		NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS, r->server_site));
 		NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS, r->client_site));
-		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->unknown));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
+		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->dc_sock_addr_size));
 		{
-			uint32_t _flags_save_ipv4address = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
-			NDR_CHECK(ndr_push_ipv4address(ndr, NDR_SCALARS, r->pdc_ip));
-			ndr->flags = _flags_save_ipv4address;
-		}
-		for (cntr_unknown3_0 = 0; cntr_unknown3_0 < 2; cntr_unknown3_0++) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3[cntr_unknown3_0]));
+			struct ndr_push *_ndr_dc_sock_addr;
+			NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_dc_sock_addr, 0, r->dc_sock_addr_size));
+			NDR_CHECK(ndr_push_nbt_dc_sock_addr(_ndr_dc_sock_addr, NDR_SCALARS, &r->dc_sock_addr));
+			NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_dc_sock_addr, 0, r->dc_sock_addr_size));
 		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->nt_version));
+		NDR_CHECK(ndr_push_nbt_netlogon_version(ndr, NDR_SCALARS, r->nt_version));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lmnt_token));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lm20_token));
 	}
@@ -1922,7 +2023,6 @@ static enum ndr_err_code ndr_push_nbt_netlogon_response_from_pdc2(struct ndr_pus
 
 static enum ndr_err_code ndr_pull_nbt_netlogon_response_from_pdc2(struct ndr_pull *ndr, int ndr_flags, struct nbt_netlogon_response_from_pdc2 *r)
 {
-	uint32_t cntr_unknown3_0;
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 4));
 		{
@@ -1941,18 +2041,14 @@ static enum ndr_err_code ndr_pull_nbt_netlogon_response_from_pdc2(struct ndr_pul
 		NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS, &r->user_name));
 		NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS, &r->server_site));
 		NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS, &r->client_site));
-		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->unknown));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
+		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->dc_sock_addr_size));
 		{
-			uint32_t _flags_save_ipv4address = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
-			NDR_CHECK(ndr_pull_ipv4address(ndr, NDR_SCALARS, &r->pdc_ip));
-			ndr->flags = _flags_save_ipv4address;
+			struct ndr_pull *_ndr_dc_sock_addr;
+			NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_dc_sock_addr, 0, r->dc_sock_addr_size));
+			NDR_CHECK(ndr_pull_nbt_dc_sock_addr(_ndr_dc_sock_addr, NDR_SCALARS, &r->dc_sock_addr));
+			NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_dc_sock_addr, 0, r->dc_sock_addr_size));
 		}
-		for (cntr_unknown3_0 = 0; cntr_unknown3_0 < 2; cntr_unknown3_0++) {
-			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3[cntr_unknown3_0]));
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->nt_version));
+		NDR_CHECK(ndr_pull_nbt_netlogon_version(ndr, NDR_SCALARS, &r->nt_version));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lmnt_token));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lm20_token));
 	}
@@ -1963,7 +2059,6 @@ static enum ndr_err_code ndr_pull_nbt_netlogon_response_from_pdc2(struct ndr_pul
 
 _PUBLIC_ void ndr_print_nbt_netlogon_response_from_pdc2(struct ndr_print *ndr, const char *name, const struct nbt_netlogon_response_from_pdc2 *r)
 {
-	uint32_t cntr_unknown3_0;
 	ndr_print_struct(ndr, name, "nbt_netlogon_response_from_pdc2");
 	ndr->depth++;
 	ndr_print_DATA_BLOB(ndr, "_pad", r->_pad);
@@ -1977,20 +2072,9 @@ _PUBLIC_ void ndr_print_nbt_netlogon_response_from_pdc2(struct ndr_print *ndr, c
 	ndr_print_nbt_string(ndr, "user_name", r->user_name);
 	ndr_print_nbt_string(ndr, "server_site", r->server_site);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list