aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/CMakeLists.txt1
-rw-r--r--epan/dissectors/packet-dcerpc-fsrvp.c1200
-rw-r--r--epan/dissectors/packet-dcerpc-fsrvp.h57
-rw-r--r--epan/dissectors/pidl/CMakeLists.txt4
-rw-r--r--epan/dissectors/pidl/Makefile.pidl6
-rw-r--r--epan/dissectors/pidl/fsrvp/fsrvp.cnf109
-rw-r--r--epan/dissectors/pidl/fsrvp/fsrvp.idl105
7 files changed, 1482 insertions, 0 deletions
diff --git a/epan/dissectors/CMakeLists.txt b/epan/dissectors/CMakeLists.txt
index 118df10ad9..49c8136025 100644
--- a/epan/dissectors/CMakeLists.txt
+++ b/epan/dissectors/CMakeLists.txt
@@ -57,6 +57,7 @@ set(PIDL_DISSECTOR_SRC
${CMAKE_CURRENT_SOURCE_DIR}/packet-dcerpc-efs.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-dcerpc-eventlog.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-dcerpc-frstrans.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/packet-dcerpc-fsrvp.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-dcerpc-initshutdown.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-dcerpc-lsa.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-dcerpc-mapi.c
diff --git a/epan/dissectors/packet-dcerpc-fsrvp.c b/epan/dissectors/packet-dcerpc-fsrvp.c
new file mode 100644
index 0000000000..855c1de5fa
--- /dev/null
+++ b/epan/dissectors/packet-dcerpc-fsrvp.c
@@ -0,0 +1,1200 @@
+/* DO NOT EDIT
+ This file was automatically generated by Pidl
+ from fsrvp.idl and fsrvp.cnf.
+
+ Pidl is a perl based IDL compiler for DCE/RPC idl files.
+ It is maintained by the Samba team, not the Wireshark team.
+ Instructions on how to download and install Pidl can be
+ found at https://wiki.wireshark.org/Pidl
+*/
+
+
+#include "config.h"
+#include <glib.h>
+#include <string.h>
+#include <epan/packet.h>
+
+#include "packet-dcerpc.h"
+#include "packet-dcerpc-nt.h"
+#include "packet-windows-common.h"
+#include "packet-dcerpc-fsrvp.h"
+void proto_register_dcerpc_fsrvp(void);
+void proto_reg_handoff_dcerpc_fsrvp(void);
+
+/* Ett declarations */
+static gint ett_dcerpc_fsrvp = -1;
+static gint ett_fsrvp_fssagent_share_mapping_1 = -1;
+static gint ett_fsrvp_fssagent_share_mapping = -1;
+
+
+/* Header field declarations */
+static gint hf_fsrvp_fsrvp_AbortShadowCopySet_ShadowCopySetId = -1;
+static gint hf_fsrvp_fsrvp_AddToShadowCopySet_ClientShadowCopyId = -1;
+static gint hf_fsrvp_fsrvp_AddToShadowCopySet_ShadowCopySetId = -1;
+static gint hf_fsrvp_fsrvp_AddToShadowCopySet_ShareName = -1;
+static gint hf_fsrvp_fsrvp_AddToShadowCopySet_pShadowCopyId = -1;
+static gint hf_fsrvp_fsrvp_CommitShadowCopySet_ShadowCopySetId = -1;
+static gint hf_fsrvp_fsrvp_CommitShadowCopySet_TimeOutInMilliseconds = -1;
+static gint hf_fsrvp_fsrvp_DeleteShareMapping_ShadowCopyId = -1;
+static gint hf_fsrvp_fsrvp_DeleteShareMapping_ShadowCopySetId = -1;
+static gint hf_fsrvp_fsrvp_DeleteShareMapping_ShareName = -1;
+static gint hf_fsrvp_fsrvp_ExposeShadowCopySet_ShadowCopySetId = -1;
+static gint hf_fsrvp_fsrvp_ExposeShadowCopySet_TimeOutInMilliseconds = -1;
+static gint hf_fsrvp_fsrvp_GetShareMapping_Level = -1;
+static gint hf_fsrvp_fsrvp_GetShareMapping_ShadowCopyId = -1;
+static gint hf_fsrvp_fsrvp_GetShareMapping_ShadowCopySetId = -1;
+static gint hf_fsrvp_fsrvp_GetShareMapping_ShareMapping = -1;
+static gint hf_fsrvp_fsrvp_GetShareMapping_ShareName = -1;
+static gint hf_fsrvp_fsrvp_GetSupportedVersion_MaxVersion = -1;
+static gint hf_fsrvp_fsrvp_GetSupportedVersion_MinVersion = -1;
+static gint hf_fsrvp_fsrvp_IsPathShadowCopied_ShadowCopyCompatibility = -1;
+static gint hf_fsrvp_fsrvp_IsPathShadowCopied_ShadowCopyPresent = -1;
+static gint hf_fsrvp_fsrvp_IsPathShadowCopied_ShareName = -1;
+static gint hf_fsrvp_fsrvp_IsPathSupported_OwnerMachineName = -1;
+static gint hf_fsrvp_fsrvp_IsPathSupported_ShareName = -1;
+static gint hf_fsrvp_fsrvp_IsPathSupported_SupportedByThisProvider = -1;
+static gint hf_fsrvp_fsrvp_PrepareShadowCopySet_ShadowCopySetId = -1;
+static gint hf_fsrvp_fsrvp_PrepareShadowCopySet_TimeOutInMilliseconds = -1;
+static gint hf_fsrvp_fsrvp_RecoveryCompleteShadowCopySet_ShadowCopySetId = -1;
+static gint hf_fsrvp_fsrvp_SetContext_Context = -1;
+static gint hf_fsrvp_fsrvp_StartShadowCopySet_ClientShadowCopySetId = -1;
+static gint hf_fsrvp_fsrvp_StartShadowCopySet_pShadowCopySetId = -1;
+static gint hf_fsrvp_fssagent_share_mapping_1_ShadowCopyId = -1;
+static gint hf_fsrvp_fssagent_share_mapping_1_ShadowCopySetId = -1;
+static gint hf_fsrvp_fssagent_share_mapping_1_ShadowCopyShareName = -1;
+static gint hf_fsrvp_fssagent_share_mapping_1_ShareNameUNC = -1;
+static gint hf_fsrvp_fssagent_share_mapping_1_tstamp = -1;
+static gint hf_fsrvp_fssagent_share_mapping_ShareMapping1 = -1;
+static gint hf_fsrvp_opnum = -1;
+static gint hf_fsrvp_status = -1;
+
+static gint proto_dcerpc_fsrvp = -1;
+/* Version information */
+
+
+static e_guid_t uuid_dcerpc_fsrvp = {
+ 0xa8e0653c, 0x2744, 0x4389,
+ { 0xa6, 0x1d, 0x73, 0x73, 0xdf, 0x8b, 0x22, 0x92 }
+};
+static guint16 ver_dcerpc_fsrvp = 1;
+
+static int fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopyId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_fssagent_share_mapping_1_ShareNameUNC(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_fssagent_share_mapping_1_ShareNameUNC_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopyShareName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopyShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_fssagent_share_mapping_1_tstamp(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_fssagent_share_mapping_ShareMapping1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_fssagent_share_mapping_ShareMapping1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_GetSupportedVersion_MinVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_GetSupportedVersion_MinVersion_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_GetSupportedVersion_MaxVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_GetSupportedVersion_MaxVersion_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_SetContext_Context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_StartShadowCopySet_ClientShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_StartShadowCopySet_pShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_StartShadowCopySet_pShadowCopySetId_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_AddToShadowCopySet_ClientShadowCopyId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_AddToShadowCopySet_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_AddToShadowCopySet_ShareName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_AddToShadowCopySet_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_AddToShadowCopySet_pShadowCopyId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_AddToShadowCopySet_pShadowCopyId_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_CommitShadowCopySet_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_CommitShadowCopySet_TimeOutInMilliseconds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_ExposeShadowCopySet_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_ExposeShadowCopySet_TimeOutInMilliseconds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_RecoveryCompleteShadowCopySet_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_AbortShadowCopySet_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_IsPathSupported_ShareName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_IsPathSupported_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_IsPathSupported_SupportedByThisProvider(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_IsPathSupported_SupportedByThisProvider_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_IsPathSupported_OwnerMachineName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_IsPathSupported_OwnerMachineName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_IsPathSupported_OwnerMachineName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_IsPathShadowCopied_ShareName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_IsPathShadowCopied_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_IsPathShadowCopied_ShadowCopyPresent(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_IsPathShadowCopied_ShadowCopyPresent_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_IsPathShadowCopied_ShadowCopyCompatibility(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_IsPathShadowCopied_ShadowCopyCompatibility_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_GetShareMapping_ShadowCopyId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_GetShareMapping_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_GetShareMapping_ShareName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_GetShareMapping_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_GetShareMapping_Level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_GetShareMapping_ShareMapping(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_GetShareMapping_ShareMapping_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_DeleteShareMapping_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_DeleteShareMapping_ShadowCopyId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_DeleteShareMapping_ShareName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_DeleteShareMapping_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_PrepareShadowCopySet_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int fsrvp_dissect_element_PrepareShadowCopySet_TimeOutInMilliseconds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
+static int
+fsrvp_dissect_SetContext_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="SetContext";
+ offset = fsrvp_dissect_element_SetContext_Context(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+static int
+fsrvp_dissect_StartShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="StartShadowCopySet";
+ offset = fsrvp_dissect_element_StartShadowCopySet_ClientShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+static int
+fsrvp_dissect_AddToShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="AddToShadowCopySet";
+ offset = fsrvp_dissect_element_AddToShadowCopySet_ClientShadowCopyId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_AddToShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_AddToShadowCopySet_ShareName(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+ return offset;
+}
+static int
+fsrvp_dissect_CommitShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="CommitShadowCopySet";
+ offset = fsrvp_dissect_element_CommitShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_CommitShadowCopySet_TimeOutInMilliseconds(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+static int
+fsrvp_dissect_ExposeShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="ExposeShadowCopySet";
+ offset = fsrvp_dissect_element_ExposeShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_ExposeShadowCopySet_TimeOutInMilliseconds(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+static int
+fsrvp_dissect_RecoveryCompleteShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="RecoveryCompleteShadowCopySet";
+ offset = fsrvp_dissect_element_RecoveryCompleteShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+static int
+fsrvp_dissect_AbortShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="AbortShadowCopySet";
+ offset = fsrvp_dissect_element_AbortShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+static int
+fsrvp_dissect_GetShareMapping_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="GetShareMapping";
+ offset = fsrvp_dissect_element_GetShareMapping_ShadowCopyId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_GetShareMapping_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_GetShareMapping_ShareName(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+ offset = fsrvp_dissect_element_GetShareMapping_Level(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+static int
+fsrvp_dissect_DeleteShareMapping_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="DeleteShareMapping";
+ offset = fsrvp_dissect_element_DeleteShareMapping_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_DeleteShareMapping_ShadowCopyId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_DeleteShareMapping_ShareName(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+ return offset;
+}
+static int
+fsrvp_dissect_PrepareShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="PrepareShadowCopySet";
+ offset = fsrvp_dissect_element_PrepareShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_PrepareShadowCopySet_TimeOutInMilliseconds(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+
+/* IDL: struct { */
+/* IDL: GUID ShadowCopySetId; */
+/* IDL: GUID ShadowCopyId; */
+/* IDL: [charset(UTF16)] [unique(1)] uint16 *ShareNameUNC; */
+/* IDL: [charset(UTF16)] [unique(1)] uint16 *ShadowCopyShareName; */
+/* IDL: NTTIME tstamp; */
+/* IDL: } */
+
+static int
+fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fssagent_share_mapping_1_ShadowCopySetId, NULL);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopyId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fssagent_share_mapping_1_ShadowCopyId, NULL);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_fssagent_share_mapping_1_ShareNameUNC(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_fssagent_share_mapping_1_ShareNameUNC_, NDR_POINTER_UNIQUE, "Pointer to ShareNameUNC (uint16)",hf_fsrvp_fssagent_share_mapping_1_ShareNameUNC);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_fssagent_share_mapping_1_ShareNameUNC_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ char *data;
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_fsrvp_fssagent_share_mapping_1_ShareNameUNC, FALSE, &data);
+ proto_item_append_text(tree, ": %s", data);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopyShareName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopyShareName_, NDR_POINTER_UNIQUE, "Pointer to ShadowCopyShareName (uint16)",hf_fsrvp_fssagent_share_mapping_1_ShadowCopyShareName);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopyShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ char *data;
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_fsrvp_fssagent_share_mapping_1_ShadowCopyShareName, FALSE, &data);
+ proto_item_append_text(tree, ": %s", data);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_fssagent_share_mapping_1_tstamp(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fssagent_share_mapping_1_tstamp);
+
+ return offset;
+}
+
+int
+fsrvp_dissect_struct_fssagent_share_mapping_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+
+ ALIGN_TO_5_BYTES;
+
+ old_offset = offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_fsrvp_fssagent_share_mapping_1);
+ }
+
+ offset = fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+
+ offset = fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopyId(tvb, offset, pinfo, tree, di, drep);
+
+ offset = fsrvp_dissect_element_fssagent_share_mapping_1_ShareNameUNC(tvb, offset, pinfo, tree, di, drep);
+
+ offset = fsrvp_dissect_element_fssagent_share_mapping_1_ShadowCopyShareName(tvb, offset, pinfo, tree, di, drep);
+
+ offset = fsrvp_dissect_element_fssagent_share_mapping_1_tstamp(tvb, offset, pinfo, tree, di, drep);
+
+
+ proto_item_set_len(item, offset-old_offset);
+
+
+ if (di->call_data->flags & DCERPC_IS_NDR64) {
+ ALIGN_TO_5_BYTES;
+ }
+
+ return offset;
+}
+
+
+/* IDL: union { */
+/* IDL: [case(1)] [case(1)] [unique(1)] fssagent_share_mapping_1 *ShareMapping1; */
+/* IDL: [default] ; */
+/* IDL: } */
+
+static int
+fsrvp_dissect_element_fssagent_share_mapping_ShareMapping1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_fssagent_share_mapping_ShareMapping1_, NDR_POINTER_UNIQUE, "Pointer to ShareMapping1 (fssagent_share_mapping_1)",hf_fsrvp_fssagent_share_mapping_ShareMapping1);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_fssagent_share_mapping_ShareMapping1_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = fsrvp_dissect_struct_fssagent_share_mapping_1(tvb,offset,pinfo,tree,di,drep,hf_fsrvp_fssagent_share_mapping_ShareMapping1,0);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_fssagent_share_mapping(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ guint32 level;
+
+ old_offset = offset;
+ if (parent_tree) {
+ tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_fsrvp_fssagent_share_mapping, &item, "fssagent_share_mapping");
+ }
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+ ALIGN_TO_5_BYTES;
+
+ switch(level) {
+ case 1:
+ offset = fsrvp_dissect_element_fssagent_share_mapping_ShareMapping1(tvb, offset, pinfo, tree, di, drep);
+ break;
+
+ default:
+ break;
+ }
+ proto_item_set_len(item, offset-old_offset);
+
+
+ return offset;
+}
+static int
+fsrvp_dissect_element_GetSupportedVersion_MinVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_GetSupportedVersion_MinVersion_, NDR_POINTER_REF, "Pointer to MinVersion (uint32)",hf_fsrvp_fsrvp_GetSupportedVersion_MinVersion);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_GetSupportedVersion_MinVersion_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_GetSupportedVersion_MinVersion, 0);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_GetSupportedVersion_MaxVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_GetSupportedVersion_MaxVersion_, NDR_POINTER_REF, "Pointer to MaxVersion (uint32)",hf_fsrvp_fsrvp_GetSupportedVersion_MaxVersion);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_GetSupportedVersion_MaxVersion_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_GetSupportedVersion_MaxVersion, 0);
+
+ return offset;
+}
+
+/* IDL: NTSTATUS fsrvp_GetSupportedVersion( */
+/* IDL: [out] [ref] uint32 *MinVersion, */
+/* IDL: [out] [ref] uint32 *MaxVersion */
+/* IDL: ); */
+
+static int
+fsrvp_dissect_GetSupportedVersion_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint32 status;
+
+ di->dcerpc_procedure_name="GetSupportedVersion";
+ offset = fsrvp_dissect_element_GetSupportedVersion_MinVersion(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+ offset = fsrvp_dissect_element_GetSupportedVersion_MaxVersion(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_status, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, NT_errors, "Unknown NT status 0x%08x"));
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_GetSupportedVersion_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="GetSupportedVersion";
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_SetContext_Context(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_SetContext_Context, 0);
+
+ return offset;
+}
+
+/* IDL: NTSTATUS fsrvp_SetContext( */
+/* IDL: [in] uint32 Context */
+/* IDL: ); */
+
+static int
+fsrvp_dissect_SetContext_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint32 status;
+
+ di->dcerpc_procedure_name="SetContext";
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_status, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, NT_errors, "Unknown NT status 0x%08x"));
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_StartShadowCopySet_ClientShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_StartShadowCopySet_ClientShadowCopySetId, NULL);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_StartShadowCopySet_pShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_StartShadowCopySet_pShadowCopySetId_, NDR_POINTER_REF, "Pointer to PShadowCopySetId (GUID)",hf_fsrvp_fsrvp_StartShadowCopySet_pShadowCopySetId);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_StartShadowCopySet_pShadowCopySetId_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_StartShadowCopySet_pShadowCopySetId, NULL);
+
+ return offset;
+}
+
+/* IDL: NTSTATUS fsrvp_StartShadowCopySet( */
+/* IDL: [in] GUID ClientShadowCopySetId, */
+/* IDL: [out] [ref] GUID *pShadowCopySetId */
+/* IDL: ); */
+
+static int
+fsrvp_dissect_StartShadowCopySet_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint32 status;
+
+ di->dcerpc_procedure_name="StartShadowCopySet";
+ offset = fsrvp_dissect_element_StartShadowCopySet_pShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_status, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, NT_errors, "Unknown NT status 0x%08x"));
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_AddToShadowCopySet_ClientShadowCopyId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_AddToShadowCopySet_ClientShadowCopyId, NULL);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_AddToShadowCopySet_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_AddToShadowCopySet_ShadowCopySetId, NULL);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_AddToShadowCopySet_ShareName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_AddToShadowCopySet_ShareName_, NDR_POINTER_REF, "Pointer to ShareName (uint16)",hf_fsrvp_fsrvp_AddToShadowCopySet_ShareName);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_AddToShadowCopySet_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ char *data;
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_fsrvp_fsrvp_AddToShadowCopySet_ShareName, FALSE, &data);
+ proto_item_append_text(tree, ": %s", data);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_AddToShadowCopySet_pShadowCopyId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_AddToShadowCopySet_pShadowCopyId_, NDR_POINTER_REF, "Pointer to PShadowCopyId (GUID)",hf_fsrvp_fsrvp_AddToShadowCopySet_pShadowCopyId);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_AddToShadowCopySet_pShadowCopyId_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_AddToShadowCopySet_pShadowCopyId, NULL);
+
+ return offset;
+}
+
+/* IDL: NTSTATUS fsrvp_AddToShadowCopySet( */
+/* IDL: [in] GUID ClientShadowCopyId, */
+/* IDL: [in] GUID ShadowCopySetId, */
+/* IDL: [charset(UTF16)] [in] [ref] uint16 *ShareName, */
+/* IDL: [out] [ref] GUID *pShadowCopyId */
+/* IDL: ); */
+
+static int
+fsrvp_dissect_AddToShadowCopySet_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint32 status;
+
+ di->dcerpc_procedure_name="AddToShadowCopySet";
+ offset = fsrvp_dissect_element_AddToShadowCopySet_pShadowCopyId(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_status, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, NT_errors, "Unknown NT status 0x%08x"));
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_CommitShadowCopySet_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_CommitShadowCopySet_ShadowCopySetId, NULL);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_CommitShadowCopySet_TimeOutInMilliseconds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_CommitShadowCopySet_TimeOutInMilliseconds, 0);
+
+ return offset;
+}
+
+/* IDL: NTSTATUS fsrvp_CommitShadowCopySet( */
+/* IDL: [in] GUID ShadowCopySetId, */
+/* IDL: [in] uint32 TimeOutInMilliseconds */
+/* IDL: ); */
+
+static int
+fsrvp_dissect_CommitShadowCopySet_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint32 status;
+
+ di->dcerpc_procedure_name="CommitShadowCopySet";
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_status, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, NT_errors, "Unknown NT status 0x%08x"));
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_ExposeShadowCopySet_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_ExposeShadowCopySet_ShadowCopySetId, NULL);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_ExposeShadowCopySet_TimeOutInMilliseconds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_ExposeShadowCopySet_TimeOutInMilliseconds, 0);
+
+ return offset;
+}
+
+/* IDL: NTSTATUS fsrvp_ExposeShadowCopySet( */
+/* IDL: [in] GUID ShadowCopySetId, */
+/* IDL: [in] uint32 TimeOutInMilliseconds */
+/* IDL: ); */
+
+static int
+fsrvp_dissect_ExposeShadowCopySet_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint32 status;
+
+ di->dcerpc_procedure_name="ExposeShadowCopySet";
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_status, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, NT_errors, "Unknown NT status 0x%08x"));
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_RecoveryCompleteShadowCopySet_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_RecoveryCompleteShadowCopySet_ShadowCopySetId, NULL);
+
+ return offset;
+}
+
+/* IDL: NTSTATUS fsrvp_RecoveryCompleteShadowCopySet( */
+/* IDL: [in] GUID ShadowCopySetId */
+/* IDL: ); */
+
+static int
+fsrvp_dissect_RecoveryCompleteShadowCopySet_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint32 status;
+
+ di->dcerpc_procedure_name="RecoveryCompleteShadowCopySet";
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_status, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, NT_errors, "Unknown NT status 0x%08x"));
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_AbortShadowCopySet_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_AbortShadowCopySet_ShadowCopySetId, NULL);
+
+ return offset;
+}
+
+/* IDL: NTSTATUS fsrvp_AbortShadowCopySet( */
+/* IDL: [in] GUID ShadowCopySetId */
+/* IDL: ); */
+
+static int
+fsrvp_dissect_AbortShadowCopySet_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint32 status;
+
+ di->dcerpc_procedure_name="AbortShadowCopySet";
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_status, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, NT_errors, "Unknown NT status 0x%08x"));
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_IsPathSupported_ShareName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_IsPathSupported_ShareName_, NDR_POINTER_REF, "Pointer to ShareName (uint16)",hf_fsrvp_fsrvp_IsPathSupported_ShareName);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_IsPathSupported_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ char *data;
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_fsrvp_fsrvp_IsPathSupported_ShareName, FALSE, &data);
+ proto_item_append_text(tree, ": %s", data);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_IsPathSupported_SupportedByThisProvider(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_IsPathSupported_SupportedByThisProvider_, NDR_POINTER_REF, "Pointer to SupportedByThisProvider (uint32)",hf_fsrvp_fsrvp_IsPathSupported_SupportedByThisProvider);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_IsPathSupported_SupportedByThisProvider_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_IsPathSupported_SupportedByThisProvider, 0);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_IsPathSupported_OwnerMachineName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_IsPathSupported_OwnerMachineName_, NDR_POINTER_REF, "Pointer to OwnerMachineName (uint16)",hf_fsrvp_fsrvp_IsPathSupported_OwnerMachineName);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_IsPathSupported_OwnerMachineName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_IsPathSupported_OwnerMachineName__, NDR_POINTER_UNIQUE, "Pointer to OwnerMachineName (uint16)",hf_fsrvp_fsrvp_IsPathSupported_OwnerMachineName);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_IsPathSupported_OwnerMachineName__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ char *data;
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_fsrvp_fsrvp_IsPathSupported_OwnerMachineName, FALSE, &data);
+ proto_item_append_text(tree, ": %s", data);
+
+ return offset;
+}
+
+/* IDL: NTSTATUS fsrvp_IsPathSupported( */
+/* IDL: [charset(UTF16)] [in] [ref] uint16 *ShareName, */
+/* IDL: [out] [ref] uint32 *SupportedByThisProvider, */
+/* IDL: [charset(UTF16)] [out] [ref] uint16 **OwnerMachineName */
+/* IDL: ); */
+
+static int
+fsrvp_dissect_IsPathSupported_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint32 status;
+
+ di->dcerpc_procedure_name="IsPathSupported";
+ offset = fsrvp_dissect_element_IsPathSupported_SupportedByThisProvider(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+ offset = fsrvp_dissect_element_IsPathSupported_OwnerMachineName(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_status, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, NT_errors, "Unknown NT status 0x%08x"));
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_IsPathSupported_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="IsPathSupported";
+ offset = fsrvp_dissect_element_IsPathSupported_ShareName(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_IsPathShadowCopied_ShareName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_IsPathShadowCopied_ShareName_, NDR_POINTER_REF, "Pointer to ShareName (uint16)",hf_fsrvp_fsrvp_IsPathShadowCopied_ShareName);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_IsPathShadowCopied_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ char *data;
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_fsrvp_fsrvp_IsPathShadowCopied_ShareName, FALSE, &data);
+ proto_item_append_text(tree, ": %s", data);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_IsPathShadowCopied_ShadowCopyPresent(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_IsPathShadowCopied_ShadowCopyPresent_, NDR_POINTER_REF, "Pointer to ShadowCopyPresent (uint32)",hf_fsrvp_fsrvp_IsPathShadowCopied_ShadowCopyPresent);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_IsPathShadowCopied_ShadowCopyPresent_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_IsPathShadowCopied_ShadowCopyPresent, 0);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_IsPathShadowCopied_ShadowCopyCompatibility(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_IsPathShadowCopied_ShadowCopyCompatibility_, NDR_POINTER_REF, "Pointer to ShadowCopyCompatibility (int32)",hf_fsrvp_fsrvp_IsPathShadowCopied_ShadowCopyCompatibility);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_IsPathShadowCopied_ShadowCopyCompatibility_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_IsPathShadowCopied_ShadowCopyCompatibility, 0);
+
+ return offset;
+}
+
+/* IDL: NTSTATUS fsrvp_IsPathShadowCopied( */
+/* IDL: [charset(UTF16)] [in] [ref] uint16 *ShareName, */
+/* IDL: [out] [ref] uint32 *ShadowCopyPresent, */
+/* IDL: [out] [ref] int32 *ShadowCopyCompatibility */
+/* IDL: ); */
+
+static int
+fsrvp_dissect_IsPathShadowCopied_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint32 status;
+
+ di->dcerpc_procedure_name="IsPathShadowCopied";
+ offset = fsrvp_dissect_element_IsPathShadowCopied_ShadowCopyPresent(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+ offset = fsrvp_dissect_element_IsPathShadowCopied_ShadowCopyCompatibility(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_status, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, NT_errors, "Unknown NT status 0x%08x"));
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_IsPathShadowCopied_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="IsPathShadowCopied";
+ offset = fsrvp_dissect_element_IsPathShadowCopied_ShareName(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_GetShareMapping_ShadowCopyId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_GetShareMapping_ShadowCopyId, NULL);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_GetShareMapping_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_GetShareMapping_ShadowCopySetId, NULL);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_GetShareMapping_ShareName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_GetShareMapping_ShareName_, NDR_POINTER_REF, "Pointer to ShareName (uint16)",hf_fsrvp_fsrvp_GetShareMapping_ShareName);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_GetShareMapping_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ char *data;
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_fsrvp_fsrvp_GetShareMapping_ShareName, FALSE, &data);
+ proto_item_append_text(tree, ": %s", data);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_GetShareMapping_Level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_GetShareMapping_Level, 0);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_GetShareMapping_ShareMapping(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_GetShareMapping_ShareMapping_, NDR_POINTER_REF, "Pointer to ShareMapping (fssagent_share_mapping)",hf_fsrvp_fsrvp_GetShareMapping_ShareMapping);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_GetShareMapping_ShareMapping_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = fsrvp_dissect_fssagent_share_mapping(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_GetShareMapping_ShareMapping, 0);
+
+ return offset;
+}
+
+/* IDL: NTSTATUS fsrvp_GetShareMapping( */
+/* IDL: [in] GUID ShadowCopyId, */
+/* IDL: [in] GUID ShadowCopySetId, */
+/* IDL: [charset(UTF16)] [in] [ref] uint16 *ShareName, */
+/* IDL: [in] uint32 Level, */
+/* IDL: [out] [ref] [switch_is(Level)] fssagent_share_mapping *ShareMapping */
+/* IDL: ); */
+
+static int
+fsrvp_dissect_GetShareMapping_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint32 status;
+
+ di->dcerpc_procedure_name="GetShareMapping";
+ offset = fsrvp_dissect_element_GetShareMapping_ShareMapping(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_status, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, NT_errors, "Unknown NT status 0x%08x"));
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_DeleteShareMapping_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_DeleteShareMapping_ShadowCopySetId, NULL);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_DeleteShareMapping_ShadowCopyId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_DeleteShareMapping_ShadowCopyId, NULL);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_DeleteShareMapping_ShareName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, fsrvp_dissect_element_DeleteShareMapping_ShareName_, NDR_POINTER_REF, "Pointer to ShareName (uint16)",hf_fsrvp_fsrvp_DeleteShareMapping_ShareName);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_DeleteShareMapping_ShareName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ char *data;
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_fsrvp_fsrvp_DeleteShareMapping_ShareName, FALSE, &data);
+ proto_item_append_text(tree, ": %s", data);
+
+ return offset;
+}
+
+/* IDL: NTSTATUS fsrvp_DeleteShareMapping( */
+/* IDL: [in] GUID ShadowCopySetId, */
+/* IDL: [in] GUID ShadowCopyId, */
+/* IDL: [charset(UTF16)] [in] [ref] uint16 *ShareName */
+/* IDL: ); */
+
+static int
+fsrvp_dissect_DeleteShareMapping_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint32 status;
+
+ di->dcerpc_procedure_name="DeleteShareMapping";
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_status, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, NT_errors, "Unknown NT status 0x%08x"));
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_PrepareShadowCopySet_ShadowCopySetId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_uuid_t(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_PrepareShadowCopySet_ShadowCopySetId, NULL);
+
+ return offset;
+}
+
+static int
+fsrvp_dissect_element_PrepareShadowCopySet_TimeOutInMilliseconds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_fsrvp_PrepareShadowCopySet_TimeOutInMilliseconds, 0);
+
+ return offset;
+}
+
+/* IDL: NTSTATUS fsrvp_PrepareShadowCopySet( */
+/* IDL: [in] GUID ShadowCopySetId, */
+/* IDL: [in] uint32 TimeOutInMilliseconds */
+/* IDL: ); */
+
+static int
+fsrvp_dissect_PrepareShadowCopySet_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint32 status;
+
+ di->dcerpc_procedure_name="PrepareShadowCopySet";
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_fsrvp_status, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, NT_errors, "Unknown NT status 0x%08x"));
+
+ return offset;
+}
+
+
+static dcerpc_sub_dissector fsrvp_dissectors[] = {
+ { 0, "GetSupportedVersion",
+ fsrvp_dissect_GetSupportedVersion_request, fsrvp_dissect_GetSupportedVersion_response},
+ { 1, "SetContext",
+ fsrvp_dissect_SetContext_request, fsrvp_dissect_SetContext_response},
+ { 2, "StartShadowCopySet",
+ fsrvp_dissect_StartShadowCopySet_request, fsrvp_dissect_StartShadowCopySet_response},
+ { 3, "AddToShadowCopySet",
+ fsrvp_dissect_AddToShadowCopySet_request, fsrvp_dissect_AddToShadowCopySet_response},
+ { 4, "CommitShadowCopySet",
+ fsrvp_dissect_CommitShadowCopySet_request, fsrvp_dissect_CommitShadowCopySet_response},
+ { 5, "ExposeShadowCopySet",
+ fsrvp_dissect_ExposeShadowCopySet_request, fsrvp_dissect_ExposeShadowCopySet_response},
+ { 6, "RecoveryCompleteShadowCopySet",
+ fsrvp_dissect_RecoveryCompleteShadowCopySet_request, fsrvp_dissect_RecoveryCompleteShadowCopySet_response},
+ { 7, "AbortShadowCopySet",
+ fsrvp_dissect_AbortShadowCopySet_request, fsrvp_dissect_AbortShadowCopySet_response},
+ { 8, "IsPathSupported",
+ fsrvp_dissect_IsPathSupported_request, fsrvp_dissect_IsPathSupported_response},
+ { 9, "IsPathShadowCopied",
+ fsrvp_dissect_IsPathShadowCopied_request, fsrvp_dissect_IsPathShadowCopied_response},
+ { 10, "GetShareMapping",
+ fsrvp_dissect_GetShareMapping_request, fsrvp_dissect_GetShareMapping_response},
+ { 11, "DeleteShareMapping",
+ fsrvp_dissect_DeleteShareMapping_request, fsrvp_dissect_DeleteShareMapping_response},
+ { 12, "PrepareShadowCopySet",
+ fsrvp_dissect_PrepareShadowCopySet_request, fsrvp_dissect_PrepareShadowCopySet_response},
+ { 0, NULL, NULL, NULL }
+};
+
+void proto_register_dcerpc_fsrvp(void)
+{
+ static hf_register_info hf[] = {
+ { &hf_fsrvp_fsrvp_AbortShadowCopySet_ShadowCopySetId,
+ { "ShadowCopySetId", "fsrvp.fsrvp_AbortShadowCopySet.ShadowCopySetId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_AddToShadowCopySet_ClientShadowCopyId,
+ { "ClientShadowCopyId", "fsrvp.fsrvp_AddToShadowCopySet.ClientShadowCopyId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_AddToShadowCopySet_ShadowCopySetId,
+ { "ShadowCopySetId", "fsrvp.fsrvp_AddToShadowCopySet.ShadowCopySetId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_AddToShadowCopySet_ShareName,
+ { "ShareName", "fsrvp.fsrvp_AddToShadowCopySet.ShareName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_AddToShadowCopySet_pShadowCopyId,
+ { "PShadowCopyId", "fsrvp.fsrvp_AddToShadowCopySet.pShadowCopyId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_CommitShadowCopySet_ShadowCopySetId,
+ { "ShadowCopySetId", "fsrvp.fsrvp_CommitShadowCopySet.ShadowCopySetId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_CommitShadowCopySet_TimeOutInMilliseconds,
+ { "TimeOutInMilliseconds", "fsrvp.fsrvp_CommitShadowCopySet.TimeOutInMilliseconds", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_DeleteShareMapping_ShadowCopyId,
+ { "ShadowCopyId", "fsrvp.fsrvp_DeleteShareMapping.ShadowCopyId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_DeleteShareMapping_ShadowCopySetId,
+ { "ShadowCopySetId", "fsrvp.fsrvp_DeleteShareMapping.ShadowCopySetId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_DeleteShareMapping_ShareName,
+ { "ShareName", "fsrvp.fsrvp_DeleteShareMapping.ShareName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_ExposeShadowCopySet_ShadowCopySetId,
+ { "ShadowCopySetId", "fsrvp.fsrvp_ExposeShadowCopySet.ShadowCopySetId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_ExposeShadowCopySet_TimeOutInMilliseconds,
+ { "TimeOutInMilliseconds", "fsrvp.fsrvp_ExposeShadowCopySet.TimeOutInMilliseconds", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_GetShareMapping_Level,
+ { "Level", "fsrvp.fsrvp_GetShareMapping.Level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_GetShareMapping_ShadowCopyId,
+ { "ShadowCopyId", "fsrvp.fsrvp_GetShareMapping.ShadowCopyId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_GetShareMapping_ShadowCopySetId,
+ { "ShadowCopySetId", "fsrvp.fsrvp_GetShareMapping.ShadowCopySetId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_GetShareMapping_ShareMapping,
+ { "ShareMapping", "fsrvp.fsrvp_GetShareMapping.ShareMapping", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_GetShareMapping_ShareName,
+ { "ShareName", "fsrvp.fsrvp_GetShareMapping.ShareName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_GetSupportedVersion_MaxVersion,
+ { "MaxVersion", "fsrvp.fsrvp_GetSupportedVersion.MaxVersion", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_GetSupportedVersion_MinVersion,
+ { "MinVersion", "fsrvp.fsrvp_GetSupportedVersion.MinVersion", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_IsPathShadowCopied_ShadowCopyCompatibility,
+ { "ShadowCopyCompatibility", "fsrvp.fsrvp_IsPathShadowCopied.ShadowCopyCompatibility", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_IsPathShadowCopied_ShadowCopyPresent,
+ { "ShadowCopyPresent", "fsrvp.fsrvp_IsPathShadowCopied.ShadowCopyPresent", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_IsPathShadowCopied_ShareName,
+ { "ShareName", "fsrvp.fsrvp_IsPathShadowCopied.ShareName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_IsPathSupported_OwnerMachineName,
+ { "OwnerMachineName", "fsrvp.fsrvp_IsPathSupported.OwnerMachineName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_IsPathSupported_ShareName,
+ { "ShareName", "fsrvp.fsrvp_IsPathSupported.ShareName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_IsPathSupported_SupportedByThisProvider,
+ { "SupportedByThisProvider", "fsrvp.fsrvp_IsPathSupported.SupportedByThisProvider", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_PrepareShadowCopySet_ShadowCopySetId,
+ { "ShadowCopySetId", "fsrvp.fsrvp_PrepareShadowCopySet.ShadowCopySetId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_PrepareShadowCopySet_TimeOutInMilliseconds,
+ { "TimeOutInMilliseconds", "fsrvp.fsrvp_PrepareShadowCopySet.TimeOutInMilliseconds", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_RecoveryCompleteShadowCopySet_ShadowCopySetId,
+ { "ShadowCopySetId", "fsrvp.fsrvp_RecoveryCompleteShadowCopySet.ShadowCopySetId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_SetContext_Context,
+ { "Context", "fsrvp.fsrvp_SetContext.Context", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_StartShadowCopySet_ClientShadowCopySetId,
+ { "ClientShadowCopySetId", "fsrvp.fsrvp_StartShadowCopySet.ClientShadowCopySetId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fsrvp_StartShadowCopySet_pShadowCopySetId,
+ { "PShadowCopySetId", "fsrvp.fsrvp_StartShadowCopySet.pShadowCopySetId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fssagent_share_mapping_1_ShadowCopyId,
+ { "ShadowCopyId", "fsrvp.fssagent_share_mapping_1.ShadowCopyId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fssagent_share_mapping_1_ShadowCopySetId,
+ { "ShadowCopySetId", "fsrvp.fssagent_share_mapping_1.ShadowCopySetId", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fssagent_share_mapping_1_ShadowCopyShareName,
+ { "ShadowCopyShareName", "fsrvp.fssagent_share_mapping_1.ShadowCopyShareName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fssagent_share_mapping_1_ShareNameUNC,
+ { "ShareNameUNC", "fsrvp.fssagent_share_mapping_1.ShareNameUNC", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fssagent_share_mapping_1_tstamp,
+ { "Tstamp", "fsrvp.fssagent_share_mapping_1.tstamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_fssagent_share_mapping_ShareMapping1,
+ { "ShareMapping1", "fsrvp.fssagent_share_mapping.ShareMapping1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_opnum,
+ { "Operation", "fsrvp.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+ { &hf_fsrvp_status,
+ { "NT Error", "fsrvp.status", FT_UINT32, BASE_HEX, VALS(NT_errors), 0, NULL, HFILL }},
+ };
+
+
+ static gint *ett[] = {
+ &ett_dcerpc_fsrvp,
+ &ett_fsrvp_fssagent_share_mapping_1,
+ &ett_fsrvp_fssagent_share_mapping,
+ };
+
+ proto_dcerpc_fsrvp = proto_register_protocol("File Server Remote VSS Protocol", "FSRVP", "fsrvp");
+ proto_register_field_array(proto_dcerpc_fsrvp, hf, array_length (hf));
+ proto_register_subtree_array(ett, array_length(ett));
+}
+
+void proto_reg_handoff_dcerpc_fsrvp(void)
+{
+ dcerpc_init_uuid(proto_dcerpc_fsrvp, ett_dcerpc_fsrvp,
+ &uuid_dcerpc_fsrvp, ver_dcerpc_fsrvp,
+ fsrvp_dissectors, hf_fsrvp_opnum);
+}
diff --git a/epan/dissectors/packet-dcerpc-fsrvp.h b/epan/dissectors/packet-dcerpc-fsrvp.h
new file mode 100644
index 0000000000..6f4d281510
--- /dev/null
+++ b/epan/dissectors/packet-dcerpc-fsrvp.h
@@ -0,0 +1,57 @@
+/* DO NOT EDIT
+ This file was automatically generated by Pidl
+ from fsrvp.idl and fsrvp.cnf.
+
+ Pidl is a perl based IDL compiler for DCE/RPC idl files.
+ It is maintained by the Samba team, not the Wireshark team.
+ Instructions on how to download and install Pidl can be
+ found at https://wiki.wireshark.org/Pidl
+*/
+
+#ifndef __PACKET_DCERPC_FSRVP_H
+#define __PACKET_DCERPC_FSRVP_H
+
+#define FSRVP_E_BAD_STATE ( 0x80042301 )
+
+#define FSRVP_E_SHADOW_COPY_SET_IN_PROGRESS ( 0x80042316 )
+
+#define FSRVP_E_NOT_SUPPORTED ( 0x8004230C )
+
+#define FSRVP_E_WAIT_TIMEOUT ( 0x00000102 )
+
+#define FSRVP_E_WAIT_FAILED ( 0xFFFFFFFF )
+
+#define FSRVP_E_OBJECT_ALREADY_EXISTS ( 0x8004230D )
+
+#define FSRVP_E_OBJECT_NOT_FOUND ( 0x80042308 )
+
+#define FSRVP_E_UNSUPPORTED_CONTEXT ( 0x8004231B )
+
+#define FSRVP_E_BAD_ID ( 0x80042302 )
+
+#define FSRVP_E_SHADOWCOPYSET_ID_MISMATCH ( 0x80042501 )
+
+#define FSRVP_RPC_VERSION_1 ( 0x000000001 )
+
+#define ATTR_PERSISTENT ( 0x00000001 )
+
+#define ATTR_NO_AUTO_RECOVERY ( 0x00000002 )
+
+#define ATTR_NO_AUTO_RELEASE ( 0x00000008 )
+
+#define ATTR_NO_WRITERS ( 0x00000010 )
+
+#define ATTR_FILE_SHARE ( 0x04000000 )
+
+#define ATTR_AUTO_RECOVERY ( 0x00400000 )
+
+#define FSRVP_CTX_BACKUP ( 0x00000000 )
+
+#define FSRVP_CTX_FILE_SHARE_BACKUP ( 0x00000010 )
+
+#define FSRVP_CTX_NAS_ROLLBACK ( 0x00000019 )
+
+#define FSRVP_CTX_APP_ROLLBACK ( 0x00000009 )
+
+int fsrvp_dissect_struct_fssagent_share_mapping_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+#endif /* __PACKET_DCERPC_FSRVP_H */
diff --git a/epan/dissectors/pidl/CMakeLists.txt b/epan/dissectors/pidl/CMakeLists.txt
index 5c5c5b86aa..1006dd6c57 100644
--- a/epan/dissectors/pidl/CMakeLists.txt
+++ b/epan/dissectors/pidl/CMakeLists.txt
@@ -18,6 +18,7 @@ set(PIDL_DISSECTOR_NAMES
eventlog
frsrpc
frstrans
+ fsrvp
initshutdown
lsa
mapi
@@ -51,6 +52,9 @@ set(PIDL_DISSECTOR_frstrans_EXTRA_DEPS
misc/misc.idl
idl_types.h
)
+set(PIDL_DISSECTOR_fsrvp_EXTRA_DEPS
+ idl_types.h
+)
set(PIDL_DISSECTOR_initshutdown_EXTRA_DEPS
lsa/lsa.idl
idl_types.h
diff --git a/epan/dissectors/pidl/Makefile.pidl b/epan/dissectors/pidl/Makefile.pidl
index 69e0769fa1..798611070b 100644
--- a/epan/dissectors/pidl/Makefile.pidl
+++ b/epan/dissectors/pidl/Makefile.pidl
@@ -33,6 +33,7 @@ SUBDIRS = \
eventlog \
frsrpc \
frstrans \
+ fsrvp \
initshutdown \
lsa \
mapi \
@@ -95,6 +96,11 @@ $(SUBDIRS) $(DONT_BUILD_SUBDIRS): %: ../packet-dcerpc-%.c ../packet-dcerpc-%.h
misc/misc.idl idl_types.h
cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+../packet-dcerpc-fsrvp.c \
+../packet-dcerpc-fsrvp.h: fsrvp/fsrvp.idl fsrvp/fsrvp.cnf \
+ idl_types.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
../packet-dcerpc-initshutdown.c \
../packet-dcerpc-initshutdown.h: initshutdown/initshutdown.idl \
initshutdown/initshutdown.cnf \
diff --git a/epan/dissectors/pidl/fsrvp/fsrvp.cnf b/epan/dissectors/pidl/fsrvp/fsrvp.cnf
new file mode 100644
index 0000000000..f77001d565
--- /dev/null
+++ b/epan/dissectors/pidl/fsrvp/fsrvp.cnf
@@ -0,0 +1,109 @@
+# Conformance file for FSRVP
+
+MANUAL fsrvp_dissect_SetContext_request
+MANUAL fsrvp_dissect_StartShadowCopySet_request
+MANUAL fsrvp_dissect_AddToShadowCopySet_request
+MANUAL fsrvp_dissect_CommitShadowCopySet_request
+MANUAL fsrvp_dissect_ExposeShadowCopySet_request
+MANUAL fsrvp_dissect_RecoveryCompleteShadowCopySet_request
+MANUAL fsrvp_dissect_AbortShadowCopySet_request
+MANUAL fsrvp_dissect_GetShareMapping_request
+MANUAL fsrvp_dissect_DeleteShareMapping_request
+MANUAL fsrvp_dissect_PrepareShadowCopySet_request
+
+CODE START
+
+static int
+fsrvp_dissect_SetContext_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="SetContext";
+ offset = fsrvp_dissect_element_SetContext_Context(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_StartShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="StartShadowCopySet";
+ offset = fsrvp_dissect_element_StartShadowCopySet_ClientShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_AddToShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="AddToShadowCopySet";
+ offset = fsrvp_dissect_element_AddToShadowCopySet_ClientShadowCopyId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_AddToShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_AddToShadowCopySet_ShareName(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_CommitShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="CommitShadowCopySet";
+ offset = fsrvp_dissect_element_CommitShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_CommitShadowCopySet_TimeOutInMilliseconds(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_ExposeShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="ExposeShadowCopySet";
+ offset = fsrvp_dissect_element_ExposeShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_ExposeShadowCopySet_TimeOutInMilliseconds(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_RecoveryCompleteShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="RecoveryCompleteShadowCopySet";
+ offset = fsrvp_dissect_element_RecoveryCompleteShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_AbortShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="AbortShadowCopySet";
+ offset = fsrvp_dissect_element_AbortShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_GetShareMapping_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="GetShareMapping";
+ offset = fsrvp_dissect_element_GetShareMapping_ShadowCopyId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_GetShareMapping_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_GetShareMapping_ShareName(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+ offset = fsrvp_dissect_element_GetShareMapping_Level(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_DeleteShareMapping_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="DeleteShareMapping";
+ offset = fsrvp_dissect_element_DeleteShareMapping_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_DeleteShareMapping_ShadowCopyId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_DeleteShareMapping_ShareName(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_PrepareShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="PrepareShadowCopySet";
+ offset = fsrvp_dissect_element_PrepareShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_PrepareShadowCopySet_TimeOutInMilliseconds(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/fsrvp/fsrvp.idl b/epan/dissectors/pidl/fsrvp/fsrvp.idl
new file mode 100644
index 0000000000..b76e822fb3
--- /dev/null
+++ b/epan/dissectors/pidl/fsrvp/fsrvp.idl
@@ -0,0 +1,105 @@
+#include "idl_types.h"
+
+/*
+ * File Server Remote VSS Protocol Definitions
+ */
+
+[ uuid("a8e0653c-2744-4389-a61d-7373df8b2292"),
+ version(1.0),
+ endpoint("ncacn_np:[\\pipe\\FssagentRpc]"),
+ helpstring("File Server Remote VSS Protocol"),
+ pointer_default(unique)
+] interface fsrvp
+{
+ const uint32 FSRVP_E_BAD_STATE = 0x80042301;
+ const uint32 FSRVP_E_SHADOW_COPY_SET_IN_PROGRESS = 0x80042316;
+ const uint32 FSRVP_E_NOT_SUPPORTED = 0x8004230C;
+ const uint32 FSRVP_E_WAIT_TIMEOUT = 0x00000102;
+ const uint32 FSRVP_E_WAIT_FAILED = 0xFFFFFFFF;
+ const uint32 FSRVP_E_OBJECT_ALREADY_EXISTS = 0x8004230D;
+ const uint32 FSRVP_E_OBJECT_NOT_FOUND = 0x80042308;
+ const uint32 FSRVP_E_UNSUPPORTED_CONTEXT = 0x8004231B;
+ const uint32 FSRVP_E_BAD_ID = 0x80042302; /* wire, not documented */
+ const uint32 FSRVP_E_SHADOWCOPYSET_ID_MISMATCH = 0x80042501;
+ typedef struct {
+ GUID ShadowCopySetId;
+ GUID ShadowCopyId;
+ [string,charset(UTF16)] uint16 *ShareNameUNC;
+ [string,charset(UTF16)] uint16 *ShadowCopyShareName;
+ NTTIME tstamp;
+ } fssagent_share_mapping_1;
+
+ typedef union {
+ [case(1)] fssagent_share_mapping_1 *ShareMapping1;
+ [default];
+ } fssagent_share_mapping;
+
+ const uint32 FSRVP_RPC_VERSION_1 = 0x000000001;
+ NTSTATUS fsrvp_GetSupportedVersion(
+ [out] uint32 *MinVersion,
+ [out] uint32 *MaxVersion);
+
+ const uint32 ATTR_PERSISTENT = 0x00000001;
+ const uint32 ATTR_NO_AUTO_RECOVERY = 0x00000002;
+ const uint32 ATTR_NO_AUTO_RELEASE = 0x00000008;
+ const uint32 ATTR_NO_WRITERS = 0x00000010;
+ const uint32 ATTR_FILE_SHARE = 0x04000000;
+ const uint32 ATTR_AUTO_RECOVERY = 0x00400000;
+
+ const uint32 FSRVP_CTX_BACKUP = 0x00000000;
+ const uint32 FSRVP_CTX_FILE_SHARE_BACKUP = 0x00000010;
+ const uint32 FSRVP_CTX_NAS_ROLLBACK = 0x00000019;
+ const uint32 FSRVP_CTX_APP_ROLLBACK = 0x00000009;
+ NTSTATUS fsrvp_SetContext(
+ [in] uint32 Context);
+
+ NTSTATUS fsrvp_StartShadowCopySet(
+ [in] GUID ClientShadowCopySetId,
+ [out] GUID *pShadowCopySetId);
+
+ NTSTATUS fsrvp_AddToShadowCopySet(
+ [in] GUID ClientShadowCopyId,
+ [in] GUID ShadowCopySetId,
+ [in] [string,charset(UTF16)] uint16 *ShareName,
+ [out] GUID *pShadowCopyId);
+
+ NTSTATUS fsrvp_CommitShadowCopySet(
+ [in] GUID ShadowCopySetId,
+ [in] uint32 TimeOutInMilliseconds);
+
+ NTSTATUS fsrvp_ExposeShadowCopySet(
+ [in] GUID ShadowCopySetId,
+ [in] uint32 TimeOutInMilliseconds);
+
+ NTSTATUS fsrvp_RecoveryCompleteShadowCopySet(
+ [in] GUID ShadowCopySetId);
+
+ NTSTATUS fsrvp_AbortShadowCopySet(
+ [in] GUID ShadowCopySetId);
+
+ NTSTATUS fsrvp_IsPathSupported(
+ [in] [string,charset(UTF16)] uint16 *ShareName,
+ [out] boolean32 *SupportedByThisProvider,
+ [out] [string,charset(UTF16)] uint16 **OwnerMachineName);
+
+ NTSTATUS fsrvp_IsPathShadowCopied(
+ [in] [string,charset(UTF16)] uint16 *ShareName,
+ [out] boolean32 *ShadowCopyPresent,
+ [out] int32 *ShadowCopyCompatibility);
+
+ NTSTATUS fsrvp_GetShareMapping(
+ [in] GUID ShadowCopyId,
+ [in] GUID ShadowCopySetId,
+ [in] [string,charset(UTF16)] uint16 *ShareName,
+ [in] uint32 Level,
+ [out,switch_is(Level)] fssagent_share_mapping *ShareMapping);
+
+ NTSTATUS fsrvp_DeleteShareMapping(
+ [in] GUID ShadowCopySetId,
+ [in] GUID ShadowCopyId,
+ [in] [string,charset(UTF16)] uint16 *ShareName);
+
+ NTSTATUS fsrvp_PrepareShadowCopySet(
+ [in] GUID ShadowCopySetId,
+ [in] uint32 TimeOutInMilliseconds);
+}