diff options
-rw-r--r-- | epan/dissectors/packet-cip.c | 33 | ||||
-rw-r--r-- | epan/dissectors/packet-cip.h | 2 |
2 files changed, 24 insertions, 11 deletions
diff --git a/epan/dissectors/packet-cip.c b/epan/dissectors/packet-cip.c index 9e2c603c0a..d150992017 100644 --- a/epan/dissectors/packet-cip.c +++ b/epan/dissectors/packet-cip.c @@ -498,7 +498,7 @@ static int hf_time_sync_port_phys_addr_info_num_ports = -1; static int hf_time_sync_port_phys_addr_info_port_num = -1; static int hf_time_sync_port_phys_addr_info_phys_proto = -1; static int hf_time_sync_port_phys_addr_info_addr_size = -1; -/* static int hf_time_sync_port_phys_addr_info_phys_addr = -1; */ +static int hf_time_sync_port_phys_addr_info_phys_addr = -1; static int hf_time_sync_port_proto_addr_info_num_ports = -1; static int hf_time_sync_port_proto_addr_info_port_num = -1; static int hf_time_sync_port_proto_addr_info_network_proto = -1; @@ -677,6 +677,8 @@ static const value_string cip_sc_vals_cm[] = { { SC_CM_FWD_OPEN, "Forward Open" }, { SC_CM_UNCON_SEND, "Unconnected Send" }, { SC_CM_LARGE_FWD_OPEN, "Large Forward Open" }, + { SC_CM_GET_CONN_DATA, "Get Connection Data" }, + { SC_CM_SEARCH_CONN_DATA, "Search Connection Data" }, { SC_CM_GET_CONN_OWNER, "Get Connection Owner" }, { 0, NULL } @@ -2771,8 +2773,14 @@ static const value_string cip_devtype_vals[] = { { 0x29, "CIP Modbus Translator" }, { 0x2A, "Safety Analog I/O Device" }, { 0x2B, "Generic Device (keyable)" }, - { 0x2C, "Managed Switch" }, + { 0x2C, "Managed Ethernet Switch" }, + { 0x2D, "CIP Motion Safety Drive Device" }, + { 0x2E, "Safety Drive Device" }, + { 0x2F, "CIP Motion Encoder" }, + { 0x30, "CIP Motion Converter" }, + { 0x31, "CIP Motion I/O" }, { 0x32, "ControlNet Physical Layer Component" }, + { 0xC8, "Embedded Component" }, { 0, NULL } }; @@ -3437,9 +3445,13 @@ static int dissect_time_sync_port_phys_addr_info(packet_info *pinfo, proto_tree { port_tree = proto_tree_add_subtree_format(tree, tvb, offset+2+i*36, 36, ett_time_sync_port_phys_addr_info, NULL, "Port #%d", i+1); proto_tree_add_item(port_tree, hf_time_sync_port_phys_addr_info_port_num, tvb, offset+2+i*36, 2, ENC_LITTLE_ENDIAN); - proto_tree_add_item(port_tree, hf_time_sync_port_phys_addr_info_phys_proto, tvb, offset+4+i*36, 16, ENC_NA); - proto_tree_add_item(port_tree, hf_time_sync_port_phys_addr_info_addr_size, tvb, offset+20+i*36, 2, ENC_LITTLE_ENDIAN); - proto_tree_add_item(port_tree, hf_time_sync_port_phys_addr_info_phys_proto, tvb, offset+22+i*36, 16, ENC_NA); + proto_tree_add_item(port_tree, hf_time_sync_port_phys_addr_info_phys_proto, tvb, offset+4+i*36, 16, ENC_ASCII|ENC_NA); + + guint32 addr_size; + proto_tree_add_item_ret_uint(port_tree, hf_time_sync_port_phys_addr_info_addr_size, tvb, offset+20+i*36, 2, ENC_LITTLE_ENDIAN, &addr_size); + + // Field is 16 bytes, but only highlight the actual size. + proto_tree_add_item(port_tree, hf_time_sync_port_phys_addr_info_phys_addr, tvb, offset+22+i*36, addr_size, ENC_NA); } return 2+num_ports*36; @@ -6827,6 +6839,7 @@ dissect_cip_cm_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_ case SC_CM_UNCON_SEND: /* Unconnected send response (Unsuccess) */ proto_tree_add_item(cmd_data_tree, hf_cip_cm_remain_path_size, tvb, offset+4+add_stat_size, 1, ENC_LITTLE_ENDIAN); + proto_tree_add_item(cmd_data_tree, hf_cip_reserved8, tvb, offset+4+add_stat_size+1, 1, ENC_LITTLE_ENDIAN); break; default: /* Add data */ @@ -8332,11 +8345,9 @@ proto_register_cip(void) { &hf_time_sync_port_profile_id_info_profile_id, { "Port Profile Identity", "cip.time_sync.port_profile_id_info.profile_id", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_time_sync_port_phys_addr_info_num_ports, { "Number of Ports", "cip.time_sync.port_phys_addr_info.num_ports", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_time_sync_port_phys_addr_info_port_num, { "Port Number", "cip.time_sync.port_phys_addr_info.port_number", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_time_sync_port_phys_addr_info_phys_proto, { "Physical Protocol", "cip.time_sync.port_profile_id_info.phys_proto", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_time_sync_port_phys_addr_info_phys_proto, { "Physical Protocol", "cip.time_sync.port_profile_id_info.phys_proto", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_time_sync_port_phys_addr_info_addr_size, { "Size of Address", "cip.time_sync.port_phys_addr_info.addr_size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, -#if 0 { &hf_time_sync_port_phys_addr_info_phys_addr, { "Port Physical Address", "cip.time_sync.port_profile_id_info.phys_addr", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, -#endif { &hf_time_sync_port_proto_addr_info_num_ports, { "Number of Ports", "cip.time_sync.port_proto_addr_info.num_ports", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_time_sync_port_proto_addr_info_port_num, { "Port Number", "cip.time_sync.port_proto_addr_info.port_number", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_time_sync_port_proto_addr_info_network_proto, { "Network Protocol", "cip.time_sync.port_proto_addr_info.network_proto", FT_UINT16, BASE_DEC, VALS(cip_time_sync_network_protocol_vals), 0, NULL, HFILL }}, @@ -8376,7 +8387,7 @@ proto_register_cip(void) { &hf_cip_cm_ot_connid, { "O->T Network Connection ID", "cip.cm.ot_connid", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_cip_cm_to_connid, { "T->O Network Connection ID", "cip.cm.to_connid", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_cip_cm_conn_serial_num, { "Connection Serial Number", "cip.cm.conn_serial_num", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, - { &hf_cip_cm_vendor, { "Vendor ID", "cip.cm.vendor", FT_UINT16, BASE_HEX|BASE_EXT_STRING, &cip_vendor_vals_ext, 0, NULL, HFILL }}, + { &hf_cip_cm_vendor, { "Originator Vendor ID", "cip.cm.vendor", FT_UINT16, BASE_HEX|BASE_EXT_STRING, &cip_vendor_vals_ext, 0, NULL, HFILL }}, { &hf_cip_cm_timeout_multiplier, { "Connection Timeout Multiplier", "cip.cm.timeout_multiplier", FT_UINT8, BASE_DEC, VALS(cip_con_time_mult_vals), 0, NULL, HFILL }}, { &hf_cip_cm_ot_rpi, { "O->T RPI", "cip.cm.otrpi", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_cip_cm_ot_net_params32, { "O->T Network Connection Parameters", "cip.cm.ot_net_params", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, @@ -8396,8 +8407,8 @@ proto_register_cip(void) { &hf_cip_cm_targ_conn_serial_num, { "Target Connection Serial Number", "cip.cm.targ_conn_serial_num", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_cip_cm_initial_timestamp, { "Initial Timestamp", "cip.cm.initial_timestamp", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_cip_cm_initial_rollover, { "Initial Rollover Value", "cip.cm.initial_rollover", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_cip_cm_remain_path_size, { "Remaining Path Size", "cip.cm.remain_path_size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_cip_cm_msg_req_size, { "Message Request Size", "cip.cm.msg_req_size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_cip_cm_remain_path_size, { "Remaining Path Size", "cip.cm.remain_path_size", FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &units_word_words, 0, NULL, HFILL }}, + { &hf_cip_cm_msg_req_size, { "Message Request Size", "cip.cm.msg_req_size", FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &units_word_words, 0, NULL, HFILL }}, { &hf_cip_cm_route_path_size, { "Route Path Size", "cip.cm.route_path_size", FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &units_word_words, 0, NULL, HFILL }}, { &hf_cip_cm_orig_serial_num, { "Originator Serial Number", "cip.cm.orig_serial_num", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_cip_cm_fwo_con_size, { "Connection Size", "cip.cm.fwo.consize", FT_UINT16, BASE_DEC|BASE_UNIT_STRING, &units_byte_bytes, 0x01FF, "Fwd Open: Connection size", HFILL }}, diff --git a/epan/dissectors/packet-cip.h b/epan/dissectors/packet-cip.h index 9009a3fb54..0b36d70767 100644 --- a/epan/dissectors/packet-cip.h +++ b/epan/dissectors/packet-cip.h @@ -62,6 +62,8 @@ #define SC_CM_FWD_CLOSE 0x4E #define SC_CM_UNCON_SEND 0x52 #define SC_CM_FWD_OPEN 0x54 +#define SC_CM_GET_CONN_DATA 0x56 +#define SC_CM_SEARCH_CONN_DATA 0x57 #define SC_CM_LARGE_FWD_OPEN 0x5B #define SC_CM_GET_CONN_OWNER 0x5A |