[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha6-1078-gdc0bf17

Günther Deschner gd at samba.org
Mon Feb 23 11:49:15 GMT 2009


The branch, master has been updated
       via  dc0bf17ac130764f3bbdc2d07de4a0fb54a761d2 (commit)
       via  e2ab5a155cd8b20d1dce91fa2f31d840c673a3b6 (commit)
       via  db400032abc48baafaef87d72e6498505642bf34 (commit)
       via  672eb22bc1ee6ee7d3372655f0847f676727643a (commit)
      from  cd6ae0de52164dd6f50b3614f2511acb3eb15993 (commit)

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


- Log -----------------------------------------------------------------
commit dc0bf17ac130764f3bbdc2d07de4a0fb54a761d2
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 23 10:29:46 2009 +0100

    s3-rpcclient: use correct clientname in spoolss_RemoteFindFirstPrinterChangeNotifyEx command.
    
    Guenther

commit e2ab5a155cd8b20d1dce91fa2f31d840c673a3b6
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 23 12:47:53 2009 +0100

    s3: re-run make samba3-idl.
    
    Guenther

commit db400032abc48baafaef87d72e6498505642bf34
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 23 11:50:27 2009 +0100

    spoolss: spoolss_NotifyData contains a devmode container, not devmode pointer.
    
    Guenther

commit 672eb22bc1ee6ee7d3372655f0847f676727643a
Author: Günther Deschner <gd at samba.org>
Date:   Sat Feb 21 23:11:49 2009 +0100

    spoolss: fix some PRINTER_CHANGE_ defines (and add a new windows 7 flag).
    
    Guenther

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

Summary of changes:
 librpc/gen_ndr/ndr_spoolss.c    |   30 ++++++------------------------
 librpc/gen_ndr/spoolss.h        |   11 ++++++-----
 librpc/idl/spoolss.idl          |   19 +++++++------------
 source3/rpcclient/cmd_spoolss.c |    9 ++++++++-
 4 files changed, 27 insertions(+), 42 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
index b0d5366..242041f 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -13053,6 +13053,7 @@ _PUBLIC_ void ndr_print_spoolss_PrinterChangeFlags(struct ndr_print *ndr, const
 	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_DELETE_PORT", PRINTER_CHANGE_DELETE_PORT, r);
 	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_ADD_PRINT_PROCESSOR", PRINTER_CHANGE_ADD_PRINT_PROCESSOR, r);
 	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_DELETE_PRINT_PROCESSOR", PRINTER_CHANGE_DELETE_PRINT_PROCESSOR, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_SERVER", PRINTER_CHANGE_SERVER, r);
 	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_ADD_PRINTER_DRIVER", PRINTER_CHANGE_ADD_PRINTER_DRIVER, r);
 	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_SET_PRINTER_DRIVER", PRINTER_CHANGE_SET_PRINTER_DRIVER, r);
 	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_DELETE_PRINTER_DRIVER", PRINTER_CHANGE_DELETE_PRINTER_DRIVER, r);
@@ -13445,7 +13446,7 @@ static enum ndr_err_code ndr_push_spoolss_NotifyData(struct ndr_push *ndr, int n
 			break; }
 
 			case 3: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->devmode));
+				NDR_CHECK(ndr_push_spoolss_DevmodeContainer(ndr, NDR_SCALARS, &r->devmode));
 			break; }
 
 			case 4: {
@@ -13471,9 +13472,7 @@ static enum ndr_err_code ndr_push_spoolss_NotifyData(struct ndr_push *ndr, int n
 			break;
 
 			case 3:
-				if (r->devmode) {
-					NDR_CHECK(ndr_push_spoolss_DeviceMode(ndr, NDR_SCALARS, r->devmode));
-				}
+				NDR_CHECK(ndr_push_spoolss_DevmodeContainer(ndr, NDR_BUFFERS, &r->devmode));
 			break;
 
 			case 4:
@@ -13495,7 +13494,6 @@ static enum ndr_err_code ndr_pull_spoolss_NotifyData(struct ndr_pull *ndr, int n
 {
 	int level;
 	uint32_t _level;
-	TALLOC_CTX *_mem_save_devmode_0;
 	level = ndr_pull_get_switch_value(ndr, r);
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
@@ -13515,13 +13513,7 @@ static enum ndr_err_code ndr_pull_spoolss_NotifyData(struct ndr_pull *ndr, int n
 			break; }
 
 			case 3: {
-				uint32_t _ptr_devmode;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_devmode));
-				if (_ptr_devmode) {
-					NDR_PULL_ALLOC(ndr, r->devmode);
-				} else {
-					r->devmode = NULL;
-				}
+				NDR_CHECK(ndr_pull_spoolss_DevmodeContainer(ndr, NDR_SCALARS, &r->devmode));
 			break; }
 
 			case 4: {
@@ -13546,12 +13538,7 @@ static enum ndr_err_code ndr_pull_spoolss_NotifyData(struct ndr_pull *ndr, int n
 			break;
 
 			case 3:
-				if (r->devmode) {
-					_mem_save_devmode_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->devmode, 0);
-					NDR_CHECK(ndr_pull_spoolss_DeviceMode(ndr, NDR_SCALARS, r->devmode));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_0, 0);
-				}
+				NDR_CHECK(ndr_pull_spoolss_DevmodeContainer(ndr, NDR_BUFFERS, &r->devmode));
 			break;
 
 			case 4:
@@ -13594,12 +13581,7 @@ _PUBLIC_ void ndr_print_spoolss_NotifyData(struct ndr_print *ndr, const char *na
 		break;
 
 		case 3:
-			ndr_print_ptr(ndr, "devmode", r->devmode);
-			ndr->depth++;
-			if (r->devmode) {
-				ndr_print_spoolss_DeviceMode(ndr, "devmode", r->devmode);
-			}
-			ndr->depth--;
+			ndr_print_spoolss_DevmodeContainer(ndr, "devmode", &r->devmode);
 		break;
 
 		case 4:
diff --git a/librpc/gen_ndr/spoolss.h b/librpc/gen_ndr/spoolss.h
index 756a992..150bf04 100644
--- a/librpc/gen_ndr/spoolss.h
+++ b/librpc/gen_ndr/spoolss.h
@@ -10,13 +10,13 @@
 
 #define PRINTER_ENUM_ICONMASK	( (PRINTER_ENUM_ICON1|PRINTER_ENUM_ICON2|PRINTER_ENUM_ICON3|PRINTER_ENUM_ICON4|PRINTER_ENUM_ICON5|PRINTER_ENUM_ICON6|PRINTER_ENUM_ICON7|PRINTER_ENUM_ICON8) )
 #define SPOOLSS_ARCHITECTURE_NT_X86	( "Windows NT x86" )
-#define PRINTER_CHANGE_PRINTER	( (PRINTER_CHANGE_ADD_PRINTER|PRINTER_CHANGE_SET_PRINTER|PRINTER_CHANGE_DELETE_PRINTER|PRINTER_CHANGE_FAILED_CONNECTION_PRINTER) )
-#define PRINTER_CHANGE_JOB	( (PRINTER_CHANGE_ADD_JOB|PRINTER_CHANGE_SET_JOB|PRINTER_CHANGE_DELETE_JOB|PRINTER_CHANGE_WRITE_JOB) )
+#define PRINTER_CHANGE_PRINTER	( 0x000000FF )
+#define PRINTER_CHANGE_JOB	( 0x0000FF00 )
 #define PRINTER_CHANGE_FORM	( (PRINTER_CHANGE_ADD_FORM|PRINTER_CHANGE_SET_FORM|PRINTER_CHANGE_DELETE_FORM) )
 #define PRINTER_CHANGE_PORT	( (PRINTER_CHANGE_ADD_PORT|PRINTER_CHANGE_CONFIGURE_PORT|PRINTER_CHANGE_DELETE_PORT) )
-#define PRINTER_CHANGE_PRINT_PROCESSOR	( (PRINTER_CHANGE_ADD_PRINT_PROCESSOR|PRINTER_CHANGE_DELETE_PRINT_PROCESSOR) )
+#define PRINTER_CHANGE_PRINT_PROCESSOR	( 0x07000000 )
 #define PRINTER_CHANGE_PRINTER_DRIVER	( (PRINTER_CHANGE_ADD_PRINTER_DRIVER|PRINTER_CHANGE_SET_PRINTER_DRIVER|PRINTER_CHANGE_DELETE_PRINTER_DRIVER) )
-#define PRINTER_CHANGE_ALL	( (PRINTER_CHANGE_JOB|PRINTER_CHANGE_FORM|PRINTER_CHANGE_PORT|PRINTER_CHANGE_PRINT_PROCESSOR|PRINTER_CHANGE_PRINTER_DRIVER) )
+#define PRINTER_CHANGE_ALL	( (PRINTER_CHANGE_PRINTER|PRINTER_CHANGE_JOB|PRINTER_CHANGE_FORM|PRINTER_CHANGE_PORT|PRINTER_CHANGE_PRINT_PROCESSOR|PRINTER_CHANGE_PRINTER_DRIVER) )
 #define SERVER_ALL_ACCESS	( SEC_STD_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE )
 #define SERVER_READ	( SEC_STD_READ_CONTROL|SERVER_ACCESS_ENUMERATE )
 #define SERVER_WRITE	( STANDARD_RIGHTS_WRITE_ACCESS|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE )
@@ -984,6 +984,7 @@ union spoolss_MonitorInfo {
 #define PRINTER_CHANGE_DELETE_PORT ( 0x00400000 )
 #define PRINTER_CHANGE_ADD_PRINT_PROCESSOR ( 0x01000000 )
 #define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR ( 0x04000000 )
+#define PRINTER_CHANGE_SERVER ( 0x08000000 )
 #define PRINTER_CHANGE_ADD_PRINTER_DRIVER ( 0x10000000 )
 #define PRINTER_CHANGE_SET_PRINTER_DRIVER ( 0x20000000 )
 #define PRINTER_CHANGE_DELETE_PRINTER_DRIVER ( 0x40000000 )
@@ -1109,7 +1110,7 @@ enum spoolss_NotifyTable
 union spoolss_NotifyData {
 	uint32_t integer[2];/* [case] */
 	struct spoolss_NotifyString string;/* [case(2)] */
-	struct spoolss_DeviceMode *devmode;/* [unique,case(3)] */
+	struct spoolss_DevmodeContainer devmode;/* [case(3)] */
 	struct spoolss_TimeCtr time;/* [case(4)] */
 	struct sec_desc_buf sd;/* [case(5)] */
 }/* [switch_type(uint32)] */;
diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
index b441f17..17d4802 100644
--- a/librpc/idl/spoolss.idl
+++ b/librpc/idl/spoolss.idl
@@ -1530,21 +1530,16 @@ import "misc.idl", "security.idl", "winreg.idl";
 		PRINTER_CHANGE_DELETE_PORT			= 0x00400000,
 		PRINTER_CHANGE_ADD_PRINT_PROCESSOR		= 0x01000000,
 		PRINTER_CHANGE_DELETE_PRINT_PROCESSOR		= 0x04000000,
+		PRINTER_CHANGE_SERVER				= 0x08000000,
 		PRINTER_CHANGE_ADD_PRINTER_DRIVER		= 0x10000000,
 		PRINTER_CHANGE_SET_PRINTER_DRIVER		= 0x20000000,
 		PRINTER_CHANGE_DELETE_PRINTER_DRIVER		= 0x40000000,
 		PRINTER_CHANGE_TIMEOUT				= 0x80000000
 	} spoolss_PrinterChangeFlags;
 
-	const int PRINTER_CHANGE_PRINTER			= (PRINTER_CHANGE_ADD_PRINTER |
-								   PRINTER_CHANGE_SET_PRINTER |
-								   PRINTER_CHANGE_DELETE_PRINTER |
-								   PRINTER_CHANGE_FAILED_CONNECTION_PRINTER); /* 0x000000FF */
+	const int PRINTER_CHANGE_PRINTER			= 0x000000FF;
 
-	const int PRINTER_CHANGE_JOB				= (PRINTER_CHANGE_ADD_JOB |
-								   PRINTER_CHANGE_SET_JOB |
-								   PRINTER_CHANGE_DELETE_JOB |
-								   PRINTER_CHANGE_WRITE_JOB); /* 0x0000FF00 */
+	const int PRINTER_CHANGE_JOB				= 0x0000FF00;
 
 	const int PRINTER_CHANGE_FORM				= (PRINTER_CHANGE_ADD_FORM |
 								   PRINTER_CHANGE_SET_FORM |
@@ -1554,14 +1549,14 @@ import "misc.idl", "security.idl", "winreg.idl";
 								   PRINTER_CHANGE_CONFIGURE_PORT |
 								   PRINTER_CHANGE_DELETE_PORT); /* 0x00700000 */
 
-	const int PRINTER_CHANGE_PRINT_PROCESSOR		= (PRINTER_CHANGE_ADD_PRINT_PROCESSOR |
-								   PRINTER_CHANGE_DELETE_PRINT_PROCESSOR); /* 0x07000000 */
+	const int PRINTER_CHANGE_PRINT_PROCESSOR		= 0x07000000;
 
 	const int PRINTER_CHANGE_PRINTER_DRIVER			= (PRINTER_CHANGE_ADD_PRINTER_DRIVER |
 								   PRINTER_CHANGE_SET_PRINTER_DRIVER |
 								   PRINTER_CHANGE_DELETE_PRINTER_DRIVER); /* 0x70000000 */
 
-	const int PRINTER_CHANGE_ALL				= (PRINTER_CHANGE_JOB |
+	const int PRINTER_CHANGE_ALL				= (PRINTER_CHANGE_PRINTER |
+								   PRINTER_CHANGE_JOB |
 								   PRINTER_CHANGE_FORM |
 								   PRINTER_CHANGE_PORT |
 								   PRINTER_CHANGE_PRINT_PROCESSOR |
@@ -1683,7 +1678,7 @@ import "misc.idl", "security.idl", "winreg.idl";
 	typedef [switch_type(uint32)] union {
 		[case(1)] uint32 integer[2];
 		[case(2)] spoolss_NotifyString string;
-		[case(3)] spoolss_DeviceMode *devmode;
+		[case(3)] spoolss_DevmodeContainer devmode;
 		[case(4)] spoolss_TimeCtr time;
 		[case(5)] sec_desc_buf sd;
 	} spoolss_NotifyData;
diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c
index 944bac7..bb9d0e6 100644
--- a/source3/rpcclient/cmd_spoolss.c
+++ b/source3/rpcclient/cmd_spoolss.c
@@ -2526,6 +2526,7 @@ static WERROR cmd_spoolss_rffpcnex(struct rpc_pipe_client *cli,
 				     const char **argv)
 {
 	const char *printername;
+	const char *clientname;
 	POLICY_HND hnd;
 	bool got_hnd = False;
 	WERROR result;
@@ -2582,13 +2583,19 @@ static WERROR cmd_spoolss_rffpcnex(struct rpc_pipe_client *cli,
 	}
 	option.types[1].fields[0] = JOB_NOTIFY_PRINTER_NAME;
 
+	clientname = talloc_asprintf(mem_ctx, "\\\\%s", global_myname());
+	if (!clientname) {
+		result = WERR_NOMEM;
+		goto done;
+	}
+
 	/* Send rffpcnex */
 
 	status = rpccli_spoolss_RemoteFindFirstPrinterChangeNotifyEx(cli, mem_ctx,
 								     &hnd,
 								     0,
 								     0,
-								     cli->srv_name_slash,
+								     clientname,
 								     123,
 								     &option,
 								     &result);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list