summaryrefslogtreecommitdiff
path: root/source4/librpc/ndr
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2003-11-17 03:38:13 +0000
committerAndrew Tridgell <tridge@samba.org>2003-11-17 03:38:13 +0000
commitbf48b6e69a638dc78ab119424e27adc0ccc6c610 (patch)
tree60b76902359884ad7c708cec467bee0baf6e2898 /source4/librpc/ndr
parent90916de4a5303601a59938237a551d976cde0589 (diff)
downloadsamba-bf48b6e69a638dc78ab119424e27adc0ccc6c610.tar.gz
samba-bf48b6e69a638dc78ab119424e27adc0ccc6c610.tar.bz2
samba-bf48b6e69a638dc78ab119424e27adc0ccc6c610.zip
added OpenPrinter and a test function. Note that the Samba3 structure
for OpenPrinter was wrong. (This used to be commit 186ddbbf8774d0960852ea9186c8e4e6f7be7a0f)
Diffstat (limited to 'source4/librpc/ndr')
-rw-r--r--source4/librpc/ndr/ndr_spoolss.c20
-rw-r--r--source4/librpc/ndr/ndr_spoolss.h11
2 files changed, 25 insertions, 6 deletions
diff --git a/source4/librpc/ndr/ndr_spoolss.c b/source4/librpc/ndr/ndr_spoolss.c
index f88e46890a..5b64f9067a 100644
--- a/source4/librpc/ndr/ndr_spoolss.c
+++ b/source4/librpc/ndr/ndr_spoolss.c
@@ -292,8 +292,21 @@ NTSTATUS ndr_push_spoolss_EnumPrinters(struct ndr_push *ndr, struct spoolss_Enum
return NT_STATUS_OK;
}
-NTSTATUS ndr_push_spoolss_01(struct ndr_push *ndr, struct spoolss_01 *r)
+NTSTATUS ndr_push_spoolss_OpenPrinter(struct ndr_push *ndr, struct spoolss_OpenPrinter *r)
{
+ NDR_CHECK(ndr_push_ptr(ndr, r->in.server));
+ if (r->in.server) {
+ NDR_CHECK(ndr_push_unistr(ndr, r->in.server));
+ }
+ NDR_CHECK(ndr_push_ptr(ndr, r->in.printer));
+ if (r->in.printer) {
+ NDR_CHECK(ndr_push_unistr(ndr, r->in.printer));
+ }
+ NDR_CHECK(ndr_push_ptr(ndr, r->in.buffer));
+ if (r->in.buffer) {
+ NDR_CHECK(ndr_push_DATA_BLOB(ndr, *r->in.buffer));
+ }
+ NDR_CHECK(ndr_push_uint32(ndr, r->in.access_mask));
return NT_STATUS_OK;
}
@@ -1249,9 +1262,10 @@ NTSTATUS ndr_pull_spoolss_EnumPrinters(struct ndr_pull *ndr, struct spoolss_Enum
return NT_STATUS_OK;
}
-NTSTATUS ndr_pull_spoolss_01(struct ndr_pull *ndr, struct spoolss_01 *r)
+NTSTATUS ndr_pull_spoolss_OpenPrinter(struct ndr_pull *ndr, struct spoolss_OpenPrinter *r)
{
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result));
+ NDR_CHECK(ndr_pull_policy_handle(ndr, r->out.handle));
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
return NT_STATUS_OK;
}
diff --git a/source4/librpc/ndr/ndr_spoolss.h b/source4/librpc/ndr/ndr_spoolss.h
index 61aeed9b54..60738b494a 100644
--- a/source4/librpc/ndr/ndr_spoolss.h
+++ b/source4/librpc/ndr/ndr_spoolss.h
@@ -124,12 +124,17 @@ struct spoolss_EnumPrinters {
};
-struct spoolss_01 {
+struct spoolss_OpenPrinter {
struct {
+ const char *server;
+ const char *printer;
+ DATA_BLOB *buffer;
+ uint32 access_mask;
} in;
struct {
- NTSTATUS result;
+ struct policy_handle *handle;
+ WERROR result;
} out;
};
@@ -1135,7 +1140,7 @@ struct spoolss_5f {
};
#define DCERPC_SPOOLSS_ENUMPRINTERS 0
-#define DCERPC_SPOOLSS_01 1
+#define DCERPC_SPOOLSS_OPENPRINTER 1
#define DCERPC_SPOOLSS_02 2
#define DCERPC_SPOOLSS_03 3
#define DCERPC_SPOOLSS_ENUMJOBS 4