summaryrefslogtreecommitdiff
path: root/librpc
diff options
context:
space:
mode:
authorAurelien Aptel <aaptel@suse.com>2017-05-23 11:59:59 +0200
committerJeremy Allison <jra@samba.org>2017-07-19 21:22:13 +0200
commitaa33aa6e64b3306ffb777ed690a60c5576e8514b (patch)
treee4f733b0db3bc936f3dbf00b25409f6e3a22cbfd /librpc
parenta44bce6dfab59a6440ccc30ef0968d59b9f43fd3 (diff)
downloadsamba-aa33aa6e64b3306ffb777ed690a60c5576e8514b.tar.gz
librpc/ndr: add new ndr_compression_state
Signed-off-by: Aurelien Aptel <aaptel@suse.com> Reviewed-by: Guenther Deschner <gd@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'librpc')
-rw-r--r--librpc/ndr/libndr.h6
-rw-r--r--librpc/ndr/ndr_compression.c11
2 files changed, 17 insertions, 0 deletions
diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h
index 072fd662e64..41e68ee7b98 100644
--- a/librpc/ndr/libndr.h
+++ b/librpc/ndr/libndr.h
@@ -47,6 +47,8 @@ struct ndr_token_list {
uint32_t count;
};
+struct ndr_compression_state;
+
/* this is the base structure passed to routines that
parse MSRPC formatted data
@@ -71,6 +73,8 @@ struct ndr_pull {
struct ndr_token_list array_length_list;
struct ndr_token_list switch_list;
+ struct ndr_compression_state *cstate;
+
TALLOC_CTX *current_mem_ctx;
/* this is used to ensure we generate unique reference IDs
@@ -97,6 +101,8 @@ struct ndr_push {
struct ndr_token_list dns_string_list;
struct ndr_token_list full_ptr_list;
+ struct ndr_compression_state *cstate;
+
/* this is used to ensure we generate unique reference IDs */
uint32_t ptr_count;
};
diff --git a/librpc/ndr/ndr_compression.c b/librpc/ndr/ndr_compression.c
index fd915ccaaa6..b2cb4341058 100644
--- a/librpc/ndr/ndr_compression.c
+++ b/librpc/ndr/ndr_compression.c
@@ -26,6 +26,17 @@
#include "../librpc/ndr/ndr_compression.h"
#include <zlib.h>
+struct ndr_compression_state {
+ enum ndr_compression_alg type;
+ union {
+ struct {
+ struct z_stream_s *z;
+ uint8_t *dict;
+ size_t dict_size;
+ } mszip;
+ };
+};
+
static voidpf ndr_zlib_alloc(voidpf opaque, uInt items, uInt size)
{
return talloc_zero_size(opaque, items * size);