aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-cipsafety.c
diff options
context:
space:
mode:
authorBill Meier <wmeier@newsguy.com>2012-03-06 22:00:59 +0000
committerBill Meier <wmeier@newsguy.com>2012-03-06 22:00:59 +0000
commitbd4c0f06917a817a537b524faf2a7d59d73aeee3 (patch)
treeaf9b17534688bb10dae8bd34c8ea3234cbaa7684 /epan/dissectors/packet-cipsafety.c
parent57599011dae2c25331f28f81128dbdf0c1bdf519 (diff)
Reformat long lines...
svn path=/trunk/; revision=41384
Diffstat (limited to 'epan/dissectors/packet-cipsafety.c')
-rw-r--r--epan/dissectors/packet-cipsafety.c1485
1 files changed, 1088 insertions, 397 deletions
diff --git a/epan/dissectors/packet-cipsafety.c b/epan/dissectors/packet-cipsafety.c
index 21408532ba..7348d4ef57 100644
--- a/epan/dissectors/packet-cipsafety.c
+++ b/epan/dissectors/packet-cipsafety.c
@@ -406,7 +406,8 @@ static const value_string cip_svalidator_type_conn_type_vals[] = {
};
void
-dissect_unid(tvbuff_t *tvb, packet_info *pinfo _U_, int offset, proto_item *pi, const char* ssn_name, int hf_ssn_timestamp,
+dissect_unid(tvbuff_t *tvb, packet_info *pinfo _U_, int offset, proto_item *pi,
+ const char* ssn_name, int hf_ssn_timestamp,
int hf_ssn_date, int hf_ssn_time, int hf_macid, gint ett, gint ett_ssn)
{
proto_tree *tree, *ssn_tree;
@@ -421,7 +422,8 @@ dissect_unid(tvbuff_t *tvb, packet_info *pinfo _U_, int offset, proto_item *pi,
proto_tree_add_item(tree, hf_macid, tvb, offset+6, 4, ENC_LITTLE_ENDIAN);
}
-void dissect_cipsafety_ssn(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, int offset, int hf_real_datetime, int hf_date, int hf_time)
+void dissect_cipsafety_ssn(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, int offset,
+ int hf_real_datetime, int hf_date, int hf_time)
{
guint16 date;
@@ -446,20 +448,21 @@ void dissect_cipsafety_ssn(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _
*
************************************************/
static void
-dissect_cip_s_supervisor_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_length, packet_info *pinfo )
+dissect_cip_s_supervisor_data( proto_tree *item_tree,
+ tvbuff_t *tvb, int offset, int item_length, packet_info *pinfo )
{
- proto_item *pi, *rrsc_item;
- proto_tree *rrsc_tree, *cmd_data_tree, *bitmap_tree;
- int req_path_size;
- int temp_data;
- guint8 service, gen_status, add_stat_size;
- cip_req_info_t* preq_info;
- cip_simple_request_info_t req_data;
+ proto_item *pi, *rrsc_item;
+ proto_tree *rrsc_tree, *cmd_data_tree, *bitmap_tree;
+ int req_path_size;
+ int temp_data;
+ guint8 service, gen_status, add_stat_size;
+ cip_req_info_t* preq_info;
+ cip_simple_request_info_t req_data;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "CIPS Supervisor");
/* Add Service code & Request/Response tree */
- service = tvb_get_guint8( tvb, offset );
+ service = tvb_get_guint8( tvb, offset );
rrsc_item = proto_tree_add_text( item_tree, tvb, offset, 1, "Service: " );
rrsc_tree = proto_item_add_subtree( rrsc_item, ett_ssupervisor_rrsc );
@@ -481,10 +484,10 @@ dissect_cip_s_supervisor_data( proto_tree *item_tree, tvbuff_t *tvb, int offset,
}
else
{
- req_data.iClass = (guint32)-1;
- req_data.iInstance = (guint32)-1;
+ req_data.iClass = (guint32)-1;
+ req_data.iInstance = (guint32)-1;
req_data.iAttribute = (guint32)-1;
- req_data.iMember = (guint32)-1;
+ req_data.iMember = (guint32)-1;
}
if(service & 0x80 )
@@ -498,7 +501,8 @@ dissect_cip_s_supervisor_data( proto_tree *item_tree, tvbuff_t *tvb, int offset,
/* If there is any command specific data create a sub-tree for it */
if( ( item_length-4-add_stat_size ) != 0 )
{
- pi = proto_tree_add_text( item_tree, tvb, offset+4+add_stat_size, item_length-4-add_stat_size, "Command Specific Data" );
+ pi = proto_tree_add_text( item_tree,
+ tvb, offset+4+add_stat_size, item_length-4-add_stat_size, "Command Specific Data" );
cmd_data_tree = proto_item_add_subtree( pi, ett_ssupervisor_cmd_data );
if( gen_status == CI_GRC_SUCCESS || gen_status == CI_GRC_SERVICE_ERROR )
@@ -506,9 +510,13 @@ dissect_cip_s_supervisor_data( proto_tree *item_tree, tvbuff_t *tvb, int offset,
switch (service & 0x7F)
{
case SC_SSUPER_VALIDATE_CONFIGURATION:
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_validate_configuration_sccrc, tvb, offset+4+add_stat_size, 4, ENC_LITTLE_ENDIAN);
- dissect_cipsafety_ssn(cmd_data_tree, tvb, pinfo, offset+4+add_stat_size+4, hf_cip_ssupervisor_validate_configuration_scts_timestamp,
- hf_cip_ssupervisor_validate_configuration_scts_date, hf_cip_ssupervisor_validate_configuration_scts_time);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_validate_configuration_sccrc,
+ tvb, offset+4+add_stat_size, 4, ENC_LITTLE_ENDIAN);
+ dissect_cipsafety_ssn(cmd_data_tree,
+ tvb, pinfo, offset+4+add_stat_size+4,
+ hf_cip_ssupervisor_validate_configuration_scts_timestamp,
+ hf_cip_ssupervisor_validate_configuration_scts_date,
+ hf_cip_ssupervisor_validate_configuration_scts_time);
break;
}
}
@@ -516,7 +524,8 @@ dissect_cip_s_supervisor_data( proto_tree *item_tree, tvbuff_t *tvb, int offset,
{
if (add_stat_size > 0)
{
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_validate_configuration_ext_error, tvb, offset+4, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_validate_configuration_ext_error,
+ tvb, offset+4, 2, ENC_LITTLE_ENDIAN);
}
}
else
@@ -524,7 +533,8 @@ dissect_cip_s_supervisor_data( proto_tree *item_tree, tvbuff_t *tvb, int offset,
/* Error responses */
/* Add data */
- proto_tree_add_item(cmd_data_tree, hf_cip_data, tvb, offset+4+add_stat_size, item_length-4-add_stat_size, ENC_NA);
+ proto_tree_add_item(cmd_data_tree, hf_cip_data,
+ tvb, offset+4+add_stat_size, item_length-4-add_stat_size, ENC_NA);
}
}
@@ -542,92 +552,149 @@ dissect_cip_s_supervisor_data( proto_tree *item_tree, tvbuff_t *tvb, int offset,
/* If there is any command specific data create a sub-tree for it */
if( (item_length-req_path_size-2) != 0 )
{
- pi = proto_tree_add_text( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2, "Command Specific Data" );
+ pi = proto_tree_add_text( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2,
+ "Command Specific Data" );
cmd_data_tree = proto_item_add_subtree( pi, ett_ssupervisor_cmd_data );
/* Check what service code that received */
switch (service)
{
case SC_SSUPER_RECOVER:
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_recover_data, tvb, offset+2+req_path_size, item_length-req_path_size-2, ENC_NA);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_recover_data,
+ tvb, offset+2+req_path_size, item_length-req_path_size-2, ENC_NA);
break;
case SC_SSUPER_PERFORM_DIAGNOSTICS:
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_perform_diag_data, tvb, offset+2+req_path_size, item_length-req_path_size-2, ENC_NA);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_perform_diag_data,
+ tvb, offset+2+req_path_size, item_length-req_path_size-2, ENC_NA);
break;
case SC_SSUPER_CONFIGURE_REQUEST:
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_configure_request_password, tvb, offset+2+req_path_size, 16, ENC_NA);
- pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_configure_request_tunid, tvb, offset+2+req_path_size+16, 10, ENC_NA);
- dissect_unid(tvb, pinfo, offset+2+req_path_size+16, pi, "TUNID SSN", hf_cip_ssupervisor_configure_request_tunid_ssn_timestamp,
- hf_cip_ssupervisor_configure_request_tunid_ssn_date, hf_cip_ssupervisor_configure_request_tunid_ssn_time,
- hf_cip_ssupervisor_configure_request_tunid_macid, ett_ssupervisor_configure_request_tunid, ett_ssupervisor_configure_request_tunid_ssn);
- pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_configure_request_ounid, tvb, offset+2+req_path_size+26, 10, ENC_NA);
- dissect_unid(tvb, pinfo, offset+2+req_path_size+16, pi, "OUNID SSN", hf_cip_ssupervisor_configure_request_ounid_ssn_timestamp,
- hf_cip_ssupervisor_configure_request_ounid_ssn_date, hf_cip_ssupervisor_configure_request_ounid_ssn_time,
- hf_cip_ssupervisor_configure_request_ounid_macid, ett_ssupervisor_configure_request_ounid, ett_ssupervisor_configure_request_ounid_ssn);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_configure_request_password,
+ tvb, offset+2+req_path_size, 16, ENC_NA);
+ pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_configure_request_tunid,
+ tvb, offset+2+req_path_size+16, 10, ENC_NA);
+ dissect_unid(tvb, pinfo, offset+2+req_path_size+16, pi, "TUNID SSN",
+ hf_cip_ssupervisor_configure_request_tunid_ssn_timestamp,
+ hf_cip_ssupervisor_configure_request_tunid_ssn_date,
+ hf_cip_ssupervisor_configure_request_tunid_ssn_time,
+ hf_cip_ssupervisor_configure_request_tunid_macid,
+ ett_ssupervisor_configure_request_tunid,
+ ett_ssupervisor_configure_request_tunid_ssn);
+ pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_configure_request_ounid,
+ tvb, offset+2+req_path_size+26, 10, ENC_NA);
+ dissect_unid(tvb, pinfo, offset+2+req_path_size+16, pi, "OUNID SSN",
+ hf_cip_ssupervisor_configure_request_ounid_ssn_timestamp,
+ hf_cip_ssupervisor_configure_request_ounid_ssn_date,
+ hf_cip_ssupervisor_configure_request_ounid_ssn_time,
+ hf_cip_ssupervisor_configure_request_ounid_macid,
+ ett_ssupervisor_configure_request_ounid,
+ ett_ssupervisor_configure_request_ounid_ssn);
break;
case SC_SSUPER_VALIDATE_CONFIGURATION:
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_validate_configuration_sccrc, tvb, offset+2+req_path_size, 4, ENC_LITTLE_ENDIAN);
- dissect_cipsafety_ssn(cmd_data_tree, tvb, pinfo, offset+2+req_path_size+4, hf_cip_ssupervisor_validate_configuration_scts_timestamp,
- hf_cip_ssupervisor_validate_configuration_scts_date, hf_cip_ssupervisor_validate_configuration_scts_time);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_validate_configuration_sccrc,
+ tvb, offset+2+req_path_size, 4, ENC_LITTLE_ENDIAN);
+ dissect_cipsafety_ssn(cmd_data_tree, tvb, pinfo, offset+2+req_path_size+4,
+ hf_cip_ssupervisor_validate_configuration_scts_timestamp,
+ hf_cip_ssupervisor_validate_configuration_scts_date,
+ hf_cip_ssupervisor_validate_configuration_scts_time);
break;
case SC_SSUPER_SET_PASSWORD:
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_set_password_current_password, tvb, offset+2+req_path_size, 16, ENC_NA);
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_set_password_new_password, tvb, offset+2+req_path_size+16, 16, ENC_NA);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_set_password_current_password,
+ tvb, offset+2+req_path_size, 16, ENC_NA);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_set_password_new_password,
+ tvb, offset+2+req_path_size+16, 16, ENC_NA);
break;
case SC_SSUPER_CONFIGURATION_LOCK:
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_configure_lock_value, tvb, offset+2+req_path_size+1, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_configure_lock_password, tvb, offset+2+req_path_size+1, 16, ENC_NA);
- pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_configure_lock_tunid, tvb, offset+2+req_path_size+17, 10, ENC_NA);
- dissect_unid(tvb, pinfo, offset+2+req_path_size+17, pi, "TUNID SSN", hf_cip_ssupervisor_configure_lock_tunid_ssn_timestamp,
- hf_cip_ssupervisor_configure_lock_tunid_ssn_date, hf_cip_ssupervisor_configure_lock_tunid_ssn_time,
- hf_cip_ssupervisor_configure_lock_tunid_macid, ett_ssupervisor_configure_lock_tunid, ett_ssupervisor_configure_lock_tunid_ssn);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_configure_lock_value,
+ tvb, offset+2+req_path_size+1, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_configure_lock_password,
+ tvb, offset+2+req_path_size+1, 16, ENC_NA);
+ pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_configure_lock_tunid,
+ tvb, offset+2+req_path_size+17, 10, ENC_NA);
+ dissect_unid(tvb, pinfo, offset+2+req_path_size+17, pi, "TUNID SSN",
+ hf_cip_ssupervisor_configure_lock_tunid_ssn_timestamp,
+ hf_cip_ssupervisor_configure_lock_tunid_ssn_date,
+ hf_cip_ssupervisor_configure_lock_tunid_ssn_time,
+ hf_cip_ssupervisor_configure_lock_tunid_macid,
+ ett_ssupervisor_configure_lock_tunid,
+ ett_ssupervisor_configure_lock_tunid_ssn);
break;
case SC_SSUPER_MODE_CHANGE:
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_mode_change_value, tvb, offset+2+req_path_size+1, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_mode_change_password, tvb, offset+2+req_path_size+1, 16, ENC_NA);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_mode_change_value,
+ tvb, offset+2+req_path_size+1, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_mode_change_password,
+ tvb, offset+2+req_path_size+1, 16, ENC_NA);
break;
case SC_SSUPER_SAFETY_RESET:
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_reset_type, tvb, offset+2+req_path_size+1, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_reset_type,
+ tvb, offset+2+req_path_size+1, 1, ENC_LITTLE_ENDIAN);
temp_data = tvb_get_guint8( tvb, offset+2+req_path_size+1 );
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_reset_password, tvb, offset+2+req_path_size+1, 16, ENC_NA);
- pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_reset_tunid, tvb, offset+2+req_path_size+17, 10, ENC_NA);
- dissect_unid(tvb, pinfo, offset+2+req_path_size+17, pi, "TUNID SSN", hf_cip_ssupervisor_reset_tunid_tunid_ssn_timestamp,
- hf_cip_ssupervisor_reset_tunid_tunid_ssn_date, hf_cip_ssupervisor_reset_tunid_tunid_ssn_time,
- hf_cip_ssupervisor_reset_tunid_macid, ett_ssupervisor_reset_tunid, ett_ssupervisor_reset_tunid_ssn);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_reset_password,
+ tvb, offset+2+req_path_size+1, 16, ENC_NA);
+ pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_reset_tunid,
+ tvb, offset+2+req_path_size+17, 10, ENC_NA);
+ dissect_unid(tvb, pinfo, offset+2+req_path_size+17, pi, "TUNID SSN",
+ hf_cip_ssupervisor_reset_tunid_tunid_ssn_timestamp,
+ hf_cip_ssupervisor_reset_tunid_tunid_ssn_date,
+ hf_cip_ssupervisor_reset_tunid_tunid_ssn_time,
+ hf_cip_ssupervisor_reset_tunid_macid,
+ ett_ssupervisor_reset_tunid,
+ ett_ssupervisor_reset_tunid_ssn);
/* Attribute bitmap only included on Reset Type 2 */
if (temp_data == 2)
{
- pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_reset_attr_bitmap, tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
+ pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_reset_attr_bitmap,
+ tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
bitmap_tree = proto_item_add_subtree(pi, ett_cip_ssupervisor_reset_attr_bitmap);
- proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_macid, tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_baudrate, tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_tunid, tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_password, tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_cfunid, tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_ocpunid, tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_reserved, tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_extended, tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_macid,
+ tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_baudrate,
+ tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_tunid,
+ tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_password,
+ tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_cfunid,
+ tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_ocpunid,
+ tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_reserved,
+ tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(bitmap_tree, hf_cip_ssupervisor_reset_attr_bitmap_extended,
+ tvb, offset+2+req_path_size+27, 1, ENC_LITTLE_ENDIAN);
}
break;
case SC_SSUPER_RESET_PASSWORD:
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_reset_password_data_size, tvb, offset+2+req_path_size, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_reset_password_data_size,
+ tvb, offset+2+req_path_size, 1, ENC_LITTLE_ENDIAN);
temp_data = tvb_get_guint8(tvb, offset+2+req_path_size);
- proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_reset_password_data, tvb, offset+2+req_path_size+1, temp_data, ENC_NA);
+ proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_reset_password_data,
+ tvb, offset+2+req_path_size+1, temp_data, ENC_NA);
break;
case SC_SSUPER_PROPOSE_TUNID:
- pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_propose_tunid_tunid, tvb, offset+2+req_path_size, 10, ENC_NA);
- dissect_unid(tvb, pinfo, offset+2+req_path_size, pi, "TUNID SSN", hf_cip_ssupervisor_propose_tunid_tunid_ssn_timestamp,
- hf_cip_ssupervisor_propose_tunid_tunid_ssn_date, hf_cip_ssupervisor_propose_tunid_tunid_ssn_time,
- hf_cip_ssupervisor_propose_tunid_tunid_macid, ett_ssupervisor_propose_tunid, ett_ssupervisor_propose_tunid_ssn);
+ pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_propose_tunid_tunid,
+ tvb, offset+2+req_path_size, 10, ENC_NA);
+ dissect_unid(tvb, pinfo, offset+2+req_path_size, pi, "TUNID SSN",
+ hf_cip_ssupervisor_propose_tunid_tunid_ssn_timestamp,
+ hf_cip_ssupervisor_propose_tunid_tunid_ssn_date,
+ hf_cip_ssupervisor_propose_tunid_tunid_ssn_time,
+ hf_cip_ssupervisor_propose_tunid_tunid_macid,
+ ett_ssupervisor_propose_tunid,
+ ett_ssupervisor_propose_tunid_ssn);
break;
case SC_SSUPER_APPLY_TUNID:
- pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_apply_tunid_tunid, tvb, offset+2+req_path_size, 10, ENC_NA);
- dissect_unid(tvb, pinfo, offset+2+req_path_size, pi, "TUNID SSN", hf_cip_ssupervisor_apply_tunid_tunid_ssn_timestamp,
- hf_cip_ssupervisor_apply_tunid_tunid_ssn_date, hf_cip_ssupervisor_apply_tunid_tunid_ssn_time,
- hf_cip_ssupervisor_apply_tunid_tunid_macid, ett_ssupervisor_apply_tunid, ett_ssupervisor_apply_tunid_ssn);
+ pi = proto_tree_add_item(cmd_data_tree, hf_cip_ssupervisor_apply_tunid_tunid,
+ tvb, offset+2+req_path_size, 10, ENC_NA);
+ dissect_unid(tvb, pinfo, offset+2+req_path_size, pi, "TUNID SSN",
+ hf_cip_ssupervisor_apply_tunid_tunid_ssn_timestamp,
+ hf_cip_ssupervisor_apply_tunid_tunid_ssn_date,
+ hf_cip_ssupervisor_apply_tunid_tunid_ssn_time,
+ hf_cip_ssupervisor_apply_tunid_tunid_macid,
+ ett_ssupervisor_apply_tunid,
+ ett_ssupervisor_apply_tunid_ssn);
break;
default:
- proto_tree_add_item(cmd_data_tree, hf_cip_data, tvb, offset+2+req_path_size, item_length-req_path_size-2, ENC_NA);
+ proto_tree_add_item(cmd_data_tree, hf_cip_data,
+ tvb, offset+2+req_path_size, item_length-req_path_size-2, ENC_NA);
}
} /* End of if command-specific data present */
@@ -676,10 +743,12 @@ int dissect_s_supervisor_exception_detail_alarm(packet_info *pinfo, proto_tree *
pi = proto_tree_add_text(tree, tvb, offset, 1, "Common Exception Detail");
item_tree = proto_item_add_subtree(pi, ett_exception_detail_alarm_common);
size = dissect_s_supervisor_exception_detail(item_tree, pi, tvb, offset,
- hf_cip_ssupervisor_exception_detail_alarm_ced_size, hf_cip_ssupervisor_exception_detail_alarm_ced_detail);
+ hf_cip_ssupervisor_exception_detail_alarm_ced_size,
+ hf_cip_ssupervisor_exception_detail_alarm_ced_detail);
if (size == 0)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Supervisor Attribute 13 (Common Exception Detail)");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Supervisor Attribute 13 (Common Exception Detail)");
return total_len;
}
total_size += size;
@@ -687,10 +756,12 @@ int dissect_s_supervisor_exception_detail_alarm(packet_info *pinfo, proto_tree *
pi = proto_tree_add_text(tree, tvb, offset, 1, "Device Exception Detail");
item_tree = proto_item_add_subtree(pi, ett_exception_detail_alarm_device);
size = dissect_s_supervisor_exception_detail(item_tree, pi, tvb, offset,
- hf_cip_ssupervisor_exception_detail_alarm_ded_size, hf_cip_ssupervisor_exception_detail_alarm_ded_detail);
+ hf_cip_ssupervisor_exception_detail_alarm_ded_size,
+ hf_cip_ssupervisor_exception_detail_alarm_ded_detail);
if (size == 0)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Supervisor Attribute 13 (Device Exception Detail)");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Supervisor Attribute 13 (Device Exception Detail)");
return total_len;
}
total_size += size;
@@ -698,10 +769,12 @@ int dissect_s_supervisor_exception_detail_alarm(packet_info *pinfo, proto_tree *
pi = proto_tree_add_text(tree, tvb, offset, 1, "Manufacturer Exception Detail");
item_tree = proto_item_add_subtree(pi, ett_exception_detail_alarm_manufacturer);
size = dissect_s_supervisor_exception_detail(item_tree, pi, tvb, offset,
- hf_cip_ssupervisor_exception_detail_alarm_med_size, hf_cip_ssupervisor_exception_detail_alarm_med_detail);
+ hf_cip_ssupervisor_exception_detail_alarm_med_size,
+ hf_cip_ssupervisor_exception_detail_alarm_med_detail);
if (size == 0)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Supervisor Attribute 13 (Manufacturer Exception Detail)");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Supervisor Attribute 13 (Manufacturer Exception Detail)");
return total_len;
}
total_size += size;
@@ -709,20 +782,22 @@ int dissect_s_supervisor_exception_detail_alarm(packet_info *pinfo, proto_tree *
return total_size;
}
-int dissect_s_supervisor_exception_detail_warning(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
- int offset, int total_len)
+int dissect_s_supervisor_exception_detail_warning(packet_info *pinfo, proto_tree *tree, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
proto_item *pi;
proto_tree *item_tree;
- int total_size = 0, size;
+ int total_size = 0, size;
pi = proto_tree_add_text(tree, tvb, offset, 1, "Common Exception Detail");
item_tree = proto_item_add_subtree(pi, ett_exception_detail_warning_common);
size = dissect_s_supervisor_exception_detail(item_tree, pi, tvb, offset,
- hf_cip_ssupervisor_exception_detail_warning_ced_size, hf_cip_ssupervisor_exception_detail_warning_ced_detail);
+ hf_cip_ssupervisor_exception_detail_warning_ced_size,
+ hf_cip_ssupervisor_exception_detail_warning_ced_detail);
if (size == 0)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Supervisor Attribute 14 (Common Exception Detail)");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Supervisor Attribute 14 (Common Exception Detail)");
return total_len;
}
total_size += size;
@@ -730,10 +805,12 @@ int dissect_s_supervisor_exception_detail_warning(packet_info *pinfo, proto_tree
pi = proto_tree_add_text(tree, tvb, offset, 1, "Device Exception Detail");
item_tree = proto_item_add_subtree(pi, ett_exception_detail_warning_device);
size = dissect_s_supervisor_exception_detail(item_tree, pi, tvb, offset,
- hf_cip_ssupervisor_exception_detail_warning_ded_size, hf_cip_ssupervisor_exception_detail_warning_ded_detail);
+ hf_cip_ssupervisor_exception_detail_warning_ded_size,
+ hf_cip_ssupervisor_exception_detail_warning_ded_detail);
if (size == 0)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Supervisor Attribute 14 (Device Exception Detail)");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Supervisor Attribute 14 (Device Exception Detail)");
return total_len;
}
total_size += size;
@@ -741,10 +818,12 @@ int dissect_s_supervisor_exception_detail_warning(packet_info *pinfo, proto_tree
pi = proto_tree_add_text(tree, tvb, offset, 1, "Manufacturer Exception Detail");
item_tree = proto_item_add_subtree(pi, ett_exception_detail_warning_manufacturer);
size = dissect_s_supervisor_exception_detail(item_tree, pi, tvb, offset,
- hf_cip_ssupervisor_exception_detail_warning_med_size, hf_cip_ssupervisor_exception_detail_warning_med_detail);
+ hf_cip_ssupervisor_exception_detail_warning_med_size,
+ hf_cip_ssupervisor_exception_detail_warning_med_detail);
if (size == 0)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Supervisor Attribute 14 (Manufacturer Exception Detail)");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Supervisor Attribute 14 (Manufacturer Exception Detail)");
return total_len;
}
total_size += size;
@@ -752,66 +831,83 @@ int dissect_s_supervisor_exception_detail_warning(packet_info *pinfo, proto_tree
return total_size;
}
-int dissect_s_supervisor_configuration_unid(packet_info *pinfo, proto_tree *tree _U_, proto_item *item, tvbuff_t *tvb,
- int offset, int total_len)
+int dissect_s_supervisor_configuration_unid(packet_info *pinfo, proto_tree *tree _U_, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
if (total_len < 10)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Supervisor Attribute 25");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Supervisor Attribute 25");
return total_len;
}
- dissect_unid(tvb, pinfo, offset, item, "CFUNID SSN", hf_cip_ssupervisor_configuration_unid_ssn_timestamp,
- hf_cip_ssupervisor_configuration_unid_ssn_date, hf_cip_ssupervisor_configuration_unid_ssn_time,
- hf_cip_ssupervisor_configuration_unid_macid, ett_ssupervisor_configuration_unid, ett_ssupervisor_configuration_unid_ssn);
+ dissect_unid(tvb, pinfo, offset, item, "CFUNID SSN",
+ hf_cip_ssupervisor_configuration_unid_ssn_timestamp,
+ hf_cip_ssupervisor_configuration_unid_ssn_date,
+ hf_cip_ssupervisor_configuration_unid_ssn_time,
+ hf_cip_ssupervisor_configuration_unid_macid,
+ ett_ssupervisor_configuration_unid,
+ ett_ssupervisor_configuration_unid_ssn);
return 10;
}
-int dissect_s_supervisor_safety_configuration_id(packet_info *pinfo, proto_tree *tree _U_, proto_item *item, tvbuff_t *tvb,
- int offset, int total_len)
+int dissect_s_supervisor_safety_configuration_id(packet_info *pinfo, proto_tree *tree _U_, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
if (total_len < 10)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Supervisor Attribute 26");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Supervisor Attribute 26");
return total_len;
}
- dissect_unid(tvb, pinfo, offset, item, "SCID SSN", hf_cip_ssupervisor_safety_configuration_id_ssn_timestamp,
- hf_cip_ssupervisor_safety_configuration_id_ssn_date, hf_cip_ssupervisor_safety_configuration_id_ssn_time,
- hf_cip_ssupervisor_safety_configuration_id_macid, ett_ssupervisor_safety_configuration_id, ett_ssupervisor_safety_configuration_id_ssn);
+ dissect_unid(tvb, pinfo, offset, item, "SCID SSN",
+ hf_cip_ssupervisor_safety_configuration_id_ssn_timestamp,
+ hf_cip_ssupervisor_safety_configuration_id_ssn_date,
+ hf_cip_ssupervisor_safety_configuration_id_ssn_time,
+ hf_cip_ssupervisor_safety_configuration_id_macid,
+ ett_ssupervisor_safety_configuration_id,
+ ett_ssupervisor_safety_configuration_id_ssn);
return 10;
}
-int dissect_s_supervisor_target_unid(packet_info *pinfo, proto_tree *tree _U_, proto_item *item, tvbuff_t *tvb,
- int offset, int total_len)
+int dissect_s_supervisor_target_unid(packet_info *pinfo, proto_tree *tree _U_, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
if (total_len < 10)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Supervisor Attribute 27");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Supervisor Attribute 27");
return total_len;
}
- dissect_unid(tvb, pinfo, offset, item, "TUNID SSN", hf_cip_ssupervisor_target_unid_ssn_timestamp,
- hf_cip_ssupervisor_target_unid_ssn_date, hf_cip_ssupervisor_target_unid_ssn_time,
- hf_cip_ssupervisor_target_unid_macid, ett_ssupervisor_target_unid, ett_ssupervisor_target_unid_ssn);
+ dissect_unid(tvb, pinfo, offset, item, "TUNID SSN",
+ hf_cip_ssupervisor_target_unid_ssn_timestamp,
+ hf_cip_ssupervisor_target_unid_ssn_date,
+ hf_cip_ssupervisor_target_unid_ssn_time,
+ hf_cip_ssupervisor_target_unid_macid,
+ ett_ssupervisor_target_unid,
+ ett_ssupervisor_target_unid_ssn);
return 10;
}
-int dissect_s_supervisor_output_connection_point_owners(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
- int offset, int total_len)
+int dissect_s_supervisor_output_connection_point_owners(packet_info *pinfo, proto_tree *tree, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
- guint16 i, num_entries;
+ guint16 i, num_entries;
proto_item *entry_item, *app_path_item;
proto_tree *entry_tree;
- int attr_len = 0, app_path_size;
+ int attr_len = 0, app_path_size;
if (total_len < 2)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Supervisor Attribute 28");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Supervisor Attribute 28");
return total_len;
}
- entry_item = proto_tree_add_item(tree, hf_cip_ssupervisor_cp_owners_num_entries, tvb, offset, 2, ENC_LITTLE_ENDIAN );
+ entry_item = proto_tree_add_item(tree, hf_cip_ssupervisor_cp_owners_num_entries,
+ tvb, offset, 2, ENC_LITTLE_ENDIAN );
num_entries = tvb_get_letohs(tvb, offset);
attr_len += 2;
@@ -827,22 +923,29 @@ int dissect_s_supervisor_output_connection_point_owners(packet_info *pinfo, prot
return total_len;
}
- dissect_unid(tvb, pinfo, offset+attr_len, entry_item, "OCPUNID SSN", hf_cip_ssupervisor_output_cp_owners_ocpunid_ssn_timestamp,
- hf_cip_ssupervisor_output_cp_owners_ocpunid_ssn_date, hf_cip_ssupervisor_output_cp_owners_ocpunid_ssn_time,
- hf_cip_ssupervisor_output_cp_owners_ocpunid_macid, ett_ssupervisor_output_cp_owners_ocpunid, ett_ssupervisor_output_cp_owners_ocpunid_ssn);
+ dissect_unid(tvb, pinfo, offset+attr_len, entry_item, "OCPUNID SSN",
+ hf_cip_ssupervisor_output_cp_owners_ocpunid_ssn_timestamp,
+ hf_cip_ssupervisor_output_cp_owners_ocpunid_ssn_date,
+ hf_cip_ssupervisor_output_cp_owners_ocpunid_ssn_time,
+ hf_cip_ssupervisor_output_cp_owners_ocpunid_macid,
+ ett_ssupervisor_output_cp_owners_ocpunid,
+ ett_ssupervisor_output_cp_owners_ocpunid_ssn);
attr_len += 10;
- proto_tree_add_item(entry_tree, hf_cip_ssupervisor_cp_owners_app_path_size, tvb, offset+attr_len, 1, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(entry_tree, hf_cip_ssupervisor_cp_owners_app_path_size,
+ tvb, offset+attr_len, 1, ENC_LITTLE_ENDIAN );
app_path_size = tvb_get_guint8( tvb, offset+attr_len);
attr_len += 1;
if (total_len < attr_len+app_path_size)
{
- expert_add_info_format(pinfo, entry_item, PI_MALFORMED, PI_ERROR, "Malformed Safety Supervisor Attribute 28 (EPATH)");
+ expert_add_info_format(pinfo, entry_item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Supervisor Attribute 28 (EPATH)");
return total_len;
}
- app_path_item = proto_tree_add_text(entry_tree, tvb, offset+attr_len, app_path_size, "Application Resource: ");
+ app_path_item = proto_tree_add_text(entry_tree,
+ tvb, offset+attr_len, app_path_size, "Application Resource: ");
dissect_epath( tvb, pinfo, app_path_item, offset+attr_len, app_path_size, FALSE, TRUE, NULL, NULL);
attr_len += app_path_size;
}
@@ -851,18 +954,23 @@ int dissect_s_supervisor_output_connection_point_owners(packet_info *pinfo, prot
return attr_len;
}
-int dissect_s_supervisor_proposed_tunid(packet_info *pinfo, proto_tree *tree _U_, proto_item *item, tvbuff_t *tvb,
- int offset, int total_len)
+int dissect_s_supervisor_proposed_tunid(packet_info *pinfo, proto_tree *tree _U_, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
if (total_len < 10)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Supervisor Attribute 29");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Supervisor Attribute 29");
return total_len;
}
- dissect_unid(tvb, pinfo, offset, item, "Proposed TUNID SSN", hf_cip_ssupervisor_proposed_tunid_ssn_timestamp,
- hf_cip_ssupervisor_proposed_tunid_ssn_date, hf_cip_ssupervisor_proposed_tunid_ssn_time,
- hf_cip_ssupervisor_proposed_tunid_macid, ett_ssupervisor_proposed_tunid, ett_ssupervisor_proposed_tunid_ssn);
+ dissect_unid(tvb, pinfo, offset, item, "Proposed TUNID SSN",
+ hf_cip_ssupervisor_proposed_tunid_ssn_timestamp,
+ hf_cip_ssupervisor_proposed_tunid_ssn_date,
+ hf_cip_ssupervisor_proposed_tunid_ssn_time,
+ hf_cip_ssupervisor_proposed_tunid_macid,
+ ett_ssupervisor_proposed_tunid,
+ ett_ssupervisor_proposed_tunid_ssn);
return 10;
}
@@ -879,7 +987,8 @@ int dissect_s_validator_type(packet_info *pinfo, proto_tree *tree, proto_item *i
if (total_len < 1)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Validator Attribute 2");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Validator Attribute 2");
return total_len;
}
@@ -890,45 +999,51 @@ int dissect_s_validator_type(packet_info *pinfo, proto_tree *tree, proto_item *i
return 1;
}
-int dissect_s_validator_time_coord_msg_min_mult(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
- int offset, int total_len)
+int dissect_s_validator_time_coord_msg_min_mult(packet_info *pinfo, proto_tree *tree, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
int i, size;
- proto_tree_add_item(tree, hf_cip_svalidator_time_coord_msg_min_mult_size, tvb, offset, 1, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(tree, hf_cip_svalidator_time_coord_msg_min_mult_size,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN );
size = tvb_get_guint8( tvb, offset )*2;
if (total_len < size+1)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Validator Attribute 4");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Validator Attribute 4");
return total_len;
}
for (i = 0; i < size; i+=2)
{
- proto_tree_add_item(tree, hf_cip_svalidator_time_coord_msg_min_mult_item, tvb, offset+1+i, 2, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(tree, hf_cip_svalidator_time_coord_msg_min_mult_item,
+ tvb, offset+1+i, 2, ENC_LITTLE_ENDIAN );
}
return (size+1);
}
-int dissect_s_validator_network_time_multiplier(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
- int offset, int total_len)
+int dissect_s_validator_network_time_multiplier(packet_info *pinfo, proto_tree *tree, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
int i, size;
- proto_tree_add_item(tree, hf_cip_svalidator_network_time_multiplier_size, tvb, offset, 1, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(tree, hf_cip_svalidator_network_time_multiplier_size,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN );
size = tvb_get_guint8( tvb, offset )*2;
if (total_len < size+1)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Validator Attribute 5");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Validator Attribute 5");
return total_len;
}
for (i = 0; i < size; i+=2)
{
- proto_tree_add_item(tree, hf_cip_svalidator_network_time_multiplier_item, tvb, offset+1+i, 2, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(tree, hf_cip_svalidator_network_time_multiplier_item,
+ tvb, offset+1+i, 2, ENC_LITTLE_ENDIAN );
}
return (size+1);
@@ -939,88 +1054,98 @@ int dissect_s_validator_timeout_multiplier(packet_info *pinfo, proto_tree *tree,
{
int i, size;
- proto_tree_add_item(tree, hf_cip_svalidator_timeout_multiplier_size, tvb, offset, 1, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(tree, hf_cip_svalidator_timeout_multiplier_size,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN );
size = tvb_get_guint8( tvb, offset );
if (total_len < size+1)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Validator Attribute 6");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Validator Attribute 6");
return total_len;
}
for (i = 0; i < size; i++)
{
- proto_tree_add_item(tree, hf_cip_svalidator_timeout_multiplier_item, tvb, offset+1+i, 1, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(tree, hf_cip_svalidator_timeout_multiplier_item,
+ tvb, offset+1+i, 1, ENC_LITTLE_ENDIAN );
}
return (size+1);
}
-int dissect_s_validator_coordination_conn_inst(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
- int offset, int total_len)
+int dissect_s_validator_coordination_conn_inst(packet_info *pinfo, proto_tree *tree, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
int i, size;
- proto_tree_add_item(tree, hf_cip_svalidator_coordination_conn_inst_size, tvb, offset, 1, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(tree, hf_cip_svalidator_coordination_conn_inst_size,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN );
size = tvb_get_guint8( tvb, offset )*2;
if (total_len < size+1)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Validator Attribute 9");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Validator Attribute 9");
return total_len;
}
for (i = 0; i < size; i+=2)
{
- proto_tree_add_item(tree, hf_cip_svalidator_coordination_conn_inst_item, tvb, offset+1+i, 2, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(tree, hf_cip_svalidator_coordination_conn_inst_item,
+ tvb, offset+1+i, 2, ENC_LITTLE_ENDIAN );
}
return (size+1);
}
-int dissect_s_validator_app_data_path(packet_info *pinfo, proto_tree *tree _U_, proto_item *item, tvbuff_t *tvb,
- int offset, int total_len)
+int dissect_s_validator_app_data_path(packet_info *pinfo, proto_tree *tree _U_,
+ proto_item *item, tvbuff_t *tvb, int offset, int total_len)
{
dissect_epath(tvb, pinfo, item, offset, total_len, FALSE, FALSE, NULL, NULL);
return total_len;
}
-int dissect_s_validator_prod_cons_fault_count(packet_info *pinfo, proto_tree *tree, proto_item *item, tvbuff_t *tvb,
- int offset, int total_len)
+int dissect_s_validator_prod_cons_fault_count(packet_info *pinfo, proto_tree *tree, proto_item *item,
+ tvbuff_t *tvb, int offset, int total_len)
{
int i, size;
- proto_tree_add_item(tree, hf_cip_svalidator_prod_cons_fault_count_size, tvb, offset, 1, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(tree, hf_cip_svalidator_prod_cons_fault_count_size,
+ tvb, offset, 1, ENC_LITTLE_ENDIAN );
size = tvb_get_guint8( tvb, offset );
if (total_len < size+1)
{
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Safety Validator Attribute 15");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed Safety Validator Attribute 15");
return total_len;
}
for (i = 0; i < size; i++)
{
- proto_tree_add_item(tree, hf_cip_svalidator_prod_cons_fault_count_item, tvb, offset+1+i, 1, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(tree, hf_cip_svalidator_prod_cons_fault_count_item,
+ tvb, offset+1+i, 1, ENC_LITTLE_ENDIAN );
}
return (size+1);
}
static void
-dissect_cip_s_validator_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, int item_length, packet_info *pinfo )
+dissect_cip_s_validator_data( proto_tree *item_tree,
+ tvbuff_t *tvb, int offset, int item_length, packet_info *pinfo )
{
- proto_item *pi, *rrsc_item;
- proto_tree *rrsc_tree, *cmd_data_tree;
- int req_path_size, gaa_offset;
- guint8 service, gen_status, add_stat_size;
- cip_req_info_t* preq_info;
- cip_simple_request_info_t req_data;
+ proto_item *pi, *rrsc_item;
+ proto_tree *rrsc_tree, *cmd_data_tree;
+ int req_path_size, gaa_offset;
+ guint8 service, gen_status, add_stat_size;
+ cip_req_info_t* preq_info;
+ cip_simple_request_info_t req_data;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "CIPS Supervisor");
/* Add Service code & Request/Response tree */
- service = tvb_get_guint8( tvb, offset );
+ service = tvb_get_guint8( tvb, offset );
rrsc_item = proto_tree_add_text( item_tree, tvb, offset, 1, "Service: " );
rrsc_tree = proto_item_add_subtree( rrsc_item, ett_svalidator_rrsc );
@@ -1044,10 +1169,10 @@ dissect_cip_s_validator_data( proto_tree *item_tree, tvbuff_t *tvb, int offset,
}
else
{
- req_data.iClass = (guint32)-1;
- req_data.iInstance = (guint32)-1;
+ req_data.iClass = (guint32)-1;
+ req_data.iInstance = (guint32)-1;
req_data.iAttribute = (guint32)-1;
- req_data.iMember = (guint32)-1;
+ req_data.iMember = (guint32)-1;
}
if(service & 0x80 )
@@ -1061,7 +1186,8 @@ dissect_cip_s_validator_data( proto_tree *item_tree, tvbuff_t *tvb, int offset,
/* If there is any command specific data create a sub-tree for it */
if( ( item_length-4-add_stat_size ) != 0 )
{
- pi = proto_tree_add_text( item_tree, tvb, offset+4+add_stat_size, item_length-4-add_stat_size, "Command Specific Data" );
+ pi = proto_tree_add_text( item_tree,
+ tvb, offset+4+add_stat_size, item_length-4-add_stat_size, "Command Specific Data" );
cmd_data_tree = proto_item_add_subtree( pi, ett_ssupervisor_cmd_data );
if( gen_status == CI_GRC_SUCCESS || gen_status == CI_GRC_SERVICE_ERROR )
@@ -1072,33 +1198,53 @@ dissect_cip_s_validator_data( proto_tree *item_tree, tvbuff_t *tvb, int offset,
(req_data.iInstance != 0))
{
/* Get Attribute All (instance) response */
- proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_state, tvb, offset+4+add_stat_size, 1, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_state,
+ tvb, offset+4+add_stat_size, 1, ENC_LITTLE_ENDIAN );
gaa_offset = 1;
- gaa_offset += dissect_s_validator_type(pinfo, cmd_data_tree, pi, tvb, offset+4+add_stat_size+gaa_offset, 1);
- proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_ping_eri, tvb, offset+4+add_stat_size+gaa_offset, 2, ENC_LITTLE_ENDIAN );
+ gaa_offset += dissect_s_validator_type(pinfo, cmd_data_tree, pi,
+ tvb, offset+4+add_stat_size+gaa_offset, 1);
+ proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_ping_eri,
+ tvb, offset+4+add_stat_size+gaa_offset, 2, ENC_LITTLE_ENDIAN );
gaa_offset += 2;
- gaa_offset += dissect_s_validator_time_coord_msg_min_mult(pinfo, cmd_data_tree, pi, tvb, offset+4+add_stat_size+gaa_offset, item_length-4-add_stat_size-gaa_offset);
- gaa_offset += dissect_s_validator_timeout_multiplier(pinfo, cmd_data_tree, pi, tvb, offset+4+add_stat_size+gaa_offset, item_length-4-add_stat_size-gaa_offset);
- proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_max_consumer_num, tvb, offset+4+add_stat_size+gaa_offset, 1, ENC_LITTLE_ENDIAN );
+ gaa_offset += dissect_s_validator_time_coord_msg_min_mult(pinfo, cmd_data_tree, pi,
+ tvb, offset+4+add_stat_size+gaa_offset,
+ item_length-4-add_stat_size-gaa_offset);
+ gaa_offset += dissect_s_validator_timeout_multiplier(pinfo, cmd_data_tree, pi,
+ tvb, offset+4+add_stat_size+gaa_offset,
+ item_length-4-add_stat_size-gaa_offset);
+ proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_max_consumer_num,
+ tvb, offset+4+add_stat_size+gaa_offset, 1, ENC_LITTLE_ENDIAN );
gaa_offset += 1;
- proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_data_conn_inst, tvb, offset+4+add_stat_size+gaa_offset, 2, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_data_conn_inst,
+ tvb, offset+4+add_stat_size+gaa_offset, 2, ENC_LITTLE_ENDIAN );
gaa_offset += 2;
- gaa_offset += dissect_s_validator_coordination_conn_inst(pinfo, cmd_data_tree, pi, tvb, offset+4+add_stat_size+gaa_offset, item_length-4-add_stat_size-gaa_offset);
- proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_correction_conn_inst, tvb, offset+4+add_stat_size+gaa_offset, 2, ENC_LITTLE_ENDIAN );
+ gaa_offset += dissect_s_validator_coordination_conn_inst(pinfo, cmd_data_tree, pi,
+ tvb, offset+4+add_stat_size+gaa_offset,
+ item_length-4-add_stat_size-gaa_offset);
+ proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_correction_conn_inst,
+ tvb, offset+4+add_stat_size+gaa_offset, 2, ENC_LITTLE_ENDIAN );
gaa_offset += 2;
- proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_cco_binding, tvb, offset+4+add_stat_size+gaa_offset, 2, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_cco_binding,
+ tvb, offset+4+add_stat_size+gaa_offset, 2, ENC_LITTLE_ENDIAN );
gaa_offset += 2;
- proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_max_data_age, tvb, offset+4+add_stat_size+gaa_offset, 2, ENC_LITTLE_ENDIAN );
+ proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_max_data_age,
+ tvb, offset+4+add_stat_size+gaa_offset, 2, ENC_LITTLE_ENDIAN );
gaa_offset += 2;
- gaa_offset += dissect_s_validator_app_data_path(pinfo, cmd_data_tree, pi, tvb, offset+4+add_stat_size+gaa_offset, item_length-4-add_stat_size-gaa_offset);
- proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_error_code, tvb, offset+4+add_stat_size+gaa_offset, 2, ENC_LITTLE_ENDIAN );
+ gaa_offset += dissect_s_validator_app_data_path(pinfo, cmd_data_tree, pi,
+ tvb, offset+4+add_stat_size+gaa_offset,
+ item_length-4-add_stat_size-gaa_offset);
+ proto_tree_add_item(cmd_data_tree, hf_cip_svalidator_error_code,
+ tvb, offset+4+add_stat_size+gaa_offset, 2, ENC_LITTLE_ENDIAN );
gaa_offset += 2;
- /*gaa_offset +=*/ dissect_s_validator_prod_cons_fault_count(pinfo, cmd_data_tree, pi, tvb, offset+4+add_stat_size+gaa_offset, item_length-4-add_stat_size-gaa_offset);
+ /*gaa_offset +=*/ dissect_s_validator_prod_cons_fault_count(pinfo, cmd_data_tree, pi,
+ tvb, offset+4+add_stat_size+gaa_offset,
+ item_length-4-add_stat_size-gaa_offset);
}
else
{
/* Add data */
- proto_tree_add_item(cmd_data_tree, hf_cip_data, tvb, offset+4+add_stat_size, item_length-4-add_stat_size, ENC_NA);
+ proto_tree_add_item(cmd_data_tree, hf_cip_data,
+ tvb, offset+4+add_stat_size, item_length-4-add_stat_size, ENC_NA);
}
}
else
@@ -1106,7 +1252,8 @@ dissect_cip_s_validator_data( proto_tree *item_tree, tvbuff_t *tvb, int offset,
/* Error responses */
/* Add data */
- proto_tree_add_item(cmd_data_tree, hf_cip_data, tvb, offset+4+add_stat_size, item_length-4-add_stat_size, ENC_NA);
+ proto_tree_add_item(cmd_data_tree, hf_cip_data,
+ tvb, offset+4+add_stat_size, item_length-4-add_stat_size, ENC_NA);
} /* end of if-else( CI_CRC_SUCCESS ) */
} /* End of if command-specific data present */
@@ -1125,9 +1272,11 @@ dissect_cip_s_validator_data( proto_tree *item_tree, tvbuff_t *tvb, int offset,
/* If there is any command specific data create a sub-tree for it */
if( (item_length-req_path_size-2) != 0 )
{
- pi = proto_tree_add_text( item_tree, tvb, offset+2+req_path_size, item_length-req_path_size-2, "Command Specific Data" );
+ pi = proto_tree_add_text( item_tree,
+ tvb, offset+2+req_path_size, item_length-req_path_size-2, "Command Specific Data" );
cmd_data_tree = proto_item_add_subtree( pi, ett_ssupervisor_cmd_data );
- proto_tree_add_item(cmd_data_tree, hf_cip_data, tvb, offset+2+req_path_size, item_length-req_path_size-2, ENC_NA);
+ proto_tree_add_item(cmd_data_tree, hf_cip_data,
+ tvb, offset+2+req_path_size, item_length-req_path_size-2, ENC_NA);
}
}
@@ -1155,10 +1304,10 @@ dissect_cip_class_s_validator(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
static gboolean
dissect_class_svalidator_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- unsigned char service, service_code, ioilen, segment;
+ unsigned char service, service_code, ioilen, segment;
cip_req_info_t* preq_info;
- guint32 classid = 0;
- int offset = 0;
+ guint32 classid = 0;
+ int offset = 0;
service = tvb_get_guint8( tvb, offset );
service_code = service & 0x7F;
@@ -1227,7 +1376,7 @@ dissect_mode_byte( proto_tree *tree, tvbuff_t *tvb, int offset, packet_info *pin
{
proto_item *mode_item, *run_idle_item, *tbd_item, *tbd2_item;
proto_tree *mode_tree;
- guint8 mode_byte;
+ guint8 mode_byte;
mode_byte = tvb_get_guint8(tvb, offset);
@@ -1235,12 +1384,12 @@ dissect_mode_byte( proto_tree *tree, tvbuff_t *tvb, int offset, packet_info *pin
mode_item = proto_tree_add_item(tree, hf_cipsafety_mode_byte, tvb, offset, 1, ENC_LITTLE_ENDIAN);
mode_tree = proto_item_add_subtree( mode_item, ett_cipsafety_mode_byte);
- proto_tree_add_item(mode_tree, hf_cipsafety_mode_byte_ping_count, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(mode_tree, hf_cipsafety_mode_byte_not_tbd, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(mode_tree, hf_cipsafety_mode_byte_tbd_2_copy, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(mode_tree, hf_cipsafety_mode_byte_not_run_idle, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- tbd_item = proto_tree_add_item(mode_tree, hf_cipsafety_mode_byte_tbd, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- tbd2_item = proto_tree_add_item(mode_tree, hf_cipsafety_mode_byte_tbd_2_bit, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_cipsafety_mode_byte_ping_count, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_cipsafety_mode_byte_not_tbd, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_cipsafety_mode_byte_tbd_2_copy, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_cipsafety_mode_byte_not_run_idle, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ tbd_item = proto_tree_add_item(mode_tree, hf_cipsafety_mode_byte_tbd, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ tbd2_item = proto_tree_add_item(mode_tree, hf_cipsafety_mode_byte_tbd_2_bit, tvb, offset, 1, ENC_LITTLE_ENDIAN);
run_idle_item = proto_tree_add_item(mode_tree, hf_cipsafety_mode_byte_run_idle, tvb, offset, 1, ENC_LITTLE_ENDIAN);
/* verify Mode Byte bits */
@@ -1262,23 +1411,20 @@ dissect_ack_byte( proto_tree *tree, tvbuff_t *tvb, int offset, packet_info *pinf
{
proto_item *ack_item;
proto_tree *ack_tree;
-/********************
- Placeholder reminder to add ack_byte validation
-
+#if 0 /***** Placeholder reminder to add ack_byte validation */
guint8 ack_byte;
ack_byte = tvb_get_guint8(tvb, offset);
-*/
-
+#endif
/* dissect Ack Byte bits */
ack_item = proto_tree_add_item(tree, hf_cipsafety_ack_byte, tvb, offset, 1, ENC_LITTLE_ENDIAN);
ack_tree = proto_item_add_subtree( ack_item, ett_cipsafety_ack_byte);
proto_tree_add_item(ack_tree, hf_cipsafety_ack_byte_ping_count_reply, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ack_tree, hf_cipsafety_ack_byte_reserved1, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ack_tree, hf_cipsafety_ack_byte_ping_response, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ack_tree, hf_cipsafety_ack_byte_reserved2, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ack_tree, hf_cipsafety_ack_byte_parity_even, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ack_tree, hf_cipsafety_ack_byte_reserved1, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ack_tree, hf_cipsafety_ack_byte_ping_response, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ack_tree, hf_cipsafety_ack_byte_reserved2, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(ack_tree, hf_cipsafety_ack_byte_parity_even, tvb, offset, 1, ENC_LITTLE_ENDIAN);
}
static void
@@ -1286,22 +1432,20 @@ dissect_mcast_byte( proto_tree *tree, tvbuff_t *tvb, int offset, packet_info *pi
{
proto_item *mcast_item;
proto_tree *mcast_tree;
-/********************
- Placeholder reminder to add mcast_byte validation
+#if 0 /*** Placeholder reminder to add mcast_byte validation */
guint8 mcast_byte;
mcast_byte = tvb_get_guint8(tvb, offset);
-*/
-
+#endif
/* dissect MCast Byte bits */
mcast_item = proto_tree_add_item(tree, hf_cipsafety_mcast_byte, tvb, offset, 1, ENC_LITTLE_ENDIAN);
mcast_tree = proto_item_add_subtree( mcast_item, ett_cipsafety_mcast_byte);
proto_tree_add_item(mcast_tree, hf_cipsafety_mcast_byte_consumer_num, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(mcast_tree, hf_cipsafety_mcast_byte_reserved1, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(mcast_tree, hf_cipsafety_mcast_byte_mai, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(mcast_tree, hf_cipsafety_mcast_byte_reserved2, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(mcast_tree, hf_cipsafety_mcast_byte_parity_even, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mcast_tree, hf_cipsafety_mcast_byte_reserved1, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mcast_tree, hf_cipsafety_mcast_byte_mai, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mcast_tree, hf_cipsafety_mcast_byte_reserved2, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mcast_tree, hf_cipsafety_mcast_byte_parity_even, tvb, offset, 1, ENC_LITTLE_ENDIAN);
}
static void
@@ -1361,17 +1505,17 @@ dissect_cip_safety_data( proto_tree *tree, proto_item *item, tvbuff_t *tvb, int
proto_tree_add_item(tree, hf_cipsafety_data, tvb, 0, item_length-base_length, ENC_LITTLE_ENDIAN);
dissect_mode_byte(tree, tvb, item_length-base_length, pinfo);
- proto_tree_add_item(tree, hf_cipsafety_crc_s1, tvb, item_length-base_length+1, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_cipsafety_crc_s2, tvb, item_length-base_length+2, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_cipsafety_crc_s1, tvb, item_length-base_length+1, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_cipsafety_crc_s2, tvb, item_length-base_length+2, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_cipsafety_timestamp, tvb, item_length-base_length+3, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_cipsafety_crc_s1, tvb, item_length-base_length+5, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_cipsafety_crc_s1, tvb, item_length-base_length+5, 1, ENC_LITTLE_ENDIAN);
if (multicast)
{
dissect_mcast_byte(tree, tvb, item_length-6, pinfo);
proto_tree_add_item(tree, hf_cipsafety_time_correction, tvb, item_length-5, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_cipsafety_mcast_byte2, tvb, item_length-3, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(tree, hf_cipsafety_crc_s3, tvb, item_length-2, 2, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_cipsafety_mcast_byte2, tvb, item_length-3, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(tree, hf_cipsafety_crc_s3, tvb, item_length-2, 2, ENC_LITTLE_ENDIAN);
}
}
else
@@ -1380,7 +1524,8 @@ dissect_cip_safety_data( proto_tree *tree, proto_item *item, tvbuff_t *tvb, int
if (item_length%2 == 1)
{
/* Malformed packet */
- expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed CIP Safety I/O packet");
+ expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Malformed CIP Safety I/O packet");
return;
}
@@ -1597,198 +1742,744 @@ proto_register_cipsafety(void)
* to use in a filter expression */
static hf_register_info hf[] =
{
- { &hf_cip_reqrsp, { "Request/Response", "cip.rr", FT_UINT8, BASE_HEX, VALS(cip_sc_rr), 0x80, "Request or Response message", HFILL }},
- { &hf_cip_data, { "Data", "cip.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
-
- { &hf_cipsafety_data, { "Data", "enip.connection_transport_data", FT_BYTES, BASE_NONE, NULL, 0, "Connection Transport Data", HFILL }},
- { &hf_cipsafety_mode_byte, { "Mode Byte", "cipsafety.mode_byte", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_mode_byte_ping_count, { "Ping Count", "cipsafety.mode_byte.ping_count", FT_UINT8, BASE_DEC, NULL, 0x03, NULL, HFILL }},
- { &hf_cipsafety_mode_byte_not_tbd, { "Not TBD Bit", "cipsafety.mode_byte.not_tbd", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
- { &hf_cipsafety_mode_byte_tbd_2_copy, { "TBD 2 Bit Copy", "cipsafety.mode_byte.tbd_2_copy", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }},
- { &hf_cipsafety_mode_byte_not_run_idle, { "Not Run/Idle", "cipsafety.mode_byte.not_run_idle", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }},
- { &hf_cipsafety_mode_byte_tbd, { "TBD Bit", "cipsafety.mode_byte.tbd", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }},
- { &hf_cipsafety_mode_byte_tbd_2_bit, { "TBD 2 Bit", "cipsafety.mode_byte.tbd_2_bit", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }},
- { &hf_cipsafety_mode_byte_run_idle, { "Run/Idle", "cipsafety.mode_byte.run_idle", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
- { &hf_cipsafety_crc_s1, { "CRC S1", "cipsafety.crc_s1", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_crc_s2, { "CRC S2", "cipsafety.crc_s2", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_crc_s3, { "CRC S3", "cipsafety.crc_s3", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_timestamp, { "Timestamp", "cipsafety.timestamp", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_ack_byte, { "ACK Byte", "cipsafety.ack_byte", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_ack_byte_ping_count_reply, { "Ping Count Reply", "cipsafety.ack_byte.ping_count_reply", FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }},
- { &hf_cipsafety_ack_byte_reserved1, { "Reserved", "cipsafety.ack_byte.reserved1", FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }},
- { &hf_cipsafety_ack_byte_ping_response, { "Ping Response", "cipsafety.ack_byte.ping_response", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }},
- { &hf_cipsafety_ack_byte_reserved2, { "Reserved", "cipsafety.ack_byte.reserved2", FT_UINT8, BASE_HEX, NULL, 0x70, NULL, HFILL }},
- { &hf_cipsafety_ack_byte_parity_even, { "Parity Even", "cipsafety.ack_byte.parity_even", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
- { &hf_cipsafety_ack_byte2, { "ACK Byte 2", "cipsafety.ack_byte2", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_consumer_time_value, { "Consumer Time Value", "cipsafety.consumer_time_value", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_mcast_byte, { "MCAST Byte", "cipsafety.mcast_byte", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_mcast_byte_consumer_num, { "Consumer #", "cipsafety.mcast_byte.consumer_num", FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }},
- { &hf_cipsafety_mcast_byte_reserved1, { "Reserved", "cipsafety.mcast_byte.reserved1", FT_UINT8, BASE_HEX, NULL, 0x10, NULL, HFILL }},
- { &hf_cipsafety_mcast_byte_mai, { "Multicast Active/Idle", "cipsafety.mcast_byte.active_idle", FT_BOOLEAN, 8, TFS(&cip_safety_vals_active_idle), 0x20, NULL, HFILL }},
- { &hf_cipsafety_mcast_byte_reserved2, { "Reserved", "cipsafety.mcast_byte.reserved2", FT_UINT8, BASE_HEX, NULL, 0x40, NULL, HFILL }},
- { &hf_cipsafety_mcast_byte_parity_even, { "Parity Even", "cipsafety.mcast_byte.parity_even", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
- { &hf_cipsafety_mcast_byte2, { "MCAST Byte 2", "cipsafety.mcast_byte2", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_time_correction, { "Time Correction", "cipsafety.time_correction", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_crc_s5_0, { "CRC S5_0", "cipsafety.crc_s5_0", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_crc_s5_1, { "CRC S5_1", "cipsafety.crc_s5_1", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_crc_s5_2, { "CRC S5_2", "cipsafety.crc_s5_2", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cipsafety_complement_data, { "Complement Data", "cipsafety.complement_data", FT_BYTES, BASE_NONE, NULL, 0, "Connection Transport Data", HFILL }},
-
- { &hf_cip_sercosiii_link_snn, { "Data", "cipsafety.sercosiii_link.snn", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_sercosiii_link_communication_cycle_time, { "Communication Cycle Time", "cipsafety.sercosiii_link.communication_cycle_time", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_sercosiii_link_interface_status, { "Communication Cycle Time", "cipsafety.sercosiii_link.interface_status", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_sercosiii_link_error_count_mstps, { "Error Counter MST-P/S", "cipsafety.sercosiii_link.error_count_mstps", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_sercosiii_link_error_count_p1, { "Error Count Port 1", "cipsafety.sercosiii_link.error_count_p1", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_sercosiii_link_error_count_p2, { "Error Count Port 2", "cipsafety.sercosiii_link.error_count_p2", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_sercosiii_link_sercos_address, { "SERCOS Address", "cipsafety.sercosiii_link.sercos_address", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
-
- { &hf_tcpip_snn_timestamp, { "Safety Network Number (Timestamp)", "cip.tcpip.snn.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_tcpip_snn_date, { "Safety Network Number (Manual) Date", "cip.tcpip.snn.date", FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }},
- { &hf_tcpip_snn_time, { "Safety Network Number (Manual) Time", "cip.tcpip.snn.time", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
+ { &hf_cip_reqrsp,
+ { "Request/Response", "cip.rr",
+ FT_UINT8, BASE_HEX, VALS(cip_sc_rr), 0x80, "Request or Response message", HFILL }
+ },
+ { &hf_cip_data,
+ { "Data", "cip.data",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+
+ { &hf_cipsafety_data,
+ { "Data", "enip.connection_transport_data",
+ FT_BYTES, BASE_NONE, NULL, 0, "Connection Transport Data", HFILL }
+ },
+ { &hf_cipsafety_mode_byte,
+ { "Mode Byte", "cipsafety.mode_byte",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_mode_byte_ping_count,
+ { "Ping Count", "cipsafety.mode_byte.ping_count",
+ FT_UINT8, BASE_DEC, NULL, 0x03, NULL, HFILL }
+ },
+ { &hf_cipsafety_mode_byte_not_tbd,
+ { "Not TBD Bit", "cipsafety.mode_byte.not_tbd",
+ FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }
+ },
+ { &hf_cipsafety_mode_byte_tbd_2_copy,
+ { "TBD 2 Bit Copy", "cipsafety.mode_byte.tbd_2_copy",
+ FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }
+ },
+ { &hf_cipsafety_mode_byte_not_run_idle,
+ { "Not Run/Idle", "cipsafety.mode_byte.not_run_idle",
+ FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }
+ },
+ { &hf_cipsafety_mode_byte_tbd,
+ { "TBD Bit", "cipsafety.mode_byte.tbd",
+ FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }
+ },
+ { &hf_cipsafety_mode_byte_tbd_2_bit,
+ { "TBD 2 Bit", "cipsafety.mode_byte.tbd_2_bit",
+ FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }
+ },
+ { &hf_cipsafety_mode_byte_run_idle,
+ { "Run/Idle", "cipsafety.mode_byte.run_idle",
+ FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
+ },
+ { &hf_cipsafety_crc_s1,
+ { "CRC S1", "cipsafety.crc_s1",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_crc_s2,
+ { "CRC S2", "cipsafety.crc_s2",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_crc_s3,
+ { "CRC S3", "cipsafety.crc_s3",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_timestamp,
+ { "Timestamp", "cipsafety.timestamp",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_ack_byte,
+ { "ACK Byte", "cipsafety.ack_byte",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_ack_byte_ping_count_reply,
+ { "Ping Count Reply", "cipsafety.ack_byte.ping_count_reply",
+ FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }
+ },
+ { &hf_cipsafety_ack_byte_reserved1,
+ { "Reserved", "cipsafety.ack_byte.reserved1",
+ FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }
+ },
+ { &hf_cipsafety_ack_byte_ping_response,
+ { "Ping Response", "cipsafety.ack_byte.ping_response",
+ FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }
+ },
+ { &hf_cipsafety_ack_byte_reserved2,
+ { "Reserved", "cipsafety.ack_byte.reserved2",
+ FT_UINT8, BASE_HEX, NULL, 0x70, NULL, HFILL }
+ },
+ { &hf_cipsafety_ack_byte_parity_even,
+ { "Parity Even", "cipsafety.ack_byte.parity_even",
+ FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
+ },
+ { &hf_cipsafety_ack_byte2,
+ { "ACK Byte 2", "cipsafety.ack_byte2",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_consumer_time_value,
+ { "Consumer Time Value", "cipsafety.consumer_time_value",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_mcast_byte,
+ { "MCAST Byte", "cipsafety.mcast_byte",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_mcast_byte_consumer_num,
+ { "Consumer #", "cipsafety.mcast_byte.consumer_num",
+ FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
+ },
+ { &hf_cipsafety_mcast_byte_reserved1,
+ { "Reserved", "cipsafety.mcast_byte.reserved1",
+ FT_UINT8, BASE_HEX, NULL, 0x10, NULL, HFILL }
+ },
+ { &hf_cipsafety_mcast_byte_mai,
+ { "Multicast Active/Idle", "cipsafety.mcast_byte.active_idle",
+ FT_BOOLEAN, 8, TFS(&cip_safety_vals_active_idle), 0x20, NULL, HFILL }
+ },
+ { &hf_cipsafety_mcast_byte_reserved2,
+ { "Reserved", "cipsafety.mcast_byte.reserved2",
+ FT_UINT8, BASE_HEX, NULL, 0x40, NULL, HFILL }
+ },
+ { &hf_cipsafety_mcast_byte_parity_even,
+ { "Parity Even", "cipsafety.mcast_byte.parity_even",
+ FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
+ },
+ { &hf_cipsafety_mcast_byte2,
+ { "MCAST Byte 2", "cipsafety.mcast_byte2",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_time_correction,
+ { "Time Correction", "cipsafety.time_correction",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_crc_s5_0,
+ { "CRC S5_0", "cipsafety.crc_s5_0",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_crc_s5_1,
+ { "CRC S5_1", "cipsafety.crc_s5_1",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_crc_s5_2,
+ { "CRC S5_2", "cipsafety.crc_s5_2",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cipsafety_complement_data,
+ { "Complement Data", "cipsafety.complement_data",
+ FT_BYTES, BASE_NONE, NULL, 0, "Connection Transport Data", HFILL }
+ },
+
+ { &hf_cip_sercosiii_link_snn,
+ { "Data", "cipsafety.sercosiii_link.snn",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_sercosiii_link_communication_cycle_time,
+ { "Communication Cycle Time", "cipsafety.sercosiii_link.communication_cycle_time",
+ FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_sercosiii_link_interface_status,
+ { "Communication Cycle Time", "cipsafety.sercosiii_link.interface_status",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_sercosiii_link_error_count_mstps,
+ { "Error Counter MST-P/S", "cipsafety.sercosiii_link.error_count_mstps",
+ FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_sercosiii_link_error_count_p1,
+ { "Error Count Port 1", "cipsafety.sercosiii_link.error_count_p1",
+ FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_sercosiii_link_error_count_p2,
+ { "Error Count Port 2", "cipsafety.sercosiii_link.error_count_p2",
+ FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_sercosiii_link_sercos_address,
+ { "SERCOS Address", "cipsafety.sercosiii_link.sercos_address",
+ FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+
+ { &hf_tcpip_snn_timestamp,
+ { "Safety Network Number (Timestamp)", "cip.tcpip.snn.timestamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_tcpip_snn_date,
+ { "Safety Network Number (Manual) Date", "cip.tcpip.snn.date",
+ FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }
+ },
+ { &hf_tcpip_snn_time,
+ { "Safety Network Number (Manual) Time", "cip.tcpip.snn.time",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
};
static hf_register_info hf_ssupervisor[] = {
- { &hf_cip_ssupervisor_sc, { "Service", "cipsafety.ssupervisor.sc", FT_UINT8, BASE_HEX, VALS(cip_sc_vals_ssupervisor), 0x7F, NULL, HFILL }},
- { &hf_cip_ssupervisor_recover_data, { "Data", "cipsafety.ssupervisor.recover.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_perform_diag_data, { "Data", "cipsafety.ssupervisor.perform_diag.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_request_password, { "Password", "cipsafety.ssupervisor.configure_request.password", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_request_tunid, { "Target UNID", "cipsafety.ssupervisor.configure_request.tunid", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_request_tunid_ssn_timestamp, { "TUNID SSN Timestamp", "cipsafety.ssupervisor.configure_request.tunid.ssn.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_request_tunid_ssn_date, { "TUNID SSN (Manual) Date", "cipsafety.ssupervisor.configure_request.tunid.ssn.date", FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_request_tunid_ssn_time, { "TUNID SSN (Manual) Time", "cipsafety.ssupervisor.configure_request.tunid.ssn.time", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_request_tunid_macid, { "MAC ID", "cipsafety.ssupervisor.configure_request.tunid.macid", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_request_ounid, { "Originator UNID", "cipsafety.ssupervisor.configure_request.ounid", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_request_ounid_ssn_timestamp, { "OUNID SSN Timestamp", "cipsafety.ssupervisor.configure_request.ounid.ssn.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_request_ounid_ssn_date, { "OUNID SSN (Manual) Date", "cipsafety.ssupervisor.configure_request.ounid.ssn.date", FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_request_ounid_ssn_time, { "OUNID SSN (Manual) Time", "cipsafety.ssupervisor.configure_request.ounid.ssn.time", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_request_ounid_macid, { "MAC ID", "cipsafety.ssupervisor.configure_request.ounid.macid", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_validate_configuration_sccrc, { "SCCRC", "cipsafety.ssupervisor.validate_configuration.sccrc", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_validate_configuration_scts_timestamp, { "SCTS (Timestamp)", "cipsafety.ssupervisor.validate_configuration.scts.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_validate_configuration_scts_date, { "SCTS (Manual) Date", "cipsafety.ssupervisor.validate_configuration.scts.date", FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_validate_configuration_scts_time, { "SCTS (Manual) Time", "cipsafety.ssupervisor.validate_configuration.scts.time", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_validate_configuration_ext_error, { "Extended Error", "cipsafety.ssupervisor.validate_configuration.ext_error", FT_UINT16, BASE_DEC, VALS(cip_ssupervisor_validate_configuration_ext_error_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_set_password_current_password, { "Current Password", "cipsafety.ssupervisor.set_password.current_pass", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_set_password_new_password, { "New Password", "cipsafety.ssupervisor.set_password.new_pass", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_lock_value, { "Lock Value", "cipsafety.ssupervisor.configure_lock.lock", FT_UINT8, BASE_DEC, VALS(cip_ssupervisor_lock_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_lock_password, { "Password", "cipsafety.ssupervisor.configure_lock.password", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_lock_tunid, { "Target UNID", "cipsafety.ssupervisor.configure_lock.tunid", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_lock_tunid_ssn_timestamp, { "TUNID SSN Timestamp", "cipsafety.ssupervisor.configure_lock.tunid.ssn.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_lock_tunid_ssn_date, { "TUNID SSN (Manual) Date", "cipsafety.ssupervisor.configure_lock.tunid.ssn.date", FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_lock_tunid_ssn_time, { "TUNID SSN (Manual) Time", "cipsafety.ssupervisor.configure_lock.tunid.ssn.time", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configure_lock_tunid_macid, { "MAC ID", "cipsafety.ssupervisor.configure_lock.tunid.macid", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_mode_change_value, { "Value", "cipsafety.ssupervisor.mode_change.value", FT_UINT8, BASE_DEC, VALS(cip_ssupervisor_change_mode_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_mode_change_password, { "Password", "cipsafety.ssupervisor.mode_change.password", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_type, { "Reset Type", "cipsafety.ssupervisor.reset.type", FT_UINT8, BASE_DEC, VALS(cip_reset_type_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_password, { "Password", "cipsafety.ssupervisor.reset.password", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_tunid, { "Target UNID", "cipsafety.ssupervisor.reset.tunid", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_tunid_tunid_ssn_timestamp, { "TUNID SSN Timestamp", "cipsafety.ssupervisor.reset.tunid.ssn.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_tunid_tunid_ssn_date, { "TUNID SSN (Manual) Date", "cipsafety.ssupervisor.reset.tunid.ssn.date", FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_tunid_tunid_ssn_time, { "TUNID SSN (Manual) Time", "cipsafety.ssupervisor.reset.tunid.ssn.time", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_tunid_macid, { "MAC ID", "cipsafety.ssupervisor.reset.tunid.macid", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_attr_bitmap, { "Attribute Bit Map", "cipsafety.ssupervisor.reset.attr_bitmap", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_attr_bitmap_macid, { "Preserve MacID", "cipsafety.ssupervisor.reset.attr_bitmap.macid", FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x01, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_attr_bitmap_baudrate, { "Preserve Baud Rate", "cipsafety.ssupervisor.reset.attr_bitmap.baudrate", FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x02, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_attr_bitmap_tunid, { "Preserve TUNID", "cipsafety.ssupervisor.reset.attr_bitmap.tunid", FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x04, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_attr_bitmap_password, { "Preserve Password", "cipsafety.ssupervisor.reset.attr_bitmap.password", FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x08, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_attr_bitmap_cfunid, { "Preserve CFUNID", "cipsafety.ssupervisor.reset.attr_bitmap.cfunid", FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x10, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_attr_bitmap_ocpunid, { "Preserve OPCUNID", "cipsafety.ssupervisor.reset.attr_bitmap.ocpunid", FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x20, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_attr_bitmap_reserved, { "Reserved", "cipsafety.ssupervisor.reset.attr_bitmap.reserved", FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x40, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_attr_bitmap_extended, { "Use Extended Map", "cipsafety.ssupervisor.reset.attr_bitmap.extended", FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x80, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_password_data_size, { "Data Size", "cipsafety.ssupervisor.reset_password.data_size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_reset_password_data, { "Password Data", "cipsafety.ssupervisor.reset_password.password_data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_propose_tunid_tunid, { "Target UNID", "cipsafety.ssupervisor.propose_tunid.tunid", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_propose_tunid_tunid_ssn_timestamp, { "TUNID SSN Timestamp", "cipsafety.ssupervisor.propose_tunid.tunid.ssn.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_propose_tunid_tunid_ssn_date, { "TUNID SSN (Manual) Date", "cipsafety.ssupervisor.propose_tunid.tunid.ssn.date", FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_propose_tunid_tunid_ssn_time, { "TUNID SSN (Manual) Time", "cipsafety.ssupervisor.propose_tunid.tunid.ssn.time", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_propose_tunid_tunid_macid, { "MAC ID", "cipsafety.ssupervisor.propose_tunid.tunid.macid", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_apply_tunid_tunid, { "Target UNID", "cipsafety.ssupervisor.apply_tunid.tunid", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_apply_tunid_tunid_ssn_timestamp, { "TUNID SSN Timestamp", "cipsafety.ssupervisor.apply_tunid.tunid.ssn.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_apply_tunid_tunid_ssn_date, { "TUNID SSN (Manual) Date", "cipsafety.ssupervisor.apply_tunid.tunid.ssn.date", FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_apply_tunid_tunid_ssn_time, { "TUNID SSN (Manual) Time", "cipsafety.ssupervisor.apply_tunid.tunid.ssn.time", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_apply_tunid_tunid_macid, { "MAC ID", "cipsafety.ssupervisor.apply_tunid.tunid.macid", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_class_subclass, { "Subclass", "cipsafety.ssupervisor.class_subclass", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_num_attr, { "Number of Attributes", "cipsafety.ssupervisor.num_attr", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_attr_list, { "Attributes List Item", "cipsafety.ssupervisor.attr_item", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_manufacture_name, { "Manufacturer Name", "cipsafety.ssupervisor.manufacture_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_manufacture_model_number, { "Manufacturer Model Number", "cipsafety.ssupervisor.manufacture_model_number", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_sw_rev_level, { "Software Revision Level", "cipsafety.ssupervisor.sw_rev_level", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_hw_rev_level, { "Hardware Revision Level", "cipsafety.ssupervisor.hw_rev_level", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_manufacture_serial_number, { "Manufacturer Serial Number", "cipsafety.ssupervisor.manufacture_serial_number", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_device_config, { "Device Configuration", "cipsafety.ssupervisor.device_config", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_device_status, { "Device Status", "cipsafety.ssupervisor.device_status", FT_UINT8, BASE_DEC, VALS(cip_ssupervisor_device_status_type_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_exception_status, { "Exception Status", "cipsafety.ssupervisor.exception_status", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_exception_detail_alarm_ced_size, { "Common Exeception Detail Size", "cipsafety.ssupervisor.exception_detail_alarm.ced.size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_exception_detail_alarm_ced_detail, { "Common Exeception Detail Data", "cipsafety.ssupervisor.exception_detail_alarm.ced.detail", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_exception_detail_alarm_ded_size, { "Device Exeception Detail Size", "cipsafety.ssupervisor.exception_detail_alarm.ded.size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_exception_detail_alarm_ded_detail, { "Device Exeception Detail Data", "cipsafety.ssupervisor.exception_detail_alarm.ded.detail", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_exception_detail_alarm_med_size, { "Manufacturer Exeception Detail Size", "cipsafety.ssupervisor.exception_detail_alarm.med.size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_exception_detail_alarm_med_detail, { "Manufacturer Exeception Detail Data", "cipsafety.ssupervisor.exception_detail_alarm.med.detail", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_exception_detail_warning_ced_size, { "Common Exeception Detail Size", "cipsafety.ssupervisor.exception_detail_warning.ced.size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_exception_detail_warning_ced_detail, { "Common Exeception Detail Data", "cipsafety.ssupervisor.exception_detail_warning.ced.detail", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_exception_detail_warning_ded_size, { "Device Exeception Detail Size", "cipsafety.ssupervisor.exception_detail_warning.ded.size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_exception_detail_warning_ded_detail, { "Device Exeception Detail Data", "cipsafety.ssupervisor.exception_detail_warning.ded.detail", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_exception_detail_warning_med_size, { "Manufacturer Exeception Detail Size", "cipsafety.ssupervisor.exception_detail_warning.med.size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_exception_detail_warning_med_detail, { "Manufacturer Exeception Detail Data", "cipsafety.ssupervisor.exception_detail_warning.med.detail", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_alarm_enable, { "Exception Detail Alarm", "cipsafety.ssupervisor.alarm_enable", FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_warning_enable, { "Exception Detail Warning", "cipsafety.ssupervisor.warning_enable", FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_time, { "Time", "cipsafety.ssupervisor.time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_clock_power_cycle_behavior, { "Clock Power Cycle Behavior", "cipsafety.ssupervisor.clock_power_cycle_behavior", FT_UINT8, BASE_DEC, VALS(cip_ssupervisor_clock_power_cycle_type_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_last_maintenance_date, { "Last Maintenance Date", "cipsafety.ssupervisor.last_maintenance_date", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_next_scheduled_maintenance_date, { "Next Scheduled Maintenance Date", "cipsafety.ssupervisor.next_scheduled_maintenance_date", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_scheduled_maintenance_expiration_timer, { "Scheduled Maintenance Expiration Timer", "cipsafety.ssupervisor.scheduled_maintenance_expiration_timer", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_scheduled_maintenance_expiration_warning_enable, { "Scheduled Maintenance Expiration Warning Enable", "cipsafety.ssupervisor.scheduled_maintenance_expiration_warning", FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_run_hours, { "Run Hours", "cipsafety.ssupervisor.run_hours", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configuration_lock, { "Configuration Lock", "cipsafety.ssupervisor.configuration_lock", FT_UINT8, BASE_DEC, VALS(cip_ssupervisor_lock_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configuration_unid_ssn_timestamp, { "Configuration UNID SSN Timestamp", "cipsafety.ssupervisor.configuration_unid.ssn.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configuration_unid_ssn_date, { "Configuration UNID SSN (Manual) Date", "cipsafety.ssupervisor.configuration_unid.ssn.date", FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configuration_unid_ssn_time, { "Configuration UNID SSN (Manual) Time", "cipsafety.ssupervisor.configuration_unid.ssn.time", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_configuration_unid_macid, { "Configuration UNID MAC ID", "cipsafety.ssupervisor.configuration_unid.macid", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_safety_configuration_id_ssn_timestamp, { "Safety Configuration ID SSN Timestamp", "cipsafety.ssupervisor.safety_configuration_id.ssn.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_safety_configuration_id_ssn_date, { "Safety Configuration ID SSN (Manual) Date", "cipsafety.ssupervisor.safety_configuration_id.ssn.date", FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_safety_configuration_id_ssn_time, { "Safety Configuration ID SSN (Manual) Time", "cipsafety.ssupervisor.safety_configuration_id.ssn.time", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_safety_configuration_id_macid, { "Safety Configuration ID MAC ID", "cipsafety.ssupervisor.safety_configuration_id.macid", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_target_unid_ssn_timestamp, { "Target UNID SSN Timestamp", "cipsafety.ssupervisor.target_unid.ssn.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_target_unid_ssn_date, { "Target UNID SSN (Manual) Date", "cipsafety.ssupervisor.target_unid.ssn.date", FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_target_unid_ssn_time, { "Target UNID SSN (Manual) Time", "cipsafety.ssupervisor.target_unid.ssn.time", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_target_unid_macid, { "Target UNID MAC ID", "cipsafety.ssupervisor.target_unid.macid", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_cp_owners_num_entries, { "Number of Array Entries", "cipsafety.ssupervisor.cp_owners.num_entries", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_output_cp_owners_ocpunid_ssn_timestamp, { "OCPUNID SSN Timestamp", "cipsafety.ssupervisor.cp_owners.ssn.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_output_cp_owners_ocpunid_ssn_date, { "OCPUNID SSN (Manual) Date", "cipsafety.ssupervisor.cp_owners.ssn.date", FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_output_cp_owners_ocpunid_ssn_time, { "OCPUNID SSN (Manual) Time", "cipsafety.ssupervisor.cp_owners.ssn.time", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_output_cp_owners_ocpunid_macid, { "OCPUNID MAC ID", "cipsafety.ssupervisor.cp_owners.ocpunid.macid", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_cp_owners_app_path_size, { "EPATH Size", "cipsafety.ssupervisor.cp_owners.epath_size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_proposed_tunid_ssn_timestamp, { "Proposed TUNID SSN Timestamp", "cipsafety.ssupervisor.proposed_tunid.ssn.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_proposed_tunid_ssn_date, { "Proposed TUNID SSN (Manual) Date", "cipsafety.ssupervisor.proposed_tunid.ssn.date", FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_proposed_tunid_ssn_time, { "Proposed TUNID SSN (Manual) Time", "cipsafety.ssupervisor.proposed_tunid.ssn.time", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_proposed_tunid_macid, { "Proposed TUNID MAC ID", "cipsafety.ssupervisor.proposed_tunid.macid", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_ssupervisor_instance_subclass, { "Subclass", "cipsafety.ssupervisor.instance_subclass", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}
+ { &hf_cip_ssupervisor_sc,
+ { "Service", "cipsafety.ssupervisor.sc",
+ FT_UINT8, BASE_HEX, VALS(cip_sc_vals_ssupervisor), 0x7F, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_recover_data,
+ { "Data", "cipsafety.ssupervisor.recover.data",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_perform_diag_data,
+ { "Data", "cipsafety.ssupervisor.perform_diag.data",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_request_password,
+ { "Password", "cipsafety.ssupervisor.configure_request.password",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_request_tunid,
+ { "Target UNID", "cipsafety.ssupervisor.configure_request.tunid",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_request_tunid_ssn_timestamp,
+ { "TUNID SSN Timestamp", "cipsafety.ssupervisor.configure_request.tunid.ssn.timestamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_request_tunid_ssn_date,
+ { "TUNID SSN (Manual) Date", "cipsafety.ssupervisor.configure_request.tunid.ssn.date",
+ FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_request_tunid_ssn_time,
+ { "TUNID SSN (Manual) Time", "cipsafety.ssupervisor.configure_request.tunid.ssn.time",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_request_tunid_macid,
+ { "MAC ID", "cipsafety.ssupervisor.configure_request.tunid.macid",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_request_ounid,
+ { "Originator UNID", "cipsafety.ssupervisor.configure_request.ounid",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_request_ounid_ssn_timestamp,
+ { "OUNID SSN Timestamp", "cipsafety.ssupervisor.configure_request.ounid.ssn.timestamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_request_ounid_ssn_date,
+ { "OUNID SSN (Manual) Date", "cipsafety.ssupervisor.configure_request.ounid.ssn.date",
+ FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_request_ounid_ssn_time,
+ { "OUNID SSN (Manual) Time", "cipsafety.ssupervisor.configure_request.ounid.ssn.time",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_request_ounid_macid,
+ { "MAC ID", "cipsafety.ssupervisor.configure_request.ounid.macid",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_validate_configuration_sccrc,
+ { "SCCRC", "cipsafety.ssupervisor.validate_configuration.sccrc",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_validate_configuration_scts_timestamp,
+ { "SCTS (Timestamp)", "cipsafety.ssupervisor.validate_configuration.scts.timestamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_validate_configuration_scts_date,
+ { "SCTS (Manual) Date", "cipsafety.ssupervisor.validate_configuration.scts.date",
+ FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_validate_configuration_scts_time,
+ { "SCTS (Manual) Time", "cipsafety.ssupervisor.validate_configuration.scts.time",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_validate_configuration_ext_error,
+ { "Extended Error", "cipsafety.ssupervisor.validate_configuration.ext_error",
+ FT_UINT16, BASE_DEC, VALS(cip_ssupervisor_validate_configuration_ext_error_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_set_password_current_password,
+ { "Current Password", "cipsafety.ssupervisor.set_password.current_pass",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_set_password_new_password,
+ { "New Password", "cipsafety.ssupervisor.set_password.new_pass",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_lock_value,
+ { "Lock Value", "cipsafety.ssupervisor.configure_lock.lock",
+ FT_UINT8, BASE_DEC, VALS(cip_ssupervisor_lock_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_lock_password,
+ { "Password", "cipsafety.ssupervisor.configure_lock.password",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_lock_tunid,
+ { "Target UNID", "cipsafety.ssupervisor.configure_lock.tunid",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_lock_tunid_ssn_timestamp,
+ { "TUNID SSN Timestamp", "cipsafety.ssupervisor.configure_lock.tunid.ssn.timestamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_lock_tunid_ssn_date,
+ { "TUNID SSN (Manual) Date", "cipsafety.ssupervisor.configure_lock.tunid.ssn.date",
+ FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_lock_tunid_ssn_time,
+ { "TUNID SSN (Manual) Time", "cipsafety.ssupervisor.configure_lock.tunid.ssn.time",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configure_lock_tunid_macid,
+ { "MAC ID", "cipsafety.ssupervisor.configure_lock.tunid.macid",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_mode_change_value,
+ { "Value", "cipsafety.ssupervisor.mode_change.value",
+ FT_UINT8, BASE_DEC, VALS(cip_ssupervisor_change_mode_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_mode_change_password,
+ { "Password", "cipsafety.ssupervisor.mode_change.password",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_type,
+ { "Reset Type", "cipsafety.ssupervisor.reset.type",
+ FT_UINT8, BASE_DEC, VALS(cip_reset_type_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_password,
+ { "Password", "cipsafety.ssupervisor.reset.password",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_tunid,
+ { "Target UNID", "cipsafety.ssupervisor.reset.tunid",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_tunid_tunid_ssn_timestamp,
+ { "TUNID SSN Timestamp", "cipsafety.ssupervisor.reset.tunid.ssn.timestamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_tunid_tunid_ssn_date,
+ { "TUNID SSN (Manual) Date", "cipsafety.ssupervisor.reset.tunid.ssn.date",
+ FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_tunid_tunid_ssn_time,
+ { "TUNID SSN (Manual) Time", "cipsafety.ssupervisor.reset.tunid.ssn.time",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_tunid_macid,
+ { "MAC ID", "cipsafety.ssupervisor.reset.tunid.macid",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_attr_bitmap,
+ { "Attribute Bit Map", "cipsafety.ssupervisor.reset.attr_bitmap",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_attr_bitmap_macid,
+ { "Preserve MacID", "cipsafety.ssupervisor.reset.attr_bitmap.macid",
+ FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x01, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_attr_bitmap_baudrate,
+ { "Preserve Baud Rate", "cipsafety.ssupervisor.reset.attr_bitmap.baudrate",
+ FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x02, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_attr_bitmap_tunid,
+ { "Preserve TUNID", "cipsafety.ssupervisor.reset.attr_bitmap.tunid",
+ FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x04, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_attr_bitmap_password,
+ { "Preserve Password", "cipsafety.ssupervisor.reset.attr_bitmap.password",
+ FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x08, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_attr_bitmap_cfunid,
+ { "Preserve CFUNID", "cipsafety.ssupervisor.reset.attr_bitmap.cfunid",
+ FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x10, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_attr_bitmap_ocpunid,
+ { "Preserve OPCUNID", "cipsafety.ssupervisor.reset.attr_bitmap.ocpunid",
+ FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x20, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_attr_bitmap_reserved,
+ { "Reserved", "cipsafety.ssupervisor.reset.attr_bitmap.reserved",
+ FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x40, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_attr_bitmap_extended,
+ { "Use Extended Map", "cipsafety.ssupervisor.reset.attr_bitmap.extended",
+ FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x80, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_password_data_size,
+ { "Data Size", "cipsafety.ssupervisor.reset_password.data_size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_reset_password_data,
+ { "Password Data", "cipsafety.ssupervisor.reset_password.password_data",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_propose_tunid_tunid,
+ { "Target UNID", "cipsafety.ssupervisor.propose_tunid.tunid",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_propose_tunid_tunid_ssn_timestamp,
+ { "TUNID SSN Timestamp", "cipsafety.ssupervisor.propose_tunid.tunid.ssn.timestamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_propose_tunid_tunid_ssn_date,
+ { "TUNID SSN (Manual) Date", "cipsafety.ssupervisor.propose_tunid.tunid.ssn.date",
+ FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_propose_tunid_tunid_ssn_time,
+ { "TUNID SSN (Manual) Time", "cipsafety.ssupervisor.propose_tunid.tunid.ssn.time",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_propose_tunid_tunid_macid,
+ { "MAC ID", "cipsafety.ssupervisor.propose_tunid.tunid.macid",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_apply_tunid_tunid,
+ { "Target UNID", "cipsafety.ssupervisor.apply_tunid.tunid",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_apply_tunid_tunid_ssn_timestamp,
+ { "TUNID SSN Timestamp", "cipsafety.ssupervisor.apply_tunid.tunid.ssn.timestamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_apply_tunid_tunid_ssn_date,
+ { "TUNID SSN (Manual) Date", "cipsafety.ssupervisor.apply_tunid.tunid.ssn.date",
+ FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_apply_tunid_tunid_ssn_time,
+ { "TUNID SSN (Manual) Time", "cipsafety.ssupervisor.apply_tunid.tunid.ssn.time",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_apply_tunid_tunid_macid,
+ { "MAC ID", "cipsafety.ssupervisor.apply_tunid.tunid.macid",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_class_subclass,
+ { "Subclass", "cipsafety.ssupervisor.class_subclass",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_num_attr,
+ { "Number of Attributes", "cipsafety.ssupervisor.num_attr",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_attr_list,
+ { "Attributes List Item", "cipsafety.ssupervisor.attr_item",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_manufacture_name,
+ { "Manufacturer Name", "cipsafety.ssupervisor.manufacture_name",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_manufacture_model_number,
+ { "Manufacturer Model Number", "cipsafety.ssupervisor.manufacture_model_number",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_sw_rev_level,
+ { "Software Revision Level", "cipsafety.ssupervisor.sw_rev_level",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_hw_rev_level,
+ { "Hardware Revision Level", "cipsafety.ssupervisor.hw_rev_level",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_manufacture_serial_number,
+ { "Manufacturer Serial Number", "cipsafety.ssupervisor.manufacture_serial_number",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_device_config,
+ { "Device Configuration", "cipsafety.ssupervisor.device_config",
+ FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_device_status,
+ { "Device Status", "cipsafety.ssupervisor.device_status",
+ FT_UINT8, BASE_DEC, VALS(cip_ssupervisor_device_status_type_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_exception_status,
+ { "Exception Status", "cipsafety.ssupervisor.exception_status",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_exception_detail_alarm_ced_size,
+ { "Common Exeception Detail Size", "cipsafety.ssupervisor.exception_detail_alarm.ced.size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_exception_detail_alarm_ced_detail,
+ { "Common Exeception Detail Data", "cipsafety.ssupervisor.exception_detail_alarm.ced.detail",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_exception_detail_alarm_ded_size,
+ { "Device Exeception Detail Size", "cipsafety.ssupervisor.exception_detail_alarm.ded.size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_exception_detail_alarm_ded_detail,
+ { "Device Exeception Detail Data", "cipsafety.ssupervisor.exception_detail_alarm.ded.detail",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_exception_detail_alarm_med_size,
+ { "Manufacturer Exeception Detail Size", "cipsafety.ssupervisor.exception_detail_alarm.med.size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_exception_detail_alarm_med_detail,
+ { "Manufacturer Exeception Detail Data", "cipsafety.ssupervisor.exception_detail_alarm.med.detail",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_exception_detail_warning_ced_size,
+ { "Common Exeception Detail Size", "cipsafety.ssupervisor.exception_detail_warning.ced.size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_exception_detail_warning_ced_detail,
+ { "Common Exeception Detail Data", "cipsafety.ssupervisor.exception_detail_warning.ced.detail",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_exception_detail_warning_ded_size,
+ { "Device Exeception Detail Size", "cipsafety.ssupervisor.exception_detail_warning.ded.size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_exception_detail_warning_ded_detail,
+ { "Device Exeception Detail Data", "cipsafety.ssupervisor.exception_detail_warning.ded.detail",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_exception_detail_warning_med_size,
+ { "Manufacturer Exeception Detail Size", "cipsafety.ssupervisor.exception_detail_warning.med.size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_exception_detail_warning_med_detail,
+ { "Manufacturer Exeception Detail Data", "cipsafety.ssupervisor.exception_detail_warning.med.detail",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_alarm_enable,
+ { "Exception Detail Alarm", "cipsafety.ssupervisor.alarm_enable",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_warning_enable,
+ { "Exception Detail Warning", "cipsafety.ssupervisor.warning_enable",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_time,
+ { "Time", "cipsafety.ssupervisor.time",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_clock_power_cycle_behavior,
+ { "Clock Power Cycle Behavior", "cipsafety.ssupervisor.clock_power_cycle_behavior",
+ FT_UINT8, BASE_DEC, VALS(cip_ssupervisor_clock_power_cycle_type_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_last_maintenance_date,
+ { "Last Maintenance Date", "cipsafety.ssupervisor.last_maintenance_date",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_next_scheduled_maintenance_date,
+ { "Next Scheduled Maintenance Date", "cipsafety.ssupervisor.next_scheduled_maintenance_date",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_scheduled_maintenance_expiration_timer,
+ { "Scheduled Maintenance Expiration Timer", "cipsafety.ssupervisor.scheduled_maintenance_expiration_timer",
+ FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_scheduled_maintenance_expiration_warning_enable,
+ { "Scheduled Maintenance Expiration Warning Enable", "cipsafety.ssupervisor.scheduled_maintenance_expiration_warning",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_run_hours,
+ { "Run Hours", "cipsafety.ssupervisor.run_hours",
+ FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configuration_lock,
+ { "Configuration Lock", "cipsafety.ssupervisor.configuration_lock",
+ FT_UINT8, BASE_DEC, VALS(cip_ssupervisor_lock_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configuration_unid_ssn_timestamp,
+ { "Configuration UNID SSN Timestamp", "cipsafety.ssupervisor.configuration_unid.ssn.timestamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configuration_unid_ssn_date,
+ { "Configuration UNID SSN (Manual) Date", "cipsafety.ssupervisor.configuration_unid.ssn.date",
+ FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configuration_unid_ssn_time,
+ { "Configuration UNID SSN (Manual) Time", "cipsafety.ssupervisor.configuration_unid.ssn.time",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_configuration_unid_macid,
+ { "Configuration UNID MAC ID", "cipsafety.ssupervisor.configuration_unid.macid",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_safety_configuration_id_ssn_timestamp,
+ { "Safety Configuration ID SSN Timestamp", "cipsafety.ssupervisor.safety_configuration_id.ssn.timestamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_safety_configuration_id_ssn_date,
+ { "Safety Configuration ID SSN (Manual) Date", "cipsafety.ssupervisor.safety_configuration_id.ssn.date",
+ FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_safety_configuration_id_ssn_time,
+ { "Safety Configuration ID SSN (Manual) Time", "cipsafety.ssupervisor.safety_configuration_id.ssn.time",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_safety_configuration_id_macid,
+ { "Safety Configuration ID MAC ID", "cipsafety.ssupervisor.safety_configuration_id.macid",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_target_unid_ssn_timestamp,
+ { "Target UNID SSN Timestamp", "cipsafety.ssupervisor.target_unid.ssn.timestamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_target_unid_ssn_date,
+ { "Target UNID SSN (Manual) Date", "cipsafety.ssupervisor.target_unid.ssn.date",
+ FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_target_unid_ssn_time,
+ { "Target UNID SSN (Manual) Time", "cipsafety.ssupervisor.target_unid.ssn.time",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_target_unid_macid,
+ { "Target UNID MAC ID", "cipsafety.ssupervisor.target_unid.macid",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_cp_owners_num_entries,
+ { "Number of Array Entries", "cipsafety.ssupervisor.cp_owners.num_entries",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_output_cp_owners_ocpunid_ssn_timestamp,
+ { "OCPUNID SSN Timestamp", "cipsafety.ssupervisor.cp_owners.ssn.timestamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_output_cp_owners_ocpunid_ssn_date,
+ { "OCPUNID SSN (Manual) Date", "cipsafety.ssupervisor.cp_owners.ssn.date",
+ FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_output_cp_owners_ocpunid_ssn_time,
+ { "OCPUNID SSN (Manual) Time", "cipsafety.ssupervisor.cp_owners.ssn.time",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_output_cp_owners_ocpunid_macid,
+ { "OCPUNID MAC ID", "cipsafety.ssupervisor.cp_owners.ocpunid.macid",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_cp_owners_app_path_size,
+ { "EPATH Size", "cipsafety.ssupervisor.cp_owners.epath_size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_proposed_tunid_ssn_timestamp,
+ { "Proposed TUNID SSN Timestamp", "cipsafety.ssupervisor.proposed_tunid.ssn.timestamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_proposed_tunid_ssn_date,
+ { "Proposed TUNID SSN (Manual) Date", "cipsafety.ssupervisor.proposed_tunid.ssn.date",
+ FT_UINT16, BASE_HEX, VALS(cipsafety_ssn_date_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_proposed_tunid_ssn_time,
+ { "Proposed TUNID SSN (Manual) Time", "cipsafety.ssupervisor.proposed_tunid.ssn.time",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_proposed_tunid_macid,
+ { "Proposed TUNID MAC ID", "cipsafety.ssupervisor.proposed_tunid.macid",
+ FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_ssupervisor_instance_subclass,
+ { "Subclass", "cipsafety.ssupervisor.instance_subclass",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ }
};
static hf_register_info hf_svalidator[] = {
- { &hf_cip_svalidator_sc, { "Service", "cipsafety.svalidator.sc", FT_UINT8, BASE_HEX, VALS(cip_sc_vals_svalidator), 0x7F, NULL, HFILL }},
-
- { &hf_cip_svalidator_sconn_fault_count, { "Safety Connection Fault Count", "cipsafety.svalidator.sconn_fault_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_state, { "Safety Validator State", "cipsafety.svalidator.state", FT_UINT8, BASE_DEC, VALS(cip_svalidator_state_vals), 0, NULL, HFILL }},
- { &hf_cip_svalidator_type, { "Safety Validator Type", "cipsafety.svalidator.type", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_type_pc, { "Producer/Consumer", "cipsafety.svalidator.type.pc", FT_UINT8, BASE_HEX, VALS(cip_svalidator_type_pc_vals), 0x80, NULL, HFILL }},
- { &hf_cip_svalidator_type_conn_type, { "Safety Connection Type", "cipsafety.svalidator.type.conn_type", FT_UINT8, BASE_DEC, VALS(cip_svalidator_type_conn_type_vals), 0x7F, NULL, HFILL }},
- { &hf_cip_svalidator_ping_eri, { "Ping Interval EPI Multipler", "cipsafety.svalidator.ping_eri", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_time_coord_msg_min_mult_size, { "Time Coord Msg Min Multiplier Size", "cipsafety.svalidator.time_coord_msg_min_mult.size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_time_coord_msg_min_mult_item, { "Time Coord Msg Min Multiplier Item", "cipsafety.svalidator.time_coord_msg_min_mult.item", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_network_time_multiplier_size, { "Network Time Expectation Multipler Size", "cipsafety.svalidator.network_time_multiplier.size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_network_time_multiplier_item, { "Network Time Expectation Multipler Item", "cipsafety.svalidator.network_time_multiplier.item", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_timeout_multiplier_size, { "Timeout Multiplier Size", "cipsafety.svalidator.timeout_multiplier.size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_timeout_multiplier_item, { "Timeout Multiplier Item", "cipsafety.svalidator.timeout_multiplier.item", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_max_consumer_num, { "Max Consumer Number", "cipsafety.svalidator.max_consumer_num", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_data_conn_inst, { "Data Connection Instance", "cipsafety.svalidator.data_conn_inst", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_coordination_conn_inst_size, { "Coordination Connection Instance Size", "cipsafety.svalidator.coordination_conn_inst.size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_coordination_conn_inst_item, { "Coordination Connection Instance Item", "cipsafety.svalidator.coordination_conn_inst.item", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_correction_conn_inst, { "Correction Connection Instance", "cipsafety.svalidator.correction_conn_inst", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_cco_binding, { "CCO Binding", "cipsafety.svalidator.cco_binding", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_max_data_age, { "Max Data Age", "cipsafety.svalidator.max_data_age", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_error_code, { "Error Code", "cipsafety.svalidator.error_code", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_prod_cons_fault_count_size, { "Producer/Consumer Counter Size", "cipsafety.svalidator.prod_cons_fault_count.size", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
- { &hf_cip_svalidator_prod_cons_fault_count_item, { "Producer/Consumer Counter Item", "cipsafety.svalidator.prod_cons_fault_count.item", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}
+ { &hf_cip_svalidator_sc,
+ { "Service", "cipsafety.svalidator.sc",
+ FT_UINT8, BASE_HEX, VALS(cip_sc_vals_svalidator), 0x7F, NULL, HFILL }
+ },
+
+ { &hf_cip_svalidator_sconn_fault_count,
+ { "Safety Connection Fault Count", "cipsafety.svalidator.sconn_fault_count",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_state,
+ { "Safety Validator State", "cipsafety.svalidator.state",
+ FT_UINT8, BASE_DEC, VALS(cip_svalidator_state_vals), 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_type,
+ { "Safety Validator Type", "cipsafety.svalidator.type",
+ FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_type_pc,
+ { "Producer/Consumer", "cipsafety.svalidator.type.pc",
+ FT_UINT8, BASE_HEX, VALS(cip_svalidator_type_pc_vals), 0x80, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_type_conn_type,
+ { "Safety Connection Type", "cipsafety.svalidator.type.conn_type",
+ FT_UINT8, BASE_DEC, VALS(cip_svalidator_type_conn_type_vals), 0x7F, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_ping_eri,
+ { "Ping Interval EPI Multipler", "cipsafety.svalidator.ping_eri",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_time_coord_msg_min_mult_size,
+ { "Time Coord Msg Min Multiplier Size", "cipsafety.svalidator.time_coord_msg_min_mult.size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_time_coord_msg_min_mult_item,
+ { "Time Coord Msg Min Multiplier Item", "cipsafety.svalidator.time_coord_msg_min_mult.item",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_network_time_multiplier_size,
+ { "Network Time Expectation Multipler Size", "cipsafety.svalidator.network_time_multiplier.size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_network_time_multiplier_item,
+ { "Network Time Expectation Multipler Item", "cipsafety.svalidator.network_time_multiplier.item",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_timeout_multiplier_size,
+ { "Timeout Multiplier Size", "cipsafety.svalidator.timeout_multiplier.size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_timeout_multiplier_item,
+ { "Timeout Multiplier Item", "cipsafety.svalidator.timeout_multiplier.item",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_max_consumer_num,
+ { "Max Consumer Number", "cipsafety.svalidator.max_consumer_num",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_data_conn_inst,
+ { "Data Connection Instance", "cipsafety.svalidator.data_conn_inst",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_coordination_conn_inst_size,
+ { "Coordination Connection Instance Size", "cipsafety.svalidator.coordination_conn_inst.size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_coordination_conn_inst_item,
+ { "Coordination Connection Instance Item", "cipsafety.svalidator.coordination_conn_inst.item",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_correction_conn_inst,
+ { "Correction Connection Instance", "cipsafety.svalidator.correction_conn_inst",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_cco_binding,
+ { "CCO Binding", "cipsafety.svalidator.cco_binding",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_max_data_age,
+ { "Max Data Age", "cipsafety.svalidator.max_data_age",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_error_code,
+ { "Error Code", "cipsafety.svalidator.error_code",
+ FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_prod_cons_fault_count_size,
+ { "Producer/Consumer Counter Size", "cipsafety.svalidator.prod_cons_fault_count.size",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ },
+ { &hf_cip_svalidator_prod_cons_fault_count_item,
+ { "Producer/Consumer Counter Item", "cipsafety.svalidator.prod_cons_fault_count.item",
+ FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
+ }
};
static gint *ett[] = {