wireshark/epan/dissectors/packet-dcerpc-rfr.c
Guy Harris 990d51a7f7 Revert "PIDL: Remove _U_ and remove unused-parameter via pragma"
This reverts commit db4f7fcdea.

That doesn't work with the compiler being used on the OS X buildbot; that compiler is probably some version of llvm-gcc, which might be based on an older version of GCC without support for that pragma, or might not support it properly courtesy of the GCC front end and the LLVM back end not quite fitting together

Change-Id: I6cd5f1322b4872ef0c4eb5695f021cec00ba85b7
Reviewed-on: https://code.wireshark.org/review/15246
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2016-05-02 19:02:29 +00:00

500 lines
23 KiB
C

/* DO NOT EDIT
This file was automatically generated by Pidl
from rfr.idl and rfr.cnf.
Pidl is a perl based IDL compiler for DCE/RPC idl files.
It is maintained by the Samba team, not the Wireshark team.
Instructions on how to download and install Pidl can be
found at https://wiki.wireshark.org/Pidl
*/
#include "config.h"
#include <glib.h>
#include <string.h>
#include <epan/packet.h>
#include "packet-dcerpc.h"
#include "packet-dcerpc-nt.h"
#include "packet-windows-common.h"
#include "packet-dcerpc-rfr.h"
void proto_register_dcerpc_rfr(void);
void proto_reg_handoff_dcerpc_rfr(void);
/* Ett declarations */
static gint ett_dcerpc_rfr = -1;
/* Header field declarations */
static gint hf_rfr_MAPISTATUS_status = -1;
static gint hf_rfr_RfrGetFQDNFromLegacyDN_cbMailboxServerDN = -1;
static gint hf_rfr_RfrGetFQDNFromLegacyDN_ppszServerFQDN = -1;
static gint hf_rfr_RfrGetFQDNFromLegacyDN_szMailboxServerDN = -1;
static gint hf_rfr_RfrGetFQDNFromLegacyDN_ulFlags = -1;
static gint hf_rfr_RfrGetNewDSA_pUserDN = -1;
static gint hf_rfr_RfrGetNewDSA_ppszServer = -1;
static gint hf_rfr_RfrGetNewDSA_ppszUnused = -1;
static gint hf_rfr_RfrGetNewDSA_ulFlags = -1;
static gint hf_rfr_opnum = -1;
static gint proto_dcerpc_rfr = -1;
/* Version information */
static e_guid_t uuid_dcerpc_rfr = {
0x1544f5e0, 0x613c, 0x11d1,
{ 0x93, 0xdf, 0x00, 0xc0, 0x4f, 0xd7, 0xbd, 0x09 }
};
static guint16 ver_dcerpc_rfr = 1;
const value_string rfr_MAPISTATUS_vals[] = {
{ MAPI_E_SUCCESS, "MAPI_E_SUCCESS" },
{ MAPI_E_NO_SUPPORT, "MAPI_E_NO_SUPPORT" },
{ MAPI_E_BAD_CHARWIDTH, "MAPI_E_BAD_CHARWIDTH" },
{ MAPI_E_STRING_TOO_LONG, "MAPI_E_STRING_TOO_LONG" },
{ MAPI_E_UNKNOWN_FLAGS, "MAPI_E_UNKNOWN_FLAGS" },
{ MAPI_E_INVALID_ENTRYID, "MAPI_E_INVALID_ENTRYID" },
{ MAPI_E_INVALID_OBJECT, "MAPI_E_INVALID_OBJECT" },
{ MAPI_E_OBJECT_CHANGED, "MAPI_E_OBJECT_CHANGED" },
{ MAPI_E_OBJECT_DELETED, "MAPI_E_OBJECT_DELETED" },
{ MAPI_E_BUSY, "MAPI_E_BUSY" },
{ MAPI_E_NOT_ENOUGH_DISK, "MAPI_E_NOT_ENOUGH_DISK" },
{ MAPI_E_NOT_ENOUGH_RESOURCES, "MAPI_E_NOT_ENOUGH_RESOURCES" },
{ MAPI_E_NOT_FOUND, "MAPI_E_NOT_FOUND" },
{ MAPI_E_VERSION, "MAPI_E_VERSION" },
{ MAPI_E_LOGON_FAILED, "MAPI_E_LOGON_FAILED" },
{ MAPI_E_SESSION_LIMIT, "MAPI_E_SESSION_LIMIT" },
{ MAPI_E_USER_CANCEL, "MAPI_E_USER_CANCEL" },
{ MAPI_E_UNABLE_TO_ABORT, "MAPI_E_UNABLE_TO_ABORT" },
{ MAPI_E_NETWORK_ERROR, "MAPI_E_NETWORK_ERROR" },
{ MAPI_E_DISK_ERROR, "MAPI_E_DISK_ERROR" },
{ MAPI_E_TOO_COMPLEX, "MAPI_E_TOO_COMPLEX" },
{ MAPI_E_BAD_COLUMN, "MAPI_E_BAD_COLUMN" },
{ MAPI_E_EXTENDED_ERROR, "MAPI_E_EXTENDED_ERROR" },
{ MAPI_E_COMPUTED, "MAPI_E_COMPUTED" },
{ MAPI_E_CORRUPT_DATA, "MAPI_E_CORRUPT_DATA" },
{ MAPI_E_UNCONFIGURED, "MAPI_E_UNCONFIGURED" },
{ MAPI_E_FAILONEPROVIDER, "MAPI_E_FAILONEPROVIDER" },
{ MAPI_E_UNKNOWN_CPID, "MAPI_E_UNKNOWN_CPID" },
{ MAPI_E_UNKNOWN_LCID, "MAPI_E_UNKNOWN_LCID" },
{ MAPI_E_PASSWORD_CHANGE_REQUIRED, "MAPI_E_PASSWORD_CHANGE_REQUIRED" },
{ MAPI_E_PASSWORD_EXPIRED, "MAPI_E_PASSWORD_EXPIRED" },
{ MAPI_E_INVALID_WORKSTATION_ACCOUNT, "MAPI_E_INVALID_WORKSTATION_ACCOUNT" },
{ MAPI_E_INVALID_ACCESS_TIME, "MAPI_E_INVALID_ACCESS_TIME" },
{ MAPI_E_ACCOUNT_DISABLED, "MAPI_E_ACCOUNT_DISABLED" },
{ MAPI_E_END_OF_SESSION, "MAPI_E_END_OF_SESSION" },
{ MAPI_E_UNKNOWN_ENTRYID, "MAPI_E_UNKNOWN_ENTRYID" },
{ MAPI_E_MISSING_REQUIRED_COLUMN, "MAPI_E_MISSING_REQUIRED_COLUMN" },
{ MAPI_W_NO_SERVICE, "MAPI_W_NO_SERVICE" },
{ MAPI_E_BAD_VALUE, "MAPI_E_BAD_VALUE" },
{ MAPI_E_INVALID_TYPE, "MAPI_E_INVALID_TYPE" },
{ MAPI_E_TYPE_NO_SUPPORT, "MAPI_E_TYPE_NO_SUPPORT" },
{ MAPI_E_UNEXPECTED_TYPE, "MAPI_E_UNEXPECTED_TYPE" },
{ MAPI_E_TOO_BIG, "MAPI_E_TOO_BIG" },
{ MAPI_E_DECLINE_COPY, "MAPI_E_DECLINE_COPY" },
{ MAPI_E_UNEXPECTED_ID, "MAPI_E_UNEXPECTED_ID" },
{ MAPI_W_ERRORS_RETURNED, "MAPI_W_ERRORS_RETURNED" },
{ MAPI_E_UNABLE_TO_COMPLETE, "MAPI_E_UNABLE_TO_COMPLETE" },
{ MAPI_E_TIMEOUT, "MAPI_E_TIMEOUT" },
{ MAPI_E_TABLE_EMPTY, "MAPI_E_TABLE_EMPTY" },
{ MAPI_E_TABLE_TOO_BIG, "MAPI_E_TABLE_TOO_BIG" },
{ MAPI_E_INVALID_BOOKMARK, "MAPI_E_INVALID_BOOKMARK" },
{ MAPI_W_POSITION_CHANGED, "MAPI_W_POSITION_CHANGED" },
{ MAPI_W_APPROX_COUNT, "MAPI_W_APPROX_COUNT" },
{ MAPI_E_WAIT, "MAPI_E_WAIT" },
{ MAPI_E_CANCEL, "MAPI_E_CANCEL" },
{ MAPI_E_NOT_ME, "MAPI_E_NOT_ME" },
{ MAPI_W_CANCEL_MESSAGE, "MAPI_W_CANCEL_MESSAGE" },
{ MAPI_E_CORRUPT_STORE, "MAPI_E_CORRUPT_STORE" },
{ MAPI_E_NOT_IN_QUEUE, "MAPI_E_NOT_IN_QUEUE" },
{ MAPI_E_NO_SUPPRESS, "MAPI_E_NO_SUPPRESS" },
{ MAPI_E_COLLISION, "MAPI_E_COLLISION" },
{ MAPI_E_NOT_INITIALIZED, "MAPI_E_NOT_INITIALIZED" },
{ MAPI_E_NON_STANDARD, "MAPI_E_NON_STANDARD" },
{ MAPI_E_NO_RECIPIENTS, "MAPI_E_NO_RECIPIENTS" },
{ MAPI_E_SUBMITTED, "MAPI_E_SUBMITTED" },
{ MAPI_E_HAS_FOLDERS, "MAPI_E_HAS_FOLDERS" },
{ MAPI_E_HAS_MESAGES, "MAPI_E_HAS_MESAGES" },
{ MAPI_E_FOLDER_CYCLE, "MAPI_E_FOLDER_CYCLE" },
{ MAPI_W_PARTIAL_COMPLETION, "MAPI_W_PARTIAL_COMPLETION" },
{ MAPI_E_AMBIGUOUS_RECIP, "MAPI_E_AMBIGUOUS_RECIP" },
{ MAPI_E_RESERVED, "MAPI_E_RESERVED" },
{ 0, NULL }
};
static int rfr_dissect_element_RfrGetNewDSA_ulFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetNewDSA_pUserDN(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetNewDSA_pUserDN_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetNewDSA_ppszUnused(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetNewDSA_ppszUnused_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetNewDSA_ppszUnused__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetNewDSA_ppszServer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetNewDSA_ppszServer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetNewDSA_ppszServer__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetFQDNFromLegacyDN_ulFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetFQDNFromLegacyDN_cbMailboxServerDN(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
static int rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_);
/* IDL: enum { */
/* IDL: MAPI_E_SUCCESS=0x00000000, */
/* IDL: MAPI_E_NO_SUPPORT=0x80040102, */
/* IDL: MAPI_E_BAD_CHARWIDTH=0x80040103, */
/* IDL: MAPI_E_STRING_TOO_LONG=0x80040105, */
/* IDL: MAPI_E_UNKNOWN_FLAGS=0x80040106, */
/* IDL: MAPI_E_INVALID_ENTRYID=0x80040107, */
/* IDL: MAPI_E_INVALID_OBJECT=0x80040108, */
/* IDL: MAPI_E_OBJECT_CHANGED=0x80040109, */
/* IDL: MAPI_E_OBJECT_DELETED=0x8004010A, */
/* IDL: MAPI_E_BUSY=0x8004010B, */
/* IDL: MAPI_E_NOT_ENOUGH_DISK=0x8004010D, */
/* IDL: MAPI_E_NOT_ENOUGH_RESOURCES=0x8004010E, */
/* IDL: MAPI_E_NOT_FOUND=0x8004010F, */
/* IDL: MAPI_E_VERSION=0x80040110, */
/* IDL: MAPI_E_LOGON_FAILED=0x80040111, */
/* IDL: MAPI_E_SESSION_LIMIT=0x80040112, */
/* IDL: MAPI_E_USER_CANCEL=0x80040113, */
/* IDL: MAPI_E_UNABLE_TO_ABORT=0x80040114, */
/* IDL: MAPI_E_NETWORK_ERROR=0x80040115, */
/* IDL: MAPI_E_DISK_ERROR=0x80040116, */
/* IDL: MAPI_E_TOO_COMPLEX=0x80040117, */
/* IDL: MAPI_E_BAD_COLUMN=0x80040118, */
/* IDL: MAPI_E_EXTENDED_ERROR=0x80040119, */
/* IDL: MAPI_E_COMPUTED=0x8004011A, */
/* IDL: MAPI_E_CORRUPT_DATA=0x8004011B, */
/* IDL: MAPI_E_UNCONFIGURED=0x8004011C, */
/* IDL: MAPI_E_FAILONEPROVIDER=0x8004011D, */
/* IDL: MAPI_E_UNKNOWN_CPID=0x8004011E, */
/* IDL: MAPI_E_UNKNOWN_LCID=0x8004011F, */
/* IDL: MAPI_E_PASSWORD_CHANGE_REQUIRED=0x80040120, */
/* IDL: MAPI_E_PASSWORD_EXPIRED=0x80040121, */
/* IDL: MAPI_E_INVALID_WORKSTATION_ACCOUNT=0x80040122, */
/* IDL: MAPI_E_INVALID_ACCESS_TIME=0x80040123, */
/* IDL: MAPI_E_ACCOUNT_DISABLED=0x80040124, */
/* IDL: MAPI_E_END_OF_SESSION=0x80040200, */
/* IDL: MAPI_E_UNKNOWN_ENTRYID=0x80040201, */
/* IDL: MAPI_E_MISSING_REQUIRED_COLUMN=0x80040202, */
/* IDL: MAPI_W_NO_SERVICE=0x80040203, */
/* IDL: MAPI_E_BAD_VALUE=0x80040301, */
/* IDL: MAPI_E_INVALID_TYPE=0x80040302, */
/* IDL: MAPI_E_TYPE_NO_SUPPORT=0x80040303, */
/* IDL: MAPI_E_UNEXPECTED_TYPE=0x80040304, */
/* IDL: MAPI_E_TOO_BIG=0x80040305, */
/* IDL: MAPI_E_DECLINE_COPY=0x80040306, */
/* IDL: MAPI_E_UNEXPECTED_ID=0x80040307, */
/* IDL: MAPI_W_ERRORS_RETURNED=0x80040380, */
/* IDL: MAPI_E_UNABLE_TO_COMPLETE=0x80040400, */
/* IDL: MAPI_E_TIMEOUT=0x80040401, */
/* IDL: MAPI_E_TABLE_EMPTY=0x80040402, */
/* IDL: MAPI_E_TABLE_TOO_BIG=0x80040403, */
/* IDL: MAPI_E_INVALID_BOOKMARK=0x80040405, */
/* IDL: MAPI_W_POSITION_CHANGED=0x80040481, */
/* IDL: MAPI_W_APPROX_COUNT=0x80040482, */
/* IDL: MAPI_E_WAIT=0x80040500, */
/* IDL: MAPI_E_CANCEL=0x80040501, */
/* IDL: MAPI_E_NOT_ME=0x80040502, */
/* IDL: MAPI_W_CANCEL_MESSAGE=0x80040580, */
/* IDL: MAPI_E_CORRUPT_STORE=0x80040600, */
/* IDL: MAPI_E_NOT_IN_QUEUE=0x80040601, */
/* IDL: MAPI_E_NO_SUPPRESS=0x80040602, */
/* IDL: MAPI_E_COLLISION=0x80040604, */
/* IDL: MAPI_E_NOT_INITIALIZED=0x80040605, */
/* IDL: MAPI_E_NON_STANDARD=0x80040606, */
/* IDL: MAPI_E_NO_RECIPIENTS=0x80040607, */
/* IDL: MAPI_E_SUBMITTED=0x80040608, */
/* IDL: MAPI_E_HAS_FOLDERS=0x80040609, */
/* IDL: MAPI_E_HAS_MESAGES=0x8004060A, */
/* IDL: MAPI_E_FOLDER_CYCLE=0x8004060B, */
/* IDL: MAPI_W_PARTIAL_COMPLETION=0x80040680, */
/* IDL: MAPI_E_AMBIGUOUS_RECIP=0x80040700, */
/* IDL: MAPI_E_RESERVED=0xFFFFFFFF, */
/* IDL: } */
int
rfr_dissect_enum_MAPISTATUS(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_)
{
guint32 parameter=0;
if (param) {
parameter = *param;
}
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
if (param) {
*param = parameter;
}
return offset;
}
static int
rfr_dissect_element_RfrGetNewDSA_ulFlags(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_rfr_RfrGetNewDSA_ulFlags, 0);
return offset;
}
static int
rfr_dissect_element_RfrGetNewDSA_pUserDN(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, rfr_dissect_element_RfrGetNewDSA_pUserDN_, NDR_POINTER_REF, "Pointer to Puserdn (uint8)",hf_rfr_RfrGetNewDSA_pUserDN);
return offset;
}
static int
rfr_dissect_element_RfrGetNewDSA_pUserDN_(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_rfr_RfrGetNewDSA_pUserDN, FALSE, &data);
proto_item_append_text(tree, ": %s", data);
return offset;
}
static int
rfr_dissect_element_RfrGetNewDSA_ppszUnused(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, rfr_dissect_element_RfrGetNewDSA_ppszUnused_, NDR_POINTER_UNIQUE, "Pointer to Ppszunused (uint8)",hf_rfr_RfrGetNewDSA_ppszUnused);
return offset;
}
static int
rfr_dissect_element_RfrGetNewDSA_ppszUnused_(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, rfr_dissect_element_RfrGetNewDSA_ppszUnused__, NDR_POINTER_UNIQUE, "Pointer to Ppszunused (uint8)",hf_rfr_RfrGetNewDSA_ppszUnused);
return offset;
}
static int
rfr_dissect_element_RfrGetNewDSA_ppszUnused__(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_rfr_RfrGetNewDSA_ppszUnused, FALSE, &data);
proto_item_append_text(tree, ": %s", data);
return offset;
}
static int
rfr_dissect_element_RfrGetNewDSA_ppszServer(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, rfr_dissect_element_RfrGetNewDSA_ppszServer_, NDR_POINTER_UNIQUE, "Pointer to Ppszserver (uint8)",hf_rfr_RfrGetNewDSA_ppszServer);
return offset;
}
static int
rfr_dissect_element_RfrGetNewDSA_ppszServer_(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, rfr_dissect_element_RfrGetNewDSA_ppszServer__, NDR_POINTER_UNIQUE, "Pointer to Ppszserver (uint8)",hf_rfr_RfrGetNewDSA_ppszServer);
return offset;
}
static int
rfr_dissect_element_RfrGetNewDSA_ppszServer__(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_rfr_RfrGetNewDSA_ppszServer, FALSE, &data);
proto_item_append_text(tree, ": %s", data);
return offset;
}
/* IDL: MAPISTATUS RfrGetNewDSA( */
/* IDL: [in] uint32 ulFlags, */
/* IDL: [charset(DOS)] [in] [ref] uint8 *pUserDN, */
/* IDL: [charset(DOS)] [in] [out] [unique(1)] uint8 **ppszUnused, */
/* IDL: [charset(DOS)] [in] [out] [unique(1)] uint8 **ppszServer */
/* IDL: ); */
static int
rfr_dissect_RfrGetNewDSA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
{
guint32 status;
di->dcerpc_procedure_name="RfrGetNewDSA";
offset = rfr_dissect_element_RfrGetNewDSA_ppszUnused(tvb, offset, pinfo, tree, di, drep);
offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
offset = rfr_dissect_element_RfrGetNewDSA_ppszServer(tvb, offset, pinfo, tree, di, drep);
offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_rfr_MAPISTATUS_status, &status);
if (status != 0)
col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str(status, rfr_MAPISTATUS_vals, "Unknown MAPISTATUS error 0x%08x"));
return offset;
}
static int
rfr_dissect_RfrGetNewDSA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
{
di->dcerpc_procedure_name="RfrGetNewDSA";
offset = rfr_dissect_element_RfrGetNewDSA_ulFlags(tvb, offset, pinfo, tree, di, drep);
offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
offset = rfr_dissect_element_RfrGetNewDSA_pUserDN(tvb, offset, pinfo, tree, di, drep);
offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
offset = rfr_dissect_element_RfrGetNewDSA_ppszUnused(tvb, offset, pinfo, tree, di, drep);
offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
offset = rfr_dissect_element_RfrGetNewDSA_ppszServer(tvb, offset, pinfo, tree, di, drep);
offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
return offset;
}
static int
rfr_dissect_element_RfrGetFQDNFromLegacyDN_ulFlags(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_rfr_RfrGetFQDNFromLegacyDN_ulFlags, 0);
return offset;
}
static int
rfr_dissect_element_RfrGetFQDNFromLegacyDN_cbMailboxServerDN(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_rfr_RfrGetFQDNFromLegacyDN_cbMailboxServerDN, 0);
return offset;
}
static int
rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN(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, rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN_, NDR_POINTER_REF, "Pointer to Szmailboxserverdn (uint8)",hf_rfr_RfrGetFQDNFromLegacyDN_szMailboxServerDN);
return offset;
}
static int
rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN_(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_rfr_RfrGetFQDNFromLegacyDN_szMailboxServerDN, FALSE, &data);
proto_item_append_text(tree, ": %s", data);
return offset;
}
static int
rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN(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, rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN_, NDR_POINTER_REF, "Pointer to Ppszserverfqdn (uint8)",hf_rfr_RfrGetFQDNFromLegacyDN_ppszServerFQDN);
return offset;
}
static int
rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN_(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, rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN__, NDR_POINTER_UNIQUE, "Pointer to Ppszserverfqdn (uint8)",hf_rfr_RfrGetFQDNFromLegacyDN_ppszServerFQDN);
return offset;
}
static int
rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN__(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_rfr_RfrGetFQDNFromLegacyDN_ppszServerFQDN, FALSE, &data);
proto_item_append_text(tree, ": %s", data);
return offset;
}
/* IDL: MAPISTATUS RfrGetFQDNFromLegacyDN( */
/* IDL: [in] uint32 ulFlags, */
/* IDL: [in] [range(10,1024)] uint32 cbMailboxServerDN, */
/* IDL: [charset(DOS)] [in] [ref] [size_is(cbMailboxServerDN)] uint8 *szMailboxServerDN, */
/* IDL: [charset(DOS)] [out] [ref] uint8 **ppszServerFQDN */
/* IDL: ); */
static int
rfr_dissect_RfrGetFQDNFromLegacyDN_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
{
guint32 status;
di->dcerpc_procedure_name="RfrGetFQDNFromLegacyDN";
offset = rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN(tvb, offset, pinfo, tree, di, drep);
offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_rfr_MAPISTATUS_status, &status);
if (status != 0)
col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str(status, rfr_MAPISTATUS_vals, "Unknown MAPISTATUS error 0x%08x"));
return offset;
}
static int
rfr_dissect_RfrGetFQDNFromLegacyDN_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
{
di->dcerpc_procedure_name="RfrGetFQDNFromLegacyDN";
offset = rfr_dissect_element_RfrGetFQDNFromLegacyDN_ulFlags(tvb, offset, pinfo, tree, di, drep);
offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
offset = rfr_dissect_element_RfrGetFQDNFromLegacyDN_cbMailboxServerDN(tvb, offset, pinfo, tree, di, drep);
offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
offset = rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN(tvb, offset, pinfo, tree, di, drep);
offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
return offset;
}
static dcerpc_sub_dissector rfr_dissectors[] = {
{ 0, "RfrGetNewDSA",
rfr_dissect_RfrGetNewDSA_request, rfr_dissect_RfrGetNewDSA_response},
{ 1, "RfrGetFQDNFromLegacyDN",
rfr_dissect_RfrGetFQDNFromLegacyDN_request, rfr_dissect_RfrGetFQDNFromLegacyDN_response},
{ 0, NULL, NULL, NULL }
};
void proto_register_dcerpc_rfr(void)
{
static hf_register_info hf[] = {
{ &hf_rfr_MAPISTATUS_status,
{ "MAPISTATUS", "rfr.MAPISTATUS_status", FT_UINT32, BASE_HEX, VALS(rfr_MAPISTATUS_vals), 0, NULL, HFILL }},
{ &hf_rfr_RfrGetFQDNFromLegacyDN_cbMailboxServerDN,
{ "Cbmailboxserverdn", "rfr.RfrGetFQDNFromLegacyDN.cbMailboxServerDN", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_rfr_RfrGetFQDNFromLegacyDN_ppszServerFQDN,
{ "Ppszserverfqdn", "rfr.RfrGetFQDNFromLegacyDN.ppszServerFQDN", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_rfr_RfrGetFQDNFromLegacyDN_szMailboxServerDN,
{ "Szmailboxserverdn", "rfr.RfrGetFQDNFromLegacyDN.szMailboxServerDN", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_rfr_RfrGetFQDNFromLegacyDN_ulFlags,
{ "Ulflags", "rfr.RfrGetFQDNFromLegacyDN.ulFlags", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_rfr_RfrGetNewDSA_pUserDN,
{ "Puserdn", "rfr.RfrGetNewDSA.pUserDN", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_rfr_RfrGetNewDSA_ppszServer,
{ "Ppszserver", "rfr.RfrGetNewDSA.ppszServer", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_rfr_RfrGetNewDSA_ppszUnused,
{ "Ppszunused", "rfr.RfrGetNewDSA.ppszUnused", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
{ &hf_rfr_RfrGetNewDSA_ulFlags,
{ "Ulflags", "rfr.RfrGetNewDSA.ulFlags", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
{ &hf_rfr_opnum,
{ "Operation", "rfr.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
};
static gint *ett[] = {
&ett_dcerpc_rfr,
};
proto_dcerpc_rfr = proto_register_protocol("Exchange 2003 Directory Request For Response", "RFR", "rfr");
proto_register_field_array(proto_dcerpc_rfr, hf, array_length (hf));
proto_register_subtree_array(ett, array_length(ett));
}
void proto_reg_handoff_dcerpc_rfr(void)
{
dcerpc_init_uuid(proto_dcerpc_rfr, ett_dcerpc_rfr,
&uuid_dcerpc_rfr, ver_dcerpc_rfr,
rfr_dissectors, hf_rfr_opnum);
}