ndr_print_enum: void (struct ndr_print *, const char *, const char *, const char *, uint32_t)
ndr_print_function_debug: void (ndr_print_function_t, const char *, int, void *)
ndr_print_function_string: char *(TALLOC_CTX *, ndr_print_function_t, const char *, int, void *)
-ndr_print_get_switch_value: uint32_t (struct ndr_print *, const void *)
ndr_print_gid_t: void (struct ndr_print *, const char *, gid_t)
ndr_print_hyper: void (struct ndr_print *, const char *, uint64_t)
ndr_print_int16: void (struct ndr_print *, const char *, int16_t)
ndr_print_ptr: void (struct ndr_print *, const char *, const void *)
ndr_print_set_switch_value: enum ndr_err_code (struct ndr_print *, const void *, uint32_t)
ndr_print_sockaddr_storage: void (struct ndr_print *, const char *, const struct sockaddr_storage *)
+ndr_print_steal_switch_value: uint32_t (struct ndr_print *, const void *)
ndr_print_string: void (struct ndr_print *, const char *, const char *)
ndr_print_string_array: void (struct ndr_print *, const char *, const char **)
ndr_print_string_helper: void (struct ndr_print *, const char *, ...)
uint32_t ndr_push_get_switch_value(struct ndr_push *ndr, const void *p);
uint32_t ndr_push_steal_switch_value(struct ndr_push *ndr, const void *p);
uint32_t ndr_pull_get_switch_value(struct ndr_pull *ndr, const void *p);
-uint32_t ndr_print_get_switch_value(struct ndr_print *ndr, const void *p);
+uint32_t ndr_print_steal_switch_value(struct ndr_print *ndr, const void *p);
uint32_t ndr_pull_steal_switch_value(struct ndr_pull *ndr, const void *p);
enum ndr_err_code ndr_pull_struct_blob(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx, void *p, ndr_pull_flags_fn_t fn);
enum ndr_err_code ndr_pull_struct_blob_all(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx, void *p, ndr_pull_flags_fn_t fn);
return ndr_token_peek(&ndr->switch_list, p);
}
-_PUBLIC_ uint32_t ndr_print_get_switch_value(struct ndr_print *ndr, const void *p)
+/* retrieve a switch value and remove it from the list */
+_PUBLIC_ uint32_t ndr_print_steal_switch_value(struct ndr_print *ndr, const void *p)
{
- return ndr_token_peek(&ndr->switch_list, p);
+ enum ndr_err_code status;
+ uint32_t v;
+
+ status = ndr_token_retrieve(&ndr->switch_list, p, &v);
+ if (!NDR_ERR_CODE_IS_SUCCESS(status)) {
+ return 0;
+ }
+
+ return v;
}
/* retrieve a switch value and remove it from the list */
_PUBLIC_ void ndr_print_drsuapi_DsBindInfo(struct ndr_print *ndr, const char *name, const union drsuapi_DsBindInfo *r)
{
uint32_t level;
- level = ndr_print_get_switch_value(ndr, r);
+ level = ndr_print_steal_switch_value(ndr, r);
ndr_print_union(ndr, name, level, "drsuapi_DsBindInfo");
switch (level) {
case 24:
_PUBLIC_ void ndr_print_ntlmssp_Version(struct ndr_print *ndr, const char *name, const union ntlmssp_Version *r)
{
int level;
- level = ndr_print_get_switch_value(ndr, r);
+ level = ndr_print_steal_switch_value(ndr, r);
switch (level) {
case NTLMSSP_NEGOTIATE_VERSION:
ndr_print_ntlmssp_VERSION(ndr, name, &r->version);
_PUBLIC_ void ndr_print_NL_AUTH_MESSAGE_BUFFER(struct ndr_print *ndr, const char *name, const union NL_AUTH_MESSAGE_BUFFER *r)
{
int level;
- level = ndr_print_get_switch_value(ndr, r);
+ level = ndr_print_steal_switch_value(ndr, r);
switch (level) {
case NL_FLAG_OEM_NETBIOS_DOMAIN_NAME:
ndr_print_string(ndr, name, r->a);
_PUBLIC_ void ndr_print_NL_AUTH_MESSAGE_BUFFER_REPLY(struct ndr_print *ndr, const char *name, const union NL_AUTH_MESSAGE_BUFFER_REPLY *r)
{
int level;
- level = ndr_print_get_switch_value(ndr, r);
+ level = ndr_print_steal_switch_value(ndr, r);
switch (level) {
case NL_NEGOTIATE_RESPONSE:
ndr_print_uint32(ndr, name, r->dummy);
void ndr_print_spoolss_Field(struct ndr_print *ndr, const char *name, const union spoolss_Field *r)
{
int level;
- level = ndr_print_get_switch_value(ndr, r);
+ level = ndr_print_steal_switch_value(ndr, r);
ndr_print_union(ndr, name, level, "spoolss_Field");
switch (level) {
case PRINTER_NOTIFY_TYPE:
$self->start_flags($e, $ndr);
- $self->pidl("level = ndr_print_get_switch_value($ndr, $varname);");
+ $self->pidl("level = ndr_print_steal_switch_value($ndr, $varname);");
$self->pidl("ndr_print_union($ndr, name, level, \"$name\");");