summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--librpc/gen_ndr/ndr_rap.c82
-rw-r--r--librpc/gen_ndr/rap.h2
-rw-r--r--librpc/idl/rap.idl4
-rw-r--r--librpc/ndr/ndr_rap.c40
-rw-r--r--librpc/ndr/ndr_rap.h1
5 files changed, 69 insertions, 60 deletions
diff --git a/librpc/gen_ndr/ndr_rap.c b/librpc/gen_ndr/ndr_rap.c
index 5a45431960..6d975184c1 100644
--- a/librpc/gen_ndr/ndr_rap.c
+++ b/librpc/gen_ndr/ndr_rap.c
@@ -2257,6 +2257,7 @@ _PUBLIC_ void ndr_print_rap_NetShareEnum(struct ndr_print *ndr, const char *name
_PUBLIC_ enum ndr_err_code ndr_push_rap_NetServerEnum2(struct ndr_push *ndr, int flags, const struct rap_NetServerEnum2 *r)
{
+ uint32_t cntr_info_0;
if (flags & NDR_IN) {
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.bufsize));
@@ -2276,17 +2277,20 @@ _PUBLIC_ enum ndr_err_code ndr_push_rap_NetServerEnum2(struct ndr_push *ndr, int
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->out.convert));
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->out.count));
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->out.available));
- if (r->out.info == NULL) {
- return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+ for (cntr_info_0 = 0; cntr_info_0 < r->out.count; cntr_info_0++) {
+ NDR_CHECK(ndr_push_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
+ NDR_CHECK(ndr_push_rap_server_info(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
+ }
+ for (cntr_info_0 = 0; cntr_info_0 < r->out.count; cntr_info_0++) {
+ NDR_CHECK(ndr_push_rap_server_info(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
}
- NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_push_rap_server_info(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
}
return NDR_ERR_SUCCESS;
}
_PUBLIC_ enum ndr_err_code ndr_pull_rap_NetServerEnum2(struct ndr_pull *ndr, int flags, struct rap_NetServerEnum2 *r)
{
+ uint32_t cntr_info_0;
TALLOC_CTX *_mem_save_info_0;
if (flags & NDR_IN) {
ZERO_STRUCT(r->out);
@@ -2300,28 +2304,30 @@ _PUBLIC_ enum ndr_err_code ndr_pull_rap_NetServerEnum2(struct ndr_pull *ndr, int
NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->in.domain));
ndr->flags = _flags_save_string;
}
- NDR_PULL_ALLOC(ndr, r->out.info);
- ZERO_STRUCTP(r->out.info);
}
if (flags & NDR_OUT) {
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->out.status));
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->out.convert));
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->out.count));
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->out.available));
- if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
- NDR_PULL_ALLOC(ndr, r->out.info);
- }
+ NDR_PULL_ALLOC_N(ndr, r->out.info, r->out.count);
_mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
- NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
- NDR_CHECK(ndr_pull_rap_server_info(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
+ NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
+ for (cntr_info_0 = 0; cntr_info_0 < r->out.count; cntr_info_0++) {
+ NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
+ NDR_CHECK(ndr_pull_rap_server_info(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
+ }
+ for (cntr_info_0 = 0; cntr_info_0 < r->out.count; cntr_info_0++) {
+ NDR_CHECK(ndr_pull_rap_server_info(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
+ }
+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
}
return NDR_ERR_SUCCESS;
}
_PUBLIC_ void ndr_print_rap_NetServerEnum2(struct ndr_print *ndr, const char *name, int flags, const struct rap_NetServerEnum2 *r)
{
+ uint32_t cntr_info_0;
ndr_print_struct(ndr, name, "rap_NetServerEnum2");
ndr->depth++;
if (flags & NDR_SET_VALUES) {
@@ -2346,10 +2352,16 @@ _PUBLIC_ void ndr_print_rap_NetServerEnum2(struct ndr_print *ndr, const char *na
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->print(ndr, "%s: ARRAY(%d)", "info", (int)r->out.count);
ndr->depth++;
- ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
- ndr_print_rap_server_info(ndr, "info", r->out.info);
+ for (cntr_info_0=0;cntr_info_0<r->out.count;cntr_info_0++) {
+ char *idx_0=NULL;
+ if (asprintf(&idx_0, "[%d]", cntr_info_0) != -1) {
+ ndr_print_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level);
+ ndr_print_rap_server_info(ndr, "info", &r->out.info[cntr_info_0]);
+ free(idx_0);
+ }
+ }
ndr->depth--;
ndr->depth--;
}
@@ -2470,6 +2482,44 @@ _PUBLIC_ enum ndr_err_code ndr_pull_rap_NetPrintQEnum(struct ndr_pull *ndr, int
return NDR_ERR_SUCCESS;
}
+_PUBLIC_ void ndr_print_rap_NetPrintQEnum(struct ndr_print *ndr, const char *name, int flags, const struct rap_NetPrintQEnum *r)
+{
+ uint32_t cntr_info_0;
+ 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_uint16(ndr, "status", 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(ndr, "%s: ARRAY(%d)", "info", (int)r->out.count);
+ ndr->depth++;
+ for (cntr_info_0=0;cntr_info_0<r->out.count;cntr_info_0++) {
+ char *idx_0=NULL;
+ if (asprintf(&idx_0, "[%d]", cntr_info_0) != -1) {
+ ndr_print_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level);
+ ndr_print_rap_printq_info(ndr, "info", &r->out.info[cntr_info_0]);
+ free(idx_0);
+ }
+ }
+ ndr->depth--;
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
_PUBLIC_ enum ndr_err_code ndr_push_rap_NetPrintQGetInfo(struct ndr_push *ndr, int flags, const struct rap_NetPrintQGetInfo *r)
{
if (flags & NDR_IN) {
diff --git a/librpc/gen_ndr/rap.h b/librpc/gen_ndr/rap.h
index 15538a886f..4a6a11fee5 100644
--- a/librpc/gen_ndr/rap.h
+++ b/librpc/gen_ndr/rap.h
@@ -623,7 +623,7 @@ struct rap_NetServerEnum2 {
uint16_t convert;
uint16_t count;
uint16_t available;
- union rap_server_info *info;/* [ref,switch_is(level)] */
+ union rap_server_info *info;/* [switch_is(level)] */
} out;
};
diff --git a/librpc/idl/rap.idl b/librpc/idl/rap.idl
index 061eb8f2fb..5705426223 100644
--- a/librpc/idl/rap.idl
+++ b/librpc/idl/rap.idl
@@ -374,7 +374,7 @@ interface rap
[out] uint16 convert,
[out] uint16 count,
[out] uint16 available,
- [out,switch_is(level)] rap_server_info *info
+ [out,switch_is(level)] rap_server_info info[count]
);
[public] void rap_WserverGetInfo(
@@ -546,7 +546,7 @@ interface rap
[case(5)] rap_PrintQueue5 info5;
} rap_printq_info;
- [public,noprint] void rap_NetPrintQEnum(
+ [public] 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
index a7bfb9f750..f21e3675b6 100644
--- a/librpc/ndr/ndr_rap.c
+++ b/librpc/ndr/ndr_rap.c
@@ -22,43 +22,3 @@
#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
index 3f395fdf60..0a18e8cdb7 100644
--- a/librpc/ndr/ndr_rap.h
+++ b/librpc/ndr/ndr_rap.h
@@ -19,4 +19,3 @@
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);