[SCM] Samba Shared Repository - branch v3-4-test updated - release-4-0-0alpha7-512-g5b10355

Günther Deschner gd at samba.org
Wed Mar 18 16:03:57 GMT 2009


The branch, v3-4-test has been updated
       via  5b1035546673343f922679a1280b5203c1c1abc4 (commit)
       via  a5fc8ef7e61442c14f0f39bb86ae57a50ddedc95 (commit)
       via  0a876be5de06d0ca627bfdfe8769c08c5876f436 (commit)
       via  d63021ec7bc1b0dcfa500c258116bca268f71079 (commit)
       via  9fb3b11b9846ec259f9fffd629db59567db10f18 (commit)
       via  c39be71ac70155c19098737d6dce42772b5bf9c6 (commit)
       via  5c2b396dde289a6f37bb9cb40ae1ef6ec784818e (commit)
      from  00b65cc6ebcb4c67259e7fa618f6d961f7117396 (commit)

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


- Log -----------------------------------------------------------------
commit 5b1035546673343f922679a1280b5203c1c1abc4
Author: Günther Deschner <gd at samba.org>
Date:   Wed Mar 18 16:37:33 2009 +0100

    s3-spoolss: use printer and job notify enums provided by idl.
    
    Guenther
    (cherry picked from commit 31106cdace883de16d5810386d69fc3da7d37c61)

commit a5fc8ef7e61442c14f0f39bb86ae57a50ddedc95
Author: Günther Deschner <gd at samba.org>
Date:   Wed Mar 18 16:16:25 2009 +0100

    s3-spoolss: fix spoolss server after spoolss_Field changes.
    
    Guenther
    (cherry picked from commit e61c9ca36d48167ea14d7d7cc41ac43a803d3aca)

commit 0a876be5de06d0ca627bfdfe8769c08c5876f436
Author: Günther Deschner <gd at samba.org>
Date:   Wed Mar 18 16:10:52 2009 +0100

    s3-rpcclient: fix spoolss notify test after spoolss_Field changes.
    
    Guenther
    (cherry picked from commit 8b730ca1d8431d8d1eddee9523c64e60e06bc59c)

commit d63021ec7bc1b0dcfa500c258116bca268f71079
Author: Günther Deschner <gd at samba.org>
Date:   Wed Mar 18 16:10:11 2009 +0100

    s4-smbtorture: fix spoolss notify test after spoolss_Field changes.
    
    Guenther
    (cherry picked from commit 9744a7058c1f4805c9ca12080fd8ccffe3a038b8)

commit 9fb3b11b9846ec259f9fffd629db59567db10f18
Author: Günther Deschner <gd at samba.org>
Date:   Wed Mar 18 16:06:40 2009 +0100

    spoolss: add custom ndr_print_spoolss_Field.
    
    Guenther
    (cherry picked from commit 65151077b31e8cc4a8bfedd8fb4a186804d36b9a)

commit c39be71ac70155c19098737d6dce42772b5bf9c6
Author: Günther Deschner <gd at samba.org>
Date:   Wed Mar 18 15:48:48 2009 +0100

    s3: re-run make samba3-idl.
    
    Guenther
    (cherry picked from commit 0e21ea39d51583d9395628255dc34c173629a724)

commit 5c2b396dde289a6f37bb9cb40ae1ef6ec784818e
Author: Günther Deschner <gd at samba.org>
Date:   Wed Mar 18 15:48:06 2009 +0100

    spoolss: make spoolss_Field a nodiscriminant union of 2 sets of notify flag enums.
    
    Guenther
    (cherry picked from commit f9ddc6ae4ac750dd349f8103d045eb23bc4416a0)

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

Summary of changes:
 librpc/gen_ndr/ndr_spoolss.c         |  193 ++++++++++++++++++++++++++------
 librpc/gen_ndr/ndr_spoolss.h         |    8 +-
 librpc/gen_ndr/spoolss.h             |  177 ++++++++++++++++++++---------
 librpc/idl/spoolss.idl               |   95 +++++++++++-----
 librpc/ndr/ndr_spoolss_buf.c         |   22 ++++
 librpc/ndr/ndr_spoolss_buf.h         |    1 +
 source3/include/proto.h              |    2 +-
 source3/printing/notify.c            |   30 +++---
 source3/rpc_server/srv_spoolss_nt.c  |  206 +++++++++++++++++-----------------
 source3/rpcclient/cmd_spoolss.c      |    8 +-
 source4/torture/rpc/spoolss_notify.c |    8 +-
 11 files changed, 503 insertions(+), 247 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
index d340b81..f5b161a 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -16964,13 +16964,13 @@ _PUBLIC_ void ndr_print_spoolss_PrinterChangeFlags(struct ndr_print *ndr, const
 	ndr->depth--;
 }
 
-static enum ndr_err_code ndr_push_spoolss_Field(struct ndr_push *ndr, int ndr_flags, enum spoolss_Field r)
+_PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobNotifyField(struct ndr_push *ndr, int ndr_flags, enum spoolss_JobNotifyField r)
 {
 	NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
 	return NDR_ERR_SUCCESS;
 }
 
-static enum ndr_err_code ndr_pull_spoolss_Field(struct ndr_pull *ndr, int ndr_flags, enum spoolss_Field *r)
+_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobNotifyField(struct ndr_pull *ndr, int ndr_flags, enum spoolss_JobNotifyField *r)
 {
 	uint16_t v;
 	NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
@@ -16978,37 +16978,86 @@ static enum ndr_err_code ndr_pull_spoolss_Field(struct ndr_pull *ndr, int ndr_fl
 	return NDR_ERR_SUCCESS;
 }
 
-_PUBLIC_ void ndr_print_spoolss_Field(struct ndr_print *ndr, const char *name, enum spoolss_Field r)
+_PUBLIC_ void ndr_print_spoolss_JobNotifyField(struct ndr_print *ndr, const char *name, enum spoolss_JobNotifyField r)
 {
 	const char *val = NULL;
 
 	switch (r) {
-		case SPOOLSS_FIELD_SERVER_NAME: val = "SPOOLSS_FIELD_SERVER_NAME"; break;
-		case SPOOLSS_FIELD_PRINTER_NAME: val = "SPOOLSS_FIELD_PRINTER_NAME"; break;
-		case SPOOLSS_FIELD_SHARE_NAME: val = "SPOOLSS_FIELD_SHARE_NAME"; break;
-		case SPOOLSS_FIELD_PORT_NAME: val = "SPOOLSS_FIELD_PORT_NAME"; break;
-		case SPOOLSS_FIELD_DRIVER_NAME: val = "SPOOLSS_FIELD_DRIVER_NAME"; break;
-		case SPOOLSS_FIELD_COMMENT: val = "SPOOLSS_FIELD_COMMENT"; break;
-		case SPOOLSS_FIELD_LOCATION: val = "SPOOLSS_FIELD_LOCATION"; break;
-		case SPOOLSS_FIELD_DEVMODE: val = "SPOOLSS_FIELD_DEVMODE"; break;
-		case SPOOLSS_FIELD_SEPFILE: val = "SPOOLSS_FIELD_SEPFILE"; break;
-		case SPOOLSS_FIELD_PRINT_PROCESSOR: val = "SPOOLSS_FIELD_PRINT_PROCESSOR"; break;
-		case SPOOLSS_FIELD_PARAMETERS: val = "SPOOLSS_FIELD_PARAMETERS"; break;
-		case SPOOLSS_FIELD_DATATYPE: val = "SPOOLSS_FIELD_DATATYPE"; break;
-		case SPOOLSS_FIELD_SECURITY_DESCRIPTOR: val = "SPOOLSS_FIELD_SECURITY_DESCRIPTOR"; break;
-		case SPOOLSS_FIELD_ATTRIBUTES: val = "SPOOLSS_FIELD_ATTRIBUTES"; break;
-		case SPOOLSS_FIELD_PRIORITY: val = "SPOOLSS_FIELD_PRIORITY"; break;
-		case SPOOLSS_FIELD_DEFAULT_PRIORITY: val = "SPOOLSS_FIELD_DEFAULT_PRIORITY"; break;
-		case SPOOLSS_FIELD_START_TIME: val = "SPOOLSS_FIELD_START_TIME"; break;
-		case SPOOLSS_FIELD_UNTIL_TIME: val = "SPOOLSS_FIELD_UNTIL_TIME"; break;
-		case SPOOLSS_FIELD_STATUS: val = "SPOOLSS_FIELD_STATUS"; break;
-		case SPOOLSS_FIELD_STATUS_STRING: val = "SPOOLSS_FIELD_STATUS_STRING"; break;
-		case SPOOLSS_FIELD_CJOBS: val = "SPOOLSS_FIELD_CJOBS"; break;
-		case SPOOLSS_FIELD_AVERAGE_PPM: val = "SPOOLSS_FIELD_AVERAGE_PPM"; break;
-		case SPOOLSS_FIELD_TOTAL_PAGES: val = "SPOOLSS_FIELD_TOTAL_PAGES"; break;
-		case SPOOLSS_FIELD_PAGES_PRINTED: val = "SPOOLSS_FIELD_PAGES_PRINTED"; break;
-		case SPOOLSS_FIELD_TOTAL_BYTES: val = "SPOOLSS_FIELD_TOTAL_BYTES"; break;
-		case SPOOLSS_FIELD_BYTES_PRINTED: val = "SPOOLSS_FIELD_BYTES_PRINTED"; break;
+		case JOB_NOTIFY_FIELD_PRINTER_NAME: val = "JOB_NOTIFY_FIELD_PRINTER_NAME"; break;
+		case JOB_NOTIFY_FIELD_MACHINE_NAME: val = "JOB_NOTIFY_FIELD_MACHINE_NAME"; break;
+		case JOB_NOTIFY_FIELD_PORT_NAME: val = "JOB_NOTIFY_FIELD_PORT_NAME"; break;
+		case JOB_NOTIFY_FIELD_USER_NAME: val = "JOB_NOTIFY_FIELD_USER_NAME"; break;
+		case JOB_NOTIFY_FIELD_NOTIFY_NAME: val = "JOB_NOTIFY_FIELD_NOTIFY_NAME"; break;
+		case JOB_NOTIFY_FIELD_DATATYPE: val = "JOB_NOTIFY_FIELD_DATATYPE"; break;
+		case JOB_NOTIFY_FIELD_PRINT_PROCESSOR: val = "JOB_NOTIFY_FIELD_PRINT_PROCESSOR"; break;
+		case JOB_NOTIFY_FIELD_PARAMETERS: val = "JOB_NOTIFY_FIELD_PARAMETERS"; break;
+		case JOB_NOTIFY_FIELD_DRIVER_NAME: val = "JOB_NOTIFY_FIELD_DRIVER_NAME"; break;
+		case JOB_NOTIFY_FIELD_DEVMODE: val = "JOB_NOTIFY_FIELD_DEVMODE"; break;
+		case JOB_NOTIFY_FIELD_STATUS: val = "JOB_NOTIFY_FIELD_STATUS"; break;
+		case JOB_NOTIFY_FIELD_STATUS_STRING: val = "JOB_NOTIFY_FIELD_STATUS_STRING"; break;
+		case JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR: val = "JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR"; break;
+		case JOB_NOTIFY_FIELD_DOCUMENT: val = "JOB_NOTIFY_FIELD_DOCUMENT"; break;
+		case JOB_NOTIFY_FIELD_PRIORITY: val = "JOB_NOTIFY_FIELD_PRIORITY"; break;
+		case JOB_NOTIFY_FIELD_POSITION: val = "JOB_NOTIFY_FIELD_POSITION"; break;
+		case JOB_NOTIFY_FIELD_SUBMITTED: val = "JOB_NOTIFY_FIELD_SUBMITTED"; break;
+		case JOB_NOTIFY_FIELD_START_TIME: val = "JOB_NOTIFY_FIELD_START_TIME"; break;
+		case JOB_NOTIFY_FIELD_UNTIL_TIME: val = "JOB_NOTIFY_FIELD_UNTIL_TIME"; break;
+		case JOB_NOTIFY_FIELD_TIME: val = "JOB_NOTIFY_FIELD_TIME"; break;
+		case JOB_NOTIFY_FIELD_TOTAL_PAGES: val = "JOB_NOTIFY_FIELD_TOTAL_PAGES"; break;
+		case JOB_NOTIFY_FIELD_PAGES_PRINTED: val = "JOB_NOTIFY_FIELD_PAGES_PRINTED"; break;
+		case JOB_NOTIFY_FIELD_TOTAL_BYTES: val = "JOB_NOTIFY_FIELD_TOTAL_BYTES"; break;
+		case JOB_NOTIFY_FIELD_BYTES_PRINTED: val = "JOB_NOTIFY_FIELD_BYTES_PRINTED"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrintNotifyField(struct ndr_push *ndr, int ndr_flags, enum spoolss_PrintNotifyField r)
+{
+	NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintNotifyField(struct ndr_pull *ndr, int ndr_flags, enum spoolss_PrintNotifyField *r)
+{
+	uint16_t v;
+	NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_PrintNotifyField(struct ndr_print *ndr, const char *name, enum spoolss_PrintNotifyField r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case PRINTER_NOTIFY_FIELD_SERVER_NAME: val = "PRINTER_NOTIFY_FIELD_SERVER_NAME"; break;
+		case PRINTER_NOTIFY_FIELD_PRINTER_NAME: val = "PRINTER_NOTIFY_FIELD_PRINTER_NAME"; break;
+		case PRINTER_NOTIFY_FIELD_SHARE_NAME: val = "PRINTER_NOTIFY_FIELD_SHARE_NAME"; break;
+		case PRINTER_NOTIFY_FIELD_PORT_NAME: val = "PRINTER_NOTIFY_FIELD_PORT_NAME"; break;
+		case PRINTER_NOTIFY_FIELD_DRIVER_NAME: val = "PRINTER_NOTIFY_FIELD_DRIVER_NAME"; break;
+		case PRINTER_NOTIFY_FIELD_COMMENT: val = "PRINTER_NOTIFY_FIELD_COMMENT"; break;
+		case PRINTER_NOTIFY_FIELD_LOCATION: val = "PRINTER_NOTIFY_FIELD_LOCATION"; break;
+		case PRINTER_NOTIFY_FIELD_DEVMODE: val = "PRINTER_NOTIFY_FIELD_DEVMODE"; break;
+		case PRINTER_NOTIFY_FIELD_SEPFILE: val = "PRINTER_NOTIFY_FIELD_SEPFILE"; break;
+		case PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR: val = "PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR"; break;
+		case PRINTER_NOTIFY_FIELD_PARAMETERS: val = "PRINTER_NOTIFY_FIELD_PARAMETERS"; break;
+		case PRINTER_NOTIFY_FIELD_DATATYPE: val = "PRINTER_NOTIFY_FIELD_DATATYPE"; break;
+		case PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR: val = "PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR"; break;
+		case PRINTER_NOTIFY_FIELD_ATTRIBUTES: val = "PRINTER_NOTIFY_FIELD_ATTRIBUTES"; break;
+		case PRINTER_NOTIFY_FIELD_PRIORITY: val = "PRINTER_NOTIFY_FIELD_PRIORITY"; break;
+		case PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY: val = "PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY"; break;
+		case PRINTER_NOTIFY_FIELD_START_TIME: val = "PRINTER_NOTIFY_FIELD_START_TIME"; break;
+		case PRINTER_NOTIFY_FIELD_UNTIL_TIME: val = "PRINTER_NOTIFY_FIELD_UNTIL_TIME"; break;
+		case PRINTER_NOTIFY_FIELD_STATUS: val = "PRINTER_NOTIFY_FIELD_STATUS"; break;
+		case PRINTER_NOTIFY_FIELD_STATUS_STRING: val = "PRINTER_NOTIFY_FIELD_STATUS_STRING"; break;
+		case PRINTER_NOTIFY_FIELD_CJOBS: val = "PRINTER_NOTIFY_FIELD_CJOBS"; break;
+		case PRINTER_NOTIFY_FIELD_AVERAGE_PPM: val = "PRINTER_NOTIFY_FIELD_AVERAGE_PPM"; break;
+		case PRINTER_NOTIFY_FIELD_TOTAL_PAGES: val = "PRINTER_NOTIFY_FIELD_TOTAL_PAGES"; break;
+		case PRINTER_NOTIFY_FIELD_PAGES_PRINTED: val = "PRINTER_NOTIFY_FIELD_PAGES_PRINTED"; break;
+		case PRINTER_NOTIFY_FIELD_TOTAL_BYTES: val = "PRINTER_NOTIFY_FIELD_TOTAL_BYTES"; break;
+		case PRINTER_NOTIFY_FIELD_BYTES_PRINTED: val = "PRINTER_NOTIFY_FIELD_BYTES_PRINTED"; break;
+		case PRINTER_NOTIFY_FIELD_OBJECT_GUID: val = "PRINTER_NOTIFY_FIELD_OBJECT_GUID"; break;
+		case PRINTER_NOTIFY_FIELD_FRIENDLY_NAME: val = "PRINTER_NOTIFY_FIELD_FRIENDLY_NAME"; break;
 	}
 	ndr_print_enum(ndr, name, "ENUM", val, r);
 }
@@ -17038,6 +17087,78 @@ _PUBLIC_ void ndr_print_spoolss_NotifyType(struct ndr_print *ndr, const char *na
 	ndr_print_enum(ndr, name, "ENUM", val, r);
 }
 
+static enum ndr_err_code ndr_push_spoolss_Field(struct ndr_push *ndr, int ndr_flags, const union spoolss_Field *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		int level = ndr_push_get_switch_value(ndr, r);
+		switch (level) {
+			case PRINTER_NOTIFY_TYPE: {
+				NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->field));
+			break; }
+
+			case JOB_NOTIFY_TYPE: {
+				NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->field));
+			break; }
+
+			default: {
+				NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->field));
+			break; }
+
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		int level = ndr_push_get_switch_value(ndr, r);
+		switch (level) {
+			case PRINTER_NOTIFY_TYPE:
+			break;
+
+			case JOB_NOTIFY_TYPE:
+			break;
+
+			default:
+			break;
+
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_Field(struct ndr_pull *ndr, int ndr_flags, union spoolss_Field *r)
+{
+	int level;
+	level = ndr_pull_get_switch_value(ndr, r);
+	if (ndr_flags & NDR_SCALARS) {
+		switch (level) {
+			case PRINTER_NOTIFY_TYPE: {
+				NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->field));
+			break; }
+
+			case JOB_NOTIFY_TYPE: {
+				NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->field));
+			break; }
+
+			default: {
+				NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->field));
+			break; }
+
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		switch (level) {
+			case PRINTER_NOTIFY_TYPE:
+			break;
+
+			case JOB_NOTIFY_TYPE:
+			break;
+
+			default:
+			break;
+
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
 static enum ndr_err_code ndr_push_spoolss_NotifyOptionType(struct ndr_push *ndr, int ndr_flags, const struct spoolss_NotifyOptionType *r)
 {
 	uint32_t cntr_fields_1;
@@ -17054,7 +17175,8 @@ static enum ndr_err_code ndr_push_spoolss_NotifyOptionType(struct ndr_push *ndr,
 		if (r->fields) {
 			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
 			for (cntr_fields_1 = 0; cntr_fields_1 < r->count; cntr_fields_1++) {
-				NDR_CHECK(ndr_push_spoolss_Field(ndr, NDR_SCALARS, r->fields[cntr_fields_1]));
+				NDR_CHECK(ndr_push_set_switch_value(ndr, &r->fields[cntr_fields_1], r->type));
+				NDR_CHECK(ndr_push_spoolss_Field(ndr, NDR_SCALARS, &r->fields[cntr_fields_1]));
 			}
 		}
 	}
@@ -17090,6 +17212,7 @@ static enum ndr_err_code ndr_pull_spoolss_NotifyOptionType(struct ndr_pull *ndr,
 			_mem_save_fields_1 = NDR_PULL_GET_MEM_CTX(ndr);
 			NDR_PULL_SET_MEM_CTX(ndr, r->fields, 0);
 			for (cntr_fields_1 = 0; cntr_fields_1 < r->count; cntr_fields_1++) {
+				NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->fields[cntr_fields_1], r->type));
 				NDR_CHECK(ndr_pull_spoolss_Field(ndr, NDR_SCALARS, &r->fields[cntr_fields_1]));
 			}
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_fields_1, 0);
@@ -17120,7 +17243,8 @@ _PUBLIC_ void ndr_print_spoolss_NotifyOptionType(struct ndr_print *ndr, const ch
 		for (cntr_fields_1=0;cntr_fields_1<r->count;cntr_fields_1++) {
 			char *idx_1=NULL;
 			if (asprintf(&idx_1, "[%d]", cntr_fields_1) != -1) {
-				ndr_print_spoolss_Field(ndr, "fields", r->fields[cntr_fields_1]);
+				ndr_print_set_switch_value(ndr, &r->fields[cntr_fields_1], r->type);
+				ndr_print_spoolss_Field(ndr, "fields", &r->fields[cntr_fields_1]);
 				free(idx_1);
 			}
 		}
@@ -17505,7 +17629,8 @@ static enum ndr_err_code ndr_push_spoolss_Notify(struct ndr_push *ndr, int ndr_f
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
 		NDR_CHECK(ndr_push_spoolss_NotifyType(ndr, NDR_SCALARS, r->type));
-		NDR_CHECK(ndr_push_spoolss_Field(ndr, NDR_SCALARS, r->field));
+		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->field, r->type));
+		NDR_CHECK(ndr_push_spoolss_Field(ndr, NDR_SCALARS, &r->field));
 		NDR_CHECK(ndr_push_spoolss_NotifyTable(ndr, NDR_SCALARS, r->variable_type));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_id));
 		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->data, r->variable_type));
@@ -17522,6 +17647,7 @@ static enum ndr_err_code ndr_pull_spoolss_Notify(struct ndr_pull *ndr, int ndr_f
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 4));
 		NDR_CHECK(ndr_pull_spoolss_NotifyType(ndr, NDR_SCALARS, &r->type));
+		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->field, r->type));
 		NDR_CHECK(ndr_pull_spoolss_Field(ndr, NDR_SCALARS, &r->field));
 		NDR_CHECK(ndr_pull_spoolss_NotifyTable(ndr, NDR_SCALARS, &r->variable_type));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_id));
@@ -17539,7 +17665,8 @@ _PUBLIC_ void ndr_print_spoolss_Notify(struct ndr_print *ndr, const char *name,
 	ndr_print_struct(ndr, name, "spoolss_Notify");
 	ndr->depth++;
 	ndr_print_spoolss_NotifyType(ndr, "type", r->type);
-	ndr_print_spoolss_Field(ndr, "field", r->field);
+	ndr_print_set_switch_value(ndr, &r->field, r->type);
+	ndr_print_spoolss_Field(ndr, "field", &r->field);
 	ndr_print_spoolss_NotifyTable(ndr, "variable_type", r->variable_type);
 	ndr_print_uint32(ndr, "job_id", r->job_id);
 	ndr_print_set_switch_value(ndr, &r->data, r->variable_type);
diff --git a/librpc/gen_ndr/ndr_spoolss.h b/librpc/gen_ndr/ndr_spoolss.h
index df0f20f..0feb4a2 100644
--- a/librpc/gen_ndr/ndr_spoolss.h
+++ b/librpc/gen_ndr/ndr_spoolss.h
@@ -451,8 +451,14 @@ enum ndr_err_code ndr_push_spoolss_PrintProcDataTypesInfo(struct ndr_push *ndr,
 enum ndr_err_code ndr_pull_spoolss_PrintProcDataTypesInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_PrintProcDataTypesInfo *r);
 void ndr_print_spoolss_PrintProcDataTypesInfo(struct ndr_print *ndr, const char *name, const union spoolss_PrintProcDataTypesInfo *r);
 void ndr_print_spoolss_PrinterChangeFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_spoolss_Field(struct ndr_print *ndr, const char *name, enum spoolss_Field r);
+enum ndr_err_code ndr_push_spoolss_JobNotifyField(struct ndr_push *ndr, int ndr_flags, enum spoolss_JobNotifyField r);
+enum ndr_err_code ndr_pull_spoolss_JobNotifyField(struct ndr_pull *ndr, int ndr_flags, enum spoolss_JobNotifyField *r);
+void ndr_print_spoolss_JobNotifyField(struct ndr_print *ndr, const char *name, enum spoolss_JobNotifyField r);
+enum ndr_err_code ndr_push_spoolss_PrintNotifyField(struct ndr_push *ndr, int ndr_flags, enum spoolss_PrintNotifyField r);
+enum ndr_err_code ndr_pull_spoolss_PrintNotifyField(struct ndr_pull *ndr, int ndr_flags, enum spoolss_PrintNotifyField *r);
+void ndr_print_spoolss_PrintNotifyField(struct ndr_print *ndr, const char *name, enum spoolss_PrintNotifyField r);
 void ndr_print_spoolss_NotifyType(struct ndr_print *ndr, const char *name, enum spoolss_NotifyType r);
+void ndr_print_spoolss_Field(struct ndr_print *ndr, const char *name, const union spoolss_Field *r);
 void ndr_print_spoolss_NotifyOptionType(struct ndr_print *ndr, const char *name, const struct spoolss_NotifyOptionType *r);
 void ndr_print_spoolssNotifyOptionFlags(struct ndr_print *ndr, const char *name, uint32_t r);
 void ndr_print_spoolss_NotifyOption(struct ndr_print *ndr, const char *name, const struct spoolss_NotifyOption *r);
diff --git a/librpc/gen_ndr/spoolss.h b/librpc/gen_ndr/spoolss.h
index 65655e9..8340b34 100644
--- a/librpc/gen_ndr/spoolss.h
+++ b/librpc/gen_ndr/spoolss.h
@@ -1284,64 +1284,125 @@ union spoolss_PrintProcDataTypesInfo {
 #define PRINTER_CHANGE_DELETE_PRINTER_DRIVER ( 0x40000000 )
 #define PRINTER_CHANGE_TIMEOUT ( 0x80000000 )
 
-enum spoolss_Field
+enum spoolss_JobNotifyField
 #ifndef USE_UINT_ENUMS
  {
-	SPOOLSS_FIELD_SERVER_NAME=0,
-	SPOOLSS_FIELD_PRINTER_NAME=1,
-	SPOOLSS_FIELD_SHARE_NAME=2,
-	SPOOLSS_FIELD_PORT_NAME=3,
-	SPOOLSS_FIELD_DRIVER_NAME=4,
-	SPOOLSS_FIELD_COMMENT=5,
-	SPOOLSS_FIELD_LOCATION=6,
-	SPOOLSS_FIELD_DEVMODE=7,
-	SPOOLSS_FIELD_SEPFILE=8,
-	SPOOLSS_FIELD_PRINT_PROCESSOR=9,
-	SPOOLSS_FIELD_PARAMETERS=10,
-	SPOOLSS_FIELD_DATATYPE=11,
-	SPOOLSS_FIELD_SECURITY_DESCRIPTOR=12,
-	SPOOLSS_FIELD_ATTRIBUTES=13,
-	SPOOLSS_FIELD_PRIORITY=14,
-	SPOOLSS_FIELD_DEFAULT_PRIORITY=15,
-	SPOOLSS_FIELD_START_TIME=16,
-	SPOOLSS_FIELD_UNTIL_TIME=17,
-	SPOOLSS_FIELD_STATUS=18,
-	SPOOLSS_FIELD_STATUS_STRING=19,
-	SPOOLSS_FIELD_CJOBS=20,
-	SPOOLSS_FIELD_AVERAGE_PPM=21,
-	SPOOLSS_FIELD_TOTAL_PAGES=22,
-	SPOOLSS_FIELD_PAGES_PRINTED=23,
-	SPOOLSS_FIELD_TOTAL_BYTES=24,
-	SPOOLSS_FIELD_BYTES_PRINTED=25
+	JOB_NOTIFY_FIELD_PRINTER_NAME=0x00,
+	JOB_NOTIFY_FIELD_MACHINE_NAME=0x01,
+	JOB_NOTIFY_FIELD_PORT_NAME=0x02,
+	JOB_NOTIFY_FIELD_USER_NAME=0x03,
+	JOB_NOTIFY_FIELD_NOTIFY_NAME=0x04,
+	JOB_NOTIFY_FIELD_DATATYPE=0x05,
+	JOB_NOTIFY_FIELD_PRINT_PROCESSOR=0x06,
+	JOB_NOTIFY_FIELD_PARAMETERS=0x07,
+	JOB_NOTIFY_FIELD_DRIVER_NAME=0x08,
+	JOB_NOTIFY_FIELD_DEVMODE=0x09,
+	JOB_NOTIFY_FIELD_STATUS=0x0a,
+	JOB_NOTIFY_FIELD_STATUS_STRING=0x0b,
+	JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR=0x0c,
+	JOB_NOTIFY_FIELD_DOCUMENT=0x0d,
+	JOB_NOTIFY_FIELD_PRIORITY=0x0e,
+	JOB_NOTIFY_FIELD_POSITION=0x0f,
+	JOB_NOTIFY_FIELD_SUBMITTED=0x10,
+	JOB_NOTIFY_FIELD_START_TIME=0x11,
+	JOB_NOTIFY_FIELD_UNTIL_TIME=0x12,
+	JOB_NOTIFY_FIELD_TIME=0x13,
+	JOB_NOTIFY_FIELD_TOTAL_PAGES=0x14,
+	JOB_NOTIFY_FIELD_PAGES_PRINTED=0x15,
+	JOB_NOTIFY_FIELD_TOTAL_BYTES=0x16,
+	JOB_NOTIFY_FIELD_BYTES_PRINTED=0x17
 }
 #else
- { __donnot_use_enum_spoolss_Field=0x7FFFFFFF}
-#define SPOOLSS_FIELD_SERVER_NAME ( 0 )
-#define SPOOLSS_FIELD_PRINTER_NAME ( 1 )
-#define SPOOLSS_FIELD_SHARE_NAME ( 2 )
-#define SPOOLSS_FIELD_PORT_NAME ( 3 )
-#define SPOOLSS_FIELD_DRIVER_NAME ( 4 )
-#define SPOOLSS_FIELD_COMMENT ( 5 )
-#define SPOOLSS_FIELD_LOCATION ( 6 )
-#define SPOOLSS_FIELD_DEVMODE ( 7 )
-#define SPOOLSS_FIELD_SEPFILE ( 8 )
-#define SPOOLSS_FIELD_PRINT_PROCESSOR ( 9 )
-#define SPOOLSS_FIELD_PARAMETERS ( 10 )
-#define SPOOLSS_FIELD_DATATYPE ( 11 )
-#define SPOOLSS_FIELD_SECURITY_DESCRIPTOR ( 12 )
-#define SPOOLSS_FIELD_ATTRIBUTES ( 13 )
-#define SPOOLSS_FIELD_PRIORITY ( 14 )
-#define SPOOLSS_FIELD_DEFAULT_PRIORITY ( 15 )
-#define SPOOLSS_FIELD_START_TIME ( 16 )
-#define SPOOLSS_FIELD_UNTIL_TIME ( 17 )
-#define SPOOLSS_FIELD_STATUS ( 18 )
-#define SPOOLSS_FIELD_STATUS_STRING ( 19 )
-#define SPOOLSS_FIELD_CJOBS ( 20 )
-#define SPOOLSS_FIELD_AVERAGE_PPM ( 21 )
-#define SPOOLSS_FIELD_TOTAL_PAGES ( 22 )
-#define SPOOLSS_FIELD_PAGES_PRINTED ( 23 )
-#define SPOOLSS_FIELD_TOTAL_BYTES ( 24 )
-#define SPOOLSS_FIELD_BYTES_PRINTED ( 25 )
+ { __donnot_use_enum_spoolss_JobNotifyField=0x7FFFFFFF}
+#define JOB_NOTIFY_FIELD_PRINTER_NAME ( 0x00 )
+#define JOB_NOTIFY_FIELD_MACHINE_NAME ( 0x01 )
+#define JOB_NOTIFY_FIELD_PORT_NAME ( 0x02 )
+#define JOB_NOTIFY_FIELD_USER_NAME ( 0x03 )
+#define JOB_NOTIFY_FIELD_NOTIFY_NAME ( 0x04 )
+#define JOB_NOTIFY_FIELD_DATATYPE ( 0x05 )
+#define JOB_NOTIFY_FIELD_PRINT_PROCESSOR ( 0x06 )
+#define JOB_NOTIFY_FIELD_PARAMETERS ( 0x07 )
+#define JOB_NOTIFY_FIELD_DRIVER_NAME ( 0x08 )
+#define JOB_NOTIFY_FIELD_DEVMODE ( 0x09 )
+#define JOB_NOTIFY_FIELD_STATUS ( 0x0a )
+#define JOB_NOTIFY_FIELD_STATUS_STRING ( 0x0b )
+#define JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR ( 0x0c )
+#define JOB_NOTIFY_FIELD_DOCUMENT ( 0x0d )
+#define JOB_NOTIFY_FIELD_PRIORITY ( 0x0e )
+#define JOB_NOTIFY_FIELD_POSITION ( 0x0f )
+#define JOB_NOTIFY_FIELD_SUBMITTED ( 0x10 )
+#define JOB_NOTIFY_FIELD_START_TIME ( 0x11 )
+#define JOB_NOTIFY_FIELD_UNTIL_TIME ( 0x12 )
+#define JOB_NOTIFY_FIELD_TIME ( 0x13 )
+#define JOB_NOTIFY_FIELD_TOTAL_PAGES ( 0x14 )
+#define JOB_NOTIFY_FIELD_PAGES_PRINTED ( 0x15 )
+#define JOB_NOTIFY_FIELD_TOTAL_BYTES ( 0x16 )
+#define JOB_NOTIFY_FIELD_BYTES_PRINTED ( 0x17 )
+#endif
+;
+
+enum spoolss_PrintNotifyField
+#ifndef USE_UINT_ENUMS
+ {
+	PRINTER_NOTIFY_FIELD_SERVER_NAME=0x00,
+	PRINTER_NOTIFY_FIELD_PRINTER_NAME=0x01,
+	PRINTER_NOTIFY_FIELD_SHARE_NAME=0x02,
+	PRINTER_NOTIFY_FIELD_PORT_NAME=0x03,
+	PRINTER_NOTIFY_FIELD_DRIVER_NAME=0x04,
+	PRINTER_NOTIFY_FIELD_COMMENT=0x05,
+	PRINTER_NOTIFY_FIELD_LOCATION=0x06,
+	PRINTER_NOTIFY_FIELD_DEVMODE=0x07,
+	PRINTER_NOTIFY_FIELD_SEPFILE=0x08,
+	PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR=0x09,
+	PRINTER_NOTIFY_FIELD_PARAMETERS=0x0a,
+	PRINTER_NOTIFY_FIELD_DATATYPE=0x0b,
+	PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR=0x0c,
+	PRINTER_NOTIFY_FIELD_ATTRIBUTES=0x0d,
+	PRINTER_NOTIFY_FIELD_PRIORITY=0x0e,
+	PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY=0x0f,
+	PRINTER_NOTIFY_FIELD_START_TIME=0x10,
+	PRINTER_NOTIFY_FIELD_UNTIL_TIME=0x11,
+	PRINTER_NOTIFY_FIELD_STATUS=0x12,
+	PRINTER_NOTIFY_FIELD_STATUS_STRING=0x13,
+	PRINTER_NOTIFY_FIELD_CJOBS=0x14,
+	PRINTER_NOTIFY_FIELD_AVERAGE_PPM=0x15,
+	PRINTER_NOTIFY_FIELD_TOTAL_PAGES=0x16,
+	PRINTER_NOTIFY_FIELD_PAGES_PRINTED=0x17,
+	PRINTER_NOTIFY_FIELD_TOTAL_BYTES=0x18,
+	PRINTER_NOTIFY_FIELD_BYTES_PRINTED=0x19,
+	PRINTER_NOTIFY_FIELD_OBJECT_GUID=0x1a,
+	PRINTER_NOTIFY_FIELD_FRIENDLY_NAME=0x1b
+}
+#else
+ { __donnot_use_enum_spoolss_PrintNotifyField=0x7FFFFFFF}
+#define PRINTER_NOTIFY_FIELD_SERVER_NAME ( 0x00 )
+#define PRINTER_NOTIFY_FIELD_PRINTER_NAME ( 0x01 )
+#define PRINTER_NOTIFY_FIELD_SHARE_NAME ( 0x02 )
+#define PRINTER_NOTIFY_FIELD_PORT_NAME ( 0x03 )
+#define PRINTER_NOTIFY_FIELD_DRIVER_NAME ( 0x04 )
+#define PRINTER_NOTIFY_FIELD_COMMENT ( 0x05 )
+#define PRINTER_NOTIFY_FIELD_LOCATION ( 0x06 )
+#define PRINTER_NOTIFY_FIELD_DEVMODE ( 0x07 )
+#define PRINTER_NOTIFY_FIELD_SEPFILE ( 0x08 )
+#define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR ( 0x09 )
+#define PRINTER_NOTIFY_FIELD_PARAMETERS ( 0x0a )
+#define PRINTER_NOTIFY_FIELD_DATATYPE ( 0x0b )
+#define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR ( 0x0c )
+#define PRINTER_NOTIFY_FIELD_ATTRIBUTES ( 0x0d )
+#define PRINTER_NOTIFY_FIELD_PRIORITY ( 0x0e )
+#define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY ( 0x0f )
+#define PRINTER_NOTIFY_FIELD_START_TIME ( 0x10 )
+#define PRINTER_NOTIFY_FIELD_UNTIL_TIME ( 0x11 )
+#define PRINTER_NOTIFY_FIELD_STATUS ( 0x12 )
+#define PRINTER_NOTIFY_FIELD_STATUS_STRING ( 0x13 )
+#define PRINTER_NOTIFY_FIELD_CJOBS ( 0x14 )
+#define PRINTER_NOTIFY_FIELD_AVERAGE_PPM ( 0x15 )
+#define PRINTER_NOTIFY_FIELD_TOTAL_PAGES ( 0x16 )
+#define PRINTER_NOTIFY_FIELD_PAGES_PRINTED ( 0x17 )
+#define PRINTER_NOTIFY_FIELD_TOTAL_BYTES ( 0x18 )
+#define PRINTER_NOTIFY_FIELD_BYTES_PRINTED ( 0x19 )
+#define PRINTER_NOTIFY_FIELD_OBJECT_GUID ( 0x1a )
+#define PRINTER_NOTIFY_FIELD_FRIENDLY_NAME ( 0x1b )
 #endif
 ;
 
@@ -1358,13 +1419,17 @@ enum spoolss_NotifyType
 #endif
 ;
 
+union spoolss_Field {
+	uint16_t field;/* [case(PRINTER_NOTIFY_TYPE)] */
+}/* [noprint,nodiscriminant] */;
+
 struct spoolss_NotifyOptionType {
 	enum spoolss_NotifyType type;
 	uint16_t u1;
 	uint32_t u2;
 	uint32_t u3;
 	uint32_t count;
-	enum spoolss_Field *fields;/* [unique,size_is(count)] */
+	union spoolss_Field *fields;/* [unique,switch_is(type),size_is(count)] */
 };
 
 /* bitmap spoolssNotifyOptionFlags */
@@ -1411,7 +1476,7 @@ union spoolss_NotifyData {
 
 struct spoolss_Notify {
 	enum spoolss_NotifyType type;
-	enum spoolss_Field field;
+	union spoolss_Field field;/* [switch_is(type)] */
 	enum spoolss_NotifyTable variable_type;
 	uint32_t job_id;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list