summaryrefslogtreecommitdiff
path: root/plugins/profinet
diff options
context:
space:
mode:
authorBirol Capa <birol.capa@siemens.com>2016-09-27 17:36:28 +0300
committerAnders Broman <a.broman58@gmail.com>2016-10-12 03:45:38 +0000
commit50ddeaadf9fa300858a0b02cf451ade5ce443d98 (patch)
tree9946d17b4e78f79850fb617f8fae0ba12fc92990 /plugins/profinet
parent31a35aa9e6d48ea1ee179b26c1b11d7e6e8079a1 (diff)
downloadwireshark-50ddeaadf9fa300858a0b02cf451ade5ce443d98.tar.gz
PROFINET: Don't display expert information when implicit AR is used.
According to specification: Value(UUID): 00000000-0000-0000-0000-000000000000 Meaning: Reserved Use: The value NIL indicates the usage of the implicit AR. Change-Id: Iea807f14bf6da36700b778a1383ebd970aa105a5 Reviewed-on: https://code.wireshark.org/review/17951 Reviewed-by: Michael Mann <mmann78@netscape.net> Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'plugins/profinet')
-rw-r--r--plugins/profinet/packet-dcerpc-pn-io.c40
1 files changed, 19 insertions, 21 deletions
diff --git a/plugins/profinet/packet-dcerpc-pn-io.c b/plugins/profinet/packet-dcerpc-pn-io.c
index 3128cfcec8..859c381ab9 100644
--- a/plugins/profinet/packet-dcerpc-pn-io.c
+++ b/plugins/profinet/packet-dcerpc-pn-io.c
@@ -101,6 +101,7 @@ static int proto_pn_io_device = -1;
static int proto_pn_io_controller = -1;
static int proto_pn_io_supervisor = -1;
static int proto_pn_io_parameterserver = -1;
+static int proto_pn_io_implicitar = -1;
static int hf_pn_io_opnum = -1;
static int hf_pn_io_reserved16 = -1;
@@ -805,6 +806,13 @@ static guint16 ver_pn_io_supervisor = 1;
static e_guid_t uuid_pn_io_parameterserver = { 0xDEA00004, 0x6C97, 0x11D1, { 0x82, 0x71, 0x00, 0xA0, 0x24, 0x42, 0xDF, 0x7D } };
static guint16 ver_pn_io_parameterserver = 1;
+/* According to specification:
+ * Value(UUID): 00000000-0000-0000-0000-000000000000
+ * Meaning: Reserved
+ * Use: The value NIL indicates the usage of the implicit AR.
+ */
+static e_guid_t uuid_pn_io_implicitar = { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } };
+static guint16 ver_pn_io_implicitar = 1;
/* PNIO Preference Variables */
gboolean pnio_ps_selection = TRUE;
@@ -4571,10 +4579,8 @@ dissect_IODWriteReqHeader_block(tvbuff_t *tvb, int offset,
offset = dissect_ReadWrite_header(tvb, offset, pinfo, tree, item, drep, u16Index, &aruuid);
+ /* The value NIL indicates the usage of the implicit AR*/
*ar = pnio_ar_find_by_aruuid(pinfo, &aruuid);
- if (*ar == NULL) {
- expert_add_info_format(pinfo, item, &ei_pn_io_ar_info_not_found, "IODWriteReq: AR information not found!");
- }
offset = dissect_dcerpc_uint32(tvb, offset, pinfo, tree, drep,
hf_pn_io_record_data_length, u32RecDataLen);
@@ -4614,10 +4620,8 @@ dissect_IODReadReqHeader_block(tvbuff_t *tvb, int offset,
offset = dissect_ReadWrite_header(tvb, offset, pinfo, tree, item, drep, u16Index, &aruuid);
+ /* The value NIL indicates the usage of the implicit AR*/
*ar = pnio_ar_find_by_aruuid(pinfo, &aruuid);
- if (*ar == NULL) {
- expert_add_info_format(pinfo, item, &ei_pn_io_ar_info_not_found, "IODReadReq: AR information not found!");
- }
offset = dissect_dcerpc_uint32(tvb, offset, pinfo, tree, drep,
hf_pn_io_record_data_length, u32RecDataLen);
@@ -4661,10 +4665,8 @@ dissect_IODWriteResHeader_block(tvbuff_t *tvb, int offset,
offset = dissect_ReadWrite_header(tvb, offset, pinfo, tree, item, drep, u16Index, &aruuid);
+ /* The value NIL indicates the usage of the implicit AR*/
*ar = pnio_ar_find_by_aruuid(pinfo, &aruuid);
- if (*ar == NULL) {
- expert_add_info_format(pinfo, item, &ei_pn_io_ar_info_not_found, "IODWriteRes: AR information not found!");
- }
offset = dissect_dcerpc_uint32(tvb, offset, pinfo, tree, drep,
hf_pn_io_record_data_length, u32RecDataLen);
@@ -4713,10 +4715,8 @@ dissect_IODReadResHeader_block(tvbuff_t *tvb, int offset,
offset = dissect_ReadWrite_header(tvb, offset, pinfo, tree, item, drep, u16Index, &aruuid);
+ /* The value NIL indicates the usage of the implicit AR*/
*ar = pnio_ar_find_by_aruuid(pinfo, &aruuid);
- if (*ar == NULL) {
- expert_add_info_format(pinfo, item, &ei_pn_io_ar_info_not_found, "IODReadRes: AR information not found!");
- }
offset = dissect_dcerpc_uint32(tvb, offset, pinfo, tree, drep,
hf_pn_io_record_data_length, u32RecDataLen);
@@ -4766,10 +4766,8 @@ dissect_ControlConnect_block(tvbuff_t *tvb, int offset,
offset = dissect_dcerpc_uuid_t(tvb, offset, pinfo, tree, drep,
hf_pn_io_ar_uuid, &ar_uuid);
+ /* The value NIL indicates the usage of the implicit AR*/
*ar = pnio_ar_find_by_aruuid(pinfo, &ar_uuid);
- if (*ar == NULL) {
- expert_add_info_format(pinfo, item, &ei_pn_io_ar_info_not_found, "ControlConnect: AR information not found!");
- }
offset = dissect_dcerpc_uint16(tvb, offset, pinfo, tree, drep,
hf_pn_io_sessionkey, &u16SessionKey);
@@ -4862,10 +4860,9 @@ dissect_ControlBlockPrmBegin(tvbuff_t *tvb, int offset,
/* ARUUID */
offset = dissect_dcerpc_uuid_t(tvb, offset, pinfo, tree, drep, hf_pn_io_ar_uuid, &ar_uuid);
+ /* The value NIL indicates the usage of the implicit AR*/
*ar = pnio_ar_find_by_aruuid(pinfo, &ar_uuid);
- if (*ar == NULL) {
- expert_add_info_format(pinfo, item, &ei_pn_io_ar_info_not_found, "ControlBlockPrmBegin: AR information not found! (partial capture?)");
- }
+
/* SessionKey */
offset = dissect_dcerpc_uint16(tvb, offset, pinfo, tree, drep, hf_pn_io_sessionkey, &u16SessionKey);
@@ -7738,10 +7735,9 @@ dissect_ARBlockRes_block(tvbuff_t *tvb, int offset,
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5],
u16UDPRTPort);
+ /* The value NIL indicates the usage of the implicit AR*/
par = pnio_ar_find_by_aruuid(pinfo, &uuid);
- if (par == NULL) {
- expert_add_info_format(pinfo, item, &ei_pn_io_ar_info_not_found, "ARBlockRes: AR information not found!");
- } else {
+ if (par != NULL) {
memcpy( (void *) (&par->devicemac), mac, sizeof(par->controllermac));
}
*ar = par;
@@ -13914,6 +13910,7 @@ proto_register_pn_io (void)
proto_pn_io_controller = proto_register_protocol ("PROFINET IO (Controller)", "PNIO (Controller Interface)", "pn_io_controller");
proto_pn_io_supervisor = proto_register_protocol ("PROFINET IO (Supervisor)", "PNIO (Supervisor Interface)", "pn_io_supervisor");
proto_pn_io_parameterserver = proto_register_protocol ("PROFINET IO (Parameter Server)", "PNIO (Parameter Server Interface)", "pn_io_parameterserver");
+ proto_pn_io_implicitar = proto_register_protocol("PROFINET IO (Implicit Ar)", "PNIO (Implicit Ar)", "pn_io_implicitar");
proto_register_field_array (proto_pn_io, hf, array_length (hf));
proto_register_subtree_array (ett, array_length (ett));
@@ -13954,6 +13951,7 @@ proto_reg_handoff_pn_io (void)
dcerpc_init_uuid (proto_pn_io_controller, ett_pn_io, &uuid_pn_io_controller, ver_pn_io_controller, pn_io_dissectors, hf_pn_io_opnum);
dcerpc_init_uuid (proto_pn_io_supervisor, ett_pn_io, &uuid_pn_io_supervisor, ver_pn_io_supervisor, pn_io_dissectors, hf_pn_io_opnum);
dcerpc_init_uuid (proto_pn_io_parameterserver, ett_pn_io, &uuid_pn_io_parameterserver, ver_pn_io_parameterserver, pn_io_dissectors, hf_pn_io_opnum);
+ dcerpc_init_uuid (proto_pn_io_implicitar, ett_pn_io, &uuid_pn_io_implicitar, ver_pn_io_implicitar, pn_io_dissectors, hf_pn_io_opnum);
heur_dissector_add("pn_rt", dissect_PNIO_heur, "PROFINET IO", "pn_io_pn_rt", proto_pn_io, HEURISTIC_ENABLE);
}