summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2010-02-09 18:27:37 +0100
committerKarolin Seeger <kseeger@samba.org>2010-02-19 14:32:30 +0100
commit365c2f8531ce0bca8b20195be9fff0332d4f5434 (patch)
treea8e526f4d177974bb470aef580017af8fab62bad
parenta283e35f1066134bdb4896319775b7690ac6d253 (diff)
downloadsamba-365c2f8531ce0bca8b20195be9fff0332d4f5434.tar.gz
libndr: add LIBNDR_FLAG_NO_RELATIVE_REVERSE so that relative reverse processing can be disabled for single structure elements.
Guenther (cherry picked from commit a2c34296fa6ca2ffb69cb69698a9b5f81803e8a8) (cherry picked from commit cc103797c60b7a2ee48d73fefd91d7f4ab6586e3)
-rw-r--r--librpc/idl/idl_types.h1
-rw-r--r--librpc/ndr/libndr.h3
-rw-r--r--librpc/ndr/ndr.c3
3 files changed, 7 insertions, 0 deletions
diff --git a/librpc/idl/idl_types.h b/librpc/idl/idl_types.h
index 193a1f612f1..3c6c12cd846 100644
--- a/librpc/idl/idl_types.h
+++ b/librpc/idl/idl_types.h
@@ -69,3 +69,4 @@
#define NDR_PAHEX LIBNDR_PRINT_ARRAY_HEX
#define NDR_RELATIVE_REVERSE LIBNDR_FLAG_RELATIVE_REVERSE
+#define NDR_NO_RELATIVE_REVERSE LIBNDR_FLAG_NO_RELATIVE_REVERSE
diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h
index 6312c40515c..6274b20c49d 100644
--- a/librpc/ndr/libndr.h
+++ b/librpc/ndr/libndr.h
@@ -123,6 +123,9 @@ struct ndr_print {
#define LIBNDR_FLAG_STR_UTF8 (1<<12)
#define LIBNDR_STRING_FLAGS (0x7FFC)
+/* set if relative pointers should *not* be marshalled in reverse order */
+#define LIBNDR_FLAG_NO_RELATIVE_REVERSE (1<<18)
+
/* set if relative pointers are marshalled in reverse order */
#define LIBNDR_FLAG_RELATIVE_REVERSE (1<<19)
diff --git a/librpc/ndr/ndr.c b/librpc/ndr/ndr.c
index 2df406318c3..523d7e8c984 100644
--- a/librpc/ndr/ndr.c
+++ b/librpc/ndr/ndr.c
@@ -367,6 +367,9 @@ _PUBLIC_ void ndr_set_flags(uint32_t *pflags, uint32_t new_flags)
if (new_flags & LIBNDR_ALIGN_FLAGS) {
(*pflags) &= ~LIBNDR_FLAG_REMAINING;
}
+ if (new_flags & LIBNDR_FLAG_NO_RELATIVE_REVERSE) {
+ (*pflags) &= ~LIBNDR_FLAG_RELATIVE_REVERSE;
+ }
(*pflags) |= new_flags;
}