diff options
-rw-r--r-- | plugins/profinet/packet-dcerpc-pn-io.c | 51 |
1 files changed, 45 insertions, 6 deletions
diff --git a/plugins/profinet/packet-dcerpc-pn-io.c b/plugins/profinet/packet-dcerpc-pn-io.c index bf795e4003..6a50757457 100644 --- a/plugins/profinet/packet-dcerpc-pn-io.c +++ b/plugins/profinet/packet-dcerpc-pn-io.c @@ -92,6 +92,8 @@ static int hf_pn_io_ar_properties_device_access = -1; static int hf_pn_io_ar_properties_companion_ar = -1; static int hf_pn_io_ar_properties_achnowledge_companion_ar = -1; static int hf_pn_io_ar_properties_reserved = -1; +static int hf_pn_io_ar_properties_combined_object_container_with_legacy_startupmode = -1; +static int hf_pn_io_ar_properties_combined_object_container_with_advanced_startupmode = -1; static int hf_pn_io_ar_properties_pull_module_alarm_allowed = -1; static int hf_pn_RedundancyInfo = -1; @@ -1562,6 +1564,20 @@ static const value_string pn_io_arproperties_acknowldege_companion_ar[] = { { 0, NULL } }; +/* bit 29 for legacy startup mode*/ +static const value_string pn_io_arproperties_combined_object_container_with_legacy_startupmode[] = { + { 0x00000000, "CombinedObjectContainer not used" }, + { 0x00000001, "Reserved" }, + { 0, NULL } +}; + +/* bit 29 for advanced statup mode*/ +static const value_string pn_io_arproperties_combined_object_container_with_advanced_startupmode[] = { + { 0x00000000, "CombinedObjectContainer not used" }, + { 0x00000001, "Usage of CombinedObjectContainer required" }, + { 0, NULL } +}; + /* bit 30 */ static const value_string pn_io_arpropertiesStartupMode[] = { { 0x00000000, "Legacy" }, @@ -6367,7 +6383,7 @@ dissect_ARProperties(tvbuff_t *tvb, int offset, proto_item *sub_item; proto_tree *sub_tree; guint32 u32ARProperties; - + guint8 startupMode; sub_item = proto_tree_add_item(tree, hf_pn_io_ar_properties, tvb, offset, 4, ENC_BIG_ENDIAN); sub_tree = proto_item_add_subtree(sub_item, ett_pn_io_ar_properties); @@ -6375,6 +6391,19 @@ dissect_ARProperties(tvbuff_t *tvb, int offset, hf_pn_io_ar_properties_pull_module_alarm_allowed, &u32ARProperties); dissect_dcerpc_uint32(tvb, offset, pinfo, sub_tree, drep, hf_pn_io_arproperties_StartupMode, &u32ARProperties); + startupMode = (guint8)((u32ARProperties >> 30) & 0x01); + /* Advanced startup mode */ + if (startupMode) + { + dissect_dcerpc_uint32(tvb, offset, pinfo, sub_tree, drep, + hf_pn_io_ar_properties_combined_object_container_with_advanced_startupmode, &u32ARProperties); + } + /* Legacy startup mode */ + else + { + dissect_dcerpc_uint32(tvb, offset, pinfo, sub_tree, drep, + hf_pn_io_ar_properties_combined_object_container_with_legacy_startupmode, &u32ARProperties); + } dissect_dcerpc_uint32(tvb, offset, pinfo, sub_tree, drep, hf_pn_io_ar_properties_reserved, &u32ARProperties); dissect_dcerpc_uint32(tvb, offset, pinfo, sub_tree, drep, @@ -9876,16 +9905,26 @@ proto_register_pn_io (void) FT_UINT32, BASE_HEX, VALS(pn_io_arproperties_acknowldege_companion_ar), 0x00000800, NULL, HFILL } }, + { &hf_pn_io_ar_properties_reserved, + { "Reserved", "pn_io.ar_properties.reserved", + FT_UINT32, BASE_HEX, NULL, 0x1FFFF000, + NULL, HFILL } + }, + { &hf_pn_io_ar_properties_combined_object_container_with_legacy_startupmode, + { "CombinedObjectContainer", "pn_io.ar_properties.combined_object_container", + FT_UINT32, BASE_HEX, VALS(pn_io_arproperties_combined_object_container_with_legacy_startupmode), 0x20000000, + NULL, HFILL } + }, + { &hf_pn_io_ar_properties_combined_object_container_with_advanced_startupmode, + { "CombinedObjectContainer", "pn_io.ar_properties.combined_object_container", + FT_UINT32, BASE_HEX, VALS(pn_io_arproperties_combined_object_container_with_advanced_startupmode), 0x20000000, + NULL, HFILL } + }, { &hf_pn_io_arproperties_StartupMode, { "StartupMode", "pn_io.ar_properties.StartupMode", FT_UINT32, BASE_HEX, VALS(pn_io_arpropertiesStartupMode), 0x40000000, NULL, HFILL } }, - { &hf_pn_io_ar_properties_reserved, - { "Reserved", "pn_io.ar_properties.reserved", - FT_UINT32, BASE_HEX, NULL, 0x3FFFF000, - NULL, HFILL } - }, { &hf_pn_io_ar_properties_pull_module_alarm_allowed, { "PullModuleAlarmAllowed", "pn_io.ar_properties.pull_module_alarm_allowed", FT_UINT32, BASE_HEX, VALS(pn_io_arproperties_pull_module_alarm_allowed), 0x80000000, |