[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-539-g31106cd

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


The branch, master has been updated
       via  31106cdace883de16d5810386d69fc3da7d37c61 (commit)
       via  e61c9ca36d48167ea14d7d7cc41ac43a803d3aca (commit)
       via  8b730ca1d8431d8d1eddee9523c64e60e06bc59c (commit)
       via  9744a7058c1f4805c9ca12080fd8ccffe3a038b8 (commit)
       via  65151077b31e8cc4a8bfedd8fb4a186804d36b9a (commit)
       via  0e21ea39d51583d9395628255dc34c173629a724 (commit)
       via  f9ddc6ae4ac750dd349f8103d045eb23bc4416a0 (commit)
      from  9ab8953d74491d7ab4a30c242aa0935efb38f857 (commit)

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


- Log -----------------------------------------------------------------
commit 31106cdace883de16d5810386d69fc3da7d37c61
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

commit e61c9ca36d48167ea14d7d7cc41ac43a803d3aca
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

commit 8b730ca1d8431d8d1eddee9523c64e60e06bc59c
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

commit 9744a7058c1f4805c9ca12080fd8ccffe3a038b8
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

commit 65151077b31e8cc4a8bfedd8fb4a186804d36b9a
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

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

    s3: re-run make samba3-idl.
    
    Guenther

commit f9ddc6ae4ac750dd349f8103d045eb23bc4416a0
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

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

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