summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2010-02-13 03:45:25 +0100
committerKarolin Seeger <kseeger@samba.org>2010-02-22 15:50:39 +0100
commit8f0bf2747e3b711931d968c0f5004d99bb5b05e3 (patch)
treeb507f424cf29a61f0cc57afd4c3713d9193744cf
parent52ca1fc349f4b6ab92f96fce9aaae07768d86641 (diff)
downloadsamba-8f0bf2747e3b711931d968c0f5004d99bb5b05e3.tar.gz
samba-8f0bf2747e3b711931d968c0f5004d99bb5b05e3.tar.xz
samba-8f0bf2747e3b711931d968c0f5004d99bb5b05e3.zip
spoolss: use ndr_push_spoolss_PrinterInfo2 hand-marshalled version (moves devmode relative pointer down to sd).
Guenther (cherry picked from commit 31a097560efddfabf31c4cc54e683603ee24521f)
-rw-r--r--librpc/gen_ndr/ndr_spoolss.c236
-rw-r--r--librpc/gen_ndr/spoolss.h2
-rw-r--r--librpc/idl/spoolss.idl2
-rw-r--r--librpc/ndr/ndr_spoolss_buf.c236
4 files changed, 238 insertions, 238 deletions
diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
index 712c9078e59..cca1b12680d 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -990,242 +990,6 @@ _PUBLIC_ void ndr_print_spoolss_PrinterAttributes(struct ndr_print *ndr, const c
ndr->depth--;
}
-_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo2 *r)
-{
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_push_align(ndr, 4));
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->servername));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printername));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->sharename));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->portname));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->drivername));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->comment));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->location));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->devmode));
- ndr->flags = _flags_save_spoolss_DeviceMode;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->sepfile));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printprocessor));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->datatype));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->parameters));
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
- NDR_CHECK(ndr_push_relative_ptr1(ndr, r->secdesc));
- ndr->flags = _flags_save_spoolss_security_descriptor;
- }
- NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->attributes));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->defaultpriority));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->starttime));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->untiltime));
- NDR_CHECK(ndr_push_spoolss_PrinterStatus(ndr, NDR_SCALARS, r->status));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->cjobs));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->averageppm));
- }
- if (ndr_flags & NDR_BUFFERS) {
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- if (r->servername) {
- NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->servername));
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->servername));
- NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->servername));
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- if (r->printername) {
- NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printername));
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printername));
- NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->printername));
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- if (r->sharename) {
- NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->sharename));
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sharename));
- NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->sharename));
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- if (r->portname) {
- NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->portname));
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->portname));
- NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->portname));
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- if (r->drivername) {
- NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->drivername));
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->drivername));
- NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->drivername));
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- if (r->comment) {
- NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->comment));
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->comment));
- NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->comment));
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- if (r->location) {
- NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->location));
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->location));
- NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->location));
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
- if (r->devmode) {
- NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->devmode));
- {
- struct ndr_push *_ndr_devmode;
- NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_devmode, 0, -1));
- NDR_CHECK(ndr_push_spoolss_DeviceMode(_ndr_devmode, NDR_SCALARS, r->devmode));
- NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_devmode, 0, -1));
- }
- NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->devmode));
- }
- ndr->flags = _flags_save_spoolss_DeviceMode;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- if (r->sepfile) {
- NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->sepfile));
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sepfile));
- NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->sepfile));
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- if (r->printprocessor) {
- NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printprocessor));
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printprocessor));
- NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->printprocessor));
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- if (r->datatype) {
- NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->datatype));
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->datatype));
- NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->datatype));
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- if (r->parameters) {
- NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->parameters));
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->parameters));
- NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->parameters));
- }
- ndr->flags = _flags_save_string;
- }
- {
- uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
- if (r->secdesc) {
- NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->secdesc));
- {
- struct ndr_push *_ndr_secdesc;
- NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
- NDR_CHECK(ndr_push_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
- NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_secdesc, 0, -1));
- }
- NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->secdesc));
- }
- ndr->flags = _flags_save_spoolss_security_descriptor;
- }
- }
- return NDR_ERR_SUCCESS;
-}
-
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterInfo2 *r)
{
uint32_t _ptr_servername;
diff --git a/librpc/gen_ndr/spoolss.h b/librpc/gen_ndr/spoolss.h
index bc0b104ef35..a2487b283e2 100644
--- a/librpc/gen_ndr/spoolss.h
+++ b/librpc/gen_ndr/spoolss.h
@@ -344,7 +344,7 @@ struct spoolss_PrinterInfo2 {
uint32_t status;
uint32_t cjobs;
uint32_t averageppm;
-}/* [gensize,public] */;
+}/* [gensize,public,nopush] */;
struct spoolss_PrinterInfo3 {
struct spoolss_security_descriptor *secdesc;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
index b55def0846c..0201cba61e3 100644
--- a/librpc/idl/spoolss.idl
+++ b/librpc/idl/spoolss.idl
@@ -277,7 +277,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
PRINTER_ATTRIBUTE_TS = 0x00008000
} spoolss_PrinterAttributes;
- typedef [public,gensize] struct {
+ typedef [public,gensize,nopush] struct {
[relative] nstring *servername;
[relative] nstring *printername;
[relative] nstring *sharename;
diff --git a/librpc/ndr/ndr_spoolss_buf.c b/librpc/ndr/ndr_spoolss_buf.c
index b86f434fa40..2ce347714b7 100644
--- a/librpc/ndr/ndr_spoolss_buf.c
+++ b/librpc/ndr/ndr_spoolss_buf.c
@@ -1276,3 +1276,239 @@ enum ndr_err_code ndr_push_spoolss_security_descriptor(struct ndr_push *ndr, int
}
return NDR_ERR_SUCCESS;
}
+
+_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo2 *r)
+{
+ if (ndr_flags & NDR_SCALARS) {
+ NDR_CHECK(ndr_push_align(ndr, 4));
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->servername));
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printername));
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->sharename));
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->portname));
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->drivername));
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->comment));
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->location));
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->devmode));
+ ndr->flags = _flags_save_spoolss_DeviceMode;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->sepfile));
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printprocessor));
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->datatype));
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->parameters));
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->secdesc));
+ ndr->flags = _flags_save_spoolss_security_descriptor;
+ }
+ NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->attributes));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->defaultpriority));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->starttime));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->untiltime));
+ NDR_CHECK(ndr_push_spoolss_PrinterStatus(ndr, NDR_SCALARS, r->status));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->cjobs));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->averageppm));
+ }
+ if (ndr_flags & NDR_BUFFERS) {
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ if (r->servername) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->servername));
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->servername));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->servername));
+ }
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ if (r->printername) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printername));
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printername));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->printername));
+ }
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ if (r->sharename) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->sharename));
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sharename));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->sharename));
+ }
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ if (r->portname) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->portname));
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->portname));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->portname));
+ }
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ if (r->drivername) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->drivername));
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->drivername));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->drivername));
+ }
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ if (r->comment) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->comment));
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->comment));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->comment));
+ }
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ if (r->location) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->location));
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->location));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->location));
+ }
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ if (r->sepfile) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->sepfile));
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sepfile));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->sepfile));
+ }
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ if (r->printprocessor) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printprocessor));
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printprocessor));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->printprocessor));
+ }
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ if (r->datatype) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->datatype));
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->datatype));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->datatype));
+ }
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ if (r->parameters) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->parameters));
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->parameters));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->parameters));
+ }
+ ndr->flags = _flags_save_string;
+ }
+ {
+ uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
+ if (r->devmode) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->devmode));
+ {
+ struct ndr_push *_ndr_devmode;
+ NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_devmode, 0, -1));
+ NDR_CHECK(ndr_push_spoolss_DeviceMode(_ndr_devmode, NDR_SCALARS, r->devmode));
+ NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_devmode, 0, -1));
+ }
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->devmode));
+ }
+ ndr->flags = _flags_save_spoolss_DeviceMode;
+ }
+ {
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
+ if (r->secdesc) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->secdesc));
+ {
+ struct ndr_push *_ndr_secdesc;
+ NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
+ NDR_CHECK(ndr_push_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
+ NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_secdesc, 0, -1));
+ }
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->secdesc));
+ }
+ ndr->flags = _flags_save_spoolss_security_descriptor;
+ }
+ }
+ return NDR_ERR_SUCCESS;
+}