The branch, master has been updated
       via  7f242d0 idl: declare frstrans_VersionVector public so that we can 
dump it to blob and vice versa
       via  c768433 idl: frstrans.idl add frstrans_RdcClose
       via  c67468d idl: improve frsrpc by adding missing flag, fixing typo (W 
-> VV) and making needed structure public
       via  c396660 idl: Add frs blobs for dumping of frs related blobs with 
ndrdump
       via  a5701c2 idl: Add compression_guid
       via  51e7f76 idl: frsrpc depends on bkupblobs.idl and fscc.idl
       via  4cc86bb idl: add fscc needed by frsrpc
       via  f1d03e7 idl: add nt backup blobs format
       via  7bc3b37 idl: frsrpc we don't need NDR_REMAINING as size of the blob 
is one the wire
       via  15ab764 idl: frsrpc cleaning, opnum 4->10 didn't exists
       via  072bf22 lib: Use GUID_buf_string in GUID_string
       via  82c7ab2 Create talloc-less functions for formating GUID
      from  47f307d swrap: Bump version to 1.1.2.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 7f242d035778d581ef90d26fe02537d5955e655d
Author: Matthieu Patou <[email protected]>
Date:   Sun Sep 28 21:22:27 2014 -0700

    idl: declare frstrans_VersionVector public so that we can dump it to blob 
and vice versa
    
    Change-Id: Ica8dbe899eb257603ce6f7b2ea224c6533bdea46
    Reviewed-by: Matthieu Patou <[email protected]>
    Signed-off-by: Matthieu Patou <[email protected]>
    Reviewed-by: Stefan Metzmacher <[email protected]>
    
    Autobuild-User(master): Matthieu Patou <[email protected]>
    Autobuild-Date(master): Thu Oct  2 14:27:02 CEST 2014 on sn-devel-104

commit c76843361bbcebd93f608f3932ed0150c528e40c
Author: Matthieu Patou <[email protected]>
Date:   Wed Sep 25 23:53:21 2013 -0700

    idl: frstrans.idl add frstrans_RdcClose
    
    Change-Id: I32e88f542da7df21e253cfbf8c2b3cc17043c6c7
    
    Signed-off-by: Matthieu Patou <[email protected]>
    Reviewed-by: Stefan Metzmacher <[email protected]>

commit c67468d43b4c93ec2a7dc727a3192e339eb5528c
Author: Matthieu Patou <[email protected]>
Date:   Fri Sep 23 18:09:48 2011 -0700

    idl: improve frsrpc by adding missing flag, fixing typo (W -> VV) and 
making needed structure public
    
    Change-Id: Ia507b5f627464ab78a145e54b276fc8d64ee3c14
    Signed-off-by: Matthieu Patou <[email protected]>
    Reviewed-by: Stefan Metzmacher <[email protected]>

commit c396660f06bae80a652c228895eb7102f7e1658a
Author: Matthieu Patou <[email protected]>
Date:   Wed Jul 18 09:02:06 2012 -0700

    idl: Add frs blobs for dumping of frs related blobs with ndrdump
    
    Change-Id: I5f8375fee663e452c26f264d73f637beffb1f209
    Signed-off-by: Matthieu Patou <[email protected]>
    Reviewed-by: Stefan Metzmacher <[email protected]>

commit a5701c298f308908ebd580aa8c1b9a9066296def
Author: Matthieu Patou <[email protected]>
Date:   Fri Sep 2 00:36:03 2011 +0200

    idl: Add compression_guid
    
    Change-Id: I3cfe3c8f4a405fcf9a54092b03e87f00e7abd2fb
    Signed-off-by: Matthieu Patou <[email protected]>
    Reviewed-by: Stefan Metzmacher <[email protected]>

commit 51e7f769e2cfb0b16b5466d9461358593ca87667
Author: Matthieu Patou <[email protected]>
Date:   Wed Jul 18 08:55:26 2012 -0700

    idl: frsrpc depends on bkupblobs.idl and fscc.idl
    
    Change-Id: I6ce1f4b28752765e7bc59c9eb7474ebd68d9b399
    Signed-off-by: Matthieu Patou <[email protected]>
    Reviewed-by: Stefan Metzmacher <[email protected]>

commit 4cc86bb5051c7bf6d29e8aea03ec973c901b4bf2
Author: Matthieu Patou <[email protected]>
Date:   Thu Aug 18 19:07:40 2011 +0200

    idl: add fscc needed by frsrpc
    
    Change-Id: Ib44a57b38a194e727242267a4821c88a15219eab
    Signed-off-by: Matthieu Patou <[email protected]>
    Reviewed-by: Stefan Metzmacher <[email protected]>

commit f1d03e78370c735d6fc8418bc356ed52b0fdf75f
Author: Matthieu Patou <[email protected]>
Date:   Thu Aug 18 19:07:14 2011 +0200

    idl: add nt backup blobs format
    
    Change-Id: I4a43e1fe5fcebf2a4647ea2fbc9985663c0d7af2
    Reviewed-by: Stefan Metzmacher <[email protected]>
    Signed-off-by: Matthieu Patou <[email protected]>

commit 7bc3b372cab0294605e22098d04636e5ece81ffe
Author: Matthieu Patou <[email protected]>
Date:   Sun Aug 7 09:41:00 2011 +0400

    idl: frsrpc we don't need NDR_REMAINING as size of the blob is one the wire
    
    Change-Id: Ia3f1a16668e97ae7b45a8d9ee4d0539c2652eb82
    Reviewed-by: Stefan Metzmacher <[email protected]>
    Signed-off-by: Matthieu Patou <[email protected]>

commit 15ab764f91f22c8c08c630af110d78d578bb3429
Author: Matthieu Patou <[email protected]>
Date:   Mon Aug 1 13:53:32 2011 +0400

    idl: frsrpc cleaning, opnum 4->10 didn't exists
    
    Change-Id: I6b45ffdead170e9f83deb8d16082cc9bb0366d47
    Reviewed-by: Stefan Metzmacher <[email protected]>
    Signed-off-by: Matthieu Patou <[email protected]>

commit 072bf227a76ff0683aa4a32255ce89db2107829e
Author: Volker Lendecke <[email protected]>
Date:   Tue Sep 30 06:32:36 2014 +0000

    lib: Use GUID_buf_string in GUID_string
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Matthieu Patou <[email protected]>

commit 82c7ab22665d621ea5df0450638cb5dc0f40bff8
Author: Matthieu Patou <[email protected]>
Date:   Thu Sep 25 01:14:27 2014 -0700

    Create talloc-less functions for formating GUID
    
    Signed-off-by: Matthieu Patou <[email protected]>
    Reviewed-by: Volker Lendecke <[email protected]>
    Change-Id: I84adc45d2476dd225315bfc7dbb313f1b36b31e7

-----------------------------------------------------------------------

Summary of changes:
 librpc/ABI/{ndr-0.0.3.sigs => ndr-0.0.4.sigs} |    1 +
 librpc/idl/bkupblobs.idl                      |   54 +++++++++++++++++++++
 librpc/idl/frsblobs.idl                       |   31 ++++++++++++
 librpc/idl/frsrpc.idl                         |   62 +++++++++++++++++++-----
 librpc/idl/frstrans.idl                       |    6 ++-
 librpc/idl/fscc.idl                           |   47 +++++++++++++++++++
 librpc/idl/wscript_build                      |    2 +-
 librpc/ndr/libndr.h                           |    6 ++
 librpc/ndr/{ndr_frsrpc.c => ndr_bkupblobs.c}  |   50 ++++++++------------
 librpc/ndr/uuid.c                             |   33 ++++++++++----
 librpc/wscript_build                          |   22 ++++++++-
 source4/librpc/wscript_build                  |    3 +-
 12 files changed, 260 insertions(+), 57 deletions(-)
 copy librpc/ABI/{ndr-0.0.3.sigs => ndr-0.0.4.sigs} (99%)
 create mode 100644 librpc/idl/bkupblobs.idl
 create mode 100644 librpc/idl/frsblobs.idl
 create mode 100644 librpc/idl/fscc.idl
 copy librpc/ndr/{ndr_frsrpc.c => ndr_bkupblobs.c} (59%)


Changeset truncated at 500 lines:

diff --git a/librpc/ABI/ndr-0.0.3.sigs b/librpc/ABI/ndr-0.0.4.sigs
similarity index 99%
copy from librpc/ABI/ndr-0.0.3.sigs
copy to librpc/ABI/ndr-0.0.4.sigs
index d9c76f0..c1b880f 100644
--- a/librpc/ABI/ndr-0.0.3.sigs
+++ b/librpc/ABI/ndr-0.0.4.sigs
@@ -1,4 +1,5 @@
 GUID_all_zero: bool (const struct GUID *)
+GUID_buf_string: char *(const struct GUID *, struct GUID_txt_buf *)
 GUID_compare: int (const struct GUID *, const struct GUID *)
 GUID_equal: bool (const struct GUID *, const struct GUID *)
 GUID_from_data_blob: NTSTATUS (const DATA_BLOB *, struct GUID *)
diff --git a/librpc/idl/bkupblobs.idl b/librpc/idl/bkupblobs.idl
new file mode 100644
index 0000000..d1ec4a5
--- /dev/null
+++ b/librpc/idl/bkupblobs.idl
@@ -0,0 +1,54 @@
+#include "idl_types.h"
+
+import "misc.idl";
+import "security.idl";
+import "fscc.idl";
+/* bkup blobs interface definition */
+
+
+[
+       pointer_default(unique),
+       helpstring("bkup blobs")
+]
+
+
+interface bkup
+{
+       typedef [v1_enum] enum {
+               STREAM_ID_DATA  = 1,
+               STREAM_ID_EX_DATA = 2,
+               STREAM_ID_SECURITY_DATA = 3,
+               STREAM_ID_ALTERNATE_DATA = 4,
+               STREAM_ID_LINK = 5,
+               STREAM_ID_OBJECTID = 7,
+               STREAM_ID_REPARSE_DATA = 8,
+               STREAM_ID_SPARSE_BLOCK = 9,
+               STREAM_ID_TXFS_DATA = 10
+       } bkup_StreamId;
+
+       typedef [v1_enum] enum {
+               STREAM_ATTRIBUTE_NORMAL = 0,
+               STREAM_ATTRIBUTE_SECURITY = 2,
+               STREAM_ATTRIBUTE_SPARSE = 8
+       } bkup_StreamAttribute;
+
+       typedef [nodiscriminant] union {
+               [default] DATA_BLOB blob;
+               [flag(NDR_ALIGN2),case(STREAM_ID_SECURITY_DATA)] 
security_descriptor sd;
+               [case(STREAM_ID_OBJECTID)] fscc_FileObjectIdBuffer_2 object;
+       } bkup_StreamData;
+
+       typedef [public] struct {
+               bkup_StreamId id;
+               bkup_StreamAttribute attribute;
+               hyper size;
+               uint32 stream_name_size;
+               [charset(UTF16),flag(STR_NOTERM)] uint16 
stream_name[stream_name_size];
+               [subcontext(0), subcontext_size(size), switch_is(id)] 
[flag(NDR_REMAINING)]  bkup_StreamData data;
+       } bkup_Win32StreamId;
+
+       typedef [nopush, nopull, flag(NDR_NOALIGN), public] struct {
+               uint32 num_stream;
+               bkup_Win32StreamId streams[num_stream];
+       } bkup_NTBackupFile;
+}
diff --git a/librpc/idl/frsblobs.idl b/librpc/idl/frsblobs.idl
new file mode 100644
index 0000000..e5f0f93
--- /dev/null
+++ b/librpc/idl/frsblobs.idl
@@ -0,0 +1,31 @@
+#include "idl_types.h"
+
+import "misc.idl";
+import "security.idl";
+import "frsrpc.idl";
+import "bkupblobs.idl";
+import "fscc.idl";
+/* frs related blobs decoding. Used for debug/dump of FRS related structures */
+
+[
+       pointer_default(unique),
+       helpstring("bkup blobs"),
+       uuid("12345777-1234-abcd-0001-00000004")
+]
+
+interface frsblobs
+{
+
+       void  decode_nt_backup_file(
+               [in] bkup_NTBackupFile file
+       );
+
+       void decode_frsrpc_StageHeader(
+               [in] frsrpc_StageHeader header,
+               [in] bkup_NTBackupFile data
+       );
+
+       void decode_FileNetworkOpenInformation(
+               [in] fscc_FileNetworkOpenInformation data
+       );
+}
diff --git a/librpc/idl/frsrpc.idl b/librpc/idl/frsrpc.idl
index a235702..016095f 100644
--- a/librpc/idl/frsrpc.idl
+++ b/librpc/idl/frsrpc.idl
@@ -1,6 +1,8 @@
 #include "idl_types.h"
 
 import "misc.idl";
+import "fscc.idl";
+import "bkupblobs.idl";
 
 [
   uuid("f5cc59b4-4264-101a-8c59-08002b2f8426"),
@@ -12,6 +14,7 @@ import "misc.idl";
 ] 
 interface frsrpc
 {
+
        /*****************/
        /* Function 0x00 */
 
@@ -33,6 +36,7 @@ interface frsrpc
                FRSRPC_CO_FLAG_ONLIST           = 0x00000010,
                FRSRPC_CO_FLAG_LOCALCO          = 0x00000020,
                FRSRPC_CO_FLAG_RETRY            = 0x00000040,
+               FRSRPC_CO_FLAG_INST_INCOMPLETE  = 0x00000080,
                FRSRPC_CO_FLAG_OUT_OF_ORDER     = 0x00000200,
                FRSRPC_CO_FLAG_NEW_FILE         = 0x00000400,
                FRSRPC_CO_FLAG_CONTROL          = 0x00001000,
@@ -48,6 +52,9 @@ interface frsrpc
 
        const uint32 FRSRPC_CO_IFLAG_NONE = 0x0000000;
 
+       const string FRSRPC_COMPRESSION_GUID = 
"64d2f7d2-2695-436d-8830-8d3c58701e15";
+
+
        typedef [bitmap32bit,flag(NDR_PAHEX)] bitmap {
                FRSRPC_CO_IFLAG_VVRETIRE_EXEC   = 0x00000001,
                FRSRPC_CO_IFLAG_CO_ABORT        = 0x00000002,
@@ -115,7 +122,7 @@ interface frsrpc
                FRSRPC_CO_LOCATION_DIR_NO_CMD   = 0x0000000e | 0x00000001
        } frsrpc_CommPktCoCmdLocationCmd;
 
-       typedef struct {
+       [public] typedef struct {
                uint32 sequence_number;
                frsrpc_CommPktCoCmdFlags flags;
                frsrpc_CommPktCoCmdIFlags iflags;
@@ -202,7 +209,7 @@ interface frsrpc
                frsrpc_CommPktCoRecordExtensionMajor major;
                [value(0x0002)] uint16 offset_count;
                [value(0x00000018)] uint32 offset0;
-               [value(0x00000030)] uint32 offset1;/*TODO: is this correct??? */
+               [value(0x00000030)] uint32 offset1;
                [value(0)] uint32 offset_last;
                [value(0)] uint32 not_used;
                frsrpc_CommPktDataExtensionChecksum data_checksum;
@@ -220,7 +227,7 @@ interface frsrpc
                FRSRPC_COMMAND_JOINING                  = 0x00000130,
                FRSRPC_COMMAND_JOINED                   = 0x00000128,
                FRSRPC_COMMAND_UNJOIN_REMOTE            = 0x00000148,
-               FRSRPC_COMMAND_WJOIN_DONE               = 0x00000136,
+               FRSRPC_COMMAND_VVJOIN_DONE              = 0x00000136,
                FRSRPC_COMMAND_SEND_STAGE               = 0x00000228
        } frsrpc_CommPktCommand;
 
@@ -281,7 +288,7 @@ interface frsrpc
                [case(FRSRPC_COMM_PKT_CHUNK_COMPRESSION_GUID)]
                        GUID compression_guid;
                [case(FRSRPC_COMM_PKT_CHUNK_BLOCK)]
-                       [flag(NDR_REMAINING)] DATA_BLOB block;
+                       DATA_BLOB block;
                [case(FRSRPC_COMM_PKT_CHUNK_BLOCK_SIZE)]
                        hyper block_size;
                [case(FRSRPC_COMM_PKT_CHUNK_FILE_SIZE)]
@@ -293,7 +300,7 @@ interface frsrpc
                [case(FRSRPC_COMM_PKT_CHUNK_CO_GUID)][subcontext(4)]
                        GUID co_guid;
                [case(FRSRPC_COMM_PKT_CHUNK_CO_SEQUENCE_NUMBER)]
-                       uint32 co_sequnence_number;
+                       uint32 co_sequence_number;
                [case(FRSRPC_COMM_PKT_CHUNK_REMOTE_CO)][subcontext(4)]
                        frsrpc_CommPktChangeOrderCommand remote_co;
                [case(FRSRPC_COMM_PKT_CHUNK_CO_EXT_WIN2K)][subcontext(4)]
@@ -331,7 +338,7 @@ interface frsrpc
                FRSRPC_COMM_PKT_MINOR_9 = 0x00000009
        } frsrpc_CommPktMinor;
 
-       typedef struct {
+       [public] typedef struct {
                frsrpc_CommPktMajor major;
                frsrpc_CommPktMinor minor;
                [value(1)] uint32 cs_id;
@@ -388,35 +395,64 @@ interface frsrpc
                        GUID *parent_guid
        );
 
+       typedef [public,flag(NDR_NOALIGN)] struct {
+               uint32 major;
+               uint32 minor;
+               uint32 dataHigh;
+               uint32 dataLow;
+               uint16 compression;
+               uint8 unused[6];
+               fscc_FileNetworkOpenInformation attributes;
+               frsrpc_CommPktChangeOrderCommand command;
+               fscc_FileObjectIdBuffer_2 fileObjId;
+               frsrpc_CommPktCoRecordExtensionWin2k cocExt;
+               GUID compressionGuid;
+               uint32 encDataHigh;
+               uint32 encDataLow;
+               hyper dataSize;
+               uint32 reparseDataPresent;
+               uint32 reparseDataHigh;
+               uint32 reparseDataLow;
+               uint32 padding2;
+       } frsrpc_StageHeader;
+
        /*****************/
        /* Function 0x03 */
        WERROR frsrpc_FrsNOP();
 
+       /*
+        *For Op from 4 to 10 Microsoft use
+        *the notation OpnumxxNotUsedOnWire
+        *where xx is the number of the OP.
+        *They are only declared in the IDL of MS-FRS1.pdf.
+        *Not in the core of the document.
+        */
+
        /*****************/
        /* Function 0x04 */
-       [todo] void FRSRPC_BACKUP_COMPLETE();
+       /*[todo] void FRSRPC_BACKUP_COMPLETE();*/
 
        /*****************/
        /* Function 0x05 */
-       [todo] void FRSRPC_BACKUP_COMPLETE_5();
+       /*[todo] void FRSRPC_BACKUP_COMPLETE_5();*/
 
        /*****************/
        /* Function 0x06 */
-       [todo] void FRSRPC_BACKUP_COMPLETE_6();
+       /*[todo] void FRSRPC_BACKUP_COMPLETE_6();*/
 
        /*****************/
        /* Function 0x07 */
-       [todo] void FRSRPC_BACKUP_COMPLETE_7();
+       /*[todo] void FRSRPC_BACKUP_COMPLETE_7();*/
 
        /*****************/
        /* Function 0x08 */
-       [todo] void FRSRPC_BACKUP_COMPLETE_8();
+       /*[todo] void FRSRPC_BACKUP_COMPLETE_8();*/
 
        /*****************/
        /* Function 0x09 */
-       [todo] void FRSRPC_BACKUP_COMPLETE_9();
+       /*[todo] void FRSRPC_BACKUP_COMPLETE_9();*/
 
        /*****************/
        /* Function 0x0a */
-       [todo] void FRSRPC_VERIFY_PROMOTION_PARENT_EX();
+       /*[todo] void FRSRPC_VERIFY_PROMOTION_PARENT_EX();*/
 }
diff --git a/librpc/idl/frstrans.idl b/librpc/idl/frstrans.idl
index caf6e42..ed5b105 100644
--- a/librpc/idl/frstrans.idl
+++ b/librpc/idl/frstrans.idl
@@ -58,7 +58,7 @@ interface frstrans
                FRSTRANS_UPDATE_STATUS_MORE             = 0x0003
        } frstrans_UpdateStatus;
 
-       typedef struct {
+       typedef [public] struct {
                GUID db_guid;
                hyper low;
                hyper high;
@@ -185,7 +185,9 @@ interface frstrans
 
        /*****************/
        /* Function 0x0c */
-       [todo] void FRSTRANS_RDC_CLOSE();
+       WERROR frstrans_RdcClose(
+               [in,out,ref] policy_handle *server_context
+               );
 
        /*****************/
        /* Function 0x0d */
diff --git a/librpc/idl/fscc.idl b/librpc/idl/fscc.idl
new file mode 100644
index 0000000..9947dcc
--- /dev/null
+++ b/librpc/idl/fscc.idl
@@ -0,0 +1,47 @@
+#include "idl_types.h"
+
+import "misc.idl";
+/* fscc structures */
+
+[
+       pointer_default(unique),
+       helpstring("fscc structures")
+]
+
+
+interface fscc
+{
+       typedef [public] struct {
+               GUID id;
+               GUID birthVolumeId;
+               GUID initialObjectId;
+               GUID domainId;
+       } fscc_FileObjectIdBuffer_2;
+
+       typedef [bitmap32bit,flag(NDR_PAHEX)] bitmap{
+               FSCC_FILE_ATTRIBUTE_READONLY            = 0x00000001,
+               FSCC_FILE_ATTRIBUTE_HIDDEN              = 0x00000002,
+               FSCC_FILE_ATTRIBUTE_SYSTEM              = 0x00000004,
+               FSCC_FILE_ATTRIBUTE_NORMAL              = 0x00000008,
+               FSCC_FILE_ATTRIBUTE_DIRECTORY           = 0x00000010,
+               FSCC_FILE_ATTRIBUTE_ARCHIVE             = 0x00000020,
+               FSCC_FILE_ATTRIBUTE_TEMPORARY           = 0x00000100,
+               FSCC_FILE_ATTRIBUTE_SPARSE_FILE         = 0x00000200,
+               FSCC_FILE_ATTRIBUTE_REPARSE_POINT       = 0x00000400,
+               FSCC_FILE_ATTRIBUTE_COMPRESSED          = 0x00000800,
+               FSCC_FILE_ATTRIBUTE_OFFLINE             = 0x00001000,
+               FSCC_FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000,
+               FSCC_FILE_ATTRIBUTE_ENCRYPTED           = 0x00004000
+       } fscc_FileAttributes;
+
+       typedef [public] struct {
+               hyper creationTime;
+               hyper lastAccessTime;
+               hyper lastWriteTime;
+               hyper changeTime;
+               hyper allocSize;
+               hyper endOfFile;
+               fscc_FileAttributes fileAttribute;
+               uint32 reserved;
+       } fscc_FileNetworkOpenInformation;
+}
diff --git a/librpc/idl/wscript_build b/librpc/idl/wscript_build
index 1bac9a7..ad6664f 100644
--- a/librpc/idl/wscript_build
+++ b/librpc/idl/wscript_build
@@ -13,7 +13,7 @@ bld.SAMBA_PIDL_LIST('PIDL',
                        notify.idl
                        smb2_lease_struct.idl
                        policyagent.idl scerpc.idl svcctl.idl wkssvc.idl 
eventlog6.idl backupkey.idl
-                       fsrvp.idl witness.idl''',
+                       fsrvp.idl bkupblobs.idl fscc.idl frsblobs.idl 
witness.idl''',
                     options='--header --ndr-parser --samba3-ndr-server 
--server --client --python',
                     output_dir='../gen_ndr')
 
diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h
index 115e10a..76b58bb 100644
--- a/librpc/ndr/libndr.h
+++ b/librpc/ndr/libndr.h
@@ -653,6 +653,12 @@ char *GUID_string2(TALLOC_CTX *mem_ctx, const struct GUID 
*guid);
 char *GUID_hexstring(TALLOC_CTX *mem_ctx, const struct GUID *guid);
 struct GUID GUID_random(void);
 
+/* Format is "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x" */
+ /* 32 chars + 4 ' ' + \0 + 2 for adding {}  */
+struct GUID_txt_buf { char buf[39]; };
+_PUBLIC_ char* GUID_buf_string(const struct GUID *guid,
+                              struct GUID_txt_buf *dst);
+
 _PUBLIC_ enum ndr_err_code ndr_pull_enum_uint8(struct ndr_pull *ndr, int 
ndr_flags, uint8_t *v);
 _PUBLIC_ enum ndr_err_code ndr_pull_enum_uint16(struct ndr_pull *ndr, int 
ndr_flags, uint16_t *v);
 _PUBLIC_ enum ndr_err_code ndr_pull_enum_uint32(struct ndr_pull *ndr, int 
ndr_flags, uint32_t *v);
diff --git a/librpc/ndr/ndr_frsrpc.c b/librpc/ndr/ndr_bkupblobs.c
similarity index 59%
copy from librpc/ndr/ndr_frsrpc.c
copy to librpc/ndr/ndr_bkupblobs.c
index 96d3468..9335664 100644
--- a/librpc/ndr/ndr_frsrpc.c
+++ b/librpc/ndr/ndr_bkupblobs.c
@@ -1,9 +1,9 @@
 /*
    Unix SMB/CIFS implementation.
 
-   helper routines for FRSRPC marshalling
+   helper routines for BKUP Blobs marshalling
 
-   Copyright (C) Stefan (metze) Metzmacher 2009
+   Copyright (C) Matthieu Patou <[email protected]> 2011
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -20,21 +20,21 @@
 */
 
 #include "includes.h"
-#include "librpc/gen_ndr/ndr_frsrpc.h"
+#include "librpc/gen_ndr/ndr_bkupblobs.h"
 
-enum ndr_err_code ndr_push_frsrpc_CommPktChunkCtr(struct ndr_push *ndr,
-                                       int ndr_flags,
-                                       const struct frsrpc_CommPktChunkCtr *r)
+
+_PUBLIC_ enum ndr_err_code ndr_push_bkup_NTBackupFile(struct ndr_push *ndr, 
int ndr_flags, const struct bkup_NTBackupFile *r)
 {
-       uint32_t cntr_chunks_0;
+       uint32_t cntr_streams_0;
        {
                uint32_t _flags_save_STRUCT = ndr->flags;
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
                if (ndr_flags & NDR_SCALARS) {
                        NDR_CHECK(ndr_push_align(ndr, 2));
-                       for (cntr_chunks_0 = 0; cntr_chunks_0 < r->num_chunks; 
cntr_chunks_0++) {
-                               NDR_CHECK(ndr_push_frsrpc_CommPktChunk(ndr, 
NDR_SCALARS, &r->chunks[cntr_chunks_0]));
+                       for (cntr_streams_0 = 0; cntr_streams_0 < 
r->num_stream; cntr_streams_0++) {
+                               NDR_CHECK(ndr_push_bkup_Win32StreamId(ndr, 
NDR_SCALARS, &r->streams[cntr_streams_0]));
                        }
+                       NDR_CHECK(ndr_push_trailer_align(ndr, 8));
                }
                if (ndr_flags & NDR_BUFFERS) {
                }
@@ -53,26 +53,24 @@ enum ndr_err_code ndr_push_frsrpc_CommPktChunkCtr(struct 
ndr_push *ndr,
        } \
 } while (0)
 
-enum ndr_err_code ndr_pull_frsrpc_CommPktChunkCtr(struct ndr_pull *ndr,
-                                       int ndr_flags,
-                                       struct frsrpc_CommPktChunkCtr *r)
+_PUBLIC_ enum ndr_err_code ndr_pull_bkup_NTBackupFile(struct ndr_pull *ndr, 
int ndr_flags, struct bkup_NTBackupFile *r)
 {
-       uint32_t cntr_chunks_0;
+       uint32_t cntr_streams_0;
        {
                uint32_t _flags_save_STRUCT = ndr->flags;
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
                if (ndr_flags & NDR_SCALARS) {
                        uint32_t remaining = ndr->data_size - ndr->offset;
-                       r->num_chunks = 0;
-                       r->chunks = NULL;
-                       for (cntr_chunks_0 = 0; remaining > 0; cntr_chunks_0++) 
{
-                               r->num_chunks += 1;
-                               _TMP_PULL_REALLOC_N(ndr, r->chunks,
-                                                   struct frsrpc_CommPktChunk,
-                                                   r->num_chunks);
-                               NDR_CHECK(ndr_pull_frsrpc_CommPktChunk(ndr,
+                       r->num_stream = 0;
+                       r->streams = NULL;
+                       for (cntr_streams_0 = 0; remaining > 0; 
cntr_streams_0++) {
+                               r->num_stream += 1;
+                               _TMP_PULL_REALLOC_N(ndr, r->streams,
+                                                   struct bkup_Win32StreamId,
+                                                   r->num_stream);
+                               NDR_CHECK(ndr_pull_bkup_Win32StreamId(ndr,
                                                NDR_SCALARS,
-                                               &r->chunks[cntr_chunks_0]));
+                                               &r->streams[cntr_streams_0]));
                                remaining = ndr->data_size - ndr->offset;
                        }
                }
@@ -82,11 +80,3 @@ enum ndr_err_code ndr_pull_frsrpc_CommPktChunkCtr(struct 
ndr_pull *ndr,
        }
        return NDR_ERR_SUCCESS;
 }
-
-size_t ndr_size_frsrpc_CommPktChunkCtr(const struct frsrpc_CommPktChunkCtr *r,
-                                      int flags)
-{
-       flags |= LIBNDR_FLAG_NOALIGN;
-       return ndr_size_struct(r, flags,
-                       (ndr_push_flags_fn_t)ndr_push_frsrpc_CommPktChunkCtr);
-}
diff --git a/librpc/ndr/uuid.c b/librpc/ndr/uuid.c
index 5558cb6..654bebd 100644
--- a/librpc/ndr/uuid.c
+++ b/librpc/ndr/uuid.c
@@ -230,15 +230,30 @@ _PUBLIC_ int GUID_compare(const struct GUID *u1, const 
struct GUID *u2)
 */
 _PUBLIC_ char *GUID_string(TALLOC_CTX *mem_ctx, const struct GUID *guid)
 {
-       return talloc_asprintf(mem_ctx, 
-                              
"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
-                              guid->time_low, guid->time_mid,
-                              guid->time_hi_and_version,
-                              guid->clock_seq[0],
-                              guid->clock_seq[1],
-                              guid->node[0], guid->node[1],
-                              guid->node[2], guid->node[3],
-                              guid->node[4], guid->node[5]);
+       struct GUID_txt_buf buf;
+       return talloc_strdup(mem_ctx, GUID_buf_string(guid, &buf));
+}


-- 
Samba Shared Repository

Reply via email to