summaryrefslogtreecommitdiff
path: root/source4/librpc
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2005-07-01 11:04:33 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:19:02 -0500
commit88df3c81ee283819faed2d521e98b1922c03854d (patch)
tree5bbf52cbb8d085ebbbd266068c13830ea21cd27a /source4/librpc
parent96a073fdeab2467e95ec332fd64293e882d16b5f (diff)
downloadsamba-88df3c81ee283819faed2d521e98b1922c03854d.tar.gz
samba-88df3c81ee283819faed2d521e98b1922c03854d.tar.bz2
samba-88df3c81ee283819faed2d521e98b1922c03854d.zip
r8050: - make use of more [value()] properties
- the out subcontext's need to have a fixed size of r->in.offered, to make windows clients happy metze (This used to be commit 054e1ca434b2f81de199eeb41cb6233524fc5779)
Diffstat (limited to 'source4/librpc')
-rw-r--r--source4/librpc/idl/spoolss.idl23
-rw-r--r--source4/librpc/ndr/ndr_spoolss_buf.c6
2 files changed, 15 insertions, 14 deletions
diff --git a/source4/librpc/idl/spoolss.idl b/source4/librpc/idl/spoolss.idl
index 87a909b22f..0dec162763 100644
--- a/source4/librpc/idl/spoolss.idl
+++ b/source4/librpc/idl/spoolss.idl
@@ -56,7 +56,7 @@
uint32 unknown29;
} spoolss_PrinterInfo0;
- typedef struct {
+ typedef [gensize] struct {
string32 devicename;
uint16 specversion;
uint16 driverversion;
@@ -282,8 +282,8 @@
/******************/
/* Function: 0x01 */
typedef struct {
- uint32 size;
- [subcontext(4),subcontext_size(size)] spoolss_DeviceMode *devmode;
+ [value(_ndr_size_spoolss_DeviceMode(devmode, ndr->flags))] uint32 _ndr_size;
+ [subcontext(4),subcontext_size(_ndr_size)] spoolss_DeviceMode *devmode;
} spoolss_DevmodeContainer;
WERROR spoolss_OpenPrinter(
@@ -349,7 +349,7 @@
[in] uint32 level,
[in] DATA_BLOB *buffer,
[in] uint32 offered,
- [out,subcontext(4),switch_is(level)] spoolss_JobInfo *info,
+ [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_JobInfo *info,
[out] uint32 needed
);
@@ -419,17 +419,12 @@
[default];
} spoolss_SetPrinterInfo;
- typedef struct {
- uint32 size;
- [subcontext(4),subcontext_size(size)] security_descriptor *sd;
- } spoolss_SecDescContainer;
-
WERROR spoolss_SetPrinter(
[in,ref] policy_handle *handle,
[in] uint32 level,
[in,switch_is(level)] spoolss_SetPrinterInfo info,
[in] spoolss_DevmodeContainer devmode_ctr,
- [in] spoolss_SecDescContainer secdesc_ctr,
+ [in] sec_desc_buf secdesc_ctr,
[in] spoolss_PrinterControl command
);
@@ -440,7 +435,7 @@
[in] uint32 level,
[in] DATA_BLOB *buffer,
[in] uint32 offered,
- [out,subcontext(4),switch_is(level)] spoolss_PrinterInfo *info,
+ [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_PrinterInfo *info,
[out] uint32 needed
);
@@ -591,7 +586,7 @@
[in] uint32 level,
[in] DATA_BLOB *buffer,
[in] uint32 offered,
- [out,subcontext(4),switch_is(level)] spoolss_DriverDirectoryInfo *info,
+ [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_DriverDirectoryInfo *info,
[out] uint32 needed
);
@@ -759,7 +754,7 @@
[in] unistr value_name,
[in] uint32 offered,
[out] spoolss_PrinterDataType type,
- [out,subcontext(4),switch_is(type)] spoolss_PrinterData data,
+ [out,subcontext(4),subcontext_size(offered),switch_is(type)] spoolss_PrinterData data,
[out] uint32 needed
);
@@ -859,7 +854,7 @@
[in] uint32 level,
[in] DATA_BLOB *buffer,
[in] uint32 offered,
- [out,subcontext(4),switch_is(level)] spoolss_FormInfo *info,
+ [out,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_FormInfo *info,
[out] uint32 needed
);
diff --git a/source4/librpc/ndr/ndr_spoolss_buf.c b/source4/librpc/ndr/ndr_spoolss_buf.c
index 594c56dda3..d9f9522eda 100644
--- a/source4/librpc/ndr/ndr_spoolss_buf.c
+++ b/source4/librpc/ndr/ndr_spoolss_buf.c
@@ -523,3 +523,9 @@ NTSTATUS ndr_push_spoolss_SetPrinterData(struct ndr_push *ndr, int flags, const
}
return NT_STATUS_OK;
}
+
+uint32_t _ndr_size_spoolss_DeviceMode(struct spoolss_DeviceMode *devmode, uint32_t flags)
+{
+ if (!devmode) return 0;
+ return ndr_size_spoolss_DeviceMode(devmode,flags);
+}