aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorulfl <ulfl@f5534014-38df-0310-8fa8-9805f1628bb7>2006-04-26 20:13:33 +0000
committerulfl <ulfl@f5534014-38df-0310-8fa8-9805f1628bb7>2006-04-26 20:13:33 +0000
commit896a7dee21e383f3335e798284195acd9629408c (patch)
tree3fe6e448ba76d23c689a77ce7a7b981451901e7b /plugins
parent44e48f80730ddd2bfe527dfa63ac8f9ddb097d2e (diff)
minor enhancements
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@18009 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'plugins')
-rw-r--r--plugins/profinet/packet-dcerpc-pn-io.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/plugins/profinet/packet-dcerpc-pn-io.c b/plugins/profinet/packet-dcerpc-pn-io.c
index b2fcb18a71..17b470501e 100644
--- a/plugins/profinet/packet-dcerpc-pn-io.c
+++ b/plugins/profinet/packet-dcerpc-pn-io.c
@@ -121,6 +121,7 @@ static int hf_pn_io_alarmcr_tagheaderhigh = -1;
static int hf_pn_io_alarmcr_tagheaderlow = -1;
static int hf_pn_io_ar_uuid = -1;
+static int hf_pn_io_target_ar_uuid = -1;
static int hf_pn_io_api_tree = -1;
static int hf_pn_io_module_tree = -1;
static int hf_pn_io_submodule_tree = -1;
@@ -292,7 +293,7 @@ static const value_string pn_io_alarm_type[] = {
{ 0x0006, "Update" },
{ 0x0007, "Redundancy" },
{ 0x0008, "Controlled by supervisor" },
- { 0x0009, "Released by supervisor" },
+ { 0x0009, "Released" },
{ 0x000A, "Plug wrong submodule" },
{ 0x000B, "Return of submodule" },
/* 0x000C - 0x001F reserved */
@@ -686,9 +687,8 @@ dissect_Alarm_ack_block(tvbuff_t *tvb, int offset,
/* dissect the read/write header */
static int
dissect_ReadWrite_header(tvbuff_t *tvb, int offset,
- packet_info *pinfo, proto_tree *tree, guint8 *drep, guint16 *u16Index)
+ packet_info *pinfo, proto_tree *tree, guint8 *drep, guint16 *u16Index, e_uuid_t *aruuid)
{
- e_uuid_t uuid;
guint32 u32Api;
guint16 u16SlotNr;
guint16 u16SubslotNr;
@@ -698,7 +698,7 @@ dissect_ReadWrite_header(tvbuff_t *tvb, int offset,
hf_pn_io_seq_number, &u16SeqNr);
offset = dissect_dcerpc_uuid_t(tvb, offset, pinfo, tree, drep,
- hf_pn_io_ar_uuid, &uuid);
+ hf_pn_io_ar_uuid, aruuid);
offset = dissect_dcerpc_uint32(tvb, offset, pinfo, tree, drep,
hf_pn_io_api, &u32Api);
@@ -724,12 +724,19 @@ static int
dissect_ReadWrite_rqst_block(tvbuff_t *tvb, int offset,
packet_info *pinfo, proto_tree *tree, guint8 *drep, guint16 *u16Index, guint32 *u32RecDataLen)
{
+ e_uuid_t aruuid;
+ e_uuid_t null_uuid;
- offset = dissect_ReadWrite_header(tvb, offset, pinfo, tree, drep, u16Index);
+ offset = dissect_ReadWrite_header(tvb, offset, pinfo, tree, drep, u16Index, &aruuid);
offset = dissect_dcerpc_uint32(tvb, offset, pinfo, tree, drep,
hf_pn_io_record_data_length, u32RecDataLen);
- /* XXX: don't know how to handle the optional TargetARUUID */
+
+ memset(&null_uuid, 0, sizeof(e_uuid_t));
+ if(memcmp(&aruuid, &null_uuid, sizeof (e_uuid_t)) == 0) {
+ offset = dissect_dcerpc_uuid_t(tvb, offset, pinfo, tree, drep,
+ hf_pn_io_target_ar_uuid, &aruuid);
+ }
if (check_col(pinfo->cinfo, COL_INFO))
col_append_fstr(pinfo->cinfo, COL_INFO, ", %u bytes",
@@ -744,12 +751,13 @@ static int
dissect_ReadWrite_resp_block(tvbuff_t *tvb, int offset,
packet_info *pinfo, proto_tree *tree, guint8 *drep, guint16 *u16Index)
{
+ e_uuid_t aruuid;
guint32 u32RecDataLen;
guint16 u16AddVal1;
guint16 u16AddVal2;
- offset = dissect_ReadWrite_header(tvb, offset, pinfo, tree, drep, u16Index);
+ offset = dissect_ReadWrite_header(tvb, offset, pinfo, tree, drep, u16Index, &aruuid);
offset = dissect_dcerpc_uint32(tvb, offset, pinfo, tree, drep,
hf_pn_io_record_data_length, &u32RecDataLen);
@@ -2081,6 +2089,7 @@ static dcerpc_sub_dissector pn_io_dissectors[] = {
{ 2, "Read", dissect_IPNIO_Read_rqst, dissect_IPNIO_Read_resp },
{ 3, "Write", dissect_IPNIO_Write_rqst, dissect_IPNIO_Write_resp },
{ 4, "Control", dissect_IPNIO_Control_rqst, dissect_IPNIO_Control_resp },
+{ 5, "Read Implicit", dissect_IPNIO_Read_rqst, dissect_IPNIO_Read_resp },
{ 0, NULL, NULL, NULL }
};
@@ -2201,6 +2210,8 @@ proto_register_pn_io (void)
{ &hf_pn_io_ar_uuid,
{ "ARUUID", "pn_io.ar_uuid", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }},
+ { &hf_pn_io_target_ar_uuid,
+ { "TargetARUUID", "pn_io.target_ar_uuid", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }},
{ &hf_pn_io_api,
{ "API", "pn_io.api", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }},
{ &hf_pn_io_slot_nr,