diff options
author | Michael Mann <mmann78@netscape.net> | 2014-09-18 00:10:51 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2014-09-19 13:07:11 +0000 |
commit | a58c986f62a7be6fe7b69b9c372adcc2dab5f79e (patch) | |
tree | 4f608af306aee71cd59d51d75d92c907f4d9448f /epan/dissectors/packet-dcerpc-mapi.c | |
parent | b7940046fae473cf1d64a76ee90b23ca89b93768 (diff) | |
download | wireshark-a58c986f62a7be6fe7b69b9c372adcc2dab5f79e.tar.gz |
Update generated DCE/RPC dissectors.
Now all generated dissectors can successfully compile.
Change-Id: I74728926915d5a9f1694cc49c753b80f213df767
Reviewed-on: https://code.wireshark.org/review/2598
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-dcerpc-mapi.c')
-rw-r--r-- | epan/dissectors/packet-dcerpc-mapi.c | 2012 |
1 files changed, 1272 insertions, 740 deletions
diff --git a/epan/dissectors/packet-dcerpc-mapi.c b/epan/dissectors/packet-dcerpc-mapi.c index 40212165f3..ebf53b72db 100644 --- a/epan/dissectors/packet-dcerpc-mapi.c +++ b/epan/dissectors/packet-dcerpc-mapi.c @@ -1,16 +1,15 @@ /* DO NOT EDIT - This filter was automatically generated - from mapi.idl and mapi.cnf. + This file was automatically generated by Pidl + from mapi/mapi.idl and mapi/mapi.cnf. - Pidl is a perl based IDL compiler for DCE/RPC idl files. + 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 + Instructions on how to download and install Pidl can be found at http://wiki.wireshark.org/Pidl */ #include "config.h" - #ifdef _MSC_VER #pragma warning(disable:4005) #pragma warning(disable:4013) @@ -28,15 +27,6 @@ #include "packet-dcerpc-mapi.h" /* Ett declarations */ -static gint ett_mapi_mapi_request = -1; -static gint ett_mapi_EcDoRpc_MAPI_REQ = -1; -static gint ett_mapi_OpenFolder_req = -1; -static gint ett_mapi_GetProps_req = -1; -static gint ett_mapi_OpenMsgStore_req = -1; -static gint ett_mapi_mapi_response = -1; -static gint ett_mapi_EcDoRpc_MAPI_REPL = -1; -static gint ett_mapi_OpenFolder_repl = -1; -static gint ett_mapi_GetProps_repl = -1; static gint ett_dcerpc_mapi = -1; static gint ett_mapi_DATA_BLOB = -1; static gint ett_mapi_input_locale = -1; @@ -47,6 +37,8 @@ static gint ett_mapi_SPropValue = -1; static gint ett_mapi_SRow = -1; static gint ett_mapi_Release_req = -1; static gint ett_mapi_Release_repl = -1; +static gint ett_mapi_OpenFolder_req = -1; +static gint ett_mapi_OpenFolder_repl = -1; static gint ett_mapi_OpenMessage_req = -1; static gint ett_mapi_RecipExchange = -1; static gint ett_mapi_RecipSMTP = -1; @@ -54,105 +46,142 @@ static gint ett_mapi_recipient_type = -1; static gint ett_mapi_recipient_displayname_7bit = -1; static gint ett_mapi_recipients_headers = -1; static gint ett_mapi_OpenMessage_recipients = -1; +static gint ett_mapi_GetProps_req = -1; +static gint ett_mapi_GetProps_repl = -1; static gint ett_mapi_ulEventType = -1; +static gint ett_mapi_OpenMsgStore_req = -1; static gint ett_mapi_EcDoRpc_MAPI_REQ_UNION = -1; static gint ett_mapi_EcDoRpc_MAPI_REPL_UNION = -1; +static gint ett_mapi_EcDoRpc_MAPI_REQ = -1; +static gint ett_mapi_EcDoRpc_MAPI_REPL = -1; +static gint ett_mapi_mapi_request = -1; +static gint ett_mapi_mapi_response = -1; /* Header field declarations */ -static gint hf_mapi_EcDoConnect_unknown1 = -1; -static gint hf_mapi_SPropValue_CTR_i = -1; -static gint hf_mapi_EcDoConnect_emsmdb_client_version = -1; -static gint hf_mapi_EcDoConnect_name = -1; -static gint hf_mapi_SPropValue_CTR_lpszW = -1; -static gint hf_mapi_EcDoRpc_offset = -1; -static gint hf_mapi_EcDoConnect_alloc_space = -1; +static gint hf_mapi_property_types = -1; +static gint hf_mapi_mapi_response_mapi_len = -1; +static gint hf_mapi_EcDoRpc_max_data = -1; +static gint hf_mapi_EcDoRpc_mapi_response_ = -1; +static gint hf_mapi_handle = -1; +static gint hf_mapi_OpenMessage_recipients_recipients_headers = -1; +static gint hf_mapi_SPropValue_CTR_d = -1; static gint hf_mapi_ulEventType_fnevCriticalError = -1; -static gint hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenFolder = -1; -static gint hf_mapi_SRow_ulRowFlags = -1; -static gint hf_mapi_EcRRegisterPushNotification_notifkey = -1; -static gint hf_mapi_EcRUnregisterPushNotification_unknown = -1; -static gint hf_mapi_recipients_headers_username = -1; -static gint hf_mapi_mapi_request_mapi_req = -1; -static gint hf_mapi_EcRRegisterPushNotification_retval = -1; -static gint hf_mapi_ulEventType_fnevObjectDeleted = -1; -static gint hf_mapi_SPropValue_CTR_lpszA = -1; +static gint hf_mapi_mapi_request_handles = -1; static gint hf_mapi_DATA_BLOB_data = -1; +static gint hf_mapi_EcDoRpc_MAPI_REQ_u = -1; static gint hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_GetProps = -1; +static gint hf_mapi_ulEventType_fnevReservedForMapi = -1; +static gint hf_mapi_EcDoConnect_org_group = -1; +static gint hf_mapi_SPropValue_CTR_i = -1; +static gint hf_mapi_mapi_request_length = -1; +static gint hf_mapi_EcDoConnect_store_version = -1; +static gint hf_mapi_mapi_response_length = -1; +static gint hf_mapi_EcDoRpc_length = -1; +static gint hf_mapi_SPropValue_CTR_ft = -1; +static gint hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_OpenFolder = -1; +static gint hf_mapi_EcDoConnect_unknown1 = -1; static gint hf_mapi_recipient_type_SMTP = -1; +static gint hf_mapi_FILETIME_dwHighDateTime = -1; +static gint hf_mapi_OpenMessage_recipients_recipients_headers_ = -1; +static gint hf_mapi_EcRRegisterPushNotification_sockaddr_len = -1; +static gint hf_mapi_OpenFolder_req_folder_id = -1; static gint hf_mapi_EcRRegisterPushNotification_sockaddr = -1; -static gint hf_mapi_LPSTR_lppszA = -1; -static gint hf_mapi_EcDoRpc_max_data = -1; -static gint hf_mapi_OpenMessage_recipients_codepage = -1; +static gint hf_mapi_SPropValue_CTR_err = -1; +static gint hf_mapi_ulEventType_fnevStatusObjectModified = -1; static gint hf_mapi_ulEventType_fnevObjectCopied = -1; -static gint hf_mapi_EcRRegisterPushNotification_unknown2 = -1; -static gint hf_mapi_recipients_headers_prop_count = -1; -static gint hf_mapi_recipients_headers_bitmask = -1; +static gint hf_mapi_EcDoRpc_MAPI_REPL_u = -1; +static gint hf_mapi_SPropValue_CTR_lpszA = -1; +static gint hf_mapi_EcDoRpc_offset = -1; +static gint hf_mapi_EcDoRpc_mapi_response = -1; +static gint hf_mapi_OpenMessage_recipients_RecipClass = -1; static gint hf_mapi_FILETIME_dwLowDateTime = -1; -static gint hf_mapi_MAPISTATUS_status = -1; -static gint hf_mapi_recipient_type_EXCHANGE = -1; +static gint hf_mapi_GetProps_req_properties = -1; +static gint hf_mapi_EcRRegisterPushNotification_ulEventMask = -1; +static gint hf_mapi_OpenMessage_req_message_id = -1; +static gint hf_mapi_SPropValue_CTR_l = -1; +static gint hf_mapi_input_locale_language = -1; +static gint hf_mapi_OpenFolder_req_unknown = -1; static gint hf_mapi_SPropValue_CTR_lpguid = -1; -static gint hf_mapi_EcDoConnect_unknown2 = -1; -static gint hf_mapi_ulEventType_fnevSearchComplete = -1; -static gint hf_mapi_ulEventType_fnevStatusObjectModified = -1; -static gint hf_mapi_ulEventType_fnevObjectCreated = -1; +static gint hf_mapi_EcDoConnect_unknown3 = -1; +static gint hf_mapi_recipients_headers_prop_count = -1; +static gint hf_mapi_OpenMessage_req_folder_handle_idx = -1; +static gint hf_mapi_OpenMsgStore_req_padding = -1; +static gint hf_mapi_GetProps_req_unknown = -1; +static gint hf_mapi_EcDoRpc_MAPI_REQ_mapi_flags = -1; +static gint hf_mapi_EcRRegisterPushNotification_notifkey = -1; +static gint hf_mapi_mapi_request_mapi_req = -1; +static gint hf_mapi_OpenMsgStore_req_codepage = -1; +static gint hf_mapi_EcDoConnect_code_page = -1; +static gint hf_mapi_recipients_headers_username = -1; static gint hf_mapi_OpenMessage_req_max_data = -1; -static gint hf_mapi_DATA_BLOB_length = -1; -static gint hf_mapi_EcDoConnect_input_locale = -1; -static gint hf_mapi_RecipExchange_addr_type = -1; -static gint hf_mapi_EcDoRpc_mapi_request = -1; -static gint hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_Release = -1; -static gint hf_mapi_decrypted_data = -1; -static gint hf_mapi_ulEventType_fnevNewMail = -1; -static gint hf_mapi_SPropValue_CTR_b = -1; -static gint hf_mapi_mapi_response_mapi_repl = -1; -static gint hf_mapi_recipients_headers_layout = -1; -static gint hf_mapi_EcDoRpc_length = -1; -static gint hf_mapi_RecipExchange_organization_length = -1; -static gint hf_mapi_OpenMessage_recipients_recipients_headers = -1; +static gint hf_mapi_OpenMsgStore_req_mailbox = -1; +static gint hf_mapi_EcDoConnect_emsmdb_client_version = -1; +static gint hf_mapi_GetProps_repl_layout = -1; +static gint hf_mapi_EcDoRpc_mapi_request_ = -1; +static gint hf_mapi_EcDoConnect_unknown4 = -1; +static gint hf_mapi_EcDoRpc_MAPI_REPL_error_code = -1; +static gint hf_mapi_opnum = -1; +static gint hf_mapi_recipients_headers_bitmask = -1; +static gint hf_mapi_mapi_response_handles = -1; +static gint hf_mapi_OpenFolder_req_handle_idx = -1; +static gint hf_mapi_EcDoConnect_name = -1; +static gint hf_mapi_EcDoConnect_user = -1; static gint hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_GetProps = -1; static gint hf_mapi_SPropValue_CTR_dbl = -1; -static gint hf_mapi_OpenMessage_req_message_id = -1; +static gint hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_Release = -1; static gint hf_mapi_EcDoRpc_size = -1; -static gint hf_mapi_EcDoConnect_session_nb = -1; +static gint hf_mapi_ulEventType_fnevObjectDeleted = -1; +static gint hf_mapi_EcDoConnect_unknown2 = -1; +static gint hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_Release = -1; +static gint hf_mapi_OpenMessage_recipients_codepage = -1; +static gint hf_mapi_recipients_headers_prop_values = -1; static gint hf_mapi_pdu_len = -1; -static gint hf_mapi_SPropValue_CTR_ft = -1; -static gint hf_mapi_SPropValue_ulPropTag = -1; -static gint hf_mapi_OpenMessage_recipients_RecipClass = -1; -static gint hf_mapi_EcRRegisterPushNotification_ulEventMask = -1; -static gint hf_mapi_FILETIME_dwHighDateTime = -1; -static gint hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_OpenFolder = -1; +static gint hf_mapi_OpenFolder_repl_unknown = -1; +static gint hf_mapi_RecipExchange_organization_length = -1; +static gint hf_mapi_DATA_BLOB_length = -1; +static gint hf_mapi_EcRRegisterPushNotification_notif_len = -1; +static gint hf_mapi_GetProps_repl_prop_data = -1; +static gint hf_mapi_EcRUnregisterPushNotification_unknown = -1; +static gint hf_mapi_ulEventType_fnevObjectCreated = -1; static gint hf_mapi_OpenMessage_req_message_permissions = -1; -static gint hf_mapi_SPropValue_CTR_l = -1; -static gint hf_mapi_ulEventType_fnevReservedForMapi = -1; -static gint hf_mapi_EcDoConnect_user = -1; -static gint hf_mapi_EcDoConnect_unknown4 = -1; -static gint hf_mapi_MAPI_OPNUM = -1; -static gint hf_mapi_EcDoConnect_code_page = -1; -static gint hf_mapi_handle = -1; -static gint hf_mapi_input_locale_method = -1; -static gint hf_mapi_input_locale_language = -1; -static gint hf_mapi_EcDoRpc_mapi_response = -1; -static gint hf_mapi_EcDoConnect_store_version = -1; -static gint hf_mapi_ulEventType_fnevObjectMoved = -1; -static gint hf_mapi_SPropValue_CTR_err = -1; +static gint hf_mapi_EcDoConnect_input_locale = -1; +static gint hf_mapi_GetProps_req_prop_count = -1; +static gint hf_mapi_RecipExchange_addr_type = -1; +static gint hf_mapi_EcRRegisterPushNotification_unknown2 = -1; +static gint hf_mapi_EcDoRpc_MAPI_REPL_opnum = -1; +static gint hf_mapi_SPropValue_CTR_lpszW = -1; static gint hf_mapi_ulEventType_fnevTableModified = -1; -static gint hf_mapi_recipient_type = -1; -static gint hf_mapi_recipients_headers_prop_values = -1; -static gint hf_mapi_ulEventType_fnevExtended = -1; -static gint hf_mapi_opnum = -1; -static gint hf_mapi_property_types = -1; -static gint hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_Release = -1; -static gint hf_mapi_recipient_displayname_7bit_lpszA = -1; -static gint hf_mapi_EcRRegisterPushNotification_sockaddr_len = -1; -static gint hf_mapi_EcRRegisterPushNotification_notif_len = -1; -static gint hf_mapi_EcDoConnect_unknown3 = -1; -static gint hf_mapi_OpenMessage_req_folder_handle_idx = -1; -static gint hf_mapi_SPropValue_CTR_d = -1; +static gint hf_mapi_SPropValue_ulPropTag = -1; static gint hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenMsgStore = -1; -static gint hf_mapi_EcDoConnect_org_group = -1; +static gint hf_mapi_SPropValue_CTR_b = -1; +static gint hf_mapi_EcDoRpc_MAPI_REPL_handle_idx = -1; +static gint hf_mapi_ulEventType_fnevNewMail = -1; +static gint hf_mapi_input_locale_method = -1; +static gint hf_mapi_ulEventType_fnevSearchComplete = -1; +static gint hf_mapi_MAPI_OPNUM = -1; +static gint hf_mapi_EcDoConnect_alloc_space = -1; +static gint hf_mapi_EcRRegisterPushNotification_retval = -1; +static gint hf_mapi_OpenMsgStore_req_mailbox_str_size = -1; +static gint hf_mapi_decrypted_data = -1; static gint hf_mapi_OpenMessage_req_folder_id = -1; +static gint hf_mapi_recipient_displayname_7bit_lpszA = -1; +static gint hf_mapi_ulEventType_fnevObjectMoved = -1; +static gint hf_mapi_mapi_request_mapi_len = -1; static gint hf_mapi_ulEventType_fnevObjectModified = -1; +static gint hf_mapi_MAPISTATUS_status = -1; +static gint hf_mapi_recipient_type_EXCHANGE = -1; +static gint hf_mapi_EcDoRpc_MAPI_REQ_handle_idx = -1; +static gint hf_mapi_mapi_response_mapi_repl = -1; +static gint hf_mapi_EcDoRpc_mapi_request = -1; +static gint hf_mapi_LPSTR_lppszA = -1; +static gint hf_mapi_recipient_type = -1; +static gint hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenFolder = -1; +static gint hf_mapi_EcDoConnect_session_nb = -1; +static gint hf_mapi_ulEventType_fnevExtended = -1; +static gint hf_mapi_OpenMsgStore_req_row = -1; +static gint hf_mapi_SRow_ulRowFlags = -1; +static gint hf_mapi_recipients_headers_layout = -1; static gint proto_dcerpc_mapi = -1; /* Version information */ @@ -3781,7 +3810,7 @@ static int mapi_dissect_element_SPropValue_CTR_lpszA(tvbuff_t *tvb _U_, int offs static int mapi_dissect_element_SPropValue_CTR_lpszW(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_SPropValue_CTR_ft(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_SPropValue_CTR_lpguid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); -static int mapi_dissect_element_SPropValue_ulPropTag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_SPropValue_ulPropTag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *ulPropTag); static int mapi_dissect_element_SPropValue_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); const value_string mapi_ulRowFlags_vals[] = { { ROW_ADD, "ROW_ADD" }, @@ -3790,6 +3819,10 @@ const value_string mapi_ulRowFlags_vals[] = { { 0, NULL } }; static int mapi_dissect_element_SRow_ulRowFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_OpenFolder_req_handle_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_OpenFolder_req_folder_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_OpenFolder_req_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_OpenFolder_repl_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_OpenMessage_req_folder_handle_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_OpenMessage_req_max_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_OpenMessage_req_folder_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); @@ -3840,6 +3873,12 @@ static int mapi_dissect_element_OpenMessage_recipients_RecipClass(tvbuff_t *tvb static int mapi_dissect_element_OpenMessage_recipients_codepage(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_OpenMessage_recipients_recipients_headers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_OpenMessage_recipients_recipients_headers_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_GetProps_req_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_GetProps_req_prop_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_GetProps_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_GetProps_req_properties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_GetProps_repl_layout(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_GetProps_repl_prop_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static const true_false_string ulEventType_fnevCriticalError_tfs = { "fnevCriticalError is SET", "fnevCriticalError is NOT SET", @@ -3888,6 +3927,12 @@ static const true_false_string ulEventType_fnevExtended_tfs = { "fnevExtended is SET", "fnevExtended is NOT SET", }; +static int mapi_dissect_element_OpenMsgStore_req_codepage(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_OpenMsgStore_req_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_OpenMsgStore_req_row(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_OpenMsgStore_req_mailbox_str_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_OpenMsgStore_req_mailbox(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_OpenMsgStore_req_mailbox_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_Release(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); @@ -3895,6 +3940,26 @@ static int mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvbuff_t *tv static int mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_Release(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_EcDoRpc_MAPI_REQ_opnum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum); +static int mapi_dissect_element_EcDoRpc_MAPI_REQ_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_EcDoRpc_MAPI_REQ_handle_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_EcDoRpc_MAPI_REQ_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum); +static int mapi_dissect_element_EcDoRpc_MAPI_REPL_opnum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum); +static int mapi_dissect_element_EcDoRpc_MAPI_REPL_handle_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_EcDoRpc_MAPI_REPL_error_code(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_EcDoRpc_MAPI_REPL_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum); +static int mapi_dissect_element_request_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_request_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_request_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_request_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_request_handles(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_request_handles_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_response_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_response_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_response_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_response_repl_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_response_handles(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); +static int mapi_dissect_element_response_handles_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoConnect_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoConnect_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcDoConnect_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); @@ -3950,7 +4015,7 @@ static int mapi_dissect_element_EcRUnregisterPushNotification_handle_(tvbuff_t * static int mapi_dissect_element_EcRUnregisterPushNotification_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int mapi_dissect_element_EcRUnregisterPushNotification_unknown_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_); static int -cnf_dissect_hyper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep, guint32 param _U_, int hfindex) +cnf_dissect_hyper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, guint32 param _U_, int hfindex) { offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hfindex, NULL); return offset; @@ -3958,7 +4023,7 @@ cnf_dissect_hyper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tre /** * Analyze mapi_request MAPI Handles */ -static int mapi_dissect_element_request_handles(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +static int mapi_dissect_element_request_handles_cnf(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { gint reported_len; gint i; @@ -3979,428 +4044,6 @@ static int mapi_dissect_element_request_handles(tvbuff_t *tvb _U_, int offset _U } return offset; } -int -mapi_dissect_struct_EcDoRpc_MAPI_REQ(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; - int cur_offset; - guint8 opnum; - guint8 mapi_flags; - guint8 handle_idx; - - old_offset = offset; - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_mapi_EcDoRpc_MAPI_REQ); - } - cur_offset = offset; - opnum = tvb_get_guint8(tvb, offset); - offset += 1; - proto_tree_add_text(tree, tvb, cur_offset, offset - cur_offset, "opnum: %s", val_to_str(opnum, mapi_MAPI_OPNUM_vals, "Unknown MAPI operation")); - col_append_fstr(pinfo->cinfo, COL_INFO, " + %s", val_to_str(opnum, mapi_MAPI_OPNUM_vals, "Unknown MAPI operation")); - - cur_offset = offset; - mapi_flags = tvb_get_guint8(tvb, offset); - offset += 1; - proto_tree_add_text(tree, tvb, cur_offset, offset - cur_offset, "mapi_flags: 0x%x", mapi_flags); - cur_offset = offset; - handle_idx = tvb_get_guint8(tvb, offset); - offset += 1; - proto_tree_add_text(tree, tvb, cur_offset, offset - cur_offset, "handle index: %d", handle_idx); - switch(opnum) { - case op_MAPI_Release: - offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_Release(tvb, offset, pinfo, tree, di, drep); - break; - case op_MAPI_OpenFolder: - offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenFolder(tvb, offset, pinfo, tree, di, drep); - break; - case op_MAPI_GetProps: - offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_GetProps(tvb, offset, pinfo, tree, di, drep); - break; - case op_MAPI_OpenMsgStore: - offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvb, offset, pinfo, tree, di, drep); - break; - default: - offset += param - 3; - } - proto_item_set_len(item, offset-old_offset); - return offset; -} -static int -mapi_dissect_element_EcDoRpc_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_element_EcDoRpc_request_(tvb, offset, pinfo, tree, di, drep); - return offset; -} -static int -mapi_dissect_element_EcDoRpc_request_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - guint32 size; - int start_offset = offset; - guint8 *decrypted_data; - tvbuff_t *decrypted_tvb; - const guint8 *ptr; - gint reported_len; - guint16 pdu_len; - guint32 i; - proto_item *it = NULL; - proto_tree *tr = NULL; - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_mapi_request, &size); - proto_tree_add_text(tree, tvb, start_offset, offset - start_offset + size, "Subcontext size: 0x%x", size); - reported_len = tvb_reported_length_remaining(tvb, offset); - if ((guint32) reported_len > size) { - reported_len = size; - } - if (size > (guint32) reported_len) { - size = reported_len; - } - ptr = tvb_get_ptr(tvb, offset, size); - decrypted_data = (guint8 *)g_malloc(size); - for (i = 0; i < size; i++) { - decrypted_data[i] = ptr[i] ^ 0xA5; - } - decrypted_tvb=tvb_new_child_real_data(tvb, decrypted_data, size, reported_len); - tvb_set_free_cb(decrypted_tvb, g_free); - - add_new_data_source(pinfo, decrypted_tvb, "Decrypted MAPI"); - it = proto_tree_add_text(tree, decrypted_tvb, 0, size, "Decrypted MAPI PDU"); - tr = proto_item_add_subtree(it, ett_mapi_mapi_request); - pdu_len = tvb_get_letohs(decrypted_tvb, 0); - proto_tree_add_uint(tr, hf_mapi_pdu_len, decrypted_tvb, 0, 2, pdu_len); - proto_tree_add_item(tr, hf_mapi_decrypted_data, decrypted_tvb, 2, pdu_len - 2, ENC_NA); - /* analyze contents */ - offset = mapi_dissect_element_EcDoRpc_request__(decrypted_tvb, 0, pinfo, tr, di, drep); - /* analyze mapi handles */ - offset = mapi_dissect_element_request_handles(decrypted_tvb, offset, pinfo, tr, di, drep); - /* append ptr size (4) */ - return start_offset + offset + 4; -} -/* - * Analyze mapi_request real contents - */ -static int mapi_dissect_element_EcDoRpc_request__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - guint16 length; - length = tvb_get_letohs(tvb, offset); - offset += 2; - while (offset < length) { - offset = mapi_dissect_struct_EcDoRpc_MAPI_REQ(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_request_mapi_req, length - offset); - } - return offset; -} -int -mapi_dissect_struct_request(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; - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_mapi_mapi_request); - } - offset = mapi_dissect_struct_EcDoRpc_MAPI_REQ(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_request_mapi_req, 0); - return offset; -} -/*************************/ -/* EcDoRpc Function 0x2 */ -static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int origin_offset; - /**** Function parameters ****/ - guint8 handle_idx; - guint64 folder_id; - guint8 unknown; - origin_offset = offset; - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenFolder, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_mapi_OpenFolder_req); - } - old_offset = offset; - handle_idx = tvb_get_guint8(tvb, offset); - offset += 1; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "handle index: %d", handle_idx); - old_offset = offset; - folder_id = tvb_get_letoh64(tvb, offset); - offset += 8; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "folder ID: 0x%" G_GINT64_MODIFIER "x", folder_id); - old_offset = offset; - unknown = tvb_get_guint8(tvb, offset); - offset += 1; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "unknown: %d", unknown); - - proto_item_set_len(item, offset - origin_offset); - - return offset; -} -/*************************/ -/* EcDoRpc Function 0x7 */ -static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int origin_offset; - guint16 i; - /**** Function parameters ****/ - guint32 unknown; - guint16 prop_count; - guint32 mapitag; - origin_offset = offset; - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_GetProps, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_mapi_GetProps_req); - } - old_offset = offset; - unknown = tvb_get_letohl(tvb, offset); - offset += 4; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "unknown: 0x%x", unknown); - old_offset = offset; - prop_count = tvb_get_letohs(tvb, offset); - offset += 2; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "prop_count: %d", prop_count); - for (i = 0; i < prop_count; i++) { - old_offset = offset; - mapitag = tvb_get_letohl(tvb, offset); - offset += 4; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "[%.2d] %s", i, val_to_str(mapitag, mapi_MAPITAGS_vals, "Unknown MAPITAGS")); - } - proto_item_set_len(item, offset - origin_offset); - return offset; -} -/*************************/ -/* EcDoRpc Function 0xFE */ -static int -mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int origin_offset; - /**** Function parameters ****/ - guint32 codepage; - guint32 padding; - guint8 row; - guint16 str_len; - gchar *mailbox; - origin_offset = offset; - old_offset = offset; - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenMsgStore, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_mapi_OpenMsgStore_req); - } - codepage = tvb_get_letohl(tvb, offset); - offset += 4; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "codepage: 0x%x", codepage); - old_offset = offset; - padding = tvb_get_letohl(tvb, offset); - offset += 4; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "padding: 0x%x", padding); - old_offset = offset; - row = tvb_get_guint8(tvb, offset); - offset += 1; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "row: 0x%x", row); - old_offset = offset; - str_len = tvb_get_letohs(tvb, offset); - offset += 2; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "str length: 0x%x", str_len); - old_offset = offset; - mailbox = tvb_format_text(tvb, offset, str_len - 1); - offset += str_len; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "mailbox: %s", mailbox); - proto_item_set_len(item, offset - origin_offset); - return offset; -} -static int -mapi_dissect_struct_EcDoRpc_MAPI_REPL(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; - int cur_offset; - guint8 opnum; - guint8 handle_idx; - guint32 retval; - old_offset = offset; - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_mapi_EcDoRpc_MAPI_REPL); - } - cur_offset = offset; - opnum = tvb_get_guint8(tvb, offset); - offset += 1; - proto_tree_add_text(tree, tvb, cur_offset, offset - cur_offset, "opnum: %s", val_to_str(opnum, mapi_MAPI_OPNUM_vals, "Unknown MAPI operation: 0x%02x")); - col_append_fstr(pinfo->cinfo, COL_INFO, " + %s", val_to_str(opnum, mapi_MAPI_OPNUM_vals, "Unknown MAPI operation: 0x%02x")); - - if (opnum != op_MAPI_Notify) { - cur_offset = offset; - handle_idx = tvb_get_guint8(tvb, offset); - offset += 1; - proto_tree_add_text(tree, tvb, cur_offset, offset - cur_offset, "handle index: %d", handle_idx); - cur_offset = offset; - retval = tvb_get_letohl(tvb, offset); - offset += 4; - proto_tree_add_text(tree, tvb, cur_offset, offset - cur_offset, "MAPISTATUS: %s", val_to_str(retval, mapi_MAPISTATUS_vals, "Unknown MAPISTATUS error 0x%08x")); - if (retval == MAPI_E_SUCCESS) { - switch(opnum) { - case op_MAPI_Release: - offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_Release(tvb, offset, pinfo, tree, di, drep); - break; - case op_MAPI_OpenFolder: - offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvb, offset, pinfo, tree, di, drep); - break; - case op_MAPI_GetProps: - offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvb, offset, pinfo, tree, di, drep); - break; -/* case op_MAPI_OpenMsgStore: */ -/* offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenMsgStore(tvb, offset, pinfo, tree, di, drep); */ -/* break; */ - default: - offset += param - 6; - } - } - } else { - /* we don't decode notifications within the dissector yet */ - offset += param - 1; - } - proto_item_set_len(item, offset - old_offset); - return offset; -} -static int -mapi_dissect_element_EcDoRpc_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - offset = mapi_dissect_element_EcDoRpc_response_(tvb, offset, pinfo, tree, di, drep); - return offset; -} -static int -mapi_dissect_element_EcDoRpc_response_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - guint32 size; - int start_offset = offset; - guint8 *decrypted_data; - tvbuff_t *decrypted_tvb; - const guint8 *ptr; - gint reported_len; - guint16 pdu_len; - guint32 i; - proto_item *it = NULL; - proto_tree *tr = NULL; - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_mapi_response, &size); - proto_tree_add_text(tree, tvb, start_offset, offset - start_offset + size, "Subcontext size: 0x%x", size); - reported_len = tvb_reported_length_remaining(tvb, offset); - if ((guint32) reported_len > size) { - reported_len = size; - } - if (size > (guint32) reported_len) { - size = reported_len; - } - ptr = tvb_get_ptr(tvb, offset, size); - decrypted_data = (guint8 *)g_malloc(size); - for (i = 0; i < size; i++) { - decrypted_data[i] = ptr[i] ^ 0xA5; - } - decrypted_tvb=tvb_new_child_real_data(tvb, decrypted_data, size, reported_len); - tvb_set_free_cb(decrypted_tvb, g_free); - add_new_data_source(pinfo, decrypted_tvb, "Decrypted MAPI"); - it = proto_tree_add_text(tree, decrypted_tvb, 0, size, "Decrypted MAPI PDU"); - tr = proto_item_add_subtree(it, ett_mapi_mapi_response); - pdu_len = tvb_get_letohs(decrypted_tvb, 0); - proto_tree_add_uint(tr, hf_mapi_pdu_len, decrypted_tvb, 0, 2, pdu_len); - proto_tree_add_item(tr, hf_mapi_decrypted_data, decrypted_tvb, 2, pdu_len - 2, ENC_NA); - /* Analyze contents */ - offset = mapi_dissect_element_EcDoRpc_response__(decrypted_tvb, 0, pinfo, tr, di, drep); - /* Analyze mapi handles */ - offset = mapi_dissect_element_request_handles(decrypted_tvb, offset, pinfo, tr, di, drep); - return start_offset + offset + 4; -} -static int -mapi_dissect_element_EcDoRpc_response__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - guint16 length; - tvbuff_t *subtvb; - length = tvb_get_letohs(tvb, offset); - subtvb = tvb_new_subset(tvb, offset, length, length); - offset += 2; - while (offset < length) { - offset = mapi_dissect_struct_EcDoRpc_MAPI_REPL(subtvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_response_mapi_repl, length - offset); - } - return offset; -} -/*************************/ -/* EcDoRpc Function 0x2 */ -static int -mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int origin_offset; - /**** Function parameters ****/ - guint16 unknown; - origin_offset = offset; - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_OpenFolder, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_mapi_OpenFolder_repl); - } - old_offset = offset; - unknown = tvb_get_letohs(tvb, offset); - offset += 2; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "unknown: 0x%04x", unknown); - proto_item_set_len(item, offset - origin_offset); - return offset; -} -/*************************/ -/* EcDoRpc Function 0x7 */ -static int -mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int origin_offset; - /**** Function parameters ****/ - guint8 layout; - guint16 length; - origin_offset = offset; - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_GetProps, tvb, offset, -1, ENC_NA); - tree = proto_item_add_subtree(item, ett_mapi_GetProps_repl); - } - old_offset = offset; - layout = tvb_get_guint8(tvb, offset); - offset += 1; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "layout: %d", layout); - old_offset = offset; - length = tvb_reported_length_remaining(tvb, offset); - offset += length; - proto_tree_add_text(tree, tvb, old_offset, offset - old_offset, "prop_count: 0x%x", length); - proto_item_set_len(item, offset - origin_offset); - return offset; -} -/*************************/ -/* EcDoRpc Function 0xFE */ -/* static int -mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenMsgStore(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo, proto_tree *parent_tree _U_, guint8 *drep _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int origin_offset; - origin_offset = offset; - old_offset = offset; - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_OpenMsgStore, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_mapi_OpenMsgStore_repl); - } - offset = mapi_dissect_element_OpenMsgStore_repl_PR_OBJECT_TYPE(tvb, offset, pinfo, tree, di, drep); - proto_item_set_len(item, offset - origin_offset); - return offset; - }*/ /* IDL: enum { */ @@ -7944,7 +7587,7 @@ mapi_dissect_struct_DATA_BLOB(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_DATA_BLOB); } @@ -7955,6 +7598,11 @@ mapi_dissect_struct_DATA_BLOB(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -7992,7 +7640,7 @@ mapi_dissect_struct_input_locale(tvbuff_t *tvb _U_, int offset _U_, packet_info old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_input_locale); } @@ -8003,6 +7651,11 @@ mapi_dissect_struct_input_locale(tvbuff_t *tvb _U_, int offset _U_, packet_info proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -8023,7 +7676,7 @@ mapi_dissect_struct_input_locale(tvbuff_t *tvb _U_, int offset _U_, packet_info /* IDL: } */ int -mapi_dissect_enum_MAPI_OBJTYPE(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) +mapi_dissect_enum_MAPI_OBJTYPE(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint8 *param _U_) { guint8 parameter=0; if(param){ @@ -8134,7 +7787,7 @@ mapi_dissect_enum_ACLRIGHTS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf /* IDL: } */ int -mapi_dissect_enum_MAPI_OPNUM(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) +mapi_dissect_enum_MAPI_OPNUM(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint8 *param _U_) { guint8 parameter=0; if(param){ @@ -8181,7 +7834,7 @@ mapi_dissect_struct_FILETIME(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_FILETIME); } @@ -8192,6 +7845,11 @@ mapi_dissect_struct_FILETIME(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -8209,6 +7867,7 @@ mapi_dissect_struct_FILETIME(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin static int mapi_dissect_element_LPSTR_lppszA(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { + offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_mapi_LPSTR_lppszA , 0); return offset; } @@ -8225,7 +7884,7 @@ mapi_dissect_struct_LPSTR(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_LPSTR); } @@ -8234,6 +7893,11 @@ mapi_dissect_struct_LPSTR(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -8306,7 +7970,7 @@ mapi_dissect_enum_property_types(tvbuff_t *tvb _U_, int offset _U_, packet_info /* IDL: [case(PT_BOOLEAN)] [case(PT_BOOLEAN)] uint8 b; */ /* IDL: [case(PT_I8)] [case(PT_I8)] dlong d; */ /* IDL: [case(PT_STRING8)] [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [case(PT_STRING8)] string lpszA; */ -/* IDL: [case(PT_UNICODE)] [flag(LIBNDR_FLAG_STR_NULLTERM)] [case(PT_UNICODE)] string lpszW; */ +/* IDL: [case(PT_UNICODE)] [case(PT_UNICODE)] [flag(LIBNDR_FLAG_STR_NULLTERM)] string lpszW; */ /* IDL: [case(PT_SYSTIME)] [case(PT_SYSTIME)] FILETIME ft; */ /* IDL: [case(PT_CLSID)] [case(PT_CLSID)] GUID lpguid; */ /* IDL: } */ @@ -8362,6 +8026,7 @@ mapi_dissect_element_SPropValue_CTR_d(tvbuff_t *tvb _U_, int offset _U_, packet_ static int mapi_dissect_element_SPropValue_CTR_lpszA(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { + offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_mapi_SPropValue_CTR_lpszA , 0); return offset; } @@ -8369,6 +8034,7 @@ mapi_dissect_element_SPropValue_CTR_lpszA(tvbuff_t *tvb _U_, int offset _U_, pac static int mapi_dissect_element_SPropValue_CTR_lpszW(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { + offset = dissect_null_term_wstring(tvb, offset, pinfo, tree, drep, hf_mapi_SPropValue_CTR_lpszW , 0); return offset; } @@ -8449,6 +8115,7 @@ mapi_dissect_SPropValue_CTR(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf } proto_item_set_len(item, offset-old_offset); + return offset; } @@ -8458,9 +8125,9 @@ mapi_dissect_SPropValue_CTR(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf /* IDL: } */ static int -mapi_dissect_element_SPropValue_ulPropTag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +mapi_dissect_element_SPropValue_ulPropTag(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *ulPropTag) { - offset = mapi_dissect_enum_MAPITAGS(tvb, offset, pinfo, tree, di, drep, hf_mapi_SPropValue_ulPropTag, 0); + offset = mapi_dissect_enum_MAPITAGS(tvb, offset, pinfo, tree, di, drep, hf_mapi_SPropValue_ulPropTag, ulPropTag); return offset; } @@ -8476,26 +8143,31 @@ mapi_dissect_element_SPropValue_value(tvbuff_t *tvb _U_, int offset _U_, packet_ int mapi_dissect_struct_SPropValue(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_) { + guint32 ulPropTag; proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; - ALIGN_TO_4_BYTES; old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_SPropValue); } - offset = mapi_dissect_element_SPropValue_ulPropTag(tvb, offset, pinfo, tree, di, drep); + offset = mapi_dissect_element_SPropValue_ulPropTag(tvb, offset, pinfo, tree, di, drep, &ulPropTag); offset = mapi_dissect_element_SPropValue_value(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -8519,7 +8191,7 @@ mapi_dissect_struct_SPropValue(tvbuff_t *tvb _U_, int offset _U_, packet_info *p /* IDL: } */ int -mapi_dissect_enum_ulRowFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) +mapi_dissect_enum_ulRowFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint8 *param _U_) { guint8 parameter=0; if(param){ @@ -8556,7 +8228,7 @@ mapi_dissect_struct_SRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _ old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_SRow); } @@ -8565,6 +8237,7 @@ mapi_dissect_struct_SRow(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _ proto_item_set_len(item, offset-old_offset); + return offset; } @@ -8590,13 +8263,14 @@ mapi_dissect_struct_Release_req(tvbuff_t *tvb _U_, int offset _U_, packet_info * old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_Release_req); } proto_item_set_len(item, offset-old_offset); + return offset; } @@ -8615,13 +8289,14 @@ mapi_dissect_struct_Release_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_Release_repl); } proto_item_set_len(item, offset-old_offset); + return offset; } @@ -8632,11 +8307,103 @@ mapi_dissect_struct_Release_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info /* IDL: uint8 unknown; */ /* IDL: } */ +static int +mapi_dissect_element_OpenFolder_req_handle_idx(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_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenFolder_req_handle_idx, 0); + + return offset; +} + +static int +mapi_dissect_element_OpenFolder_req_folder_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, 0, hf_mapi_OpenFolder_req_folder_id); + + return offset; +} + +static int +mapi_dissect_element_OpenFolder_req_unknown(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_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenFolder_req_unknown, 0); + + return offset; +} + +int +mapi_dissect_struct_OpenFolder_req(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; + + + 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_mapi_OpenFolder_req); + } + + offset = mapi_dissect_element_OpenFolder_req_handle_idx(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_OpenFolder_req_folder_id(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_OpenFolder_req_unknown(tvb, offset, pinfo, tree, di, drep); + + + proto_item_set_len(item, offset-old_offset); + + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + + return offset; +} + /* IDL: struct { */ /* IDL: uint16 unknown; */ /* IDL: } */ +static int +mapi_dissect_element_OpenFolder_repl_unknown(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_uint16(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenFolder_repl_unknown, 0); + + return offset; +} + +int +mapi_dissect_struct_OpenFolder_repl(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; + + + 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_mapi_OpenFolder_repl); + } + + offset = mapi_dissect_element_OpenFolder_repl_unknown(tvb, offset, pinfo, tree, di, drep); + + + proto_item_set_len(item, offset-old_offset); + + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_2_BYTES; + } + + return offset; +} + /* IDL: struct { */ /* IDL: uint8 folder_handle_idx; */ @@ -8693,12 +8460,11 @@ mapi_dissect_struct_OpenMessage_req(tvbuff_t *tvb _U_, int offset _U_, packet_in proto_tree *tree = NULL; int old_offset; - ALIGN_TO_8_BYTES; old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_OpenMessage_req); } @@ -8715,6 +8481,11 @@ mapi_dissect_struct_OpenMessage_req(tvbuff_t *tvb _U_, int offset _U_, packet_in proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + return offset; } @@ -8751,7 +8522,7 @@ mapi_dissect_enum_CODEPAGEID(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin /* IDL: } */ int -mapi_dissect_enum_ulRecipClass(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) +mapi_dissect_enum_ulRecipClass(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint8 *param _U_) { guint8 parameter=0; if(param){ @@ -8771,7 +8542,7 @@ mapi_dissect_enum_ulRecipClass(tvbuff_t *tvb _U_, int offset _U_, packet_info *p /* IDL: } */ int -mapi_dissect_enum_addr_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) +mapi_dissect_enum_addr_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint8 *param _U_) { guint8 parameter=0; if(param){ @@ -8817,7 +8588,7 @@ mapi_dissect_struct_RecipExchange(tvbuff_t *tvb _U_, int offset _U_, packet_info old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_RecipExchange); } @@ -8828,6 +8599,7 @@ mapi_dissect_struct_RecipExchange(tvbuff_t *tvb _U_, int offset _U_, packet_info proto_item_set_len(item, offset-old_offset); + return offset; } @@ -8846,13 +8618,14 @@ mapi_dissect_struct_RecipSMTP(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_RecipSMTP); } proto_item_set_len(item, offset-old_offset); + return offset; } @@ -8863,7 +8636,7 @@ mapi_dissect_struct_RecipSMTP(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi /* IDL: } */ int -mapi_dissect_enum_OM_recipient_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) +mapi_dissect_enum_OM_recipient_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint16 *param _U_) { guint16 parameter=0; if(param){ @@ -8928,6 +8701,7 @@ mapi_dissect_recipient_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf } proto_item_set_len(item, offset-old_offset); + return offset; } @@ -8936,7 +8710,7 @@ mapi_dissect_recipient_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinf /* IDL: } */ int -mapi_dissect_enum_OM_recipient_displayname_7bit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) +mapi_dissect_enum_OM_recipient_displayname_7bit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint16 *param _U_) { guint16 parameter=0; if(param){ @@ -8950,7 +8724,7 @@ mapi_dissect_enum_OM_recipient_displayname_7bit(tvbuff_t *tvb _U_, int offset _U } -/* IDL: [flag(LIBNDR_FLAG_NOALIGN)] [switch_type(OM_recipient_displayname_7bit)] union { */ +/* IDL: [switch_type(OM_recipient_displayname_7bit)] [flag(LIBNDR_FLAG_NOALIGN)] union { */ /* IDL: [case(0x400)] [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [case(0x400)] string lpszA; */ /* IDL: [default] ; */ /* IDL: } */ @@ -8958,6 +8732,7 @@ mapi_dissect_enum_OM_recipient_displayname_7bit(tvbuff_t *tvb _U_, int offset _U static int mapi_dissect_element_recipient_displayname_7bit_lpszA(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { + offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_mapi_recipient_displayname_7bit_lpszA , 0); return offset; } @@ -8989,6 +8764,7 @@ mapi_dissect_recipient_displayname_7bit(tvbuff_t *tvb _U_, int offset _U_, packe } proto_item_set_len(item, offset-old_offset); + return offset; } @@ -9044,7 +8820,7 @@ mapi_dissect_element_recipients_headers_layout(tvbuff_t *tvb _U_, int offset _U_ static int mapi_dissect_element_recipients_headers_prop_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { - offset = mapi_dissect_struct_DATA_BLOB(tvb,offset,pinfo,tree,di,drep,hf_mapi_recipients_headers_prop_values,0); + offset = dissect_ndr_datablob(tvb, offset, pinfo, tree, di, drep, hf_mapi_recipients_headers_prop_values, 1); return offset; } @@ -9056,12 +8832,11 @@ mapi_dissect_struct_recipients_headers(tvbuff_t *tvb _U_, int offset _U_, packet proto_tree *tree = NULL; int old_offset; - ALIGN_TO_4_BYTES; old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_recipients_headers); } @@ -9080,6 +8855,11 @@ mapi_dissect_struct_recipients_headers(tvbuff_t *tvb _U_, int offset _U_, packet proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -9110,12 +8890,18 @@ static int mapi_dissect_element_OpenMessage_recipients_recipients_headers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) { guint16 size; - int start_offset = offset; + int conformant = di->conformant_run; tvbuff_t *subtvb; - offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenMessage_recipients_recipients_headers, &size); - proto_tree_add_text(tree, tvb, start_offset, offset - start_offset + size, "Subcontext size"); - subtvb = tvb_new_subset(tvb, offset, size, -1); - mapi_dissect_element_OpenMessage_recipients_recipients_headers_(subtvb, 0, pinfo, tree, di, drep); + + if (!conformant) { + guint32 saved_flags = di->call_data->flags; + offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenMessage_recipients_recipients_headers_, &size); + di->call_data->flags &= ~DCERPC_IS_NDR64; + subtvb = tvb_new_subset(tvb, offset, (const gint)size, -1); + mapi_dissect_element_OpenMessage_recipients_recipients_headers_(subtvb, 0, pinfo, tree, di, drep); + offset += (int)size; + di->call_data->flags = saved_flags; + } return offset; } @@ -9135,12 +8921,11 @@ mapi_dissect_struct_OpenMessage_recipients(tvbuff_t *tvb _U_, int offset _U_, pa proto_tree *tree = NULL; int old_offset; - ALIGN_TO_4_BYTES; old_offset = offset; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_mapi_OpenMessage_recipients); } @@ -9153,6 +8938,11 @@ mapi_dissect_struct_OpenMessage_recipients(tvbuff_t *tvb _U_, int offset _U_, pa proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -9171,12 +8961,121 @@ mapi_dissect_struct_OpenMessage_recipients(tvbuff_t *tvb _U_, int offset _U_, pa /* IDL: MAPITAGS properties[prop_count]; */ /* IDL: } */ +static int +mapi_dissect_element_GetProps_req_unknown(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_mapi_GetProps_req_unknown, 0); + + return offset; +} + +static int +mapi_dissect_element_GetProps_req_prop_count(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_uint16(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetProps_req_prop_count, 0); + + return offset; +} + +static int +mapi_dissect_element_GetProps_req_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + + return offset; +} + +static int +mapi_dissect_element_GetProps_req_properties_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset = mapi_dissect_enum_MAPITAGS(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetProps_req_properties, 0); + + return offset; +} + +int +mapi_dissect_struct_GetProps_req(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; + + + 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_mapi_GetProps_req); + } + + offset = mapi_dissect_element_GetProps_req_unknown(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_GetProps_req_prop_count(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_GetProps_req_properties(tvb, offset, pinfo, tree, di, drep); + + + proto_item_set_len(item, offset-old_offset); + + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + + return offset; +} + /* IDL: struct { */ /* IDL: uint8 layout; */ /* IDL: [flag(LIBNDR_FLAG_REMAINING)] DATA_BLOB prop_data; */ /* IDL: } */ +static int +mapi_dissect_element_GetProps_repl_layout(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_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetProps_repl_layout, 0); + + return offset; +} + +static int +mapi_dissect_element_GetProps_repl_prop_data(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_datablob(tvb, offset, pinfo, tree, di, drep, hf_mapi_GetProps_repl_prop_data, 1); + + return offset; +} + +int +mapi_dissect_struct_GetProps_repl(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; + + + 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_mapi_GetProps_repl); + } + + offset = mapi_dissect_element_GetProps_repl_layout(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_GetProps_repl_prop_data(tvb, offset, pinfo, tree, di, drep); + + + proto_item_set_len(item, offset-old_offset); + + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + + return offset; +} + /* IDL: bitmap { */ /* IDL: fnevCriticalError = 0x00000001 , */ @@ -9203,7 +9102,7 @@ mapi_dissect_bitmap_ulEventType(tvbuff_t *tvb _U_, int offset _U_, packet_info * ALIGN_TO_2_BYTES; if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, 2, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, 2, DREP_ENC_INTEGER(drep)); tree = proto_item_add_subtree(item,ett_mapi_ulEventType); } @@ -9325,6 +9224,93 @@ mapi_dissect_bitmap_ulEventType(tvbuff_t *tvb _U_, int offset _U_, packet_info * /* IDL: [unique(1)] [charset(DOS)] uint8 *mailbox; */ /* IDL: } */ +static int +mapi_dissect_element_OpenMsgStore_req_codepage(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_mapi_OpenMsgStore_req_codepage, 0); + + return offset; +} + +static int +mapi_dissect_element_OpenMsgStore_req_padding(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_mapi_OpenMsgStore_req_padding, 0); + + return offset; +} + +static int +mapi_dissect_element_OpenMsgStore_req_row(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_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenMsgStore_req_row, 0); + + return offset; +} + +static int +mapi_dissect_element_OpenMsgStore_req_mailbox_str_size(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_uint16(tvb, offset, pinfo, tree, di, drep, hf_mapi_OpenMsgStore_req_mailbox_str_size, 0); + + return offset; +} + +static int +mapi_dissect_element_OpenMsgStore_req_mailbox(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, mapi_dissect_element_OpenMsgStore_req_mailbox_, NDR_POINTER_UNIQUE, "Pointer to Mailbox (uint8)",hf_mapi_OpenMsgStore_req_mailbox); + + return offset; +} + +static int +mapi_dissect_element_OpenMsgStore_req_mailbox_(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(guint8), hf_mapi_OpenMsgStore_req_mailbox, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +int +mapi_dissect_struct_OpenMsgStore_req(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; + + + 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_mapi_OpenMsgStore_req); + } + + offset = mapi_dissect_element_OpenMsgStore_req_codepage(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_OpenMsgStore_req_padding(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_OpenMsgStore_req_row(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_OpenMsgStore_req_mailbox_str_size(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_OpenMsgStore_req_mailbox(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: [switch_type(MAPI_OPNUM)] union { */ /* IDL: [case(op_MAPI_Release)] [case(op_MAPI_Release)] Release_req mapi_Release; */ @@ -9341,8 +9327,71 @@ mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_Release(tvbuff_t *tvb _U_, int offse return offset; } +static int +mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset = mapi_dissect_struct_OpenFolder_req(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenFolder,0); + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset = mapi_dissect_struct_GetProps_req(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_GetProps,0); + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset = mapi_dissect_struct_OpenMsgStore_req(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenMsgStore,0); + + return offset; +} + +static int +mapi_dissect_EcDoRpc_MAPI_REQ_UNION(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; + guint8 level; + + old_offset = offset; + if (parent_tree) { + item = proto_tree_add_text(parent_tree, tvb, offset, -1, "EcDoRpc_MAPI_REQ_UNION"); + tree = proto_item_add_subtree(item, ett_mapi_EcDoRpc_MAPI_REQ_UNION); + } + + offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + ALIGN_TO_8_BYTES; + + switch(level) { + case op_MAPI_Release: + offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_Release(tvb, offset, pinfo, tree, di, drep); + break; + + case op_MAPI_OpenFolder: + offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenFolder(tvb, offset, pinfo, tree, di, drep); + break; + + case op_MAPI_GetProps: + offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_GetProps(tvb, offset, pinfo, tree, di, drep); + break; + + case op_MAPI_OpenMsgStore: + offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_UNION_OpenMsgStore(tvb, offset, pinfo, tree, di, drep); + break; + } + proto_item_set_len(item, offset-old_offset); + + + return offset; +} -/* IDL: [public(1)] [switch_type(MAPI_OPNUM)] union { */ +/* IDL: [switch_type(MAPI_OPNUM)] [public(1)] union { */ /* IDL: [case(op_MAPI_Release)] [case(op_MAPI_Release)] Release_repl mapi_Release; */ /* IDL: [case(op_MAPI_OpenFolder)] [case(op_MAPI_OpenFolder)] OpenFolder_repl mapi_OpenFolder; */ /* IDL: [case(op_MAPI_GetProps)] [case(op_MAPI_GetProps)] GetProps_repl mapi_GetProps; */ @@ -9356,6 +9405,57 @@ mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_Release(tvbuff_t *tvb _U_, int offs return offset; } +static int +mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset = mapi_dissect_struct_OpenFolder_repl(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_OpenFolder,0); + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset = mapi_dissect_struct_GetProps_repl(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_GetProps,0); + + return offset; +} + +static int +mapi_dissect_EcDoRpc_MAPI_REPL_UNION(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; + guint8 level; + + old_offset = offset; + if (parent_tree) { + item = proto_tree_add_text(parent_tree, tvb, offset, -1, "EcDoRpc_MAPI_REPL_UNION"); + tree = proto_item_add_subtree(item, ett_mapi_EcDoRpc_MAPI_REPL_UNION); + } + + offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, di, drep, hf_index, &level); + ALIGN_TO_4_BYTES; + + switch(level) { + case op_MAPI_Release: + offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_Release(tvb, offset, pinfo, tree, di, drep); + break; + + case op_MAPI_OpenFolder: + offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_OpenFolder(tvb, offset, pinfo, tree, di, drep); + break; + + case op_MAPI_GetProps: + offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_GetProps(tvb, offset, pinfo, tree, di, drep); + break; + } + proto_item_set_len(item, offset-old_offset); + + + return offset; +} /* IDL: struct { */ /* IDL: uint8 opnum; */ @@ -9364,6 +9464,73 @@ mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_Release(tvbuff_t *tvb _U_, int offs /* IDL: [switch_is(opnum)] EcDoRpc_MAPI_REQ_UNION u; */ /* IDL: } */ +static int +mapi_dissect_element_EcDoRpc_MAPI_REQ_opnum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum) +{ + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_MAPI_OPNUM, *opnum); + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_MAPI_REQ_flags(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_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REQ_mapi_flags, 0); + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_MAPI_REQ_handle_idx(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_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REQ_handle_idx, 0); + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_MAPI_REQ_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum) +{ + offset = mapi_dissect_EcDoRpc_MAPI_REQ_UNION(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REQ_u, *opnum); + + return offset; +} + +int +mapi_dissect_struct_EcDoRpc_MAPI_REQ(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_) +{ + guint8 opnum; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + + 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_mapi_EcDoRpc_MAPI_REQ); + } + + offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_opnum(tvb, offset, pinfo, tree, di, drep, &opnum); + + offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_flags(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_handle_idx(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_EcDoRpc_MAPI_REQ_u(tvb, offset, pinfo, tree, di, drep, &opnum); + + + proto_item_set_len(item, offset-old_offset); + + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + + return offset; +} + /* IDL: struct { */ /* IDL: uint8 opnum; */ @@ -9372,6 +9539,73 @@ mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_Release(tvbuff_t *tvb _U_, int offs /* IDL: [switch_is(opnum)] EcDoRpc_MAPI_REPL_UNION u; */ /* IDL: } */ +static int +mapi_dissect_element_EcDoRpc_MAPI_REPL_opnum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum) +{ + offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REPL_opnum, *opnum); + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_MAPI_REPL_handle_idx(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_uint8(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REPL_handle_idx, 0); + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_MAPI_REPL_error_code(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset = mapi_dissect_enum_MAPISTATUS(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REPL_error_code, 0); + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_MAPI_REPL_u(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 *opnum) +{ + offset = mapi_dissect_EcDoRpc_MAPI_REPL_UNION(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_MAPI_REPL_u, *opnum); + + return offset; +} + +int +mapi_dissect_struct_EcDoRpc_MAPI_REPL(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_) +{ + guint8 opnum; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + + 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_mapi_EcDoRpc_MAPI_REPL); + } + + offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_opnum(tvb, offset, pinfo, tree, di, drep, &opnum); + + offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_handle_idx(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_error_code(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_EcDoRpc_MAPI_REPL_u(tvb, offset, pinfo, tree, di, drep, &opnum); + + + proto_item_set_len(item, offset-old_offset); + + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + + return offset; +} + /* IDL: struct { */ /* IDL: uint32 mapi_len; */ @@ -9380,6 +9614,89 @@ mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_Release(tvbuff_t *tvb _U_, int offs /* IDL: [unique(1)] uint32 *handles; */ /* IDL: } */ +static int +mapi_dissect_element_request_len(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_mapi_mapi_request_mapi_len, 0); + + return offset; +} + +static int +mapi_dissect_element_request_length(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_uint16(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_request_length, 0); + + return offset; +} + +static int +mapi_dissect_element_request_req(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, mapi_dissect_element_request_req_, NDR_POINTER_UNIQUE, "Pointer to Req (EcDoRpc_MAPI_REQ)",hf_mapi_mapi_request_mapi_req); + + return offset; +} + +static int +mapi_dissect_element_request_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset = mapi_dissect_struct_EcDoRpc_MAPI_REQ(tvb,offset,pinfo,tree,di,drep,hf_mapi_mapi_request_mapi_req,0); + + return offset; +} + +static int +mapi_dissect_element_request_handles(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, mapi_dissect_element_request_handles_, NDR_POINTER_UNIQUE, "Pointer to Handles (uint32)",hf_mapi_mapi_request_handles); + + return offset; +} + +static int +mapi_dissect_element_request_handles_(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_mapi_mapi_request_handles, 0); + + return offset; +} + +int +mapi_dissect_struct_request(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_mapi_mapi_request); + } + + offset = mapi_dissect_element_request_len(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_request_length(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_request_req(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_request_handles(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: struct { */ /* IDL: uint32 mapi_len; */ @@ -9388,6 +9705,89 @@ mapi_dissect_element_EcDoRpc_MAPI_REPL_UNION_Release(tvbuff_t *tvb _U_, int offs /* IDL: [unique(1)] uint32 *handles; */ /* IDL: } */ +static int +mapi_dissect_element_response_len(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_mapi_mapi_response_mapi_len, 0); + + return offset; +} + +static int +mapi_dissect_element_response_length(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_uint16(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_response_length, 0); + + return offset; +} + +static int +mapi_dissect_element_response_repl(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, mapi_dissect_element_response_repl_, NDR_POINTER_UNIQUE, "Pointer to Repl (EcDoRpc_MAPI_REPL)",hf_mapi_mapi_response_mapi_repl); + + return offset; +} + +static int +mapi_dissect_element_response_repl_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset = mapi_dissect_struct_EcDoRpc_MAPI_REPL(tvb,offset,pinfo,tree,di,drep,hf_mapi_mapi_response_mapi_repl,0); + + return offset; +} + +static int +mapi_dissect_element_response_handles(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, mapi_dissect_element_response_handles_, NDR_POINTER_UNIQUE, "Pointer to Handles (uint32)",hf_mapi_mapi_response_handles); + + return offset; +} + +static int +mapi_dissect_element_response_handles_(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_mapi_mapi_response_handles, 0); + + return offset; +} + +int +mapi_dissect_struct_response(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_mapi_mapi_response); + } + + offset = mapi_dissect_element_response_len(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_response_length(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_response_repl(tvb, offset, pinfo, tree, di, drep); + + offset = mapi_dissect_element_response_handles(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: struct { */ /* IDL: uint16 cb; */ @@ -9606,10 +10006,10 @@ mapi_dissect_element_EcDoConnect_alloc_space_(tvbuff_t *tvb _U_, int offset _U_, /* IDL: [out] uint32 unknown4[3], */ /* IDL: [out] [ref] uint16 *session_nb, */ /* IDL: [unique(1)] [out] uint8 *org_group, */ -/* IDL: [unique(1)] [out] uint8 *user, */ +/* IDL: [out] [unique(1)] uint8 *user, */ /* IDL: [out] uint16 store_version[3], */ /* IDL: [out] [in] uint16 emsmdb_client_version[3], */ -/* IDL: [out] [ref] [in] uint32 *alloc_space */ +/* IDL: [in] [ref] [out] uint32 *alloc_space */ /* IDL: ); */ static int @@ -9689,7 +10089,7 @@ mapi_dissect_element_EcDoDisconnect_handle_(tvbuff_t *tvb _U_, int offset _U_, p } /* IDL: MAPISTATUS EcDoDisconnect( */ -/* IDL: [out] [ref] [in] policy_handle *handle */ +/* IDL: [ref] [out] [in] policy_handle *handle */ /* IDL: ); */ static int @@ -9750,6 +10150,78 @@ mapi_dissect_element_EcDoRpc_offset(tvbuff_t *tvb _U_, int offset _U_, packet_in } static int +mapi_dissect_element_EcDoRpc_request(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, mapi_dissect_element_EcDoRpc_request_, NDR_POINTER_REF, "Pointer to Request (mapi_request)",hf_mapi_EcDoRpc_mapi_request); + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_request_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + guint3264 size; + int conformant = di->conformant_run; + tvbuff_t *subtvb; + + if (!conformant) { + guint32 saved_flags = di->call_data->flags; + offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_mapi_request_, &size); + di->call_data->flags &= ~DCERPC_IS_NDR64; + subtvb = tvb_new_subset(tvb, offset, (const gint)size, -1); + mapi_dissect_element_EcDoRpc_request__(subtvb, 0, pinfo, tree, di, drep); + offset += (int)size; + di->call_data->flags = saved_flags; + } + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_request__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset = mapi_dissect_struct_request(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_mapi_request,0); + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_response(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, mapi_dissect_element_EcDoRpc_response_, NDR_POINTER_REF, "Pointer to Response (mapi_response)",hf_mapi_EcDoRpc_mapi_response); + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_response_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + guint3264 size; + int conformant = di->conformant_run; + tvbuff_t *subtvb; + + if (!conformant) { + guint32 saved_flags = di->call_data->flags; + offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpc_mapi_response_, &size); + di->call_data->flags &= ~DCERPC_IS_NDR64; + subtvb = tvb_new_subset(tvb, offset, (const gint)size, -1); + mapi_dissect_element_EcDoRpc_response__(subtvb, 0, pinfo, tree, di, drep); + offset += (int)size; + di->call_data->flags = saved_flags; + } + + return offset; +} + +static int +mapi_dissect_element_EcDoRpc_response__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_) +{ + offset = mapi_dissect_struct_response(tvb,offset,pinfo,tree,di,drep,hf_mapi_EcDoRpc_mapi_response,0); + + return offset; +} + +static int mapi_dissect_element_EcDoRpc_length(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, mapi_dissect_element_EcDoRpc_length_, NDR_POINTER_REF, "Pointer to Length (uint16)",hf_mapi_EcDoRpc_length); @@ -9774,12 +10246,12 @@ mapi_dissect_element_EcDoRpc_max_data(tvbuff_t *tvb _U_, int offset _U_, packet_ } /* IDL: MAPISTATUS EcDoRpc( */ -/* IDL: [out] [ref] [in] policy_handle *handle, */ -/* IDL: [out] [in] uint32 size, */ -/* IDL: [out] [in] uint32 offset, */ -/* IDL: [ref] [subcontext(4)] [in] [flag(LIBNDR_FLAG_REMAINING|LIBNDR_FLAG_NOALIGN)] mapi_request *mapi_request, */ -/* IDL: [out] [ref] [subcontext(4)] [flag(LIBNDR_FLAG_REMAINING|LIBNDR_FLAG_NOALIGN)] mapi_response *mapi_response, */ -/* IDL: [out] [ref] [in] uint16 *length, */ +/* IDL: [in] [ref] [out] policy_handle *handle, */ +/* IDL: [in] [out] uint32 size, */ +/* IDL: [in] [out] uint32 offset, */ +/* IDL: [ref] [flag(LIBNDR_FLAG_REMAINING|LIBNDR_FLAG_NOALIGN)] [in] [subcontext(4)] mapi_request *mapi_request, */ +/* IDL: [flag(LIBNDR_FLAG_REMAINING|LIBNDR_FLAG_NOALIGN)] [subcontext(4)] [out] [ref] mapi_response *mapi_response, */ +/* IDL: [in] [ref] [out] uint16 *length, */ /* IDL: [in] uint16 max_data */ /* IDL: ); */ @@ -9945,12 +10417,12 @@ mapi_dissect_element_EcRRegisterPushNotification_retval_(tvbuff_t *tvb _U_, int } /* IDL: MAPISTATUS EcRRegisterPushNotification( */ -/* IDL: [out] [ref] [in] policy_handle *handle, */ +/* IDL: [in] [out] [ref] policy_handle *handle, */ /* IDL: [in] ulEventType ulEventMask, */ /* IDL: [in] [size_is(notif_len)] uint8 notifkey[*], */ /* IDL: [in] uint16 notif_len, */ /* IDL: [in] uint32 unknown2, */ -/* IDL: [in] [size_is(sockaddr_len)] uint8 sockaddr[*], */ +/* IDL: [size_is(sockaddr_len)] [in] uint8 sockaddr[*], */ /* IDL: [in] uint16 sockaddr_len, */ /* IDL: [out] [ref] uint32 *retval */ /* IDL: ); */ @@ -10030,7 +10502,7 @@ mapi_dissect_element_EcRUnregisterPushNotification_unknown_(tvbuff_t *tvb _U_, i } /* IDL: MAPISTATUS EcRUnregisterPushNotification( */ -/* IDL: [out] [ref] [in] policy_handle *handle, */ +/* IDL: [ref] [out] [in] policy_handle *handle, */ /* IDL: [in] uint32 unknown[2] */ /* IDL: ); */ @@ -10161,205 +10633,256 @@ static dcerpc_sub_dissector mapi_dissectors[] = { void proto_register_dcerpc_mapi(void) { static hf_register_info hf[] = { - { &hf_mapi_EcDoConnect_unknown1, - { "Unknown1", "mapi.EcDoConnect.unknown1", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_SPropValue_CTR_i, - { "I", "mapi.SPropValue_CTR.i", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoConnect_emsmdb_client_version, - { "Emsmdb Client Version", "mapi.EcDoConnect.emsmdb_client_version", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoConnect_name, - { "Name", "mapi.EcDoConnect.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_SPropValue_CTR_lpszW, - { "Lpszw", "mapi.SPropValue_CTR.lpszW", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_offset, - { "Offset", "mapi.EcDoRpc.offset", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoConnect_alloc_space, - { "Alloc Space", "mapi.EcDoConnect.alloc_space", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_ulEventType_fnevCriticalError, + { &hf_mapi_property_types, + { "Value", "mapi.SPropValue.value", FT_UINT32, BASE_HEX, VALS(mapi_property_types_vals), 0, "NULL", HFILL }}, + { &hf_mapi_mapi_response_mapi_len, + { "Mapi Len", "mapi.mapi_response.mapi_len", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_max_data, + { "Max Data", "mapi.EcDoRpc.max_data", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_mapi_response_, + { "Subcontext length", "mapi.EcDoRpc.subcontext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_mapi_handle, + { "Handle", "mapi.handle", FT_BYTES, BASE_NONE, NULL, 0, "NULL", HFILL }}, + { &hf_mapi_OpenMessage_recipients_recipients_headers, + { "Recipients Headers", "mapi.OpenMessage_recipients.recipients_headers", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_SPropValue_CTR_d, + { "D", "mapi.SPropValue_CTR.d", FT_INT64, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_ulEventType_fnevCriticalError, { "Fnevcriticalerror", "mapi.ulEventType.fnevCriticalError", FT_BOOLEAN, 16, TFS(&ulEventType_fnevCriticalError_tfs), ( 0x00000001 ), NULL, HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenFolder, - { "Mapi Openfolder", "mapi.EcDoRpc_MAPI_REQ_UNION.mapi_OpenFolder", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_SRow_ulRowFlags, - { "Ulrowflags", "mapi.SRow.ulRowFlags", FT_UINT8, BASE_DEC, VALS(mapi_ulRowFlags_vals), 0, NULL, HFILL }}, - { &hf_mapi_EcRRegisterPushNotification_notifkey, - { "Notifkey", "mapi.EcRRegisterPushNotification.notifkey", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcRUnregisterPushNotification_unknown, - { "Unknown", "mapi.EcRUnregisterPushNotification.unknown", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_recipients_headers_username, - { "Username", "mapi.recipients_headers.username", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_mapi_request_mapi_req, - { "Mapi Req", "mapi.mapi_request.mapi_req", FT_NONE, BASE_NONE, NULL, 0, "HFILL", HFILL }}, - { &hf_mapi_EcRRegisterPushNotification_retval, - { "Retval", "mapi.EcRRegisterPushNotification.retval", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_ulEventType_fnevObjectDeleted, - { "Fnevobjectdeleted", "mapi.ulEventType.fnevObjectDeleted", FT_BOOLEAN, 16, TFS(&ulEventType_fnevObjectDeleted_tfs), ( 0x00000008 ), NULL, HFILL }}, - { &hf_mapi_SPropValue_CTR_lpszA, - { "Lpsza", "mapi.SPropValue_CTR.lpszA", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_DATA_BLOB_data, + { &hf_mapi_mapi_request_handles, + { "Handles", "mapi.mapi_request.handles", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_DATA_BLOB_data, { "Data", "mapi.DATA_BLOB.data", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_GetProps, + { &hf_mapi_EcDoRpc_MAPI_REQ_u, + { "U", "mapi.EcDoRpc_MAPI_REQ.u", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_GetProps, { "Mapi Getprops", "mapi.EcDoRpc_MAPI_REPL_UNION.mapi_GetProps", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_recipient_type_SMTP, + { &hf_mapi_ulEventType_fnevReservedForMapi, + { "Fnevreservedformapi", "mapi.ulEventType.fnevReservedForMapi", FT_BOOLEAN, 16, TFS(&ulEventType_fnevReservedForMapi_tfs), ( 0x40000000 ), NULL, HFILL }}, + { &hf_mapi_EcDoConnect_org_group, + { "Org Group", "mapi.EcDoConnect.org_group", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_SPropValue_CTR_i, + { "I", "mapi.SPropValue_CTR.i", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_mapi_request_length, + { "Length", "mapi.mapi_request.length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoConnect_store_version, + { "Store Version", "mapi.EcDoConnect.store_version", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_mapi_response_length, + { "Length", "mapi.mapi_response.length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_length, + { "Length", "mapi.EcDoRpc.length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_SPropValue_CTR_ft, + { "Ft", "mapi.SPropValue_CTR.ft", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_OpenFolder, + { "Mapi Openfolder", "mapi.EcDoRpc_MAPI_REPL_UNION.mapi_OpenFolder", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoConnect_unknown1, + { "Unknown1", "mapi.EcDoConnect.unknown1", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_recipient_type_SMTP, { "Smtp", "mapi.recipient_type.SMTP", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcRRegisterPushNotification_sockaddr, + { &hf_mapi_FILETIME_dwHighDateTime, + { "Dwhighdatetime", "mapi.FILETIME.dwHighDateTime", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_OpenMessage_recipients_recipients_headers_, + { "Subcontext length", "mapi.OpenMessage_recipients.subcontext", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcRRegisterPushNotification_sockaddr_len, + { "Sockaddr Len", "mapi.EcRRegisterPushNotification.sockaddr_len", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_OpenFolder_req_folder_id, + { "Folder Id", "mapi.OpenFolder_req.folder_id", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcRRegisterPushNotification_sockaddr, { "Sockaddr", "mapi.EcRRegisterPushNotification.sockaddr", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_LPSTR_lppszA, - { "Lppsza", "mapi.LPSTR.lppszA", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_max_data, - { "Max Data", "mapi.EcDoRpc.max_data", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenMessage_recipients_codepage, - { "Codepage", "mapi.OpenMessage_recipients.codepage", FT_UINT32, BASE_DEC, VALS(mapi_CODEPAGEID_vals), 0, NULL, HFILL }}, - { &hf_mapi_ulEventType_fnevObjectCopied, + { &hf_mapi_SPropValue_CTR_err, + { "Err", "mapi.SPropValue_CTR.err", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_ulEventType_fnevStatusObjectModified, + { "Fnevstatusobjectmodified", "mapi.ulEventType.fnevStatusObjectModified", FT_BOOLEAN, 16, TFS(&ulEventType_fnevStatusObjectModified_tfs), ( 0x00000200 ), NULL, HFILL }}, + { &hf_mapi_ulEventType_fnevObjectCopied, { "Fnevobjectcopied", "mapi.ulEventType.fnevObjectCopied", FT_BOOLEAN, 16, TFS(&ulEventType_fnevObjectCopied_tfs), ( 0x00000040 ), NULL, HFILL }}, - { &hf_mapi_EcRRegisterPushNotification_unknown2, - { "Unknown2", "mapi.EcRRegisterPushNotification.unknown2", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_recipients_headers_prop_count, - { "Prop Count", "mapi.recipients_headers.prop_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_recipients_headers_bitmask, - { "Bitmask", "mapi.recipients_headers.bitmask", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_FILETIME_dwLowDateTime, + { &hf_mapi_EcDoRpc_MAPI_REPL_u, + { "U", "mapi.EcDoRpc_MAPI_REPL.u", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_SPropValue_CTR_lpszA, + { "Lpsza", "mapi.SPropValue_CTR.lpszA", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_offset, + { "Offset", "mapi.EcDoRpc.offset", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_mapi_response, + { "Mapi Response", "mapi.EcDoRpc.mapi_response", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_OpenMessage_recipients_RecipClass, + { "Recipclass", "mapi.OpenMessage_recipients.RecipClass", FT_UINT8, BASE_DEC, VALS(mapi_ulRecipClass_vals), 0, NULL, HFILL }}, + { &hf_mapi_FILETIME_dwLowDateTime, { "Dwlowdatetime", "mapi.FILETIME.dwLowDateTime", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_MAPISTATUS_status, - { "MAPISTATUS", "mapi.MAPISTATUS_status", FT_UINT32, BASE_HEX, VALS(mapi_MAPISTATUS_vals), 0, NULL, HFILL }}, - { &hf_mapi_recipient_type_EXCHANGE, - { "Exchange", "mapi.recipient_type.EXCHANGE", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_SPropValue_CTR_lpguid, + { &hf_mapi_GetProps_req_properties, + { "Properties", "mapi.GetProps_req.properties", FT_UINT32, BASE_DEC, VALS(mapi_MAPITAGS_vals), 0, NULL, HFILL }}, + { &hf_mapi_EcRRegisterPushNotification_ulEventMask, + { "Uleventmask", "mapi.EcRRegisterPushNotification.ulEventMask", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_mapi_OpenMessage_req_message_id, + { "Message Id", "mapi.OpenMessage_req.message_id", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_SPropValue_CTR_l, + { "L", "mapi.SPropValue_CTR.l", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_input_locale_language, + { "Language", "mapi.input_locale.language", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_OpenFolder_req_unknown, + { "Unknown", "mapi.OpenFolder_req.unknown", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_SPropValue_CTR_lpguid, { "Lpguid", "mapi.SPropValue_CTR.lpguid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoConnect_unknown2, - { "Unknown2", "mapi.EcDoConnect.unknown2", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_ulEventType_fnevSearchComplete, - { "Fnevsearchcomplete", "mapi.ulEventType.fnevSearchComplete", FT_BOOLEAN, 16, TFS(&ulEventType_fnevSearchComplete_tfs), ( 0x00000080 ), NULL, HFILL }}, - { &hf_mapi_ulEventType_fnevStatusObjectModified, - { "Fnevstatusobjectmodified", "mapi.ulEventType.fnevStatusObjectModified", FT_BOOLEAN, 16, TFS(&ulEventType_fnevStatusObjectModified_tfs), ( 0x00000200 ), NULL, HFILL }}, - { &hf_mapi_ulEventType_fnevObjectCreated, - { "Fnevobjectcreated", "mapi.ulEventType.fnevObjectCreated", FT_BOOLEAN, 16, TFS(&ulEventType_fnevObjectCreated_tfs), ( 0x00000004 ), NULL, HFILL }}, - { &hf_mapi_OpenMessage_req_max_data, + { &hf_mapi_EcDoConnect_unknown3, + { "Unknown3", "mapi.EcDoConnect.unknown3", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_recipients_headers_prop_count, + { "Prop Count", "mapi.recipients_headers.prop_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_OpenMessage_req_folder_handle_idx, + { "Folder Handle Idx", "mapi.OpenMessage_req.folder_handle_idx", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_OpenMsgStore_req_padding, + { "Padding", "mapi.OpenMsgStore_req.padding", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_GetProps_req_unknown, + { "Unknown", "mapi.GetProps_req.unknown", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_MAPI_REQ_mapi_flags, + { "Mapi Flags", "mapi.EcDoRpc_MAPI_REQ.mapi_flags", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcRRegisterPushNotification_notifkey, + { "Notifkey", "mapi.EcRRegisterPushNotification.notifkey", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_mapi_request_mapi_req, + { "Mapi Req", "mapi.mapi_request.mapi_req", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_OpenMsgStore_req_codepage, + { "Codepage", "mapi.OpenMsgStore_req.codepage", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoConnect_code_page, + { "Code Page", "mapi.EcDoConnect.code_page", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_recipients_headers_username, + { "Username", "mapi.recipients_headers.username", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_OpenMessage_req_max_data, { "Max Data", "mapi.OpenMessage_req.max_data", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_DATA_BLOB_length, - { "Length", "mapi.DATA_BLOB.length", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoConnect_input_locale, - { "Input Locale", "mapi.EcDoConnect.input_locale", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_RecipExchange_addr_type, - { "Addr Type", "mapi.RecipExchange.addr_type", FT_UINT8, BASE_DEC, VALS(mapi_addr_type_vals), 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_mapi_request, - { "Mapi Request", "mapi.EcDoRpc.mapi_request", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_Release, - { "Mapi Release", "mapi.EcDoRpc_MAPI_REQ_UNION.mapi_Release", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_decrypted_data, - { "Decrypted data", "mapi.decrypted.data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, - { &hf_mapi_ulEventType_fnevNewMail, - { "Fnevnewmail", "mapi.ulEventType.fnevNewMail", FT_BOOLEAN, 16, TFS(&ulEventType_fnevNewMail_tfs), ( 0x00000002 ), NULL, HFILL }}, - { &hf_mapi_SPropValue_CTR_b, - { "B", "mapi.SPropValue_CTR.b", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_mapi_response_mapi_repl, - { "Mapi Repl", "mapi.mapi_response.mapi_repl", FT_NONE, BASE_NONE, NULL, 0, "HFILL", HFILL }}, - { &hf_mapi_recipients_headers_layout, - { "Layout", "mapi.recipients_headers.layout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_length, - { "Length", "mapi.EcDoRpc.length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_RecipExchange_organization_length, - { "Organization Length", "mapi.RecipExchange.organization_length", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenMessage_recipients_recipients_headers, - { "Recipients Headers", "mapi.OpenMessage_recipients.recipients_headers", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_GetProps, + { &hf_mapi_OpenMsgStore_req_mailbox, + { "Mailbox", "mapi.OpenMsgStore_req.mailbox", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoConnect_emsmdb_client_version, + { "Emsmdb Client Version", "mapi.EcDoConnect.emsmdb_client_version", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_GetProps_repl_layout, + { "Layout", "mapi.GetProps_repl.layout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_mapi_request_, + { "Subcontext length", "mapi.EcDoRpc.subcontext", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoConnect_unknown4, + { "Unknown4", "mapi.EcDoConnect.unknown4", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_MAPI_REPL_error_code, + { "Error Code", "mapi.EcDoRpc_MAPI_REPL.error_code", FT_UINT32, BASE_DEC, VALS(mapi_MAPISTATUS_vals), 0, NULL, HFILL }}, + { &hf_mapi_opnum, + { "Operation", "mapi.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_recipients_headers_bitmask, + { "Bitmask", "mapi.recipients_headers.bitmask", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_mapi_response_handles, + { "Handles", "mapi.mapi_response.handles", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_OpenFolder_req_handle_idx, + { "Handle Idx", "mapi.OpenFolder_req.handle_idx", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoConnect_name, + { "Name", "mapi.EcDoConnect.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoConnect_user, + { "User", "mapi.EcDoConnect.user", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_GetProps, { "Mapi Getprops", "mapi.EcDoRpc_MAPI_REQ_UNION.mapi_GetProps", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_SPropValue_CTR_dbl, + { &hf_mapi_SPropValue_CTR_dbl, { "Dbl", "mapi.SPropValue_CTR.dbl", FT_INT64, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenMessage_req_message_id, - { "Message Id", "mapi.OpenMessage_req.message_id", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_size, + { &hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_Release, + { "Mapi Release", "mapi.EcDoRpc_MAPI_REQ_UNION.mapi_Release", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_size, { "Size", "mapi.EcDoRpc.size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoConnect_session_nb, - { "Session Nb", "mapi.EcDoConnect.session_nb", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_pdu_len, + { &hf_mapi_ulEventType_fnevObjectDeleted, + { "Fnevobjectdeleted", "mapi.ulEventType.fnevObjectDeleted", FT_BOOLEAN, 16, TFS(&ulEventType_fnevObjectDeleted_tfs), ( 0x00000008 ), NULL, HFILL }}, + { &hf_mapi_EcDoConnect_unknown2, + { "Unknown2", "mapi.EcDoConnect.unknown2", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_Release, + { "Mapi Release", "mapi.EcDoRpc_MAPI_REPL_UNION.mapi_Release", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_OpenMessage_recipients_codepage, + { "Codepage", "mapi.OpenMessage_recipients.codepage", FT_UINT32, BASE_DEC, VALS(mapi_CODEPAGEID_vals), 0, NULL, HFILL }}, + { &hf_mapi_recipients_headers_prop_values, + { "Prop Values", "mapi.recipients_headers.prop_values", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_pdu_len, { "Length", "mapi.pdu.len", FT_UINT16, BASE_HEX, NULL, 0x0, "Size of the command PDU", HFILL }}, - { &hf_mapi_SPropValue_CTR_ft, - { "Ft", "mapi.SPropValue_CTR.ft", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_SPropValue_ulPropTag, - { "Ulproptag", "mapi.SPropValue.ulPropTag", FT_UINT32, BASE_DEC, VALS(mapi_MAPITAGS_vals), 0, NULL, HFILL }}, - { &hf_mapi_OpenMessage_recipients_RecipClass, - { "Recipclass", "mapi.OpenMessage_recipients.RecipClass", FT_UINT8, BASE_DEC, VALS(mapi_ulRecipClass_vals), 0, NULL, HFILL }}, - { &hf_mapi_EcRRegisterPushNotification_ulEventMask, - { "Uleventmask", "mapi.EcRRegisterPushNotification.ulEventMask", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, - { &hf_mapi_FILETIME_dwHighDateTime, - { "Dwhighdatetime", "mapi.FILETIME.dwHighDateTime", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_OpenFolder, - { "Mapi Openfolder", "mapi.EcDoRpc_MAPI_REPL_UNION.mapi_OpenFolder", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenMessage_req_message_permissions, + { &hf_mapi_OpenFolder_repl_unknown, + { "Unknown", "mapi.OpenFolder_repl.unknown", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_RecipExchange_organization_length, + { "Organization Length", "mapi.RecipExchange.organization_length", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_DATA_BLOB_length, + { "Length", "mapi.DATA_BLOB.length", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcRRegisterPushNotification_notif_len, + { "Notif Len", "mapi.EcRRegisterPushNotification.notif_len", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_GetProps_repl_prop_data, + { "Prop Data", "mapi.GetProps_repl.prop_data", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcRUnregisterPushNotification_unknown, + { "Unknown", "mapi.EcRUnregisterPushNotification.unknown", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_ulEventType_fnevObjectCreated, + { "Fnevobjectcreated", "mapi.ulEventType.fnevObjectCreated", FT_BOOLEAN, 16, TFS(&ulEventType_fnevObjectCreated_tfs), ( 0x00000004 ), NULL, HFILL }}, + { &hf_mapi_OpenMessage_req_message_permissions, { "Message Permissions", "mapi.OpenMessage_req.message_permissions", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_SPropValue_CTR_l, - { "L", "mapi.SPropValue_CTR.l", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_ulEventType_fnevReservedForMapi, - { "Fnevreservedformapi", "mapi.ulEventType.fnevReservedForMapi", FT_BOOLEAN, 16, TFS(&ulEventType_fnevReservedForMapi_tfs), ( 0x40000000 ), NULL, HFILL }}, - { &hf_mapi_EcDoConnect_user, - { "User", "mapi.EcDoConnect.user", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoConnect_unknown4, - { "Unknown4", "mapi.EcDoConnect.unknown4", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_MAPI_OPNUM, - { "Opnum", "mapi.EcDoRpc_MAPI_REQ.opnum", FT_UINT8, BASE_HEX, VALS(mapi_MAPI_OPNUM_vals), 0, NULL, HFILL }}, - { &hf_mapi_EcDoConnect_code_page, - { "Code Page", "mapi.EcDoConnect.code_page", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_handle, - { "Handle", "mapi.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_input_locale_method, - { "Method", "mapi.input_locale.method", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_input_locale_language, - { "Language", "mapi.input_locale.language", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_mapi_response, - { "Mapi Response", "mapi.EcDoRpc.mapi_response", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoConnect_store_version, - { "Store Version", "mapi.EcDoConnect.store_version", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_ulEventType_fnevObjectMoved, - { "Fnevobjectmoved", "mapi.ulEventType.fnevObjectMoved", FT_BOOLEAN, 16, TFS(&ulEventType_fnevObjectMoved_tfs), ( 0x00000020 ), NULL, HFILL }}, - { &hf_mapi_SPropValue_CTR_err, - { "Err", "mapi.SPropValue_CTR.err", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_ulEventType_fnevTableModified, + { &hf_mapi_EcDoConnect_input_locale, + { "Input Locale", "mapi.EcDoConnect.input_locale", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_GetProps_req_prop_count, + { "Prop Count", "mapi.GetProps_req.prop_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_RecipExchange_addr_type, + { "Addr Type", "mapi.RecipExchange.addr_type", FT_UINT8, BASE_DEC, VALS(mapi_addr_type_vals), 0, NULL, HFILL }}, + { &hf_mapi_EcRRegisterPushNotification_unknown2, + { "Unknown2", "mapi.EcRRegisterPushNotification.unknown2", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_MAPI_REPL_opnum, + { "Opnum", "mapi.EcDoRpc_MAPI_REPL.opnum", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_SPropValue_CTR_lpszW, + { "Lpszw", "mapi.SPropValue_CTR.lpszW", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_ulEventType_fnevTableModified, { "Fnevtablemodified", "mapi.ulEventType.fnevTableModified", FT_BOOLEAN, 16, TFS(&ulEventType_fnevTableModified_tfs), ( 0x00000100 ), NULL, HFILL }}, - { &hf_mapi_recipient_type, - { "Recipient Type", "mapi.recipients_headers.type", FT_UINT16, BASE_HEX, VALS(mapi_OM_recipient_type_vals), 0, NULL, HFILL }}, - { &hf_mapi_recipients_headers_prop_values, - { "Prop Values", "mapi.recipients_headers.prop_values", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_ulEventType_fnevExtended, - { "Fnevextended", "mapi.ulEventType.fnevExtended", FT_BOOLEAN, 16, TFS(&ulEventType_fnevExtended_tfs), ( 0x80000000 ), NULL, HFILL }}, - { &hf_mapi_opnum, - { "Operation", "mapi.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_property_types, - { "Value", "mapi.SPropValue.value", FT_UINT32, BASE_HEX, VALS(mapi_property_types_vals), 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REPL_UNION_mapi_Release, - { "Mapi Release", "mapi.EcDoRpc_MAPI_REPL_UNION.mapi_Release", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_recipient_displayname_7bit_lpszA, - { "Lpsza", "mapi.recipient_displayname_7bit.lpszA", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcRRegisterPushNotification_sockaddr_len, - { "Sockaddr Len", "mapi.EcRRegisterPushNotification.sockaddr_len", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcRRegisterPushNotification_notif_len, - { "Notif Len", "mapi.EcRRegisterPushNotification.notif_len", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoConnect_unknown3, - { "Unknown3", "mapi.EcDoConnect.unknown3", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenMessage_req_folder_handle_idx, - { "Folder Handle Idx", "mapi.OpenMessage_req.folder_handle_idx", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_SPropValue_CTR_d, - { "D", "mapi.SPropValue_CTR.d", FT_INT64, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenMsgStore, + { &hf_mapi_SPropValue_ulPropTag, + { "Ulproptag", "mapi.SPropValue.ulPropTag", FT_UINT32, BASE_DEC, VALS(mapi_MAPITAGS_vals), 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenMsgStore, { "Mapi Openmsgstore", "mapi.EcDoRpc_MAPI_REQ_UNION.mapi_OpenMsgStore", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_EcDoConnect_org_group, - { "Org Group", "mapi.EcDoConnect.org_group", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_mapi_OpenMessage_req_folder_id, + { &hf_mapi_SPropValue_CTR_b, + { "B", "mapi.SPropValue_CTR.b", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_MAPI_REPL_handle_idx, + { "Handle Idx", "mapi.EcDoRpc_MAPI_REPL.handle_idx", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_ulEventType_fnevNewMail, + { "Fnevnewmail", "mapi.ulEventType.fnevNewMail", FT_BOOLEAN, 16, TFS(&ulEventType_fnevNewMail_tfs), ( 0x00000002 ), NULL, HFILL }}, + { &hf_mapi_input_locale_method, + { "Method", "mapi.input_locale.method", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_ulEventType_fnevSearchComplete, + { "Fnevsearchcomplete", "mapi.ulEventType.fnevSearchComplete", FT_BOOLEAN, 16, TFS(&ulEventType_fnevSearchComplete_tfs), ( 0x00000080 ), NULL, HFILL }}, + { &hf_mapi_MAPI_OPNUM, + { "Opnum", "mapi.EcDoRpc_MAPI_REQ.opnum", FT_UINT8, BASE_HEX, VALS(mapi_MAPI_OPNUM_vals), 0, "NULL", HFILL }}, + { &hf_mapi_EcDoConnect_alloc_space, + { "Alloc Space", "mapi.EcDoConnect.alloc_space", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcRRegisterPushNotification_retval, + { "Retval", "mapi.EcRRegisterPushNotification.retval", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_OpenMsgStore_req_mailbox_str_size, + { "Mailbox Str Size", "mapi.OpenMsgStore_req.mailbox_str_size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_decrypted_data, + { "Decrypted data", "mapi.decrypted.data", FT_BYTES, BASE_NONE, NULL, 0, "NULL", HFILL }}, + { &hf_mapi_OpenMessage_req_folder_id, { "Folder Id", "mapi.OpenMessage_req.folder_id", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_mapi_ulEventType_fnevObjectModified, + { &hf_mapi_recipient_displayname_7bit_lpszA, + { "Lpsza", "mapi.recipient_displayname_7bit.lpszA", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_ulEventType_fnevObjectMoved, + { "Fnevobjectmoved", "mapi.ulEventType.fnevObjectMoved", FT_BOOLEAN, 16, TFS(&ulEventType_fnevObjectMoved_tfs), ( 0x00000020 ), NULL, HFILL }}, + { &hf_mapi_mapi_request_mapi_len, + { "Mapi Len", "mapi.mapi_request.mapi_len", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_ulEventType_fnevObjectModified, { "Fnevobjectmodified", "mapi.ulEventType.fnevObjectModified", FT_BOOLEAN, 16, TFS(&ulEventType_fnevObjectModified_tfs), ( 0x00000010 ), NULL, HFILL }}, + { &hf_mapi_MAPISTATUS_status, + { "MAPISTATUS", "mapi.MAPISTATUS_status", FT_UINT32, BASE_HEX, VALS(mapi_MAPISTATUS_vals), 0, NULL, HFILL }}, + { &hf_mapi_recipient_type_EXCHANGE, + { "Exchange", "mapi.recipient_type.EXCHANGE", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_MAPI_REQ_handle_idx, + { "Handle Idx", "mapi.EcDoRpc_MAPI_REQ.handle_idx", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_mapi_response_mapi_repl, + { "Mapi Repl", "mapi.mapi_response.mapi_repl", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoRpc_mapi_request, + { "Mapi Request", "mapi.EcDoRpc.mapi_request", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_LPSTR_lppszA, + { "Lppsza", "mapi.LPSTR.lppszA", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_recipient_type, + { "Recipient Type", "mapi.recipients_headers.type", FT_UINT16, BASE_HEX, VALS(mapi_OM_recipient_type_vals), 0, "NULL", HFILL }}, + { &hf_mapi_EcDoRpc_MAPI_REQ_UNION_mapi_OpenFolder, + { "Mapi Openfolder", "mapi.EcDoRpc_MAPI_REQ_UNION.mapi_OpenFolder", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_mapi_EcDoConnect_session_nb, + { "Session Nb", "mapi.EcDoConnect.session_nb", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_ulEventType_fnevExtended, + { "Fnevextended", "mapi.ulEventType.fnevExtended", FT_BOOLEAN, 16, TFS(&ulEventType_fnevExtended_tfs), ( 0x80000000 ), NULL, HFILL }}, + { &hf_mapi_OpenMsgStore_req_row, + { "Row", "mapi.OpenMsgStore_req.row", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_mapi_SRow_ulRowFlags, + { "Ulrowflags", "mapi.SRow.ulRowFlags", FT_UINT8, BASE_DEC, VALS(mapi_ulRowFlags_vals), 0, NULL, HFILL }}, + { &hf_mapi_recipients_headers_layout, + { "Layout", "mapi.recipients_headers.layout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, }; static gint *ett[] = { - &ett_mapi_mapi_request, - &ett_mapi_EcDoRpc_MAPI_REQ, - &ett_mapi_OpenFolder_req, - &ett_mapi_GetProps_req, - &ett_mapi_OpenMsgStore_req, - &ett_mapi_mapi_response, - &ett_mapi_EcDoRpc_MAPI_REPL, - &ett_mapi_OpenFolder_repl, - &ett_mapi_GetProps_repl, &ett_dcerpc_mapi, &ett_mapi_DATA_BLOB, &ett_mapi_input_locale, @@ -10370,6 +10893,8 @@ void proto_register_dcerpc_mapi(void) &ett_mapi_SRow, &ett_mapi_Release_req, &ett_mapi_Release_repl, + &ett_mapi_OpenFolder_req, + &ett_mapi_OpenFolder_repl, &ett_mapi_OpenMessage_req, &ett_mapi_RecipExchange, &ett_mapi_RecipSMTP, @@ -10377,9 +10902,16 @@ void proto_register_dcerpc_mapi(void) &ett_mapi_recipient_displayname_7bit, &ett_mapi_recipients_headers, &ett_mapi_OpenMessage_recipients, + &ett_mapi_GetProps_req, + &ett_mapi_GetProps_repl, &ett_mapi_ulEventType, + &ett_mapi_OpenMsgStore_req, &ett_mapi_EcDoRpc_MAPI_REQ_UNION, &ett_mapi_EcDoRpc_MAPI_REPL_UNION, + &ett_mapi_EcDoRpc_MAPI_REQ, + &ett_mapi_EcDoRpc_MAPI_REPL, + &ett_mapi_mapi_request, + &ett_mapi_mapi_response, }; proto_dcerpc_mapi = proto_register_protocol("Exchange 5.5 EMSMDB", "MAPI", "mapi"); |