[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha6-880-g886c028

Günther Deschner gd at samba.org
Sat Feb 14 00:21:58 GMT 2009


The branch, master has been updated
       via  886c028e44a31c52f6595343f55236e27a8d0b40 (commit)
       via  935a551d25562c6459e6f6d7788539fc7849edfe (commit)
       via  aad5de9a1140ce1751aa205c277d0e7a425f2e35 (commit)
       via  c302cac9d5c9eeebd567d257b11851e4e45d7144 (commit)
       via  6222c177bfa05f85a8d9905dfc2a468d5c037f58 (commit)
       via  640248d2d3b5e38b249ff65cf6ec5d44c60a4949 (commit)
       via  75562a1e341a196e3c3dada488e79f0329d6c667 (commit)
      from  4df9f1860ed63ff88ee6c47596faa293cc9330bd (commit)

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


- Log -----------------------------------------------------------------
commit 886c028e44a31c52f6595343f55236e27a8d0b40
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 13 17:18:32 2009 +0100

    s4-smbtorture: fix test_PausePrinter and test_ResumePrinter.
    
    Guenther

commit 935a551d25562c6459e6f6d7788539fc7849edfe
Author: Günther Deschner <gd at samba.org>
Date:   Sat Feb 14 01:19:07 2009 +0100

    s3: re-run make samba3-idl.
    
    Guenther

commit aad5de9a1140ce1751aa205c277d0e7a425f2e35
Author: Günther Deschner <gd at samba.org>
Date:   Sat Feb 14 00:32:05 2009 +0100

    spoolss: fill in some unknowns in spoolss_PrinterInfo0 and spoolss_SetPrinterInfo0.
    
    Guenther

commit c302cac9d5c9eeebd567d257b11851e4e45d7144
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 13 18:09:26 2009 +0100

    spoolss: fill in more levels in spoolss_UserLevel union.
    
    Guenther

commit 6222c177bfa05f85a8d9905dfc2a468d5c037f58
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 13 16:56:14 2009 +0100

    spoolss: fix spoolss_AddPrinterEx IDL.
    
    Guenther

commit 640248d2d3b5e38b249ff65cf6ec5d44c60a4949
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 13 16:02:24 2009 +0100

    spoolss: fix spoolss_SetPrinter IDL.
    
    Guenther

commit 75562a1e341a196e3c3dada488e79f0329d6c667
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 13 16:56:52 2009 +0100

    s3-netlogon: some more appropriate debug messages.
    
    Guenther

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

Summary of changes:
 librpc/gen_ndr/cli_spoolss.c       |   28 +-
 librpc/gen_ndr/cli_spoolss.h       |   17 +-
 librpc/gen_ndr/ndr_spoolss.c       | 1871 +++++++++++++++++++++++++++++++++---
 librpc/gen_ndr/ndr_spoolss.h       |   16 +
 librpc/gen_ndr/spoolss.h           |  258 +++++-
 librpc/idl/spoolss.idl             |  230 ++++-
 source3/rpc_server/srv_netlog_nt.c |   44 +-
 source4/torture/rpc/spoolss.c      |   32 +-
 8 files changed, 2220 insertions(+), 276 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/cli_spoolss.c b/librpc/gen_ndr/cli_spoolss.c
index b8836f4..318e4e3 100644
--- a/librpc/gen_ndr/cli_spoolss.c
+++ b/librpc/gen_ndr/cli_spoolss.c
@@ -370,10 +370,9 @@ NTSTATUS rpccli_spoolss_DeletePrinter(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_spoolss_SetPrinter(struct rpc_pipe_client *cli,
 				   TALLOC_CTX *mem_ctx,
 				   struct policy_handle *handle /* [in] [ref] */,
-				   uint32_t level /* [in]  */,
-				   union spoolss_SetPrinterInfo info /* [in] [switch_is(level)] */,
-				   struct spoolss_DevmodeContainer devmode_ctr /* [in]  */,
-				   struct sec_desc_buf secdesc_ctr /* [in]  */,
+				   struct spoolss_SetPrinterInfoCtr *info_ctr /* [in] [ref] */,
+				   struct spoolss_DevmodeContainer *devmode_ctr /* [in] [ref] */,
+				   struct sec_desc_buf *secdesc_ctr /* [in] [ref] */,
 				   enum spoolss_PrinterControl command /* [in]  */,
 				   WERROR *werror)
 {
@@ -382,8 +381,7 @@ NTSTATUS rpccli_spoolss_SetPrinter(struct rpc_pipe_client *cli,
 
 	/* In parameters */
 	r.in.handle = handle;
-	r.in.level = level;
-	r.in.info = info;
+	r.in.info_ctr = info_ctr;
 	r.in.devmode_ctr = devmode_ctr;
 	r.in.secdesc_ctr = secdesc_ctr;
 	r.in.command = command;
@@ -3308,12 +3306,10 @@ NTSTATUS rpccli_spoolss_OpenPrinterEx(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_spoolss_AddPrinterEx(struct rpc_pipe_client *cli,
 				     TALLOC_CTX *mem_ctx,
 				     const char *server /* [in] [unique,charset(UTF16)] */,
-				     uint32_t level /* [in]  */,
-				     union spoolss_PrinterInfo *info /* [in] [unique,switch_is(level)] */,
-				     struct spoolss_DevmodeContainer devmode_ctr /* [in]  */,
-				     struct security_descriptor *secdesc /* [in] [unique] */,
-				     uint32_t ulevel /* [in]  */,
-				     union spoolss_UserLevel userlevel /* [in] [switch_is(ulevel)] */,
+				     struct spoolss_SetPrinterInfoCtr *info_ctr /* [in] [ref] */,
+				     struct spoolss_DevmodeContainer *devmode_ctr /* [in] [ref] */,
+				     struct sec_desc_buf *secdesc_ctr /* [in] [ref] */,
+				     struct spoolss_UserLevelCtr *userlevel_ctr /* [in] [ref] */,
 				     struct policy_handle *handle /* [out] [ref] */,
 				     WERROR *werror)
 {
@@ -3322,12 +3318,10 @@ NTSTATUS rpccli_spoolss_AddPrinterEx(struct rpc_pipe_client *cli,
 
 	/* In parameters */
 	r.in.server = server;
-	r.in.level = level;
-	r.in.info = info;
+	r.in.info_ctr = info_ctr;
 	r.in.devmode_ctr = devmode_ctr;
-	r.in.secdesc = secdesc;
-	r.in.ulevel = ulevel;
-	r.in.userlevel = userlevel;
+	r.in.secdesc_ctr = secdesc_ctr;
+	r.in.userlevel_ctr = userlevel_ctr;
 
 	if (DEBUGLEVEL >= 10) {
 		NDR_PRINT_IN_DEBUG(spoolss_AddPrinterEx, &r);
diff --git a/librpc/gen_ndr/cli_spoolss.h b/librpc/gen_ndr/cli_spoolss.h
index 243de02..0859d8d 100644
--- a/librpc/gen_ndr/cli_spoolss.h
+++ b/librpc/gen_ndr/cli_spoolss.h
@@ -59,10 +59,9 @@ NTSTATUS rpccli_spoolss_DeletePrinter(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_spoolss_SetPrinter(struct rpc_pipe_client *cli,
 				   TALLOC_CTX *mem_ctx,
 				   struct policy_handle *handle /* [in] [ref] */,
-				   uint32_t level /* [in]  */,
-				   union spoolss_SetPrinterInfo info /* [in] [switch_is(level)] */,
-				   struct spoolss_DevmodeContainer devmode_ctr /* [in]  */,
-				   struct sec_desc_buf secdesc_ctr /* [in]  */,
+				   struct spoolss_SetPrinterInfoCtr *info_ctr /* [in] [ref] */,
+				   struct spoolss_DevmodeContainer *devmode_ctr /* [in] [ref] */,
+				   struct sec_desc_buf *secdesc_ctr /* [in] [ref] */,
 				   enum spoolss_PrinterControl command /* [in]  */,
 				   WERROR *werror);
 NTSTATUS rpccli_spoolss_GetPrinter(struct rpc_pipe_client *cli,
@@ -414,12 +413,10 @@ NTSTATUS rpccli_spoolss_OpenPrinterEx(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_spoolss_AddPrinterEx(struct rpc_pipe_client *cli,
 				     TALLOC_CTX *mem_ctx,
 				     const char *server /* [in] [unique,charset(UTF16)] */,
-				     uint32_t level /* [in]  */,
-				     union spoolss_PrinterInfo *info /* [in] [unique,switch_is(level)] */,
-				     struct spoolss_DevmodeContainer devmode_ctr /* [in]  */,
-				     struct security_descriptor *secdesc /* [in] [unique] */,
-				     uint32_t ulevel /* [in]  */,
-				     union spoolss_UserLevel userlevel /* [in] [switch_is(ulevel)] */,
+				     struct spoolss_SetPrinterInfoCtr *info_ctr /* [in] [ref] */,
+				     struct spoolss_DevmodeContainer *devmode_ctr /* [in] [ref] */,
+				     struct sec_desc_buf *secdesc_ctr /* [in] [ref] */,
+				     struct spoolss_UserLevelCtr *userlevel_ctr /* [in] [ref] */,
 				     struct policy_handle *handle /* [out] [ref] */,
 				     WERROR *werror);
 NTSTATUS rpccli_spoolss_47(struct rpc_pipe_client *cli,
diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
index f99fd54..1e4b5aa 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -116,6 +116,114 @@ _PUBLIC_ void ndr_print_spoolss_TimeCtr(struct ndr_print *ndr, const char *name,
 	ndr->depth--;
 }
 
+static enum ndr_err_code ndr_push_spoolss_ProcessorArchitecture(struct ndr_push *ndr, int ndr_flags, enum spoolss_ProcessorArchitecture r)
+{
+	NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_ProcessorArchitecture(struct ndr_pull *ndr, int ndr_flags, enum spoolss_ProcessorArchitecture *r)
+{
+	uint16_t v;
+	NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_ProcessorArchitecture(struct ndr_print *ndr, const char *name, enum spoolss_ProcessorArchitecture r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case PROCESSOR_ARCHITECTURE_INTEL: val = "PROCESSOR_ARCHITECTURE_INTEL"; break;
+		case PROCESSOR_ARCHITECTURE_IA64: val = "PROCESSOR_ARCHITECTURE_IA64"; break;
+		case PROCESSOR_ARCHITECTURE_AMD64: val = "PROCESSOR_ARCHITECTURE_AMD64"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_ProcessorType(struct ndr_push *ndr, int ndr_flags, enum spoolss_ProcessorType r)
+{
+	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_ProcessorType(struct ndr_pull *ndr, int ndr_flags, enum spoolss_ProcessorType *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_ProcessorType(struct ndr_print *ndr, const char *name, enum spoolss_ProcessorType r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case PROCESSOR_INTEL_386: val = "PROCESSOR_INTEL_386"; break;
+		case PROCESSOR_INTEL_486: val = "PROCESSOR_INTEL_486"; break;
+		case PROCESSOR_INTEL_PENTIUM: val = "PROCESSOR_INTEL_PENTIUM"; break;
+		case PROCESSOR_INTEL_IA64: val = "PROCESSOR_INTEL_IA64"; break;
+		case PROCESSOR_AMD_X8664: val = "PROCESSOR_AMD_X8664"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_MajorVersion(struct ndr_push *ndr, int ndr_flags, enum spoolss_MajorVersion r)
+{
+	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_MajorVersion(struct ndr_pull *ndr, int ndr_flags, enum spoolss_MajorVersion *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_MajorVersion(struct ndr_print *ndr, const char *name, enum spoolss_MajorVersion r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case SPOOLSS_MAJOR_VERSION_NT4_95_98_ME: val = "SPOOLSS_MAJOR_VERSION_NT4_95_98_ME"; break;
+		case SPOOLSS_MAJOR_VERSION_2000_2003_XP: val = "SPOOLSS_MAJOR_VERSION_2000_2003_XP"; break;
+		case SPOOLSS_MAJOR_VERSION_2008_VISTA: val = "SPOOLSS_MAJOR_VERSION_2008_VISTA"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_MinorVersion(struct ndr_push *ndr, int ndr_flags, enum spoolss_MinorVersion r)
+{
+	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_MinorVersion(struct ndr_pull *ndr, int ndr_flags, enum spoolss_MinorVersion *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_MinorVersion(struct ndr_print *ndr, const char *name, enum spoolss_MinorVersion r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case SPOOLSS_MINOR_VERSION_0: val = "SPOOLSS_MINOR_VERSION_0"; break;
+		case SPOOLSS_MINOR_VERSION_XP: val = "SPOOLSS_MINOR_VERSION_XP"; break;
+		case SPOOLSS_MINOR_VERSION_2003_XP64: val = "SPOOLSS_MINOR_VERSION_2003_XP64"; break;
+		case SPOOLSS_MINOR_VERSION_98: val = "SPOOLSS_MINOR_VERSION_98"; break;
+		case SPOOLSS_MINOR_VERSION_ME: val = "SPOOLSS_MINOR_VERSION_ME"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
 static enum ndr_err_code ndr_push_spoolss_PrinterInfo0(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo0 *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
@@ -139,26 +247,26 @@ static enum ndr_err_code ndr_push_spoolss_PrinterInfo0(struct ndr_push *ndr, int
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->global_counter));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_pages));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown10));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown11));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown12));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->free_build));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->spooling));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_spooling));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->session_counter));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown14));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->printer_errors));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown16));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown17));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown18));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown19));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_error_out_of_paper));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_error_not_ready));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_error));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->number_of_processors));
+		NDR_CHECK(ndr_push_spoolss_ProcessorType(ndr, NDR_SCALARS, r->processor_type));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->high_part_total_bytes));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->change_id));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown21));
+		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->last_error));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->status));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown23));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enumerate_network_printers));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->c_setprinter));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown25));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown26));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown27));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown28));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown29));
+		NDR_CHECK(ndr_push_spoolss_ProcessorArchitecture(ndr, NDR_SCALARS, r->processor_architecture));
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->processor_level));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ref_ic));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved2));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved3));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
 		{
@@ -222,26 +330,26 @@ static enum ndr_err_code ndr_pull_spoolss_PrinterInfo0(struct ndr_pull *ndr, int
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->global_counter));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_pages));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown10));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown11));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown12));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->free_build));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->spooling));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_spooling));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->session_counter));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown14));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->printer_errors));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown16));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown17));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown18));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown19));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_error_out_of_paper));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_error_not_ready));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_error));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->number_of_processors));
+		NDR_CHECK(ndr_pull_spoolss_ProcessorType(ndr, NDR_SCALARS, &r->processor_type));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->high_part_total_bytes));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->change_id));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown21));
+		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->last_error));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->status));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown23));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enumerate_network_printers));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->c_setprinter));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown25));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown26));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown27));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown28));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown29));
+		NDR_CHECK(ndr_pull_spoolss_ProcessorArchitecture(ndr, NDR_SCALARS, &r->processor_architecture));
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->processor_level));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ref_ic));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved2));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved3));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
 		{
@@ -301,26 +409,26 @@ _PUBLIC_ void ndr_print_spoolss_PrinterInfo0(struct ndr_print *ndr, const char *
 	ndr_print_uint32(ndr, "global_counter", r->global_counter);
 	ndr_print_uint32(ndr, "total_pages", r->total_pages);
 	ndr_print_uint32(ndr, "version", r->version);
-	ndr_print_uint32(ndr, "unknown10", r->unknown10);
-	ndr_print_uint32(ndr, "unknown11", r->unknown11);
-	ndr_print_uint32(ndr, "unknown12", r->unknown12);
+	ndr_print_uint32(ndr, "free_build", r->free_build);
+	ndr_print_uint32(ndr, "spooling", r->spooling);
+	ndr_print_uint32(ndr, "max_spooling", r->max_spooling);
 	ndr_print_uint32(ndr, "session_counter", r->session_counter);
-	ndr_print_uint32(ndr, "unknown14", r->unknown14);
-	ndr_print_uint32(ndr, "printer_errors", r->printer_errors);
-	ndr_print_uint32(ndr, "unknown16", r->unknown16);
-	ndr_print_uint32(ndr, "unknown17", r->unknown17);
-	ndr_print_uint32(ndr, "unknown18", r->unknown18);
-	ndr_print_uint32(ndr, "unknown19", r->unknown19);
+	ndr_print_uint32(ndr, "num_error_out_of_paper", r->num_error_out_of_paper);
+	ndr_print_uint32(ndr, "num_error_not_ready", r->num_error_not_ready);
+	ndr_print_uint32(ndr, "job_error", r->job_error);
+	ndr_print_uint32(ndr, "number_of_processors", r->number_of_processors);
+	ndr_print_spoolss_ProcessorType(ndr, "processor_type", r->processor_type);
+	ndr_print_uint32(ndr, "high_part_total_bytes", r->high_part_total_bytes);
 	ndr_print_uint32(ndr, "change_id", r->change_id);
-	ndr_print_uint32(ndr, "unknown21", r->unknown21);
+	ndr_print_WERROR(ndr, "last_error", r->last_error);
 	ndr_print_uint32(ndr, "status", r->status);
-	ndr_print_uint32(ndr, "unknown23", r->unknown23);
+	ndr_print_uint32(ndr, "enumerate_network_printers", r->enumerate_network_printers);
 	ndr_print_uint32(ndr, "c_setprinter", r->c_setprinter);
-	ndr_print_uint16(ndr, "unknown25", r->unknown25);
-	ndr_print_uint16(ndr, "unknown26", r->unknown26);
-	ndr_print_uint32(ndr, "unknown27", r->unknown27);
-	ndr_print_uint32(ndr, "unknown28", r->unknown28);
-	ndr_print_uint32(ndr, "unknown29", r->unknown29);
+	ndr_print_spoolss_ProcessorArchitecture(ndr, "processor_architecture", r->processor_architecture);
+	ndr_print_uint16(ndr, "processor_level", r->processor_level);
+	ndr_print_uint32(ndr, "ref_ic", r->ref_ic);
+	ndr_print_uint32(ndr, "reserved2", r->reserved2);
+	ndr_print_uint32(ndr, "reserved3", r->reserved3);
 	ndr->depth--;
 }
 
@@ -2970,6 +3078,1133 @@ _PUBLIC_ void ndr_print_spoolss_PrinterControl(struct ndr_print *ndr, const char
 	ndr_print_enum(ndr, name, "ENUM", val, r);
 }
 
+static enum ndr_err_code ndr_push_spoolss_SetPrinterInfo0(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetPrinterInfo0 *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_unique_ptr(ndr, r->servername));
+		NDR_CHECK(ndr_push_unique_ptr(ndr, r->printername));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->cjobs));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_jobs));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_bytes));
+		NDR_CHECK(ndr_push_spoolss_Time(ndr, NDR_SCALARS, &r->time));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->global_counter));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_pages));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->free_build));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->spooling));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_spooling));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->session_counter));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_error_out_of_paper));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_error_not_ready));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_error));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->number_of_processors));
+		NDR_CHECK(ndr_push_spoolss_ProcessorType(ndr, NDR_SCALARS, r->processor_type));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->high_part_total_bytes));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->change_id));
+		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->last_error));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->status));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enumerate_network_printers));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->c_setprinter));
+		NDR_CHECK(ndr_push_spoolss_ProcessorArchitecture(ndr, NDR_SCALARS, r->processor_architecture));
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->processor_level));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ref_ic));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved2));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved3));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		if (r->servername) {
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->servername, CH_UTF16)));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->servername, CH_UTF16)));
+			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->servername, ndr_charset_length(r->servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
+		}
+		if (r->printername) {
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->printername, CH_UTF16)));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->printername, CH_UTF16)));
+			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->printername, ndr_charset_length(r->printername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfo0(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetPrinterInfo0 *r)
+{
+	uint32_t _ptr_servername;
+	TALLOC_CTX *_mem_save_servername_0;
+	uint32_t _ptr_printername;
+	TALLOC_CTX *_mem_save_printername_0;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
+		if (_ptr_servername) {
+			NDR_PULL_ALLOC(ndr, r->servername);
+		} else {
+			r->servername = NULL;
+		}
+		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
+		if (_ptr_printername) {
+			NDR_PULL_ALLOC(ndr, r->printername);
+		} else {
+			r->printername = NULL;
+		}
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->cjobs));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_jobs));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_bytes));
+		NDR_CHECK(ndr_pull_spoolss_Time(ndr, NDR_SCALARS, &r->time));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->global_counter));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_pages));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->free_build));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->spooling));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_spooling));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->session_counter));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_error_out_of_paper));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_error_not_ready));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_error));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->number_of_processors));
+		NDR_CHECK(ndr_pull_spoolss_ProcessorType(ndr, NDR_SCALARS, &r->processor_type));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->high_part_total_bytes));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->change_id));
+		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->last_error));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->status));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enumerate_network_printers));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->c_setprinter));
+		NDR_CHECK(ndr_pull_spoolss_ProcessorArchitecture(ndr, NDR_SCALARS, &r->processor_architecture));
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->processor_level));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ref_ic));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved2));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved3));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		if (r->servername) {
+			_mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, r->servername, 0);
+			NDR_CHECK(ndr_pull_array_size(ndr, &r->servername));
+			NDR_CHECK(ndr_pull_array_length(ndr, &r->servername));
+			if (ndr_get_array_length(ndr, &r->servername) > ndr_get_array_size(ndr, &r->servername)) {
+				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->servername), ndr_get_array_length(ndr, &r->servername));
+			}
+			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->servername), sizeof(uint16_t)));
+			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->servername, ndr_get_array_length(ndr, &r->servername), sizeof(uint16_t), CH_UTF16));
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
+		}
+		if (r->printername) {
+			_mem_save_printername_0 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, r->printername, 0);
+			NDR_CHECK(ndr_pull_array_size(ndr, &r->printername));
+			NDR_CHECK(ndr_pull_array_length(ndr, &r->printername));
+			if (ndr_get_array_length(ndr, &r->printername) > ndr_get_array_size(ndr, &r->printername)) {
+				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->printername), ndr_get_array_length(ndr, &r->printername));
+			}
+			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->printername), sizeof(uint16_t)));
+			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->printername, ndr_get_array_length(ndr, &r->printername), sizeof(uint16_t), CH_UTF16));
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_SetPrinterInfo0(struct ndr_print *ndr, const char *name, const struct spoolss_SetPrinterInfo0 *r)
+{
+	ndr_print_struct(ndr, name, "spoolss_SetPrinterInfo0");
+	ndr->depth++;
+	ndr_print_ptr(ndr, "servername", r->servername);
+	ndr->depth++;
+	if (r->servername) {
+		ndr_print_string(ndr, "servername", r->servername);
+	}
+	ndr->depth--;
+	ndr_print_ptr(ndr, "printername", r->printername);
+	ndr->depth++;
+	if (r->printername) {
+		ndr_print_string(ndr, "printername", r->printername);
+	}
+	ndr->depth--;
+	ndr_print_uint32(ndr, "cjobs", r->cjobs);
+	ndr_print_uint32(ndr, "total_jobs", r->total_jobs);
+	ndr_print_uint32(ndr, "total_bytes", r->total_bytes);
+	ndr_print_spoolss_Time(ndr, "time", &r->time);
+	ndr_print_uint32(ndr, "global_counter", r->global_counter);
+	ndr_print_uint32(ndr, "total_pages", r->total_pages);
+	ndr_print_uint32(ndr, "version", r->version);
+	ndr_print_uint32(ndr, "free_build", r->free_build);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list