librpc/ndr: add new ndr_compression_state
authorAurelien Aptel <aaptel@suse.com>
Tue, 23 May 2017 09:59:59 +0000 (11:59 +0200)
committerJeremy Allison <jra@samba.org>
Wed, 19 Jul 2017 19:22:13 +0000 (21:22 +0200)
Signed-off-by: Aurelien Aptel <aaptel@suse.com>
Reviewed-by: Guenther Deschner <gd@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
librpc/ndr/libndr.h
librpc/ndr/ndr_compression.c

index 072fd662e6409381a9f4b3904c5f57f9a618297b..41e68ee7b984e30b11c1613d611a9d515bfebefd 100644 (file)
@@ -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;
 };
index fd915ccaaa6215b4591e523b564eac6372c387e8..b2cb4341058fe1c87fc3c2e33b7752f6c44fb49b 100644 (file)
 #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);