s4-rap: add rap print helpers.
authorGünther Deschner <gd@samba.org>
Wed, 28 Apr 2010 21:42:00 +0000 (23:42 +0200)
committerGünther Deschner <gd@samba.org>
Thu, 29 Apr 2010 10:05:41 +0000 (12:05 +0200)
Guenther

librpc/idl/rap.idl
librpc/ndr/ndr_rap.c [new file with mode: 0644]
librpc/ndr/ndr_rap.h [new file with mode: 0644]
source4/librpc/config.mk
source4/librpc/wscript_build

index 9259d4cf2adfd2bbf443f846db2544d95f055d5c..4ddb1a6f8d666f6bf9064c7a06b57492aa8afca6 100644 (file)
@@ -5,7 +5,8 @@
 */
 
 [
-       pointer_default(unique)
+       pointer_default(unique),
+       helper("../librpc/ndr/ndr_rap.h")
 ]
 interface rap
 {
@@ -541,7 +542,7 @@ interface rap
                uint16 PrinterNameOffsetHigh;
        } rap_PrintJobInfo3;
 
-       [public] void rap_NetPrintQEnum(
+       [public,noprint] void rap_NetPrintQEnum(
                [in] uint16 level,
                [in] uint16 bufsize,
                [out] uint16 status,
diff --git a/librpc/ndr/ndr_rap.c b/librpc/ndr/ndr_rap.c
new file mode 100644 (file)
index 0000000..a7bfb9f
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+   Unix SMB/CIFS implementation.
+
+   routines for marshalling/unmarshalling special rap types
+
+   Copyright (C) Guenther Deschner 2010
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include "librpc/gen_ndr/ndr_rap.h"
+
+_PUBLIC_ void ndr_print_rap_NetPrintQEnum(struct ndr_print *ndr, const char *name, int flags, const struct rap_NetPrintQEnum *r)
+{
+       uint32_t cntr_info_1;
+       ndr_print_struct(ndr, name, "rap_NetPrintQEnum");
+       ndr->depth++;
+       if (flags & NDR_SET_VALUES) {
+               ndr->flags |= LIBNDR_PRINT_SET_VALUES;
+       }
+       if (flags & NDR_IN) {
+               ndr_print_struct(ndr, "in", "rap_NetPrintQEnum");
+               ndr->depth++;
+               ndr_print_uint16(ndr, "level", r->in.level);
+               ndr_print_uint16(ndr, "bufsize", r->in.bufsize);
+               ndr->depth--;
+       }
+       if (flags & NDR_OUT) {
+               ndr_print_struct(ndr, "out", "rap_NetPrintQEnum");
+               ndr->depth++;
+               ndr_print_WERROR(ndr, "status", W_ERROR(r->out.status));
+               ndr_print_uint16(ndr, "convert", r->out.convert);
+               ndr_print_uint16(ndr, "count", r->out.count);
+               ndr_print_uint16(ndr, "available", r->out.available);
+               ndr_print_ptr(ndr, "info", r->out.info);
+               ndr->depth++;
+               ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)r->out.count);
+               ndr->depth++;
+               for (cntr_info_1=0;cntr_info_1<r->out.count;cntr_info_1++) {
+                       char *idx_1=NULL;
+                       if (asprintf(&idx_1, "[%d]", cntr_info_1) != -1) {
+                               ndr_print_set_switch_value(ndr, &r->out.info[cntr_info_1], r->in.level);
+                               ndr_print_rap_printq_info(ndr, "info", &r->out.info[cntr_info_1]);
+                               free(idx_1);
+                       }
+               }
+               ndr->depth--;
+               ndr->depth--;
+               ndr->depth--;
+       }
+       ndr->depth--;
+}
diff --git a/librpc/ndr/ndr_rap.h b/librpc/ndr/ndr_rap.h
new file mode 100644 (file)
index 0000000..3f395fd
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+   Unix SMB/CIFS implementation.
+
+   routines for marshalling/unmarshalling special rap types
+
+   Copyright (C) Guenther Deschner 2010
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+_PUBLIC_ void ndr_print_rap_NetPrintQEnum(struct ndr_print *ndr, const char *name, int flags, const struct rap_NetPrintQEnum *r);
index 78e7d18553975f828067c3cf01704b25fd1f6e9d..282053afd13267d84065448478b97b375eaafa9a 100644 (file)
@@ -578,7 +578,7 @@ RPC_NDR_KEYSVC_OBJ_FILES = ../librpc/gen_ndr/ndr_keysvc_c.o
 [SUBSYSTEM::NDR_RAP]
 PUBLIC_DEPENDENCIES = LIBNDR
 
-NDR_RAP_OBJ_FILES = ../librpc/gen_ndr/ndr_rap.o
+NDR_RAP_OBJ_FILES = ../librpc/gen_ndr/ndr_rap.o ../librpc/ndr/ndr_rap.o
 
 [SUBSYSTEM::NDR_DCERPC]
 PUBLIC_DEPENDENCIES = LIBNDR
index 01449bb3c7cdc174e2346d7e5c8641e6a7d21979..d363b8f29b0049fc4362d3a35ec28331d6e0639b 100644 (file)
@@ -264,7 +264,7 @@ bld.SAMBA_SUBSYSTEM('NDR_KEYSVC',
        )
 
 bld.SAMBA_SUBSYSTEM('NDR_RAP',
-       source='../../librpc/gen_ndr/ndr_rap.c',
+       source='../../librpc/gen_ndr/ndr_rap.c ../../librpc/ndr/ndr_rap.c',
        public_deps='LIBNDR'
        )
 
@@ -608,7 +608,6 @@ bld.SAMBA_SUBSYSTEM('NDR_DCERPC',
         header_path= [ ('*gen_ndr*', 'gen_ndr') ],
        )
 
-
 bld.SAMBA_LIBRARY('dcerpc',
        source='rpc/dcerpc.c rpc/dcerpc_auth.c rpc/dcerpc_schannel.c rpc/dcerpc_util.c rpc/dcerpc_smb.c rpc/dcerpc_smb2.c rpc/dcerpc_sock.c rpc/dcerpc_connect.c rpc/dcerpc_secondary.c ../../librpc/rpc/binding.c ../../librpc/rpc/dcerpc_error.c',
        pc_files='dcerpc.pc',