forked from osmocom/wireshark
![Adam Goldman](/assets/img/avatar_default.png)
Used tcp_dissect_pdus API to reassemble FE TCP packets. Change-Id: I82bb270bacbd3f5790c015c5a876981417e271fa Signed-off-by: Adam Goldman <adam.goldman@intel.com> Reviewed-on: https://code.wireshark.org/review/28203 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
13677 lines
674 KiB
C
13677 lines
674 KiB
C
/* packet-opa-mad.c
|
|
* Routines for Omni-Path MAD header and payload dissection
|
|
* Copyright (c) 2016, Intel Corporation.
|
|
*
|
|
* Wireshark - Network traffic analyzer
|
|
* By Gerald Combs <gerald@wireshark.org>
|
|
* Copyright 1998 Gerald Combs
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#include <epan/packet.h>
|
|
#include <epan/prefs.h>
|
|
#include <epan/etypes.h>
|
|
#include <epan/expert.h>
|
|
#include <epan/reassemble.h>
|
|
|
|
void proto_reg_handoff_opa_mad(void);
|
|
void proto_register_opa_mad(void);
|
|
|
|
/* MAD Management Classes */
|
|
#define SUBN_LID_ROUTED 0x01
|
|
#define SUBN_DIRECTED_ROUTE 0x81
|
|
#define SUBNADMN 0x03
|
|
#define PERF 0x04
|
|
#define PERFADMN 0x32
|
|
|
|
/* Depreciated Management Classes */
|
|
#define BM 0x05
|
|
#define DEV_MGT 0x06
|
|
#define COM_MGT 0x07
|
|
#define SNMP 0x08
|
|
|
|
/* Default Range Strings */
|
|
#define OPA_MGMTCLASS_RANGE_STR "0x01,0x03-0x04,0x32,0x81"
|
|
#define OPA_VENDOR_RANGE_STR "0x09-0x0F"
|
|
#define OPA_VENDOR_RMPP_RANGE_STR "0x30-0x31,0x33-0x4F"
|
|
#define OPA_APPLICATION_RANGE_STR "0x10-0x2F"
|
|
#define OPA_RESERVED_RANGE_STR "0x00,0x02,0x50-0x80,0x82-0xFF"
|
|
|
|
static const value_string MAD_mgmt_names[] = {
|
|
{ SUBN_LID_ROUTED, "Subnet Management (LID Routed)" },
|
|
{ SUBNADMN, "Subnet Administration" },
|
|
{ PERF, "Performance Management" },
|
|
{ BM, "Baseboard Management" },
|
|
{ DEV_MGT, "Device Management" },
|
|
{ COM_MGT, "Communication Management" },
|
|
{ SNMP, "SNMP" },
|
|
{ 0x09, "VENDOR 0x09" },
|
|
{ 0x0A, "VENDOR 0x0A" },
|
|
{ 0x0B, "VENDOR 0x0B" },
|
|
{ 0x0C, "VENDOR 0x0C" },
|
|
{ 0x0D, "VENDOR 0x0D" },
|
|
{ 0x0E, "VENDOR 0x0E" },
|
|
{ 0x0F, "VENDOR 0x0F" },
|
|
{ 0x10, "APPLICATION 0x10" },
|
|
{ 0x11, "APPLICATION 0x11" },
|
|
{ 0x12, "APPLICATION 0x12" },
|
|
{ 0x13, "APPLICATION 0x13" },
|
|
{ 0x14, "APPLICATION 0x14" },
|
|
{ 0x15, "APPLICATION 0x15" },
|
|
{ 0x16, "APPLICATION 0x16" },
|
|
{ 0x17, "APPLICATION 0x17" },
|
|
{ 0x18, "APPLICATION 0x18" },
|
|
{ 0x19, "APPLICATION 0x19" },
|
|
{ 0x1A, "APPLICATION 0x1A" },
|
|
{ 0x1B, "APPLICATION 0x1B" },
|
|
{ 0x1C, "APPLICATION 0x1C" },
|
|
{ 0x1D, "APPLICATION 0x1D" },
|
|
{ 0x1E, "APPLICATION 0x1E" },
|
|
{ 0x1F, "APPLICATION 0x1F" },
|
|
{ 0X20, "APPLICATION 0X20" },
|
|
{ 0x21, "APPLICATION 0x21" },
|
|
{ 0x22, "APPLICATION 0x22" },
|
|
{ 0x23, "APPLICATION 0x23" },
|
|
{ 0x24, "APPLICATION 0x24" },
|
|
{ 0x25, "APPLICATION 0x25" },
|
|
{ 0x26, "APPLICATION 0x26" },
|
|
{ 0x27, "APPLICATION 0x27" },
|
|
{ 0x28, "APPLICATION 0x28" },
|
|
{ 0x29, "APPLICATION 0x29" },
|
|
{ 0x2A, "APPLICATION 0x2A" },
|
|
{ 0x2B, "APPLICATION 0x2B" },
|
|
{ 0x2C, "APPLICATION 0x2C" },
|
|
{ 0x2D, "APPLICATION 0x2D" },
|
|
{ 0x2E, "APPLICATION 0x2E" },
|
|
{ 0x2F, "APPLICATION 0x2F" },
|
|
{ 0x30, "VENDOR 0x30" },
|
|
{ 0x31, "VENDOR 0x31" },
|
|
{ PERFADMN, "Performance Administration" },
|
|
{ 0x33, "VENDOR 0x33" },
|
|
{ 0x34, "VENDOR 0x34" },
|
|
{ 0x35, "VENDOR 0x35" },
|
|
{ 0x36, "VENDOR 0x36" },
|
|
{ 0x37, "VENDOR 0x37" },
|
|
{ 0x38, "VENDOR 0x38" },
|
|
{ 0x39, "VENDOR 0x39" },
|
|
{ 0x3A, "VENDOR 0x3A" },
|
|
{ 0x3B, "VENDOR 0x3B" },
|
|
{ 0x3C, "VENDOR 0x3C" },
|
|
{ 0x3D, "VENDOR 0x3D" },
|
|
{ 0x3E, "VENDOR 0x3E" },
|
|
{ 0x3F, "VENDOR 0x3F" },
|
|
{ 0x40, "VENDOR 0x40" },
|
|
{ 0x41, "VENDOR 0x41" },
|
|
{ 0x42, "VENDOR 0x42" },
|
|
{ 0x43, "VENDOR 0x43" },
|
|
{ 0x44, "VENDOR 0x44" },
|
|
{ 0x45, "VENDOR 0x45" },
|
|
{ 0x46, "VENDOR 0x46" },
|
|
{ 0x47, "VENDOR 0x47" },
|
|
{ 0x48, "VENDOR 0x48" },
|
|
{ 0x49, "VENDOR 0x49" },
|
|
{ 0x4A, "VENDOR 0x4A" },
|
|
{ 0x4B, "VENDOR 0x4B" },
|
|
{ 0x4C, "VENDOR 0x4C" },
|
|
{ 0x4D, "VENDOR 0x4D" },
|
|
{ 0x4E, "VENDOR 0x4E" },
|
|
{ 0x4F, "VENDOR 0x4F" },
|
|
{ SUBN_DIRECTED_ROUTE, "Subnet Management (Direct Routed)" },
|
|
{ 0, NULL }
|
|
};
|
|
static value_string_ext MAD_mgmt_names_ext = VALUE_STRING_EXT_INIT(MAD_mgmt_names);
|
|
|
|
/* SM Attributes */
|
|
#define SM_ATTR_ID_CLASS_PORT_INFO 0x0001
|
|
#define SM_ATTR_ID_NOTICE 0x0002
|
|
#define SM_ATTR_ID_INFORM_INFO 0x0003
|
|
#define SM_ATTR_ID_NODE_DESCRIPTION 0x0010
|
|
#define SM_ATTR_ID_NODE_INFO 0x0011
|
|
#define SM_ATTR_ID_SWITCH_INFO 0x0012
|
|
#define SM_ATTR_ID_PORT_INFO 0x0015
|
|
#define SM_ATTR_ID_PART_TABLE 0x0016
|
|
#define SM_ATTR_ID_SL_SC_MAPPING_TABLE 0x0017
|
|
#define SM_ATTR_ID_VL_ARBITRATION 0x0018
|
|
#define SM_ATTR_ID_LINEAR_FWD_TABLE 0x0019
|
|
#define SM_ATTR_ID_MCAST_FWD_TABLE 0x001B
|
|
#define SM_ATTR_ID_SM_INFO 0x0020
|
|
#define SM_ATTR_ID_LED_INFO 0x0031
|
|
#define SM_ATTR_ID_CABLE_INFO 0x0032
|
|
#define SM_ATTR_ID_AGGREGATE 0x0080
|
|
#define SM_ATTR_ID_SC_SC_MAPPING_TABLE 0x0081
|
|
#define SM_ATTR_ID_SC_SL_MAPPING_TABLE 0x0082
|
|
#define SM_ATTR_ID_SC_VLR_MAPPING_TABLE 0x0083
|
|
#define SM_ATTR_ID_SC_VLT_MAPPING_TABLE 0x0084
|
|
#define SM_ATTR_ID_SC_VLNT_MAPPING_TABLE 0x0085
|
|
#define SM_ATTR_ID_PORT_STATE_INFO 0x0087
|
|
#define SM_ATTR_ID_PORT_GROUP_FWD_TABLE 0x0088
|
|
#define SM_ATTR_ID_PORT_GROUP_TABLE 0x0089
|
|
#define SM_ATTR_ID_BUFFER_CONTROL_TABLE 0x008A
|
|
#define SM_ATTR_ID_CONGESTION_INFO 0x008B
|
|
#define SM_ATTR_ID_SWITCH_CONGESTION_LOG 0x008C
|
|
#define SM_ATTR_ID_SWITCH_CONGESTION_SETTING 0x008D
|
|
#define SM_ATTR_ID_SWITCH_PORT_CONGESTION_SETTING 0x008E
|
|
#define SM_ATTR_ID_HFI_CONGESTION_LOG 0x008F
|
|
#define SM_ATTR_ID_HFI_CONGESTION_SETTING 0x0090
|
|
#define SM_ATTR_ID_HFI_CONGESTION_CONTROL_TABLE 0x0091
|
|
|
|
/* SA Attributes */
|
|
#define SA_ATTR_ID_CLASS_PORT_INFO 0x0001
|
|
#define SA_ATTR_ID_NOTICE 0x0002
|
|
#define SA_ATTR_ID_INFORM_INFO 0x0003
|
|
#define SA_ATTR_ID_NODE_RECORD 0x0011
|
|
#define SA_ATTR_ID_PORTINFO_RECORD 0x0012
|
|
#define SA_ATTR_ID_SC_MAPTBL_RECORD 0x0013
|
|
#define SA_ATTR_ID_SWITCHINFO_RECORD 0x0014
|
|
#define SA_ATTR_ID_LINEAR_FWDTBL_RECORD 0x0015
|
|
#define SA_ATTR_ID_MCAST_FWDTBL_RECORD 0x0017
|
|
#define SA_ATTR_ID_SMINFO_RECORD 0x0018
|
|
#define SA_ATTR_ID_LINK_SPD_WDTH_PAIRS_RECORD 0x0019
|
|
#define SA_ATTR_ID_LINK_RECORD 0x0020
|
|
#define SA_ATTR_ID_SERVICE_RECORD 0x0031
|
|
#define SA_ATTR_ID_P_KEY_TABLE_RECORD 0x0033
|
|
#define SA_ATTR_ID_PATH_RECORD 0x0035
|
|
#define SA_ATTR_ID_VLARBTABLE_RECORD 0x0036
|
|
#define SA_ATTR_ID_MCMEMBER_RECORD 0x0038
|
|
#define SA_ATTR_ID_TRACE_RECORD 0x0039
|
|
#define SA_ATTR_ID_MULTIPATH_GID_RECORD 0x003A
|
|
#define SA_ATTR_ID_SERVICEASSOCIATION_RECORD 0x003B
|
|
#define SA_ATTR_ID_SL2SC_MAPTBL_RECORD 0x0080
|
|
#define SA_ATTR_ID_SC2SL_MAPTBL_RECORD 0x0081
|
|
#define SA_ATTR_ID_SC_VLNT_MAPTBL_RECORD 0x0082
|
|
#define SA_ATTR_ID_SC_VLT_MAPTBL_RECORD 0x0083
|
|
#define SA_ATTR_ID_SC_VLR_MAPTBL_RECORD 0x0084
|
|
#define SA_ATTR_ID_PGROUP_FWDTBL_RECORD 0x0085
|
|
#define SA_ATTR_ID_MULTIPATH_GUID_RECORD 0x0086
|
|
#define SA_ATTR_ID_MULTIPATH_LID_RECORD 0x0087
|
|
#define SA_ATTR_ID_CABLE_INFO_RECORD 0x0088
|
|
#define SA_ATTR_ID_VF_INFO_RECORD 0x0089
|
|
#define SA_ATTR_ID_PORTGROUP_TABLE_RECORD 0x008B
|
|
#define SA_ATTR_ID_BUFF_CTRL_TAB_RECORD 0x008C
|
|
#define SA_ATTR_ID_FABRICINFO_RECORD 0x008D
|
|
#define SA_ATTR_ID_QUARANTINED_NODE_RECORD 0x0090
|
|
#define SA_ATTR_ID_CONGESTION_INFO_RECORD 0x0091
|
|
#define SA_ATTR_ID_SWITCH_CONG_RECORD 0x0092
|
|
#define SA_ATTR_ID_SWITCH_PORT_CONG_RECORD 0x0093
|
|
#define SA_ATTR_ID_HFI_CONG_RECORD 0x0094
|
|
#define SA_ATTR_ID_HFI_CONG_CTRL_RECORD 0x0095
|
|
#define SA_ATTR_ID_INFORM_INFO_RECORD 0x00F3
|
|
|
|
/* Performance Management class Attributes */
|
|
#define PM_ATTR_ID_CLASS_PORTINFO 0x0001
|
|
#define PM_ATTR_ID_PORT_STATUS 0x0040
|
|
#define PM_ATTR_ID_CLEAR_PORT_STATUS 0x0041
|
|
#define PM_ATTR_ID_DATA_PORT_COUNTERS 0x0042
|
|
#define PM_ATTR_ID_ERROR_PORT_COUNTERS 0x0043
|
|
#define PM_ATTR_ID_ERROR_INFO 0x0044
|
|
/* Performance Administration class Attributes */
|
|
#define PA_ATTR_ID_CLASS_PORTINFO 0x0001
|
|
#define PA_ATTR_ID_GET_GRP_LIST 0x00A0
|
|
#define PA_ATTR_ID_GET_GRP_INFO 0x00A1
|
|
#define PA_ATTR_ID_GET_GRP_CFG 0x00A2
|
|
#define PA_ATTR_ID_GET_PORT_CTRS 0x00A3
|
|
#define PA_ATTR_ID_CLR_PORT_CTRS 0x00A4
|
|
#define PA_ATTR_ID_CLR_ALL_PORT_CTRS 0x00A5
|
|
#define PA_ATTR_ID_GET_PM_CFG 0x00A6
|
|
#define PA_ATTR_ID_FREEZE_IMAGE 0x00A7
|
|
#define PA_ATTR_ID_RELEASE_IMAGE 0x00A8
|
|
#define PA_ATTR_ID_RENEW_IMAGE 0x00A9
|
|
#define PA_ATTR_ID_GET_FOCUS_PORTS 0x00AA
|
|
#define PA_ATTR_ID_GET_IMAGE_INFO 0x00AB
|
|
#define PA_ATTR_ID_MOVE_FREEZE_FRAME 0x00AC
|
|
#define PA_ATTR_ID_GET_VF_LIST 0x00AD
|
|
#define PA_ATTR_ID_GET_VF_INFO 0x00AE
|
|
#define PA_ATTR_ID_GET_VF_CONFIG 0x00AF
|
|
#define PA_ATTR_ID_GET_VF_PORT_CTRS 0x00B0
|
|
#define PA_ATTR_ID_CLR_VF_PORT_CTRS 0x00B1
|
|
#define PA_ATTR_ID_GET_VF_FOCUS_PORTS 0x00B2
|
|
|
|
/* Attributes */
|
|
static const value_string SUBM_Attributes[] = {
|
|
{ SM_ATTR_ID_CLASS_PORT_INFO, "Attribute (ClassPortInfo)" },
|
|
{ SM_ATTR_ID_NOTICE, "Attribute (Notice)" },
|
|
{ SM_ATTR_ID_INFORM_INFO, "Attribute (InformInfo)" },
|
|
{ SM_ATTR_ID_NODE_DESCRIPTION, "Attribute (NodeDescription)" },
|
|
{ SM_ATTR_ID_NODE_INFO, "Attribute (NodeInfo)" },
|
|
{ SM_ATTR_ID_SWITCH_INFO, "Attribute (SwitchInfo)" },
|
|
{ SM_ATTR_ID_PORT_INFO, "Attribute (PortInfo)" },
|
|
{ SM_ATTR_ID_PART_TABLE, "Attribute (PKeyTable)" },
|
|
{ SM_ATTR_ID_SL_SC_MAPPING_TABLE, "Attribute (SLSCMappingTable)" },
|
|
{ SM_ATTR_ID_VL_ARBITRATION, "Attribute (VLArbitrationTable)" },
|
|
{ SM_ATTR_ID_LINEAR_FWD_TABLE, "Attribute (LinearForwardingTable)" },
|
|
{ SM_ATTR_ID_MCAST_FWD_TABLE, "Attribute (MulticastForwardingTable)" },
|
|
{ SM_ATTR_ID_SM_INFO, "Attribute (SMInfo)" },
|
|
{ SM_ATTR_ID_LED_INFO, "Attribute (LedInfo)" },
|
|
{ SM_ATTR_ID_CABLE_INFO, "Attribute (CableInfo)" },
|
|
{ SM_ATTR_ID_AGGREGATE, "Attribute (Aggregate)" },
|
|
{ SM_ATTR_ID_SC_SC_MAPPING_TABLE, "Attribute (SCSCMappingTable)" },
|
|
{ SM_ATTR_ID_SC_SL_MAPPING_TABLE, "Attribute (SCSLMappingTable)" },
|
|
{ SM_ATTR_ID_SC_VLR_MAPPING_TABLE, "Attribute (SCVLRMappingTable)" },
|
|
{ SM_ATTR_ID_SC_VLT_MAPPING_TABLE, "Attribute (SCVLTMappingTable)" },
|
|
{ SM_ATTR_ID_SC_VLNT_MAPPING_TABLE, "Attribute (SCVLNTMappingTable)" },
|
|
{ SM_ATTR_ID_PORT_STATE_INFO, "Attribute (PortStateInfo)" },
|
|
{ SM_ATTR_ID_PORT_GROUP_FWD_TABLE, "Attribute (PortGroupForwardingTable)" },
|
|
{ SM_ATTR_ID_PORT_GROUP_TABLE, "Attribute (PortGroupTable)" },
|
|
{ SM_ATTR_ID_BUFFER_CONTROL_TABLE, "Attribute (BufferControlTable)" },
|
|
{ SM_ATTR_ID_CONGESTION_INFO, "Attribute (CongestionInfo)" },
|
|
{ SM_ATTR_ID_SWITCH_CONGESTION_LOG, "Attribute (SwitchCongestionLog)" },
|
|
{ SM_ATTR_ID_SWITCH_CONGESTION_SETTING, "Attribute (SwitchCongestionSetting)" },
|
|
{ SM_ATTR_ID_SWITCH_PORT_CONGESTION_SETTING, "Attribute (SwitchPortCongestionSetting)" },
|
|
{ SM_ATTR_ID_HFI_CONGESTION_LOG, "Attribute (HFICongestionLog)" },
|
|
{ SM_ATTR_ID_HFI_CONGESTION_SETTING, "Attribute (HFICongestionSetting)" },
|
|
{ SM_ATTR_ID_HFI_CONGESTION_CONTROL_TABLE, "Attribute (HFICongestionControlTable)" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string SUBA_Attributes[] = {
|
|
{ SA_ATTR_ID_CLASS_PORT_INFO, "Attribute (ClassPortInfo)" },
|
|
{ SA_ATTR_ID_NOTICE, "Attribute (Notice)" },
|
|
{ SA_ATTR_ID_INFORM_INFO, "Attribute (InformInfo)" },
|
|
{ SA_ATTR_ID_NODE_RECORD, "Attribute (NodeRecord)" },
|
|
{ SA_ATTR_ID_PORTINFO_RECORD, "Attribute (PortInfoRecord)" },
|
|
{ SA_ATTR_ID_SC_MAPTBL_RECORD, "Attribute (SCMappingTableRecord)" },
|
|
{ SA_ATTR_ID_SWITCHINFO_RECORD, "Attribute (SwitchInfoRecord)" },
|
|
{ SA_ATTR_ID_LINEAR_FWDTBL_RECORD, "Attribute (LinearForwardingTableRecord)" },
|
|
{ SA_ATTR_ID_MCAST_FWDTBL_RECORD, "Attribute (MulticastForwardingTableRecord)" },
|
|
{ SA_ATTR_ID_SMINFO_RECORD, "Attribute (SMInfoRecord)" },
|
|
{ SA_ATTR_ID_LINK_SPD_WDTH_PAIRS_RECORD, "Attribute (LinkSpeedWidthPairsTableRecord)" },
|
|
{ SA_ATTR_ID_LINK_RECORD, "Attribute (LinkRecord)" },
|
|
{ SA_ATTR_ID_SERVICE_RECORD, "Attribute (ServiceRecord)" },
|
|
{ SA_ATTR_ID_P_KEY_TABLE_RECORD, "Attribute (P_KeyTableRecord)" },
|
|
{ SA_ATTR_ID_PATH_RECORD, "Attribute (PathRecord)" },
|
|
{ SA_ATTR_ID_VLARBTABLE_RECORD, "Attribute (VLArbitrationTableRecord)" },
|
|
{ SA_ATTR_ID_MCMEMBER_RECORD, "Attribute (MulticastMemberRecord)" },
|
|
{ SA_ATTR_ID_TRACE_RECORD, "Attribute (TraceRecord)" },
|
|
{ SA_ATTR_ID_MULTIPATH_GID_RECORD, "Attribute (MultiPathRecord)" },
|
|
{ SA_ATTR_ID_SERVICEASSOCIATION_RECORD, "Attribute (ServiceAssociationRecord)" },
|
|
{ SA_ATTR_ID_SL2SC_MAPTBL_RECORD, "Attribute (SLtoSCMappingTableRecord)" },
|
|
{ SA_ATTR_ID_SC2SL_MAPTBL_RECORD, "Attribute (SCtoSLMappingTableRecord)" },
|
|
{ SA_ATTR_ID_SC_VLNT_MAPTBL_RECORD, "Attribute (SCtoVLNTMappingTableRecord)" },
|
|
{ SA_ATTR_ID_SC_VLT_MAPTBL_RECORD, "Attribute (SCtoVLTMappingTableRecord)" },
|
|
{ SA_ATTR_ID_SC_VLR_MAPTBL_RECORD, "Attribute (SCtoVLRMappingTableRecord)" },
|
|
{ SA_ATTR_ID_PGROUP_FWDTBL_RECORD, "Attribute (PortGroupForwardTableRecord)" },
|
|
{ SA_ATTR_ID_MULTIPATH_GUID_RECORD, "Attribute (MultipathGUIDRecord)" },
|
|
{ SA_ATTR_ID_MULTIPATH_LID_RECORD, "Attribute (MultipathLIDRecord)" },
|
|
{ SA_ATTR_ID_CABLE_INFO_RECORD, "Attribute (CableInfoRecord)" },
|
|
{ SA_ATTR_ID_VF_INFO_RECORD, "Attribute (VFInfoRecord)" },
|
|
{ SA_ATTR_ID_PORTGROUP_TABLE_RECORD, "Attribute (PortGroupTableRecord)" },
|
|
{ SA_ATTR_ID_BUFF_CTRL_TAB_RECORD, "Attribute (BufferControlTableRecord)" },
|
|
{ SA_ATTR_ID_FABRICINFO_RECORD, "Attribute (FabricInfoRecord)" },
|
|
{ SA_ATTR_ID_QUARANTINED_NODE_RECORD, "Attribute (QuarantinedNodeRecord)" },
|
|
{ SA_ATTR_ID_CONGESTION_INFO_RECORD, "Attribute (CongestionInfoRecord)" },
|
|
{ SA_ATTR_ID_SWITCH_CONG_RECORD, "Attribute (SwitchCongestionRecord)" },
|
|
{ SA_ATTR_ID_SWITCH_PORT_CONG_RECORD, "Attribute (SwitchPortCongestionRecord)" },
|
|
{ SA_ATTR_ID_HFI_CONG_RECORD, "Attribute (HFICongestionRecord)" },
|
|
{ SA_ATTR_ID_HFI_CONG_CTRL_RECORD, "Attribute (HFICongestionControlRecord)" },
|
|
{ SA_ATTR_ID_INFORM_INFO_RECORD, "Attribute (InformInfoRecord)" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string PM_Attributes[] = {
|
|
{ PM_ATTR_ID_CLASS_PORTINFO, "Attribute (ClassPortInfo)" },
|
|
{ PM_ATTR_ID_PORT_STATUS, "Attribute (PortStatus)" },
|
|
{ PM_ATTR_ID_CLEAR_PORT_STATUS, "Attribute (ClearPortStatus)" },
|
|
{ PM_ATTR_ID_DATA_PORT_COUNTERS, "Attribute (DataPortCounters)" },
|
|
{ PM_ATTR_ID_ERROR_PORT_COUNTERS, "Attribute (ErrorPortCounters)" },
|
|
{ PM_ATTR_ID_ERROR_INFO, "Attribute (ErrorInfo)" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string PA_Attributes[] = {
|
|
{ PA_ATTR_ID_CLASS_PORTINFO, "Attribute (ClassPortInfo)" },
|
|
{ PA_ATTR_ID_GET_GRP_LIST, "Attribute (GetGroupList)" },
|
|
{ PA_ATTR_ID_GET_GRP_INFO, "Attribute (GetGroupInfo)" },
|
|
{ PA_ATTR_ID_GET_GRP_CFG, "Attribute (GetGroupConfig)" },
|
|
{ PA_ATTR_ID_GET_PORT_CTRS, "Attribute (GetPortCounters)" },
|
|
{ PA_ATTR_ID_CLR_PORT_CTRS, "Attribute (ClearPortCounters)" },
|
|
{ PA_ATTR_ID_CLR_ALL_PORT_CTRS, "Attribute (ClearAllPortCounters)" },
|
|
{ PA_ATTR_ID_GET_PM_CFG, "Attribute (GetPerfMgmtConfig)" },
|
|
{ PA_ATTR_ID_FREEZE_IMAGE, "Attribute (FreezeImage)" },
|
|
{ PA_ATTR_ID_RELEASE_IMAGE, "Attribute (ReleaseImage)" },
|
|
{ PA_ATTR_ID_RENEW_IMAGE, "Attribute (RenewImage)" },
|
|
{ PA_ATTR_ID_GET_FOCUS_PORTS, "Attribute (GetFocusPorts)" },
|
|
{ PA_ATTR_ID_GET_IMAGE_INFO, "Attribute (GetImageInfo)" },
|
|
{ PA_ATTR_ID_MOVE_FREEZE_FRAME, "Attribute (MoveFreezeFrame)" },
|
|
{ PA_ATTR_ID_GET_VF_LIST, "Attribute (GetVFList)" },
|
|
{ PA_ATTR_ID_GET_VF_INFO, "Attribute (GetVFInfo)" },
|
|
{ PA_ATTR_ID_GET_VF_CONFIG, "Attribute (GetVFConfig)" },
|
|
{ PA_ATTR_ID_GET_VF_PORT_CTRS, "Attribute (GetVFPortCounters)" },
|
|
{ PA_ATTR_ID_CLR_VF_PORT_CTRS, "Attribute (ClearVFPortCounters)" },
|
|
{ PA_ATTR_ID_GET_VF_FOCUS_PORTS, "Attribute (GetVFFocusPorts)" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
/* Methods */
|
|
#define METHOD_GET 0x01
|
|
#define METHOD_SET 0x02
|
|
#define METHOD_SEND 0x03
|
|
#define METHOD_TRAP 0x05
|
|
#define METHOD_REPORT 0x06
|
|
#define METHOD_TRAPREPRESS 0x07
|
|
#define METHOD_GETTABLE 0x12
|
|
#define METHOD_GETTRACETABLE 0x13
|
|
#define METHOD_GETMULTI 0x14
|
|
#define METHOD_DELETE 0x15
|
|
|
|
#define METHOD_GET_RESP 0x81
|
|
#define METHOD_REPORT_RESP 0x86
|
|
#define METHOD_GETTABLE_RESP 0x92
|
|
#define METHOD_GETTRACETABLE_RESP 0x93
|
|
#define METHOD_GETMULTI_RESP 0x94
|
|
#define METHOD_DELETE_RESP 0x95
|
|
static const value_string Methods[] = {
|
|
{ METHOD_GET, "Get()" },
|
|
{ METHOD_GET_RESP, "GetResp()" },
|
|
{ METHOD_SET, "Set()" },
|
|
{ METHOD_SEND, "Send()" },
|
|
{ METHOD_TRAP, "Trap()" },
|
|
{ METHOD_REPORT, "Report()" },
|
|
{ METHOD_REPORT_RESP, "ReportResp()" },
|
|
{ METHOD_TRAPREPRESS, "TrapRepress()" },
|
|
{ METHOD_GETTABLE, "GetTable()" },
|
|
{ METHOD_GETTABLE_RESP, "GetTableResp()" },
|
|
{ METHOD_GETTRACETABLE, "GetTraceTable()" },
|
|
{ METHOD_GETTRACETABLE_RESP, "GetTraceTableResp()" },
|
|
{ METHOD_GETMULTI, "GetMulti()" },
|
|
{ METHOD_GETMULTI_RESP, "GetMultiResp()" },
|
|
{ METHOD_DELETE, "Delete()" },
|
|
{ METHOD_DELETE_RESP, "DeleteResp()" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string SUBM_Methods[] = {
|
|
{ METHOD_GET, "SubnGet(" },
|
|
{ METHOD_SET, "SubnSet(" },
|
|
{ METHOD_GET_RESP, "SubnGetResp(" },
|
|
{ METHOD_TRAP, "SubnTrap(" },
|
|
{ METHOD_TRAPREPRESS, "SubnTrapRepress(" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string SUBA_Methods[] = {
|
|
{ METHOD_GET, "SubnAdmGet(" },
|
|
{ METHOD_GET_RESP, "SubnAdmGetResp(" },
|
|
{ METHOD_SET, "SubnAdmSet(" },
|
|
{ METHOD_REPORT, "SubnAdmReport(" },
|
|
{ METHOD_REPORT_RESP, "SubnAdmReportResp(" },
|
|
{ METHOD_GETTABLE, "SubnAdmGetTable(" },
|
|
{ METHOD_GETTABLE_RESP, "SubnAdmGetTableResp(" },
|
|
{ METHOD_GETTRACETABLE, "SubnAdmGetTraceTable(" },
|
|
{ METHOD_GETMULTI, "SubnAdmGetMulti(" },
|
|
{ METHOD_GETMULTI_RESP, "SubnAdmGetMultiResp(" },
|
|
{ METHOD_DELETE, "SubnAdmDelete(" },
|
|
{ METHOD_DELETE_RESP, "SubnAdmDeleteResp(" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string PM_Methods[] = {
|
|
{ METHOD_GET, "PerfGet(" },
|
|
{ METHOD_SET, "PerfSet(" },
|
|
{ METHOD_GET_RESP, "PerfGetResp(" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string PA_Methods[] = {
|
|
{ METHOD_GET, "PerfAdmGet(" },
|
|
{ METHOD_SET, "PerfAdmSet(" },
|
|
{ METHOD_GET_RESP, "PerfAdmGetResp(" },
|
|
{ METHOD_GETTABLE, "PerfAdmGetTable(" },
|
|
{ METHOD_GETTABLE_RESP, "PerfAdmGetTableResp(" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
/* RMPP Types */
|
|
#define RMPP_ILLEGAL 0
|
|
#define RMPP_DATA 1
|
|
#define RMPP_ACK 2
|
|
#define RMPP_STOP 3
|
|
#define RMPP_ABORT 4
|
|
static const value_string RMPP_Packet_Types[] = {
|
|
{ RMPP_ILLEGAL, "Illegal RMPP Type (0)! " },
|
|
{ RMPP_DATA, "RMPP (DATA)" },
|
|
{ RMPP_ACK, "RMPP (ACK)" },
|
|
{ RMPP_STOP, "RMPP (STOP)" },
|
|
{ RMPP_ABORT, "RMPP (ABORT)" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string RMPP_Status[] = {
|
|
{ 0, " (Normal)" },
|
|
{ 1, " (Resources Exhausted)" },
|
|
{ 118, " (Total Time Too Long)" },
|
|
{ 119, " (Inconsistent Last and PayloadLength)" },
|
|
{ 120, " (Inconsistent First and Segment Number)" },
|
|
{ 121, " (Bad RMPPType)" },
|
|
{ 122, " (NewWindowLast Too Small)" },
|
|
{ 123, " (SegmentNumber Too Big)" },
|
|
{ 124, " (Illegal Status)" },
|
|
{ 125, " (Unsupported Version)" },
|
|
{ 126, " (Too Many Retries)" },
|
|
{ 127, " (Unspecified - Unknown Error Code on ABORT)" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
/* MAD_t
|
|
* Structure to hold information from the common MAD header.
|
|
* This is necessary because the MAD header contains information which significantly changes the dissection algorithm. */
|
|
#define STL_MAX_MAD_PAYLOAD 2048
|
|
typedef struct _MAD {
|
|
guint8 BaseVersion;
|
|
guint8 MgmtClass;
|
|
guint8 ClassVersion;
|
|
guint8 Method;
|
|
guint16 Status; /* D = bit 15 when DR */
|
|
guint8 HopPointer; /* Reserved in DR MADs */
|
|
guint8 HopCount; /* Reserved in DR MADs */
|
|
guint64 TransactionID;
|
|
guint16 AttributeID;
|
|
guint16 Reserved2;
|
|
guint32 AttributeModifier;
|
|
} MAD_t;
|
|
#define STL_MAX_RMPP_PAYLOAD 2036
|
|
#define RMPP_FLAG_LAST_MASK 0x04
|
|
#define RMPP_FLAG_LAST_SHIFT 2
|
|
#define RMPP_FLAG_FIRST_MASK 0x02
|
|
#define RMPP_FLAG_FIRST_SHIFT 1
|
|
#define RMPP_FLAG_ACTIVE_MASK 0x01
|
|
#define RMPP_FLAG_ACTIVE_SHIFT 0
|
|
typedef struct _RMPP {
|
|
guint8 Version;
|
|
guint8 Type;
|
|
guint8 resptime_flags;
|
|
guint8 Status;
|
|
guint32 SegmentNumber;
|
|
guint32 PayloadLength;
|
|
} RMPP_t;
|
|
|
|
#define STL_MAX_SA_PA_PAYLOAD 1992
|
|
typedef struct _SA_HEADER {
|
|
guint64 SM_Key;
|
|
guint16 AttributeOffset;
|
|
guint16 Reserved;
|
|
guint64 ComponentMask;
|
|
} SA_HEADER_t, PA_HEADER_t;
|
|
|
|
/* Trap Type/Descriptions for dissection */
|
|
static const value_string NoticeType[] = {
|
|
{ 0, "Fatal" },
|
|
{ 1, "Urgent" },
|
|
{ 2, "Security" },
|
|
{ 3, "SM" },
|
|
{ 4, "Info" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string Trap_Description[] = {
|
|
{ 64, " (Informational) <GIDADDR> is now in service" },
|
|
{ 65, " (Informational) <GIDADDR> is out of service" },
|
|
{ 66, " (Informational) New Multicast Group with multicast address <GIDADDR> is now created" },
|
|
{ 67, " (Informational) Multicast Group with multicast address <GIDADDR> is now deleted" },
|
|
{ 68, " (Informational) Paths indicated by <PATH_REC> and <COMP_MASK> are no longer valid" },
|
|
{ 69, " (Informational) Paths indicated by <PATH_REC> and <COMP_MASK> have been recomputed" },
|
|
{ 128, " (Urgent) Link State of at least one port of switch at <LIDADDR> has changed" },
|
|
{ 129, " (Urgent) Local Link Integrity threshold reached at <LIDADDR><PORTNO>" },
|
|
{ 130, " (Urgent) Excessive Buffer OVerrun threshold reached at <LIDADDR><PORTNO>" },
|
|
{ 131, " (Urgent) Flow Control Update watchdog timer expired at <LIDADDR><PORTNO>" },
|
|
{ 144, " (Informational) CapMask, NodeDesc, LinkWidthEnabled or LinkSpeedEnabled at <LIDADDR> has been modified" },
|
|
{ 145, " (Informational) SystemImageGUID at <LIDADDR> has been modified. New value is <SYSTEMIMAGEGUID>" },
|
|
{ 256, " (Security) Bad M_Key, <M_KEY> from <LIDADDR> attempted <METHOD> with <ATTRIBUTEID> and <ATTRIBUTEMODIFIER>" },
|
|
{ 257, " (Security) Bad P_Key, <KEY> from <LIDADDR1><GIDADDR1><QP1> to <LIDADDR2><GIDADDR2><QP2> on <SL>" },
|
|
{ 258, " (Security) Bad Q_Key, <KEY> from <LIDADDR1><GIDADDR1><QP1> to <LIDADDR2><GIDADDR2><QP2> on <SL>" },
|
|
{ 259, " (Security) Bad P_Key, <KEY> from <LIDADDR1><GIDADDR1><QP1> to <LIDADDR2><GIDADDR2><QP2> on <SL> at switch <LIDADDR><PORTNO>" },
|
|
{ 2048, " (Informational) LinkWidth.Active, LinkWidthDowngrade.TxActive or LinkWidthDowngrade.RxActive of at least one port of switch at <REPORTINGLID> has changed" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string RoutingMode[] = {
|
|
{ 0x00, "No change" },
|
|
{ 0x01, "Linear routing algorithm" },
|
|
{ 0x02, "Hierarchical routing algorithm" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string AdaptiveRoutingAlgorithm[] = {
|
|
{ 0x0, "Random" },
|
|
{ 0x1, "Greedy" },
|
|
{ 0x2, "Random Greedy" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string PortType[] = {
|
|
{ 0, "Unknown" },
|
|
{ 1, "Disconnected" },
|
|
{ 2, "Fixed" },
|
|
{ 3, "Variable" },
|
|
{ 4, "QSFP" },
|
|
{ 5, "SiPh_x16" },
|
|
{ 6, "Reserved" },
|
|
{ 7, "Reserved" },
|
|
{ 8, "Reserved" },
|
|
{ 9, "Reserved" },
|
|
{ 10, "Reserved" },
|
|
{ 11, "Reserved" },
|
|
{ 12, "Reserved" },
|
|
{ 13, "Reserved" },
|
|
{ 14, "Reserved" },
|
|
{ 15, "Reserved" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string NodeType[] = {
|
|
{ 1, "FI" },
|
|
{ 2, "Switch" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string LinkDownReason[] = {
|
|
{ 0, "No specified reason" },
|
|
{ 1, "Receive Error 0" },
|
|
{ 2, "Bad packet length" },
|
|
{ 3, "Packet too long" },
|
|
{ 4, "Packet too short" },
|
|
{ 5, "Bad SLID" },
|
|
{ 6, "Bad DLID" },
|
|
{ 7, "Bad L2" },
|
|
{ 8, "Bad SC" },
|
|
{ 9, "Receive Error 8" },
|
|
{ 10, "Bad mid tail" },
|
|
{ 11, "Receive Error 10" },
|
|
{ 12, "Preempt error" },
|
|
{ 13, "Preempt VL15" },
|
|
{ 14, "Bad VL marker" },
|
|
{ 15, "Receive Error 14" },
|
|
{ 16, "Receive Error 15" },
|
|
{ 17, "Bad head dist" },
|
|
{ 18, "Bad tail dist" },
|
|
{ 19, "Bad ctrl dist" },
|
|
{ 20, "Bad credit ack" },
|
|
{ 21, "Unsupported VL marker" },
|
|
{ 22, "Bad preempt" },
|
|
{ 23, "Bad control flit" },
|
|
{ 24, "Exceed multicast limit" },
|
|
{ 25, "Receive Error 24" },
|
|
{ 26, "Receive Error 25" },
|
|
{ 27, "Receive Error 26" },
|
|
{ 28, "Receive Error 27" },
|
|
{ 29, "Receive Error 28" },
|
|
{ 30, "Receive Error 29" },
|
|
{ 31, "Receive Error 30" },
|
|
{ 32, "Excessive buffer overrun" },
|
|
{ 33, "Unknown (locally initiated)" },
|
|
{ 35, "Reboot" },
|
|
{ 36, "Neighbor Unknown (not locally initiated)" },
|
|
{ 39, "FM initiated bounce" },
|
|
{ 40, "Link outside speed policy" },
|
|
{ 41, "link downgrade outside" },
|
|
{ 49, "Disconnected" },
|
|
{ 50, "Local media not installed" },
|
|
{ 51, "Not installed" },
|
|
{ 52, "Chassis config" },
|
|
{ 54, "End to end not installed" },
|
|
{ 56, "Power policy" },
|
|
{ 57, "Linkspeed policy" },
|
|
{ 58, "Linkwidth policy" },
|
|
{ 60, "Switch management" },
|
|
{ 61, "Sma disabled" },
|
|
{ 63, "Transient" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string LinkInitReason[] = {
|
|
{ 0, "No Error" },
|
|
{ 1, "Link just came up" },
|
|
{ 2, "FM ignoring flapping port" },
|
|
{ 8, "FM ignoring, width or speed, outside FM configured policy" },
|
|
{ 9, "FM ignoring, quarantined for security" },
|
|
{ 10, "FM ignoring, link has insufficient capabilities for FM configuration" },
|
|
{ 0, NULL },
|
|
};
|
|
static const value_string DiagCode[] = {
|
|
{ 0x0000, "Function Ready" },
|
|
{ 0x0001, "Performing Self Test" },
|
|
{ 0x0002, "Initializing" },
|
|
{ 0x0003, "Soft Error - Function has non-fatal error" },
|
|
{ 0x0004, "Hard Error - Function has fatal error" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string PortFlitDistanceMode[] = {
|
|
{ 0x0000, "No State Change" },
|
|
{ 0x0001, "STL1 Mode" },
|
|
{ 0x0002, "STL2 Mode" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string PortState[] = {
|
|
{ 0x0000, "No State Change" },
|
|
{ 0x0001, "Down (includes failed links)" },
|
|
{ 0x0002, "Initialized" },
|
|
{ 0x0003, "Armed" },
|
|
{ 0x0004, "Active" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string PortPhysicalState[] = {
|
|
{ 0x0000, "No State Change" },
|
|
{ 0x0002, "Polling" },
|
|
{ 0x0003, "Disabled" },
|
|
{ 0x0004, "PortConfigurationTraining" },
|
|
{ 0x0005, "LinkUp" },
|
|
{ 0x0006, "LinkErrorRecovery" },
|
|
{ 0x0009, "Offline" },
|
|
{ 0x000B, "Test" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string OfflineDisabledReason[] = {
|
|
{ 0x0000, "No reason available" },
|
|
{ 0x0001, "Disconnected" },
|
|
{ 0x0002, "Local Media not Installed" },
|
|
{ 0x0003, "Not Installed" },
|
|
{ 0x0004, "Chassis Config" },
|
|
{ 0x0005, "Reserved" },
|
|
{ 0x0006, "End-to-end not Installed" },
|
|
{ 0x0007, "Reserved" },
|
|
{ 0x0008, "Power Policy" },
|
|
{ 0x0009, "Link Speed Policy" },
|
|
{ 0x000A, "Link Width Policy" },
|
|
{ 0x000B, "Reserved" },
|
|
{ 0x000C, "Switch Mgmt" },
|
|
{ 0x000D, "SMA Disabled" },
|
|
{ 0x000E, "Reserved" },
|
|
{ 0x000F, "Transient" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string MTU[] = {
|
|
{ 0x0001, "256" }, /* IB_MTU_256 */
|
|
{ 0x0002, "512" }, /* IB_MTU_512 */
|
|
{ 0x0003, "1024" }, /* IB_MTU_1024 */
|
|
{ 0x0004, "2048" }, /* IB_MTU_2048 */
|
|
{ 0x0005, "4096" }, /* IB_MTU_4096 */
|
|
{ 0x0006, "8192" }, /* STL_MTU_8192 */
|
|
{ 0x0007, "10240" }, /* STL_MTU_10240 */
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string Rate[] = {
|
|
{ 11, "12.5 Gbps" }, /* IB_STATIC_RATE_14G */
|
|
{ 15, "25 Gbps" }, /* IB_STATIC_RATE_25G */
|
|
{ 7, "37.5 Gbps" }, /* IB_STATIC_RATE_40G */
|
|
{ 12, "50 Gbps" }, /* IB_STATIC_RATE_56G */
|
|
{ 9, "75 Gbps" }, /* IB_STATIC_RATE_80G */
|
|
{ 16, "100 Gbps" }, /* IB_STATIC_RATE_100G */
|
|
{ 17, "200 Gbps" }, /* IB_STATIC_RATE_200G */
|
|
{ 0, NULL }
|
|
};
|
|
static const true_false_string tfs_PKeyMembershipType = {
|
|
"Full",
|
|
"Limited"
|
|
};
|
|
static const value_string MADAttrModSectionVLarb[] = {
|
|
{ 0, "Arbitration Low Weight Elements" },
|
|
{ 1, "Arbitration High Weight Elements" },
|
|
{ 2, "Preemption Weight Elements" },
|
|
{ 3, "Preemption Matrix" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string MADAttrModSectionVLarb_short[] = {
|
|
{ 0, "Low Weight" },
|
|
{ 1, "High Weight" },
|
|
{ 2, "Preemption Weight" },
|
|
{ 3, "Preemption Matrix" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string SA_SC_VLx[] = {
|
|
{ SA_ATTR_ID_SC_VLNT_MAPTBL_RECORD, "nt" },
|
|
{ SA_ATTR_ID_SC_VLT_MAPTBL_RECORD, "t" },
|
|
{ SA_ATTR_ID_SC_VLR_MAPTBL_RECORD, "r" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string SM_SC_VLx[] = {
|
|
{ SM_ATTR_ID_SC_VLNT_MAPPING_TABLE, "nt" },
|
|
{ SM_ATTR_ID_SC_VLT_MAPPING_TABLE, "t" },
|
|
{ SM_ATTR_ID_SC_VLR_MAPPING_TABLE, "r" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string GroupTablePosition[] = {
|
|
{ 0, "1-64" },
|
|
{ 1, "65-128" },
|
|
{ 2, "129-192" },
|
|
{ 3, "193-256" },
|
|
{ 0, NULL },
|
|
};
|
|
static const value_string AdaptiveRoutingThreshold[] = {
|
|
{ 0, "Default tuning" },
|
|
{ 1, "Consumed nearly all of the buffering(or Tags) for a VL (~100%)" },
|
|
{ 2, "90%" },
|
|
{ 3, "80%" },
|
|
{ 4, "70%" },
|
|
{ 5, "65%" },
|
|
{ 6, "60%" },
|
|
{ 7, "55%" },
|
|
{ 0, NULL }
|
|
};
|
|
static const value_string LinkQualityIndicator[] = {
|
|
{ 0, "Down" },
|
|
{ 1, "Bad" },
|
|
{ 2, "Poor" },
|
|
{ 3, "Good" },
|
|
{ 4, "Very Good" },
|
|
{ 5, "Excellent" },
|
|
{ 6, "Reserved" },
|
|
{ 7, "Reserved" },
|
|
{ 0, NULL },
|
|
};
|
|
/*static const value_string LinkQualityIndicatorLong[] = {
|
|
{ 0, "link down" },
|
|
{ 1, "working far below acceptable link quality, recommend immediate corrective action" },
|
|
{ 2, "working below acceptable link quality, recommend consider timely corrective action" },
|
|
{ 3, "working on low end of acceptable link quality, recommended to consider corrective action on next maintenance window" },
|
|
{ 4, "working slightly below preferred link quality, but no action required" },
|
|
{ 5, "working at or above preferred link quality, no action needed" },
|
|
{ 6, "Reserved" },
|
|
{ 7, "Reserved" },
|
|
{ 0, NULL },
|
|
};*/
|
|
static const true_false_string tfs_NeighborFWAuthenBypass = {
|
|
"Not Authenticated",
|
|
"Authenticated"
|
|
};
|
|
static const true_false_string tfs_SwPortCongSetting_CtrlType = {
|
|
"Credit Starvation",
|
|
"Packet Marketing"
|
|
};
|
|
static const true_false_string tfs_clear_dont_clear = {
|
|
"Clear",
|
|
"Don't Clear"
|
|
};
|
|
static const value_string MAD_Status_InvalidField[] = {
|
|
{ 0, "No Invalid Fields" },
|
|
{ 1, "Bad Version" },
|
|
{ 2, "Method not supported" },
|
|
{ 3, "The method/attribute combination is not supported" },
|
|
{ 4, "Reserved" },
|
|
{ 5, "Reserved" },
|
|
{ 6, "Reserved" },
|
|
{ 7, "One or more fields in the attribute or attribute modifier contain an invalid value" },
|
|
{ 0, NULL }
|
|
};
|
|
static const true_false_string tfs_busy_not_busy = {
|
|
"Busy",
|
|
"Not Busy"
|
|
};
|
|
static const true_false_string tfs_redirect_no_redirect = {
|
|
"Redirect",
|
|
"No Redirect"
|
|
};
|
|
static const value_string FocusPortFlags[] = {
|
|
{ 0, "OK" },
|
|
{ 1, "PMA Ignore" },
|
|
{ 2, "PMA Failure" },
|
|
{ 3, "Topo Failure" },
|
|
{ 0, NULL },
|
|
};
|
|
|
|
#define PM_UTIL_BUCKETS 10
|
|
#define PM_ERR_BUCKETS 5
|
|
|
|
/* Wireshark ID */
|
|
static gint proto_opa_mad = -1;
|
|
|
|
/* Variables to hold expansion values between packets */
|
|
static gint ett_payload = -1;
|
|
static gint ett_sm_lid = -1;
|
|
static gint ett_sm_dr = -1;
|
|
static gint ett_sa = -1;
|
|
static gint ett_pm = -1;
|
|
static gint ett_pa = -1;
|
|
static gint ett_mad = -1;
|
|
static gint ett_mad_status = -1;
|
|
static gint ett_mad_attributemod = -1;
|
|
static gint ett_rmpp = -1;
|
|
static gint ett_rmpp_fragment = -1;
|
|
static gint ett_rmpp_fragments = -1;
|
|
static gint ett_rmpp_sa_record = -1;
|
|
/* Common */
|
|
static gint ett_noticestraps = -1;
|
|
static gint ett_datadetails = -1;
|
|
static gint ett_datadetails_trap259datavalid = -1;
|
|
static gint ett_informinfo = -1;
|
|
static gint ett_classportinfo = -1;
|
|
static gint ett_classportinfo_redirect = -1;
|
|
static gint ett_classportinfo_trap = -1;
|
|
/* SM */
|
|
static gint ett_nodedescription = -1;
|
|
static gint ett_nodeinfo = -1;
|
|
static gint ett_switchinfo = -1;
|
|
static gint ett_switchinfo_switchcapabilitymask = -1;
|
|
static gint ett_portinfo = -1;
|
|
static gint ett_portinfo_vl = -1;
|
|
static gint ett_portinfo_link = -1;
|
|
static gint ett_portinfo_portmode = -1;
|
|
static gint ett_portinfo_flitcontrol = -1;
|
|
static gint ett_portinfo_porterroraction = -1;
|
|
static gint ett_portinfo_neighbormtu = -1;
|
|
static gint ett_portinfo_xmitq = -1;
|
|
static gint ett_portinfo_capmask = -1;
|
|
static gint ett_portinfo_capmask3 = -1;
|
|
static gint ett_portstates = -1;
|
|
static gint ett_pkeytable = -1;
|
|
static gint ett_pkeytable_block = -1;
|
|
static gint ett_sltoscmapping = -1;
|
|
static gint ett_sltoscmapping_block = -1;
|
|
static gint ett_sctoscmapping = -1;
|
|
static gint ett_sctoscmapping_block = -1;
|
|
static gint ett_sctoslmapping = -1;
|
|
static gint ett_sctoslmapping_block = -1;
|
|
static gint ett_sctovlxmappingtable = -1;
|
|
static gint ett_sctovlxmappingtable_block = -1;
|
|
static gint ett_vlarbitrationtable = -1;
|
|
static gint ett_vlarbitrationtable_port = -1;
|
|
static gint ett_linearforwardingtable = -1;
|
|
static gint ett_linearforwardingtable_block = -1;
|
|
static gint ett_multicastforwardingtable = -1;
|
|
static gint ett_multicastforwardingtable_block = -1;
|
|
static gint ett_portgroupforwardingtable = -1;
|
|
static gint ett_portgroupforwardingtable_block = -1;
|
|
static gint ett_portgrouptable = -1;
|
|
static gint ett_portgrouptable_block = -1;
|
|
static gint ett_sminfo = -1;
|
|
static gint ett_ledinfo = -1;
|
|
static gint ett_cableinfo = -1;
|
|
static gint ett_aggregate = -1;
|
|
static gint ett_buffercontroltable = -1;
|
|
static gint ett_buffercontroltable_port = -1;
|
|
static gint ett_congestioninfo = -1;
|
|
static gint ett_switchcongestionlog = -1;
|
|
static gint ett_switchcongestionlog_entry = -1;
|
|
static gint ett_switchcongestionsetting = -1;
|
|
static gint ett_switchportcongestionsetting = -1;
|
|
static gint ett_switchportcongestionsetting_port = -1;
|
|
static gint ett_hficongestionlog = -1;
|
|
static gint ett_hficongestionlog_entry = -1;
|
|
static gint ett_hficongestionsetting = -1;
|
|
static gint ett_hficongestioncontroltable = -1;
|
|
static gint ett_hficongestioncontroltable_block = -1;
|
|
/* SA */
|
|
static gint ett_portinforecord_linkdownreason = -1;
|
|
static gint ett_portinforecord_linkdownreason_entry = -1;
|
|
static gint ett_scmappingrecord = -1;
|
|
static gint ett_lftrecord = -1;
|
|
static gint ett_linkrecord = -1;
|
|
static gint ett_servicerecord = -1;
|
|
static gint ett_pathrecord = -1;
|
|
static gint ett_pathrecord_dgid = -1;
|
|
static gint ett_pathrecord_sgid = -1;
|
|
static gint ett_mcmemberrecord = -1;
|
|
static gint ett_tracerecord = -1;
|
|
static gint ett_multipathrecord_gid = -1;
|
|
static gint ett_multipathrecord_guid = -1;
|
|
static gint ett_multipathrecord_lid = -1;
|
|
static gint ett_cableinforecord = -1;
|
|
static gint ett_serviceassocrecord = -1;
|
|
static gint ett_sctoslmappingtablerecord = -1;
|
|
static gint ett_portgroupforwardingtablerecord = -1;
|
|
static gint ett_vfinforecord = -1;
|
|
static gint ett_quarantinednoderecord = -1;
|
|
static gint ett_fabricinforecord = -1;
|
|
/* PM */
|
|
static gint ett_portstatus = -1;
|
|
static gint ett_portstatus_vl = -1;
|
|
static gint ett_clearportstatus = -1;
|
|
static gint ett_clearportstatus_counterselectmask = -1;
|
|
static gint ett_dataportcounters = -1;
|
|
static gint ett_dataportcounters_port = -1;
|
|
static gint ett_dataportcounters_vl = -1;
|
|
static gint ett_errorportcounters = -1;
|
|
static gint ett_errorportcounters_port = -1;
|
|
static gint ett_errorportinfo = -1;
|
|
static gint ett_errorportinfoport = -1;
|
|
static gint ett_errorportinfo_portrcverrorinfo = -1;
|
|
static gint ett_errorportinfo_excessivebufferoverruninfo = -1;
|
|
static gint ett_errorportinfo_portxmitconstrainterrorinfo = -1;
|
|
static gint ett_errorportinfo_portrcvconstrainterrorinfo = -1;
|
|
static gint ett_errorportinfo_portrcvswitchrelayerrorinfo = -1;
|
|
static gint ett_errorportinfo_uncorrectableerrorinfo = -1;
|
|
static gint ett_errorportinfo_fmconfigerrorinfo = -1;
|
|
/* PA */
|
|
static gint ett_getgrouplist = -1;
|
|
static gint ett_getgroupinfo = -1;
|
|
static gint ett_getgroupinfoutilstats = -1;
|
|
static gint ett_getgroupinfoutilbuckets = -1;
|
|
static gint ett_getgroupinfoerrorsummary = -1;
|
|
static gint ett_getgroupinfoerrintegritybucket = -1;
|
|
static gint ett_getgroupinfoerrcongestionbucket = -1;
|
|
static gint ett_getgroupinfoerrsmacongestionbucket = -1;
|
|
static gint ett_getgroupinfoerrbubblebucket = -1;
|
|
static gint ett_getgroupinfoerrsecuritybucket = -1;
|
|
static gint ett_getgroupinfoerrroutingbucket = -1;
|
|
static gint ett_getportcounters = -1;
|
|
static gint ett_clearportcounters = -1;
|
|
static gint ett_clearportcounters_counterselectmask = -1;
|
|
static gint ett_clearallportcounters = -1;
|
|
static gint ett_clearallportcounters_counterselectmask = -1;
|
|
static gint ett_pmconfig = -1;
|
|
static gint ett_getgroupconfig = -1;
|
|
static gint ett_getgroupconfigport = -1;
|
|
static gint ett_movefreezeframeold = -1;
|
|
static gint ett_movefreezeframenew = -1;
|
|
static gint ett_getfocusports = -1;
|
|
static gint ett_getfocusportsport = -1;
|
|
static gint ett_getimageinfo = -1;
|
|
static gint ett_getimageinfosm = -1;
|
|
static gint ett_getvflist = -1;
|
|
static gint ett_getvfinfo = -1;
|
|
static gint ett_getvfinfoutilstats = -1;
|
|
static gint ett_getvfinfoutilbuckets = -1;
|
|
static gint ett_getvfinfoerrorsummary = -1;
|
|
static gint ett_getvfinfoerrintegritybucket = -1;
|
|
static gint ett_getvfinfoerrcongestionbucket = -1;
|
|
static gint ett_getvfinfoerrsmacongestionbucket = -1;
|
|
static gint ett_getvfinfoerrbubblebucket = -1;
|
|
static gint ett_getvfinfoerrsecuritybucket = -1;
|
|
static gint ett_getvfinfoerrroutingbucket = -1;
|
|
static gint ett_getvfconfig = -1;
|
|
static gint ett_getvfconfigport = -1;
|
|
static gint ett_getvffocusports = -1;
|
|
static gint ett_getvffocusportsport = -1;
|
|
static gint ett_getvfportcounters = -1;
|
|
static gint ett_clearvfportcounters = -1;
|
|
static gint ett_clearvfportcounters_counterselectmask = -1;
|
|
|
|
/* Reserved Fields */
|
|
static gint hf_opa_reserved8 = -1;
|
|
static gint hf_opa_reserved16 = -1;
|
|
static gint hf_opa_reserved24 = -1;
|
|
static gint hf_opa_reserved32 = -1;
|
|
static gint hf_opa_reserved64 = -1;
|
|
/* opa_MAD Dissector */
|
|
static gint hf_opa_etype = -1;
|
|
static gint hf_opa_etype_reserved16 = -1;
|
|
/* SM Header - Lid Routed*/
|
|
static gint hf_opa_sm_lid = -1;
|
|
static gint hf_opa_sm_m_key = -1;
|
|
/* SM Header - Directed Route */
|
|
static gint hf_opa_sm_dr = -1;
|
|
static gint hf_opa_sm_dr_slid = -1;
|
|
static gint hf_opa_sm_dr_dlid = -1;
|
|
static gint hf_opa_sm_dr_initial_path = -1;
|
|
static gint hf_opa_sm_dr_return_path = -1;
|
|
static gint hf_opa_sm_dr_reserved64 = -1;
|
|
/* SA Header */
|
|
static gint hf_opa_sa = -1;
|
|
static gint hf_opa_sa_sm_key = -1;
|
|
static gint hf_opa_sa_attribute_offset = -1;
|
|
static gint hf_opa_sa_component_mask = -1;
|
|
/* PM Header / PA Header */
|
|
static gint hf_opa_pm = -1;
|
|
static gint hf_opa_pa = -1;
|
|
static gint hf_opa_pa_sm_key = -1;
|
|
static gint hf_opa_pa_attribute_offset = -1;
|
|
static gint hf_opa_pa_component_mask = -1;
|
|
/* Other Vendor Header */
|
|
static gint hf_opa_vendor = -1;
|
|
static gint hf_opa_application = -1;
|
|
static gint hf_opa_reservedmclass = -1;
|
|
static gint hf_opa_unknown = -1;
|
|
|
|
/* MAD Header */
|
|
static gint hf_opa_mad = -1;
|
|
static gint hf_opa_mad_base_version = -1;
|
|
static gint hf_opa_mad_mgmt_class = -1;
|
|
static gint hf_opa_mad_class_version = -1;
|
|
static gint hf_opa_mad_method = -1;
|
|
static gint hf_opa_mad_status = -1;
|
|
static gint hf_opa_mad_status_DR_D = -1;
|
|
static gint hf_opa_mad_status_DR_status = -1;
|
|
static gint hf_opa_mad_status_DR_Hop_Pointer = -1;
|
|
static gint hf_opa_mad_status_DR_Hop_Count = -1;
|
|
static gint hf_opa_mad_status_NM_ClassSpecific = -1;
|
|
static gint hf_opa_mad_status_NM_reserved1 = -1;
|
|
static gint hf_opa_mad_status_NM_InvalidField = -1;
|
|
static gint hf_opa_mad_status_NM_RedirectRqrd = -1;
|
|
static gint hf_opa_mad_status_NM_Busy = -1;
|
|
static const gint *_mad_status[] = {
|
|
&hf_opa_mad_status_NM_ClassSpecific,
|
|
&hf_opa_mad_status_NM_reserved1,
|
|
&hf_opa_mad_status_NM_InvalidField,
|
|
&hf_opa_mad_status_NM_RedirectRqrd,
|
|
&hf_opa_mad_status_NM_Busy,
|
|
NULL
|
|
};
|
|
static gint hf_opa_mad_transaction_id = -1;
|
|
static gint hf_opa_mad_attribute_id = -1;
|
|
static gint hf_opa_attribute_modifier = -1;
|
|
static gint hf_opa_attribute_modifier_A = -1;
|
|
static gint hf_opa_attribute_modifier_A2 = -1;
|
|
static gint hf_opa_attribute_modifier_A3 = -1;
|
|
static gint hf_opa_attribute_modifier_A4 = -1;
|
|
static gint hf_opa_attribute_modifier_A5 = -1;
|
|
static gint hf_opa_attribute_modifier_A6 = -1;
|
|
static gint hf_opa_attribute_modifier_B = -1;
|
|
static gint hf_opa_attribute_modifier_B2 = -1;
|
|
static gint hf_opa_attribute_modifier_B3 = -1;
|
|
static gint hf_opa_attribute_modifier_B4 = -1;
|
|
static gint hf_opa_attribute_modifier_B5 = -1;
|
|
static gint hf_opa_attribute_modifier_E = -1;
|
|
static gint hf_opa_attribute_modifier_I = -1;
|
|
static gint hf_opa_attribute_modifier_L = -1;
|
|
static gint hf_opa_attribute_modifier_NP = -1;
|
|
static gint hf_opa_attribute_modifier_NB = -1;
|
|
static gint hf_opa_attribute_modifier_N2 = -1;
|
|
static gint hf_opa_attribute_modifier_P = -1;
|
|
static gint hf_opa_attribute_modifier_P2 = -1;
|
|
static gint hf_opa_attribute_modifier_P3 = -1;
|
|
static gint hf_opa_attribute_modifier_S = -1;
|
|
static gint hf_opa_attribute_modifier_S2 = -1;
|
|
static gint hf_opa_attribute_modifier_Y = -1;
|
|
static const gint *_attribute_modifier_Nps2AP[] = {
|
|
&hf_opa_attribute_modifier_NP,
|
|
&hf_opa_attribute_modifier_S2,
|
|
&hf_opa_attribute_modifier_A,
|
|
&hf_opa_attribute_modifier_P,
|
|
NULL
|
|
};
|
|
static const gint *_attribute_modifier_NpS2P[] = {
|
|
&hf_opa_attribute_modifier_NP,
|
|
&hf_opa_attribute_modifier_S2,
|
|
&hf_opa_attribute_modifier_P,
|
|
NULL
|
|
};
|
|
static const gint *_attribute_modifier_NpAP[] = {
|
|
&hf_opa_attribute_modifier_NP,
|
|
&hf_opa_attribute_modifier_A,
|
|
&hf_opa_attribute_modifier_P,
|
|
NULL
|
|
};
|
|
static const gint *_attribute_modifier_NbP2B[] = {
|
|
&hf_opa_attribute_modifier_NB,
|
|
&hf_opa_attribute_modifier_P2,
|
|
&hf_opa_attribute_modifier_B,
|
|
NULL
|
|
};
|
|
static const gint *_attribute_modifier_NbA2B2IE[] = {
|
|
&hf_opa_attribute_modifier_NB,
|
|
&hf_opa_attribute_modifier_A2,
|
|
&hf_opa_attribute_modifier_B2,
|
|
&hf_opa_attribute_modifier_I,
|
|
&hf_opa_attribute_modifier_E,
|
|
NULL
|
|
};
|
|
static const gint *_attribute_modifier_NpSAP[] = {
|
|
&hf_opa_attribute_modifier_NP,
|
|
&hf_opa_attribute_modifier_S,
|
|
&hf_opa_attribute_modifier_A,
|
|
&hf_opa_attribute_modifier_P,
|
|
NULL
|
|
};
|
|
static const gint *_attribute_modifier_NbA3B3[] = {
|
|
&hf_opa_attribute_modifier_NB,
|
|
&hf_opa_attribute_modifier_A3,
|
|
&hf_opa_attribute_modifier_B3,
|
|
NULL
|
|
};
|
|
static const gint *_attribute_modifier_NbP3A4B4[] = {
|
|
&hf_opa_attribute_modifier_NB,
|
|
&hf_opa_attribute_modifier_P3,
|
|
&hf_opa_attribute_modifier_A4,
|
|
&hf_opa_attribute_modifier_B4,
|
|
NULL
|
|
};
|
|
static const gint *_attribute_modifier_A5LP[] = {
|
|
&hf_opa_attribute_modifier_A5,
|
|
&hf_opa_attribute_modifier_L,
|
|
&hf_opa_attribute_modifier_P,
|
|
NULL
|
|
};
|
|
static const gint *_attribute_modifier_NbYAP[] = {
|
|
&hf_opa_attribute_modifier_NB,
|
|
&hf_opa_attribute_modifier_Y,
|
|
&hf_opa_attribute_modifier_A,
|
|
&hf_opa_attribute_modifier_P,
|
|
NULL
|
|
};
|
|
static const gint *_attribute_modifier_NpP[] = {
|
|
&hf_opa_attribute_modifier_NP,
|
|
&hf_opa_attribute_modifier_P,
|
|
NULL
|
|
};
|
|
static const gint *_attribute_modifier_NbP[] = {
|
|
&hf_opa_attribute_modifier_NB,
|
|
&hf_opa_attribute_modifier_P,
|
|
NULL
|
|
};
|
|
static const gint *_attribute_modifier_NbP3A6B5[] = {
|
|
&hf_opa_attribute_modifier_NB,
|
|
&hf_opa_attribute_modifier_P3,
|
|
&hf_opa_attribute_modifier_A6,
|
|
&hf_opa_attribute_modifier_B5,
|
|
NULL
|
|
};
|
|
/* RMPP Header */
|
|
static gint hf_opa_rmpp = -1;
|
|
static gint hf_opa_rmpp_version = -1;
|
|
static gint hf_opa_rmpp_type = -1;
|
|
static gint hf_opa_rmpp_r_resp_time = -1;
|
|
static gint hf_opa_rmpp_flags_last = -1;
|
|
static gint hf_opa_rmpp_flags_first = -1;
|
|
static gint hf_opa_rmpp_flags_active = -1;
|
|
static gint hf_opa_rmpp_status = -1;
|
|
static gint hf_opa_rmpp_data1 = -1;
|
|
static gint hf_opa_rmpp_data2 = -1;
|
|
static gint hf_opa_rmpp_segment_number = -1;
|
|
static gint hf_opa_rmpp_payload_length32 = -1;
|
|
static gint hf_opa_rmpp_new_window_last = -1;
|
|
/* SA Packets */
|
|
/* SA RID */
|
|
static gint hf_opa_sa_Lid = -1;
|
|
static gint hf_opa_sa_EndportLID = -1;
|
|
static gint hf_opa_sa_PortNum = -1;
|
|
static gint hf_opa_sa_InputPortNum = -1;
|
|
static gint hf_opa_sa_OutputPortNum = -1;
|
|
static gint hf_opa_sa_Port = -1;
|
|
static gint hf_opa_sa_reserved14 = -1;
|
|
static gint hf_opa_sa_BlockNum_18b = -1;
|
|
static gint hf_opa_sa_Position = -1;
|
|
static gint hf_opa_sa_Position_16b = -1;
|
|
static gint hf_opa_sa_reserved9 = -1;
|
|
static gint hf_opa_sa_reserved9_16b = -1;
|
|
static gint hf_opa_sa_BlockNum_21b = -1;
|
|
static gint hf_opa_sa_BlockNum_8b = -1;
|
|
static gint hf_opa_sa_BlockNum_16b = -1;
|
|
static gint hf_opa_sa_BlockNum_5b = -1;
|
|
static gint hf_opa_sa_SubscriberLID = -1;
|
|
static gint hf_opa_sa_Enum = -1;
|
|
static gint hf_opa_sa_FromLID = -1;
|
|
static gint hf_opa_sa_FromPort = -1;
|
|
static gint hf_opa_sa_ServiceID = -1;
|
|
static gint hf_opa_sa_ServiceLID = -1;
|
|
static gint hf_opa_sa_ServiceP_Key = -1;
|
|
static gint hf_opa_sa_ServiceGID = -1;
|
|
static gint hf_opa_sa_MGID = -1;
|
|
static gint hf_opa_sa_PortGID = -1;
|
|
|
|
/* Attribute Specfic Fields */
|
|
static gint hf_opa_Notice = -1;
|
|
static gint hf_opa_Notice_IsGeneric = -1;
|
|
static gint hf_opa_Notice_Type = -1;
|
|
static gint hf_opa_Notice_ProducerType = -1;
|
|
static gint hf_opa_Notice_TrapNumber = -1;
|
|
static gint hf_opa_Notice_VendorID = -1;
|
|
static gint hf_opa_Notice_DeviceID = -1;
|
|
static gint hf_opa_Notice_IssuerLID = -1;
|
|
static gint hf_opa_Notice_IssuerGID = -1;
|
|
static gint hf_opa_Notice_Toggle = -1;
|
|
static gint hf_opa_Notice_Count = -1;
|
|
static gint hf_opa_Notice_ClassDataDetails = -1;
|
|
static gint hf_opa_Trap = -1;
|
|
static gint hf_opa_Trap_GID = -1;
|
|
static gint hf_opa_Trap_LID = -1;
|
|
static gint hf_opa_Trap_PORTNO = -1;
|
|
static gint hf_opa_Trap_CAPABILITYMASK = -1;
|
|
static gint hf_opa_Trap_CAPABILITYMASK3 = -1;
|
|
static gint hf_opa_Trap_144_reserved = -1;
|
|
static gint hf_opa_Trap_LinkWidthDowngradeEnabledChange = -1;
|
|
static gint hf_opa_Trap_LinkSpeecEnabledChange = -1;
|
|
static gint hf_opa_Trap_LinkWidthEnabledChange = -1;
|
|
static gint hf_opa_Trap_NodeDescriptionChange = -1;
|
|
static gint hf_opa_Trap_SystemImageGUID = -1;
|
|
static gint hf_opa_Trap_DRSLID = -1;
|
|
static gint hf_opa_Trap_Method = -1;
|
|
static gint hf_opa_Trap_AttributeID = -1;
|
|
static gint hf_opa_Trap_AttributeModifier = -1;
|
|
static gint hf_opa_Trap_MKey = -1;
|
|
static gint hf_opa_Trap_DRNotice = -1;
|
|
static gint hf_opa_Trap_DRPathTruncated = -1;
|
|
static gint hf_opa_Trap_DRHopCount = -1;
|
|
static gint hf_opa_Trap_DRNoticeReturnPath = -1;
|
|
static gint hf_opa_Trap_Key = -1;
|
|
static gint hf_opa_Trap_SL = -1;
|
|
static gint hf_opa_Trap_SL_reserved = -1;
|
|
static gint hf_opa_Trap_QP = -1;
|
|
static gint hf_opa_Trap_DataValid = -1;
|
|
static gint hf_opa_Trap_DataValid_Lid1 = -1;
|
|
static gint hf_opa_Trap_DataValid_Lid2 = -1;
|
|
static gint hf_opa_Trap_DataValid_PKey = -1;
|
|
static gint hf_opa_Trap_DataValid_SL = -1;
|
|
static gint hf_opa_Trap_DataValid_QP1 = -1;
|
|
static gint hf_opa_Trap_DataValid_QP2 = -1;
|
|
static gint hf_opa_Trap_DataValid_Gid1 = -1;
|
|
static gint hf_opa_Trap_DataValid_Gid2 = -1;
|
|
static gint hf_opa_Trap_DataValid_Reserved = -1;
|
|
static const gint *_Trap_DataValid[] = {
|
|
&hf_opa_Trap_DataValid_Lid1,
|
|
&hf_opa_Trap_DataValid_Lid2,
|
|
&hf_opa_Trap_DataValid_PKey,
|
|
&hf_opa_Trap_DataValid_SL,
|
|
&hf_opa_Trap_DataValid_QP1,
|
|
&hf_opa_Trap_DataValid_QP2,
|
|
&hf_opa_Trap_DataValid_Gid1,
|
|
&hf_opa_Trap_DataValid_Gid2,
|
|
&hf_opa_Trap_DataValid_Reserved,
|
|
NULL
|
|
};
|
|
static gint hf_opa_Trap_PKey = -1;
|
|
static gint hf_opa_ClassPortInfo = -1;
|
|
static gint hf_opa_ClassPortInfo_BaseVersion = -1;
|
|
static gint hf_opa_ClassPortInfo_ClassVersion = -1;
|
|
static gint hf_opa_ClassPortInfo_CapMask = -1;
|
|
static gint hf_opa_ClassPortInfo_CapMask2 = -1;
|
|
static gint hf_opa_ClassPortInfo_RespTimeValue = -1;
|
|
static gint hf_opa_ClassPortInfo_Redirect_GID = -1;
|
|
static gint hf_opa_ClassPortInfo_Redirect_TClass = -1;
|
|
static gint hf_opa_ClassPortInfo_Redirect_SL = -1;
|
|
static gint hf_opa_ClassPortInfo_Redirect_reserved = -1;
|
|
static gint hf_opa_ClassPortInfo_Redirect_FlowLabel = -1;
|
|
static gint hf_opa_ClassPortInfo_Redirect_LID = -1;
|
|
static gint hf_opa_ClassPortInfo_Redirect_reserved2 = -1;
|
|
static gint hf_opa_ClassPortInfo_Redirect_QP = -1;
|
|
static gint hf_opa_ClassPortInfo_Redirect_Q_Key = -1;
|
|
static gint hf_opa_ClassPortInfo_Trap_GID = -1;
|
|
static gint hf_opa_ClassPortInfo_Trap_TClass = -1;
|
|
static gint hf_opa_ClassPortInfo_Trap_reserved = -1;
|
|
static gint hf_opa_ClassPortInfo_Trap_FlowLabel = -1;
|
|
static gint hf_opa_ClassPortInfo_Trap_LID = -1;
|
|
static gint hf_opa_ClassPortInfo_Trap_HopLimit = -1;
|
|
static gint hf_opa_ClassPortInfo_Trap_QP = -1;
|
|
static gint hf_opa_ClassPortInfo_Trap_Q_Key = -1;
|
|
static gint hf_opa_ClassPortInfo_Trap_P_Key = -1;
|
|
static gint hf_opa_ClassPortInfo_Redirect_P_Key = -1;
|
|
static gint hf_opa_ClassPortInfo_Trap_SL = -1;
|
|
static gint hf_opa_ClassPortInfo_Trap_reserved2 = -1;
|
|
static gint hf_opa_InformInfo = -1;
|
|
static gint hf_opa_InformInfo_GID = -1;
|
|
static gint hf_opa_InformInfo_LIDRangeBegin = -1;
|
|
static gint hf_opa_InformInfo_LIDRangeEnd = -1;
|
|
static gint hf_opa_InformInfo_IsGeneric = -1;
|
|
static gint hf_opa_InformInfo_Subscribe = -1;
|
|
static gint hf_opa_InformInfo_Type = -1;
|
|
static gint hf_opa_InformInfo_TrapNumber = -1;
|
|
static gint hf_opa_InformInfo_DeviceID = -1;
|
|
static gint hf_opa_InformInfo_QPN = -1;
|
|
static gint hf_opa_InformInfo_reserved = -1;
|
|
static gint hf_opa_InformInfo_RespTimeValue = -1;
|
|
static gint hf_opa_InformInfo_ProducerType = -1;
|
|
static gint hf_opa_InformInfo_VendorID = -1;
|
|
/* SM */
|
|
static gint hf_opa_NodeDescription = -1;
|
|
static gint hf_opa_NodeDescription_NodeString = -1;
|
|
static gint hf_opa_NodeInfo = -1;
|
|
static gint hf_opa_NodeInfo_BaseVersion = -1;
|
|
static gint hf_opa_NodeInfo_ClassVersion = -1;
|
|
static gint hf_opa_NodeInfo_NodeType = -1;
|
|
static gint hf_opa_NodeInfo_NumPorts = -1;
|
|
static gint hf_opa_NodeInfo_SystemImageGUID = -1;
|
|
static gint hf_opa_NodeInfo_NodeGUID = -1;
|
|
static gint hf_opa_NodeInfo_PortGUID = -1;
|
|
static gint hf_opa_NodeInfo_PartitionCap = -1;
|
|
static gint hf_opa_NodeInfo_DeviceID = -1;
|
|
static gint hf_opa_NodeInfo_Revision = -1;
|
|
static gint hf_opa_NodeInfo_LocalPortNum = -1;
|
|
static gint hf_opa_NodeInfo_VendorID = -1;
|
|
static gint hf_opa_SwitchInfo = -1;
|
|
static gint hf_opa_SwitchInfo_LinearFDBCap = -1;
|
|
static gint hf_opa_SwitchInfo_MulticastFDBCap = -1;
|
|
static gint hf_opa_SwitchInfo_LinearFDBTop = -1;
|
|
static gint hf_opa_SwitchInfo_MulticastFDBTop = -1;
|
|
static gint hf_opa_SwitchInfo_CollectiveCap = -1;
|
|
static gint hf_opa_SwitchInfo_CollectiveTop = -1;
|
|
static gint hf_opa_SwitchInfo_IPAddrIPv6 = -1;
|
|
static gint hf_opa_SwitchInfo_IPAddrIPv4 = -1;
|
|
static gint hf_opa_SwitchInfo_LifeTimeValue = -1;
|
|
static gint hf_opa_SwitchInfo_PortStateChange = -1;
|
|
static gint hf_opa_SwitchInfo_reserved2 = -1;
|
|
static gint hf_opa_SwitchInfo_PartitionEnforcementCap = -1;
|
|
static gint hf_opa_SwitchInfo_PortGroupCap = -1;
|
|
static gint hf_opa_SwitchInfo_PortGroupTop = -1;
|
|
static gint hf_opa_SwitchInfo_SupportedRoutingMode = -1;
|
|
static gint hf_opa_SwitchInfo_EnabledRoutingMode = -1;
|
|
static gint hf_opa_SwitchInfo_reserved3 = -1;
|
|
static gint hf_opa_SwitchInfo_EnhancedPortZero = -1;
|
|
static gint hf_opa_SwitchInfo_reserved4 = -1;
|
|
static gint hf_opa_SwitchInfo_reserved5 = -1;
|
|
static gint hf_opa_SwitchInfo_CollectiveMask = -1;
|
|
static gint hf_opa_SwitchInfo_MulticastMask = -1;
|
|
static gint hf_opa_SwitchInfo_AdaptiveRoutingEnable = -1;
|
|
static gint hf_opa_SwitchInfo_AdaptiveRoutingPause = -1;
|
|
static gint hf_opa_SwitchInfo_AdaptiveRoutingAlgorithm = -1;
|
|
static gint hf_opa_SwitchInfo_AdaptiveRoutingFrequency = -1;
|
|
static gint hf_opa_SwitchInfo_AdaptiveRoutingLostRoutesOnly = -1;
|
|
static gint hf_opa_SwitchInfo_AdaptiveRoutingThreshold = -1;
|
|
static gint hf_opa_SwitchInfo_reserved6 = -1;
|
|
static const gint *_SwitchInfo_AdaptiveRouting[] = {
|
|
&hf_opa_SwitchInfo_AdaptiveRoutingEnable,
|
|
&hf_opa_SwitchInfo_AdaptiveRoutingPause,
|
|
&hf_opa_SwitchInfo_AdaptiveRoutingAlgorithm,
|
|
&hf_opa_SwitchInfo_AdaptiveRoutingFrequency,
|
|
&hf_opa_SwitchInfo_AdaptiveRoutingLostRoutesOnly,
|
|
&hf_opa_SwitchInfo_AdaptiveRoutingThreshold,
|
|
&hf_opa_SwitchInfo_reserved6,
|
|
NULL
|
|
};
|
|
static gint hf_opa_SwitchInfo_SwitchCapabilityMask = -1;
|
|
static gint hf_opa_SwitchInfo_SwitchCapabilityMask_reserved = -1;
|
|
static gint hf_opa_SwitchInfo_SwitchCapabilityMask_IsAddrRangeConfigSupported = -1;
|
|
static gint hf_opa_SwitchInfo_SwitchCapabilityMask_reserved2 = -1;
|
|
static gint hf_opa_SwitchInfo_SwitchCapabilityMask_IsAdaptiveRoutingSupported = -1;
|
|
static const gint *_SwitchInfo_SwitchCapabilityMask[] = {
|
|
&hf_opa_SwitchInfo_SwitchCapabilityMask_reserved,
|
|
&hf_opa_SwitchInfo_SwitchCapabilityMask_IsAddrRangeConfigSupported,
|
|
&hf_opa_SwitchInfo_SwitchCapabilityMask_reserved2,
|
|
&hf_opa_SwitchInfo_SwitchCapabilityMask_IsAdaptiveRoutingSupported,
|
|
NULL
|
|
};
|
|
static gint hf_opa_SwitchInfo_CapabilityMaskCollectives = -1;
|
|
static gint hf_opa_PortInfo = -1;
|
|
static gint hf_opa_PortInfo_LID = -1;
|
|
static gint hf_opa_PortInfo_FlowControlMask = -1;
|
|
static gint hf_opa_PortInfo_VL_PreemptCap = -1;
|
|
static gint hf_opa_PortInfo_VL_reserved = -1;
|
|
static gint hf_opa_PortInfo_VL_Cap = -1;
|
|
static gint hf_opa_PortInfo_VL_HighLimit = -1;
|
|
static gint hf_opa_PortInfo_VL_PreemptingLimit = -1;
|
|
static gint hf_opa_PortInfo_VL_ArbitrationHighCap = -1;
|
|
static gint hf_opa_PortInfo_VL_ArbitrationLowCap = -1;
|
|
static gint hf_opa_PortInfo_PortPhysConfig_reserved = -1;
|
|
static gint hf_opa_PortInfo_PortPhysConfig_PortType = -1;
|
|
static gint hf_opa_PortInfo_MultiCollectMask_reserved = -1;
|
|
static gint hf_opa_PortInfo_MultiCollectMask_CollectiveMask = -1;
|
|
static gint hf_opa_PortInfo_MultiCollectMask_MulticastMask = -1;
|
|
static gint hf_opa_PortInfo_M_KeyProtectBits = -1;
|
|
static gint hf_opa_PortInfo_S1_reserved = -1;
|
|
static gint hf_opa_PortInfo_LMC = -1;
|
|
static gint hf_opa_PortInfo_S2_reserved = -1;
|
|
static gint hf_opa_PortInfo_MasterSMSL = -1;
|
|
static gint hf_opa_PortInfo_LinkInitReason = -1;
|
|
static gint hf_opa_PortInfo_PartitionEnforcementInbound = -1;
|
|
static gint hf_opa_PortInfo_PartitionEnforcementOutbound = -1;
|
|
static gint hf_opa_PortInfo_S3_reserved2 = -1;
|
|
static gint hf_opa_PortInfo_S4_reserved = -1;
|
|
static gint hf_opa_PortInfo_OperationalVL = -1;
|
|
static gint hf_opa_PortInfo_P_Keys_P_Key_8B = -1;
|
|
static gint hf_opa_PortInfo_P_Keys_P_Key_10B = -1;
|
|
static gint hf_opa_PortInfo_M_KeyViolations = -1;
|
|
static gint hf_opa_PortInfo_P_KeyViolations = -1;
|
|
static gint hf_opa_PortInfo_Q_KeyViolations = -1;
|
|
static gint hf_opa_PortInfo_TrapQueuePair_reserved = -1;
|
|
static gint hf_opa_PortInfo_TrapQueuePair = -1;
|
|
static gint hf_opa_PortInfo_SAQueuePair_reserved = -1;
|
|
static gint hf_opa_PortInfo_SAQueuePair = -1;
|
|
static gint hf_opa_PortInfo_NeighborPortNum = -1;
|
|
static gint hf_opa_PortInfo_LinkDownReason = -1;
|
|
static gint hf_opa_PortInfo_NeighborLinkDownReason = -1;
|
|
static gint hf_opa_PortInfo_ClientReregister = -1;
|
|
static gint hf_opa_PortInfo_MulticastPKeyTrapSuppressEnabled = -1;
|
|
static gint hf_opa_PortInfo_Timeout = -1;
|
|
static gint hf_opa_PortInfo_LinkSpeedSupported = -1;
|
|
static gint hf_opa_PortInfo_LinkSpeedEnabled = -1;
|
|
static gint hf_opa_PortInfo_LinkSpeedActive = -1;
|
|
static gint hf_opa_PortInfo_LinkWidthSupported = -1;
|
|
static gint hf_opa_PortInfo_LinkWidthEnabled = -1;
|
|
static gint hf_opa_PortInfo_LinkWidthActive = -1;
|
|
static gint hf_opa_PortInfo_LinkWidthDowngrade_Supported = -1;
|
|
static gint hf_opa_PortInfo_LinkWidthDowngrade_Enabled = -1;
|
|
static gint hf_opa_PortInfo_LinkWidthDowngrade_TxActive = -1;
|
|
static gint hf_opa_PortInfo_LinkWidthDowngrade_RxActive = -1;
|
|
static gint hf_opa_PortInfo_PortLinkMode_reserved = -1;
|
|
static gint hf_opa_PortInfo_PortLinkMode_Supported = -1;
|
|
static gint hf_opa_PortInfo_PortLinkMode_Enabled = -1;
|
|
static gint hf_opa_PortInfo_PortLinkMode_Active = -1;
|
|
static gint hf_opa_PortInfo_PortLTPCRCMode_reserved = -1;
|
|
static gint hf_opa_PortInfo_PortLTPCRCMode_Supported = -1;
|
|
static gint hf_opa_PortInfo_PortLTPCRCMode_Enabled = -1;
|
|
static gint hf_opa_PortInfo_PortLTPCRCMode_Active = -1;
|
|
static gint hf_opa_PortInfo_PortMode = -1;
|
|
static gint hf_opa_PortInfo_PortMode_reserved = -1;
|
|
static gint hf_opa_PortInfo_PortMode_IsActiveOptimizeEnabled = -1;
|
|
static gint hf_opa_PortInfo_PortMode_IsPassThroughEnabled = -1;
|
|
static gint hf_opa_PortInfo_PortMode_IsVLMarkerEnabled = -1;
|
|
static gint hf_opa_PortInfo_PortMode_reserved2 = -1;
|
|
static gint hf_opa_PortInfo_PortMode_Is16BTrapQueryEnabled = -1;
|
|
static gint hf_opa_PortInfo_PortMode_reserved3 = -1;
|
|
static const gint *_PortInfo_PortMode[] = {
|
|
&hf_opa_PortInfo_PortMode_reserved,
|
|
&hf_opa_PortInfo_PortMode_IsActiveOptimizeEnabled,
|
|
&hf_opa_PortInfo_PortMode_IsPassThroughEnabled,
|
|
&hf_opa_PortInfo_PortMode_IsVLMarkerEnabled,
|
|
&hf_opa_PortInfo_PortMode_reserved2,
|
|
&hf_opa_PortInfo_PortMode_Is16BTrapQueryEnabled,
|
|
&hf_opa_PortInfo_PortMode_reserved3,
|
|
NULL
|
|
};
|
|
static gint hf_opa_PortInfo_PortPacketFormats_Supported = -1;
|
|
static gint hf_opa_PortInfo_PortPacketFormats_Enabled = -1;
|
|
static gint hf_opa_PortInfo_FlitControl_Interleave_reserved = -1;
|
|
static gint hf_opa_PortInfo_FlitControl_Interleave_DistanceSupported = -1;
|
|
static gint hf_opa_PortInfo_FlitControl_Interleave_DistanceEnabled = -1;
|
|
static gint hf_opa_PortInfo_FlitControl_Interleave_MaxNestLevelTxEnabled = -1;
|
|
static gint hf_opa_PortInfo_FlitControl_Interleave_MaxNestLevelRxSupported = -1;
|
|
static gint hf_opa_PortInfo_FlitControl_Preemption_MinInitial = -1;
|
|
static gint hf_opa_PortInfo_FlitControl_Preemption_MinTail = -1;
|
|
static gint hf_opa_PortInfo_FlitControl_Preemption_LargePacketLimit = -1;
|
|
static gint hf_opa_PortInfo_FlitControl_Preemption_SmallPacketLimit = -1;
|
|
static gint hf_opa_PortInfo_FlitControl_Preemption_MaxSmallPacketLimit = -1;
|
|
static gint hf_opa_PortInfo_FlitControl_Preemption_PreemptionLimit = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_ExcessiveBufferOverrun = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_reserved = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_FmConfigErrorExceedMulticastLimit = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadControlFlit = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadPreempt = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadVLMarker = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadCrdtAck = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadCtrlDist = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadTailDist = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadHeadDist = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_reserved2 = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadVLMarker = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_PortRcvErrorPreemptVL15 = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_PortRcvErrorPreemptError = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_reserved3 = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadMidTail = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_PortRcvErrorReserved = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadSC = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadL2 = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadDLID = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadSLID = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_PortRcvErrorPktLenTooShort = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_PortRcvErrorPktLenTooLong = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadPktLen = -1;
|
|
static gint hf_opa_PortInfo_PortErrorAction_reserved4 = -1;
|
|
static const gint *_PortInfo_PortErrorAction[] = {
|
|
&hf_opa_PortInfo_PortErrorAction_ExcessiveBufferOverrun,
|
|
&hf_opa_PortInfo_PortErrorAction_reserved,
|
|
&hf_opa_PortInfo_PortErrorAction_FmConfigErrorExceedMulticastLimit,
|
|
&hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadControlFlit,
|
|
&hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadPreempt,
|
|
&hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadVLMarker,
|
|
&hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadCrdtAck,
|
|
&hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadCtrlDist,
|
|
&hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadTailDist,
|
|
&hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadHeadDist,
|
|
&hf_opa_PortInfo_PortErrorAction_reserved2,
|
|
&hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadVLMarker,
|
|
&hf_opa_PortInfo_PortErrorAction_PortRcvErrorPreemptVL15,
|
|
&hf_opa_PortInfo_PortErrorAction_PortRcvErrorPreemptError,
|
|
&hf_opa_PortInfo_PortErrorAction_reserved3,
|
|
&hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadMidTail,
|
|
&hf_opa_PortInfo_PortErrorAction_PortRcvErrorReserved,
|
|
&hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadSC,
|
|
&hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadL2,
|
|
&hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadDLID,
|
|
&hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadSLID,
|
|
&hf_opa_PortInfo_PortErrorAction_PortRcvErrorPktLenTooShort,
|
|
&hf_opa_PortInfo_PortErrorAction_PortRcvErrorPktLenTooLong,
|
|
&hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadPktLen,
|
|
&hf_opa_PortInfo_PortErrorAction_reserved4,
|
|
NULL
|
|
};
|
|
static gint hf_opa_PortInfo_PassThroughControl_EgressPort = -1;
|
|
static gint hf_opa_PortInfo_PassThroughControl_reserved = -1;
|
|
static gint hf_opa_PortInfo_PassThroughControl_DRControl = -1;
|
|
static gint hf_opa_PortInfo_M_KeyLeasePeriod = -1;
|
|
static gint hf_opa_PortInfo_BufferUnits_reserved = -1;
|
|
static gint hf_opa_PortInfo_BufferUnits_VL15Init = -1;
|
|
static gint hf_opa_PortInfo_BufferUnits_VL15CreditRate = -1;
|
|
static gint hf_opa_PortInfo_BufferUnits_CreditAck = -1;
|
|
static gint hf_opa_PortInfo_BufferUnits_BufferAlloc = -1;
|
|
static gint hf_opa_PortInfo_MasterSMLID = -1;
|
|
static gint hf_opa_PortInfo_M_Key = -1;
|
|
static gint hf_opa_PortInfo_SubnetPrefix = -1;
|
|
static gint hf_opa_PortInfo_VL1 = -1;
|
|
static gint hf_opa_PortInfo_VL2 = -1;
|
|
static gint hf_opa_PortInfo_XmitQ_VLStallCount = -1;
|
|
static gint hf_opa_PortInfo_XmitQ_HOQLife = -1;
|
|
static gint hf_opa_PortInfo_IPAddrIPv6 = -1;
|
|
static gint hf_opa_PortInfo_IPAddrIPv4 = -1;
|
|
static gint hf_opa_PortInfo_NeighborNodeGUID = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask_reserved = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask_IsCapabilityMaskNoticeSupported = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask_reserved2 = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask_IsVendorClassSupported = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask_IsDeviceManagementSupported = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask_reserved3 = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask_IsConnectionManagementSupported = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask_reserved4 = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask_IsAutomaticMigrationSupported = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask_reserved5 = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask_IsSM = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask_reserved6 = -1;
|
|
static const gint *_PortInfo_CapabilityMask[] = {
|
|
&hf_opa_PortInfo_CapabilityMask_reserved,
|
|
&hf_opa_PortInfo_CapabilityMask_IsCapabilityMaskNoticeSupported,
|
|
&hf_opa_PortInfo_CapabilityMask_reserved2,
|
|
&hf_opa_PortInfo_CapabilityMask_IsVendorClassSupported,
|
|
&hf_opa_PortInfo_CapabilityMask_IsDeviceManagementSupported,
|
|
&hf_opa_PortInfo_CapabilityMask_reserved3,
|
|
&hf_opa_PortInfo_CapabilityMask_IsConnectionManagementSupported,
|
|
&hf_opa_PortInfo_CapabilityMask_reserved4,
|
|
&hf_opa_PortInfo_CapabilityMask_IsAutomaticMigrationSupported,
|
|
&hf_opa_PortInfo_CapabilityMask_reserved5,
|
|
&hf_opa_PortInfo_CapabilityMask_IsSM,
|
|
&hf_opa_PortInfo_CapabilityMask_reserved6,
|
|
NULL
|
|
};
|
|
static gint hf_opa_PortInfo_CapabilityMask3 = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask3_reserved = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask3_IsSnoopSupported = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask3_IsAsyncSCtoVLSupported = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask3_IsAddrRangeConfigSupported = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask3_IsPassThroughSupported = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask3_IsSharedSpaceSupported = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask3_reserved2 = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask3_IsVLMarkerSupported = -1;
|
|
static gint hf_opa_PortInfo_CapabilityMask3_IsVLrSupported = -1;
|
|
static const gint *_PortInfo_CapabilityMask3[] = {
|
|
&hf_opa_PortInfo_CapabilityMask3_reserved,
|
|
&hf_opa_PortInfo_CapabilityMask3_IsSnoopSupported,
|
|
&hf_opa_PortInfo_CapabilityMask3_IsAsyncSCtoVLSupported,
|
|
&hf_opa_PortInfo_CapabilityMask3_IsAddrRangeConfigSupported,
|
|
&hf_opa_PortInfo_CapabilityMask3_IsPassThroughSupported,
|
|
&hf_opa_PortInfo_CapabilityMask3_IsSharedSpaceSupported,
|
|
&hf_opa_PortInfo_CapabilityMask3_reserved2,
|
|
&hf_opa_PortInfo_CapabilityMask3_IsVLMarkerSupported,
|
|
&hf_opa_PortInfo_CapabilityMask3_IsVLrSupported,
|
|
NULL
|
|
};
|
|
static gint hf_opa_PortInfo_OverallBufferSpace = -1;
|
|
static gint hf_opa_PortInfo_DiagCode = -1;
|
|
static gint hf_opa_PortInfo_ReplayDepth_BufferDepth = -1;
|
|
static gint hf_opa_PortInfo_ReplayDepth_WireDepth = -1;
|
|
static gint hf_opa_PortInfo_PortNeighborMode_reserved = -1;
|
|
static gint hf_opa_PortInfo_PortNeighborMode_MgmtAllowed = -1;
|
|
static gint hf_opa_PortInfo_PortNeighborMode_NeighborFWAuthenBypass = -1;
|
|
static gint hf_opa_PortInfo_PortNeighborMode_NeighborNodeType = -1;
|
|
static gint hf_opa_PortInfo_MTU_reserved = -1;
|
|
static gint hf_opa_PortInfo_MTU_Cap = -1;
|
|
static gint hf_opa_PortInfo_Resp_reserved = -1;
|
|
static gint hf_opa_PortInfo_Resp_TimeValue = -1;
|
|
static gint hf_opa_PortInfo_LocalPortNum = -1;
|
|
static gint hf_opa_PortStates = -1;
|
|
static gint hf_opa_PortStates_reserved = -1;
|
|
static gint hf_opa_PortStates_LEDEnabled = -1;
|
|
static gint hf_opa_PortStates_IsSMConfigurationStarted = -1;
|
|
static gint hf_opa_PortStates_NeighborNormal = -1;
|
|
static gint hf_opa_PortStates_OfflineDisabledReason = -1;
|
|
static gint hf_opa_PortStates_PortUnsleepState = -1;
|
|
static gint hf_opa_PortStates_DownDefaultState = -1;
|
|
static gint hf_opa_PortStates_PortPhysicalState = -1;
|
|
static gint hf_opa_PortStates_PortState = -1;
|
|
static const gint *_PortStates[] = {
|
|
&hf_opa_PortStates_reserved,
|
|
&hf_opa_PortStates_LEDEnabled,
|
|
&hf_opa_PortStates_IsSMConfigurationStarted,
|
|
&hf_opa_PortStates_NeighborNormal,
|
|
&hf_opa_PortStates_OfflineDisabledReason,
|
|
&hf_opa_PortStates_PortUnsleepState,
|
|
&hf_opa_PortStates_DownDefaultState,
|
|
&hf_opa_PortStates_PortPhysicalState,
|
|
&hf_opa_PortStates_PortState,
|
|
NULL
|
|
};
|
|
static gint hf_opa_PortStates_LinkWidthDowngradeTxActive = -1;
|
|
static gint hf_opa_PortStates_LinkWidthDowngradeRxActive = -1;
|
|
static gint hf_opa_P_KeyTable = -1;
|
|
static gint hf_opa_P_KeyTable_MembershipType = -1;
|
|
static gint hf_opa_P_KeyTable_P_KeyBase = -1;
|
|
static gint hf_opa_SLtoSCMappingTable = -1;
|
|
static gint hf_opa_SLtoSCMappingTable_SLtoSC_HighBits = -1;
|
|
static gint hf_opa_SLtoSCMappingTable_SLtoSC_LowBits = -1;
|
|
static gint hf_opa_SCtoSCMappingTable = -1;
|
|
static gint hf_opa_SCtoSCMappingTable_SCtoSC_HighBits = -1;
|
|
static gint hf_opa_SCtoSCMappingTable_SCtoSC_LowBits = -1;
|
|
static gint hf_opa_SCtoSLMappingTable = -1;
|
|
static gint hf_opa_SCtoSLMappingTable_SCtoSL_HighBits = -1;
|
|
static gint hf_opa_SCtoSLMappingTable_SCtoSL_LowBits = -1;
|
|
static gint hf_opa_SCtoVLxMappingTable = -1;
|
|
static gint hf_opa_SCtoVLxMappingTable_SCtoVLx_HighBits = -1;
|
|
static gint hf_opa_SCtoVLxMappingTable_SCtoVLx_LowBits = -1;
|
|
static gint hf_opa_VLArbitrationTable = -1;
|
|
static gint hf_opa_VLArbitrationTable_reserved = -1;
|
|
static gint hf_opa_VLArbitrationTable_VL = -1;
|
|
static gint hf_opa_VLArbitrationTable_Weight = -1;
|
|
static gint hf_opa_VLArbitrationTable_Matrix = -1;
|
|
static gint hf_opa_LinearForwardingTable = -1;
|
|
static gint hf_opa_LinearForwardingTable_Port = -1;
|
|
static gint hf_opa_MulticastForwardingTable = -1;
|
|
static gint hf_opa_MulticastForwardingTable_PortMask = -1;
|
|
static gint hf_opa_PortGroupForwardingTable = -1;
|
|
static gint hf_opa_PortGroupForwardingTable_Port = -1;
|
|
static gint hf_opa_PortGroupTable = -1;
|
|
static gint hf_opa_PortGroupTable_PortMask = -1;
|
|
static gint hf_opa_SMInfo = -1;
|
|
static gint hf_opa_SMInfo_GUID = -1;
|
|
static gint hf_opa_SMInfo_SM_Key = -1;
|
|
static gint hf_opa_SMInfo_ActCount = -1;
|
|
static gint hf_opa_SMInfo_ElapsedTime = -1;
|
|
static gint hf_opa_SMInfo_Priority = -1;
|
|
static gint hf_opa_SMInfo_ElevatedPriority = -1;
|
|
static gint hf_opa_SMInfo_InitialPriority = -1;
|
|
static gint hf_opa_SMInfo_SMState = -1;
|
|
static gint hf_opa_LedInfo = -1;
|
|
static gint hf_opa_LedInfo_LedMask = -1;
|
|
static gint hf_opa_LedInfo_reserved = -1;
|
|
static gint hf_opa_CableInfo = -1;
|
|
static gint hf_opa_CableInfo_Data = -1;
|
|
static gint hf_opa_CableInfo_DataStream = -1;
|
|
static gint hf_opa_Aggregate = -1;
|
|
static gint hf_opa_Aggregate_AttributeID = -1;
|
|
static gint hf_opa_Aggregate_Error = -1;
|
|
static gint hf_opa_Aggregate_RequestLength = -1;
|
|
static gint hf_opa_BufferControlTable = -1;
|
|
static gint hf_opa_BufferControlTable_TxOverallSharedLimit = -1;
|
|
static gint hf_opa_BufferControlTable_TxDedicatedLimit = -1;
|
|
static gint hf_opa_BufferControlTable_TxSharedLimit = -1;
|
|
static gint hf_opa_CongestionInfo = -1;
|
|
static gint hf_opa_CongestionInfo_CongestionInfo = -1;
|
|
static gint hf_opa_CongestionInfo_ControlTableCap = -1;
|
|
static gint hf_opa_CongestionInfo_CongestionLogLength = -1;
|
|
static gint hf_opa_SwitchCongestionLog = -1;
|
|
static gint hf_opa_SwitchCongestionLog_LogType = -1;
|
|
static gint hf_opa_SwitchCongestionLog_CongestionFlags = -1;
|
|
static gint hf_opa_SwitchCongestionLog_LogEventsCounter = -1;
|
|
static gint hf_opa_SwitchCongestionLog_CurrentTimeStamp = -1;
|
|
static gint hf_opa_SwitchCongestionLog_PortMap = -1;
|
|
static gint hf_opa_SwitchCongestionLog_SLID = -1;
|
|
static gint hf_opa_SwitchCongestionLog_DLID = -1;
|
|
static gint hf_opa_SwitchCongestionLog_SC = -1;
|
|
static gint hf_opa_SwitchCongestionLog_reserved = -1;
|
|
static gint hf_opa_SwitchCongestionLog_TimeStamp = -1;
|
|
static gint hf_opa_SwitchCongestionSetting = -1;
|
|
static gint hf_opa_SwitchCongestionSetting_Control_Map = -1;
|
|
static gint hf_opa_SwitchCongestionSetting_Victim_Mask = -1;
|
|
static gint hf_opa_SwitchCongestionSetting_Credit_Mask = -1;
|
|
static gint hf_opa_SwitchCongestionSetting_Threshold = -1;
|
|
static gint hf_opa_SwitchCongestionSetting_reserved1 = -1;
|
|
static gint hf_opa_SwitchCongestionSetting_Packet_Size = -1;
|
|
static gint hf_opa_SwitchCongestionSetting_CS_Threshold = -1;
|
|
static gint hf_opa_SwitchCongestionSetting_reserved2 = -1;
|
|
static gint hf_opa_SwitchCongestionSetting_CS_ReturnDelay = -1;
|
|
static gint hf_opa_SwitchCongestionSetting_Marking_Rate = -1;
|
|
static gint hf_opa_SwitchPortCongestionSetting = -1;
|
|
static gint hf_opa_SwitchPortCongestionSetting_Valid = -1;
|
|
static gint hf_opa_SwitchPortCongestionSetting_Control_Type = -1;
|
|
static gint hf_opa_SwitchPortCongestionSetting_reserved = -1;
|
|
static gint hf_opa_SwitchPortCongestionSetting_Threshold = -1;
|
|
static gint hf_opa_SwitchPortCongestionSetting_Packet_Size = -1;
|
|
static gint hf_opa_SwitchPortCongestionSetting_Marking_Rate = -1;
|
|
static gint hf_opa_HFICongestionLog = -1;
|
|
static gint hf_opa_HFICongestionLog_LogType = -1;
|
|
static gint hf_opa_HFICongestionLog_CongestionFlags = -1;
|
|
static gint hf_opa_HFICongestionLog_ThresholdEventCounter = -1;
|
|
static gint hf_opa_HFICongestionLog_CurrentTimeStamp = -1;
|
|
static gint hf_opa_HFICongestionLog_ThresholdCongestionEventMap = -1;
|
|
static gint hf_opa_HFICongestionLog_Local_QP_CN_Entry = -1;
|
|
static gint hf_opa_HFICongestionLog_Remote_QP_Number_CN_Entry = -1;
|
|
static gint hf_opa_HFICongestionLog_SL_CN_Entry = -1;
|
|
static gint hf_opa_HFICongestionLog_Service_Type_CN_Entry = -1;
|
|
static gint hf_opa_HFICongestionLog_Remote_LID_CN_Entry = -1;
|
|
static gint hf_opa_HFICongestionLog_TimeStamp_CN_Entry = -1;
|
|
static gint hf_opa_HFICongestionSetting = -1;
|
|
static gint hf_opa_HFICongestionSetting_Control_Map = -1;
|
|
static gint hf_opa_HFICongestionSetting_Port_Control = -1;
|
|
static gint hf_opa_HFICongestionSetting_CCTI_Increase = -1;
|
|
static gint hf_opa_HFICongestionSetting_CCTI_Timer = -1;
|
|
static gint hf_opa_HFICongestionSetting_TriggerThreshold = -1;
|
|
static gint hf_opa_HFICongestionSetting_CCTI_Min = -1;
|
|
static gint hf_opa_HFICongestionControlTable = -1;
|
|
static gint hf_opa_HFICongestionControlTable_CCTI_Limit = -1;
|
|
static gint hf_opa_HFICongestionControlTable_CCT_Shift = -1;
|
|
static gint hf_opa_HFICongestionControlTable_CCT_Multiplier = -1;
|
|
/* SA */
|
|
static gint hf_opa_PortInfoRecord_LinkDownReason_NeighborLinkDownReason = -1;
|
|
static gint hf_opa_PortInfoRecord_LinkDownReason_LinkDownReason = -1;
|
|
static gint hf_opa_PortInfoRecord_LinkDownReason_Timestamp = -1;
|
|
static gint hf_opa_LinkRecord = -1;
|
|
static gint hf_opa_LinkRecord_ToPort = -1;
|
|
static gint hf_opa_LinkRecord_ToLID = -1;
|
|
static gint hf_opa_ServiceRecord = -1;
|
|
static gint hf_opa_ServiceRecord_ServiceLease = -1;
|
|
static gint hf_opa_ServiceRecord_ServiceKey = -1;
|
|
static gint hf_opa_ServiceRecord_ServiceName = -1;
|
|
static gint hf_opa_ServiceRecord_ServiceData = -1;
|
|
static gint hf_opa_ServiceAssociationRecord_ServiceKey = -1;
|
|
static gint hf_opa_ServiceAssociationRecord_ServiceName = -1;
|
|
static gint hf_opa_PathRecord = -1;
|
|
static gint hf_opa_PathRecord_DGID = -1;
|
|
static gint hf_opa_PathRecord_SGID = -1;
|
|
static gint hf_opa_PathRecord_DLID = -1;
|
|
static gint hf_opa_PathRecord_SLID = -1;
|
|
static gint hf_opa_PathRecord_RawTraffic = -1;
|
|
static gint hf_opa_PathRecord_reserved = -1;
|
|
static gint hf_opa_PathRecord_FlowLabel = -1;
|
|
static gint hf_opa_PathRecord_HopLimit = -1;
|
|
static gint hf_opa_PathRecord_TClass = -1;
|
|
static gint hf_opa_PathRecord_Reversible = -1;
|
|
static gint hf_opa_PathRecord_NumbPath = -1;
|
|
static gint hf_opa_PathRecord_P_Key = -1;
|
|
static gint hf_opa_PathRecord_QosType = -1;
|
|
static gint hf_opa_PathRecord_reserved2 = -1;
|
|
static gint hf_opa_PathRecord_QosPriority = -1;
|
|
static gint hf_opa_PathRecord_SL = -1;
|
|
static gint hf_opa_PathRecord_MTUSelector = -1;
|
|
static gint hf_opa_PathRecord_MTU = -1;
|
|
static gint hf_opa_PathRecord_RateSelector = -1;
|
|
static gint hf_opa_PathRecord_Rate = -1;
|
|
static gint hf_opa_PathRecord_PacketLifeTimeSelector = -1;
|
|
static gint hf_opa_PathRecord_PacketLifeTime = -1;
|
|
static gint hf_opa_PathRecord_Preference = -1;
|
|
static gint hf_opa_MCMemberRecord = -1;
|
|
static gint hf_opa_MCMemberRecord_Q_Key = -1;
|
|
static gint hf_opa_MCMemberRecord_MLID = -1;
|
|
static gint hf_opa_MCMemberRecord_MTUSelector = -1;
|
|
static gint hf_opa_MCMemberRecord_MTU = -1;
|
|
static gint hf_opa_MCMemberRecord_TClass = -1;
|
|
static gint hf_opa_MCMemberRecord_P_Key = -1;
|
|
static gint hf_opa_MCMemberRecord_RateSelector = -1;
|
|
static gint hf_opa_MCMemberRecord_Rate = -1;
|
|
static gint hf_opa_MCMemberRecord_PacketLifeTimeSelector = -1;
|
|
static gint hf_opa_MCMemberRecord_PacketLifeTime = -1;
|
|
static gint hf_opa_MCMemberRecord_SL = -1;
|
|
static gint hf_opa_MCMemberRecord_reserved = -1;
|
|
static gint hf_opa_MCMemberRecord_HopLimit = -1;
|
|
static gint hf_opa_MCMemberRecord_Scope = -1;
|
|
static gint hf_opa_MCMemberRecord_reserved2 = -1;
|
|
static gint hf_opa_MCMemberRecord_JoinSendOnlyMember = -1;
|
|
static gint hf_opa_MCMemberRecord_JoinNonMember = -1;
|
|
static gint hf_opa_MCMemberRecord_JoinFullMember = -1;
|
|
static gint hf_opa_MCMemberRecord_ProxyJoin = -1;
|
|
static gint hf_opa_MCMemberRecord_reserved3 = -1;
|
|
static gint hf_opa_TraceRecord = -1;
|
|
static gint hf_opa_TraceRecord_IDGeneration = -1;
|
|
static gint hf_opa_TraceRecord_NodeType = -1;
|
|
static gint hf_opa_TraceRecord_NodeID = -1;
|
|
static gint hf_opa_TraceRecord_ChassisID = -1;
|
|
static gint hf_opa_TraceRecord_EntryPortID = -1;
|
|
static gint hf_opa_TraceRecord_ExitPortID = -1;
|
|
static gint hf_opa_TraceRecord_EntryPort = -1;
|
|
static gint hf_opa_TraceRecord_ExitPort = -1;
|
|
static gint hf_opa_MultiPathRecord = -1;
|
|
static gint hf_opa_MultiPathRecord_reserved = -1;
|
|
static gint hf_opa_MultiPathRecord_FlowLabel = -1;
|
|
static gint hf_opa_MultiPathRecord_HopLimit = -1;
|
|
static gint hf_opa_MultiPathRecord_TClass = -1;
|
|
static gint hf_opa_MultiPathRecord_Reversible = -1;
|
|
static gint hf_opa_MultiPathRecord_NumbPath = -1;
|
|
static gint hf_opa_MultiPathRecord_P_Key = -1;
|
|
static gint hf_opa_MultiPathRecord_QoSType = -1;
|
|
static gint hf_opa_MultiPathRecord_QoSPriority = -1;
|
|
static gint hf_opa_MultiPathRecord_reserved2 = -1;
|
|
static gint hf_opa_MultiPathRecord_SL = -1;
|
|
static gint hf_opa_MultiPathRecord_MTUSelector = -1;
|
|
static gint hf_opa_MultiPathRecord_MTU = -1;
|
|
static gint hf_opa_MultiPathRecord_RateSelector = -1;
|
|
static gint hf_opa_MultiPathRecord_Rate = -1;
|
|
static gint hf_opa_MultiPathRecord_PacketLifeTimeSelector = -1;
|
|
static gint hf_opa_MultiPathRecord_PacketLifeTime = -1;
|
|
static gint hf_opa_MultiPathRecord_IndependenceSelector = -1;
|
|
static gint hf_opa_MultiPathRecord_SGIDScope = -1;
|
|
static gint hf_opa_MultiPathRecord_DGIDScope = -1;
|
|
static gint hf_opa_MultiPathRecord_SGIDCount = -1;
|
|
static gint hf_opa_MultiPathRecord_DGIDCount = -1;
|
|
static gint hf_opa_MultiPathRecord_SGID = -1;
|
|
static gint hf_opa_MultiPathRecord_DGID = -1;
|
|
static gint hf_opa_MultiPathRecord_L2_8B = -1;
|
|
static gint hf_opa_MultiPathRecord_L2_10B = -1;
|
|
static gint hf_opa_MultiPathRecord_L2_9B = -1;
|
|
static gint hf_opa_MultiPathRecord_L2_16B = -1;
|
|
static gint hf_opa_MultiPathRecord_reserved3 = -1;
|
|
static gint hf_opa_MultiPathRecord_SGUIDScope = -1;
|
|
static gint hf_opa_MultiPathRecord_DGUIDScope = -1;
|
|
static gint hf_opa_MultiPathRecord_SGUIDCount = -1;
|
|
static gint hf_opa_MultiPathRecord_DGUIDCount = -1;
|
|
static gint hf_opa_MultiPathRecord_SGUID = -1;
|
|
static gint hf_opa_MultiPathRecord_DGUID = -1;
|
|
static gint hf_opa_MultiPathRecord_ServiceID = -1;
|
|
static gint hf_opa_MultiPathRecord_SubnetPrefix = -1;
|
|
static gint hf_opa_MultiPathRecord_SLIDCount = -1;
|
|
static gint hf_opa_MultiPathRecord_DLIDCount = -1;
|
|
static gint hf_opa_MultiPathRecord_SLID = -1;
|
|
static gint hf_opa_MultiPathRecord_DLID = -1;
|
|
static gint hf_opa_CableInfoRecord = -1;
|
|
static gint hf_opa_CableInfoRecord_Lid = -1;
|
|
static gint hf_opa_CableInfoRecord_Port = -1;
|
|
static gint hf_opa_CableInfoRecord_Length = -1;
|
|
static gint hf_opa_CableInfoRecord_reserved = -1;
|
|
static gint hf_opa_CableInfoRecord_Address = -1;
|
|
static gint hf_opa_CableInfoRecord_PortType = -1;
|
|
static gint hf_opa_CableInfoRecord_Data = -1;
|
|
static gint hf_opa_VFInfoRecord = -1;
|
|
static gint hf_opa_VFInfoRecord_vfIndex = -1;
|
|
static gint hf_opa_VFInfoRecord_pKey = -1;
|
|
static gint hf_opa_VFInfoRecord_vfName = -1;
|
|
static gint hf_opa_VFInfoRecord_MGID = -1;
|
|
static gint hf_opa_VFInfoRecord_SelectFlags = -1;
|
|
static gint hf_opa_VFInfoRecord_reserved = -1;
|
|
static gint hf_opa_VFInfoRecord_SL = -1;
|
|
static gint hf_opa_VFInfoRecord_MTUSpecified = -1;
|
|
static gint hf_opa_VFInfoRecord_reserved2 = -1;
|
|
static gint hf_opa_VFInfoRecord_MTU = -1;
|
|
static gint hf_opa_VFInfoRecord_RateSpecified = -1;
|
|
static gint hf_opa_VFInfoRecord_reserved4 = -1;
|
|
static gint hf_opa_VFInfoRecord_Rate = -1;
|
|
static gint hf_opa_VFInfoRecord_PktLifeSpecified = -1;
|
|
static gint hf_opa_VFInfoRecord_reserved5 = -1;
|
|
static gint hf_opa_VFInfoRecord_PktLifeTimeInc = -1;
|
|
static gint hf_opa_VFInfoRecord_OptionFlags = -1;
|
|
static gint hf_opa_VFInfoRecord_BandwidthPercent = -1;
|
|
static gint hf_opa_VFInfoRecord_reserved6 = -1;
|
|
static gint hf_opa_VFInfoRecord_Priority = -1;
|
|
static gint hf_opa_VFInfoRecord_RoutingSLs = -1;
|
|
static gint hf_opa_VFInfoRecord_reserved7 = -1;
|
|
static gint hf_opa_QuarantinedNodeRecord = -1;
|
|
static gint hf_opa_QuarantinedNodeRecord_TrustedLid = -1;
|
|
static gint hf_opa_QuarantinedNodeRecord_TrustedNodeGUID = -1;
|
|
static gint hf_opa_QuarantinedNodeRecord_TrustedPortNum = -1;
|
|
static gint hf_opa_QuarantinedNodeRecord_TrustedNeighborNodeGUID = -1;
|
|
static gint hf_opa_QuarantinedNodeRecord_QuarantineReasons = -1;
|
|
static gint hf_opa_QuarantinedNodeRecord_ExpectedNodeDesc = -1;
|
|
static gint hf_opa_QuarantinedNodeRecord_ExpectedNodeGUID = -1;
|
|
static gint hf_opa_QuarantinedNodeRecord_ExpectedPortGUID = -1;
|
|
static gint hf_opa_FabricInfoRecord = -1;
|
|
static gint hf_opa_FabricInfoRecord_NumHFIs = -1;
|
|
static gint hf_opa_FabricInfoRecord_NumSwitches = -1;
|
|
static gint hf_opa_FabricInfoRecord_NumInternalHFILinks = -1;
|
|
static gint hf_opa_FabricInfoRecord_NumExternalHFILinks = -1;
|
|
static gint hf_opa_FabricInfoRecord_NumInternalISLs = -1;
|
|
static gint hf_opa_FabricInfoRecord_NumExternalISLs = -1;
|
|
static gint hf_opa_FabricInfoRecord_NumDegradedHFILinks = -1;
|
|
static gint hf_opa_FabricInfoRecord_NumDegradedISLs = -1;
|
|
static gint hf_opa_FabricInfoRecord_NumOmittedHFILinks = -1;
|
|
static gint hf_opa_FabricInfoRecord_NumOmittedISLs = -1;
|
|
static gint hf_opa_FabricInfoRecord_Reserved = -1;
|
|
/* PM */
|
|
static gint hf_opa_PortStatus = -1;
|
|
static gint hf_opa_PortStatus_PortNumber = -1;
|
|
static gint hf_opa_PortStatus_VLSelectMask = -1;
|
|
static gint hf_opa_PortStatus_PortXmitData = -1;
|
|
static gint hf_opa_PortStatus_PortRcvData = -1;
|
|
static gint hf_opa_PortStatus_PortXmitPkts = -1;
|
|
static gint hf_opa_PortStatus_PortRcvPkts = -1;
|
|
static gint hf_opa_PortStatus_PortMulticastXmitPkts = -1;
|
|
static gint hf_opa_PortStatus_PortMulticastRcvPkts = -1;
|
|
static gint hf_opa_PortStatus_PortXmitWait = -1;
|
|
static gint hf_opa_PortStatus_SwPortCongestion = -1;
|
|
static gint hf_opa_PortStatus_PortRcvFECN = -1;
|
|
static gint hf_opa_PortStatus_PortRcvBECN = -1;
|
|
static gint hf_opa_PortStatus_PortXmitTimeCong = -1;
|
|
static gint hf_opa_PortStatus_PortXmitWastedBW = -1;
|
|
static gint hf_opa_PortStatus_PortXmitWaitData = -1;
|
|
static gint hf_opa_PortStatus_PortRcvBubble = -1;
|
|
static gint hf_opa_PortStatus_PortMarkFECN = -1;
|
|
static gint hf_opa_PortStatus_PortRcvConstraintErrors = -1;
|
|
static gint hf_opa_PortStatus_PortRcvSwitchRelayErrors = -1;
|
|
static gint hf_opa_PortStatus_PortXmitDiscards = -1;
|
|
static gint hf_opa_PortStatus_PortXmitConstraintErrors = -1;
|
|
static gint hf_opa_PortStatus_PortRcvRemotePhysicalErrors = -1;
|
|
static gint hf_opa_PortStatus_LocalLinkIntegrityErrors = -1;
|
|
static gint hf_opa_PortStatus_PortRcvErrors = -1;
|
|
static gint hf_opa_PortStatus_ExcessiveBufferOverruns = -1;
|
|
static gint hf_opa_PortStatus_FMConfigErrors = -1;
|
|
static gint hf_opa_PortStatus_LinkErrorRecovery = -1;
|
|
static gint hf_opa_PortStatus_LinkDowned = -1;
|
|
static gint hf_opa_PortStatus_UncorrectableErrors = -1;
|
|
static gint hf_opa_PortStatus_reserved = -1;
|
|
static gint hf_opa_PortStatus_LinkQualityIndicator = -1;
|
|
static gint hf_opa_PortStatus_PortVLXmitData = -1;
|
|
static gint hf_opa_PortStatus_PortVLRcvData = -1;
|
|
static gint hf_opa_PortStatus_PortVLXmitPkts = -1;
|
|
static gint hf_opa_PortStatus_PortVLRcvPkts = -1;
|
|
static gint hf_opa_PortStatus_PortVLXmitWait = -1;
|
|
static gint hf_opa_PortStatus_SwPortVLCongestion = -1;
|
|
static gint hf_opa_PortStatus_PortVLRcvFECN = -1;
|
|
static gint hf_opa_PortStatus_PortVLRcvBECN = -1;
|
|
static gint hf_opa_PortStatus_PortVLXmitTimeCong = -1;
|
|
static gint hf_opa_PortStatus_PortVLXmitWastedBW = -1;
|
|
static gint hf_opa_PortStatus_PortVLXmitWaitData = -1;
|
|
static gint hf_opa_PortStatus_PortVLRcvBubble = -1;
|
|
static gint hf_opa_PortStatus_PortVLMarkFECN = -1;
|
|
static gint hf_opa_PortStatus_PortVLXmitDiscards = -1;
|
|
static gint hf_opa_ClearPortStatus = -1;
|
|
static gint hf_opa_ClearPortStatus_PortSelectMask = -1;
|
|
static gint hf_opa_ClearPortStatus_PortXmitData = -1;
|
|
static gint hf_opa_ClearPortStatus_PortRcvData = -1;
|
|
static gint hf_opa_ClearPortStatus_PortXmitPkts = -1;
|
|
static gint hf_opa_ClearPortStatus_PortRcvPkts = -1;
|
|
static gint hf_opa_ClearPortStatus_PortMulticastXmitPkts = -1;
|
|
static gint hf_opa_ClearPortStatus_PortMulticastRcvPkts = -1;
|
|
static gint hf_opa_ClearPortStatus_PortXmitWait = -1;
|
|
static gint hf_opa_ClearPortStatus_SwPortCongestion = -1;
|
|
static gint hf_opa_ClearPortStatus_PortRcvFECN = -1;
|
|
static gint hf_opa_ClearPortStatus_PortRcvBECN = -1;
|
|
static gint hf_opa_ClearPortStatus_PortXmitTimeCong = -1;
|
|
static gint hf_opa_ClearPortStatus_PortXmitWastedBW = -1;
|
|
static gint hf_opa_ClearPortStatus_PortXmitWaitData = -1;
|
|
static gint hf_opa_ClearPortStatus_PortRcvBubble = -1;
|
|
static gint hf_opa_ClearPortStatus_PortMarkFECN = -1;
|
|
static gint hf_opa_ClearPortStatus_PortRcvConstraintErrors = -1;
|
|
static gint hf_opa_ClearPortStatus_PortRcvSwitchRelayErrors = -1;
|
|
static gint hf_opa_ClearPortStatus_PortXmitDiscards = -1;
|
|
static gint hf_opa_ClearPortStatus_PortXmitConstraintErrors = -1;
|
|
static gint hf_opa_ClearPortStatus_PortRcvRemotePhysicalErrors = -1;
|
|
static gint hf_opa_ClearPortStatus_LocalLinkIntegrityErrors = -1;
|
|
static gint hf_opa_ClearPortStatus_PortRcvErrors = -1;
|
|
static gint hf_opa_ClearPortStatus_ExcessiveBufferOverruns = -1;
|
|
static gint hf_opa_ClearPortStatus_FMConfigErrors = -1;
|
|
static gint hf_opa_ClearPortStatus_LinkErrorRecovery = -1;
|
|
static gint hf_opa_ClearPortStatus_LinkDowned = -1;
|
|
static gint hf_opa_ClearPortStatus_UncorrectableErrors = -1;
|
|
static gint hf_opa_ClearPortStatus_reserved = -1;
|
|
static gint hf_opa_ClearPortStatus_CounterSelectMask = -1;
|
|
static const gint *_ClearPortStatus_CounterSelectMask[] = {
|
|
&hf_opa_ClearPortStatus_PortXmitData,
|
|
&hf_opa_ClearPortStatus_PortRcvData,
|
|
&hf_opa_ClearPortStatus_PortXmitPkts,
|
|
&hf_opa_ClearPortStatus_PortRcvPkts,
|
|
&hf_opa_ClearPortStatus_PortMulticastXmitPkts,
|
|
&hf_opa_ClearPortStatus_PortMulticastRcvPkts,
|
|
&hf_opa_ClearPortStatus_PortXmitWait,
|
|
&hf_opa_ClearPortStatus_SwPortCongestion,
|
|
&hf_opa_ClearPortStatus_PortRcvFECN,
|
|
&hf_opa_ClearPortStatus_PortRcvBECN,
|
|
&hf_opa_ClearPortStatus_PortXmitTimeCong,
|
|
&hf_opa_ClearPortStatus_PortXmitWastedBW,
|
|
&hf_opa_ClearPortStatus_PortXmitWaitData,
|
|
&hf_opa_ClearPortStatus_PortRcvBubble,
|
|
&hf_opa_ClearPortStatus_PortMarkFECN,
|
|
&hf_opa_ClearPortStatus_PortRcvConstraintErrors,
|
|
&hf_opa_ClearPortStatus_PortRcvSwitchRelayErrors,
|
|
&hf_opa_ClearPortStatus_PortXmitDiscards,
|
|
&hf_opa_ClearPortStatus_PortXmitConstraintErrors,
|
|
&hf_opa_ClearPortStatus_PortRcvRemotePhysicalErrors,
|
|
&hf_opa_ClearPortStatus_LocalLinkIntegrityErrors,
|
|
&hf_opa_ClearPortStatus_PortRcvErrors,
|
|
&hf_opa_ClearPortStatus_ExcessiveBufferOverruns,
|
|
&hf_opa_ClearPortStatus_FMConfigErrors,
|
|
&hf_opa_ClearPortStatus_LinkErrorRecovery,
|
|
&hf_opa_ClearPortStatus_LinkDowned,
|
|
&hf_opa_ClearPortStatus_UncorrectableErrors,
|
|
&hf_opa_ClearPortStatus_reserved,
|
|
NULL
|
|
};
|
|
static gint hf_opa_DataPortCounters = -1;
|
|
static gint hf_opa_DataPortCounters_PortSelectMask = -1;
|
|
static gint hf_opa_DataPortCounters_VLSelectMask = -1;
|
|
static gint hf_opa_DataPortCounters_resolution_reserved = -1;
|
|
static gint hf_opa_DataPortCounters_LocalLinkIntegrityResolution = -1;
|
|
static gint hf_opa_DataPortCounters_LinkErrorRecoveryResolution = -1;
|
|
static gint hf_opa_DataPortCounters_PortNumber = -1;
|
|
static gint hf_opa_DataPortCounters_lqi_reserved = -1;
|
|
static gint hf_opa_DataPortCounters_LinkQualityIndicator = -1;
|
|
static gint hf_opa_DataPortCounters_PortXmitData = -1;
|
|
static gint hf_opa_DataPortCounters_PortRcvData = -1;
|
|
static gint hf_opa_DataPortCounters_PortXmitPkts = -1;
|
|
static gint hf_opa_DataPortCounters_PortRcvPkts = -1;
|
|
static gint hf_opa_DataPortCounters_PortMulticastXmitPkts = -1;
|
|
static gint hf_opa_DataPortCounters_PortMulticastRcvPkts = -1;
|
|
static gint hf_opa_DataPortCounters_PortXmitWait = -1;
|
|
static gint hf_opa_DataPortCounters_SwPortCongestion = -1;
|
|
static gint hf_opa_DataPortCounters_PortRcvFECN = -1;
|
|
static gint hf_opa_DataPortCounters_PortRcvBECN = -1;
|
|
static gint hf_opa_DataPortCounters_PortXmitTimeCong = -1;
|
|
static gint hf_opa_DataPortCounters_PortXmitWastedBW = -1;
|
|
static gint hf_opa_DataPortCounters_PortXmitWaitData = -1;
|
|
static gint hf_opa_DataPortCounters_PortRcvBubble = -1;
|
|
static gint hf_opa_DataPortCounters_PortMarkFECN = -1;
|
|
static gint hf_opa_DataPortCounters_PortErrorCounterSummary = -1;
|
|
static gint hf_opa_DataPortCounters_PortVLXmitData = -1;
|
|
static gint hf_opa_DataPortCounters_PortVLRcvData = -1;
|
|
static gint hf_opa_DataPortCounters_PortVLXmitPkts = -1;
|
|
static gint hf_opa_DataPortCounters_PortVLRcvPkts = -1;
|
|
static gint hf_opa_DataPortCounters_PortVLXmitWait = -1;
|
|
static gint hf_opa_DataPortCounters_SwPortVLCongestion = -1;
|
|
static gint hf_opa_DataPortCounters_PortVLRcvFECN = -1;
|
|
static gint hf_opa_DataPortCounters_PortVLRcvBECN = -1;
|
|
static gint hf_opa_DataPortCounters_PortVLXmitTimeCong = -1;
|
|
static gint hf_opa_DataPortCounters_PortVLXmitWastedBW = -1;
|
|
static gint hf_opa_DataPortCounters_PortVLXmitWaitData = -1;
|
|
static gint hf_opa_DataPortCounters_PortVLRcvBubble = -1;
|
|
static gint hf_opa_DataPortCounters_PortVLMarkFECN = -1;
|
|
static gint hf_opa_ErrorPortCounters = -1;
|
|
static gint hf_opa_ErrorPortCounters_PortSelectMask = -1;
|
|
static gint hf_opa_ErrorPortCounters_VLSelectMask = -1;
|
|
static gint hf_opa_ErrorPortCounters_PortNumber = -1;
|
|
static gint hf_opa_ErrorPortCounters_PortRcvConstraintErrors = -1;
|
|
static gint hf_opa_ErrorPortCounters_PortRcvSwitchRelayErrors = -1;
|
|
static gint hf_opa_ErrorPortCounters_PortXmitDiscards = -1;
|
|
static gint hf_opa_ErrorPortCounters_PortXmitConstraintErrors = -1;
|
|
static gint hf_opa_ErrorPortCounters_PortRcvRemotePhysicalErrors = -1;
|
|
static gint hf_opa_ErrorPortCounters_LocalLinkIntegrityErrors = -1;
|
|
static gint hf_opa_ErrorPortCounters_PortRcvErrors = -1;
|
|
static gint hf_opa_ErrorPortCounters_ExcessiveBufferOverruns = -1;
|
|
static gint hf_opa_ErrorPortCounters_FMConfigErrors = -1;
|
|
static gint hf_opa_ErrorPortCounters_LinkErrorRecovery = -1;
|
|
static gint hf_opa_ErrorPortCounters_LinkDowned = -1;
|
|
static gint hf_opa_ErrorPortCounters_UncorrectableErrors = -1;
|
|
static gint hf_opa_ErrorPortCounters_PortVLXmitDiscards = -1;
|
|
static gint hf_opa_ErrorPortInfo = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortSelectMask = -1;
|
|
static gint hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvErrorInfo = -1;
|
|
static gint hf_opa_ErrorPortInfo_ErrorInfoSelectMask_ExcessiveBufferOverrunInfo = -1;
|
|
static gint hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortXmitConstraintErrorInfo = -1;
|
|
static gint hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvConstraintErrorInfo = -1;
|
|
static gint hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvSwitchRelayErrorInfo = -1;
|
|
static gint hf_opa_ErrorPortInfo_ErrorInfoSelectMask_UncorrectableErrorInfo = -1;
|
|
static gint hf_opa_ErrorPortInfo_ErrorInfoSelectMask_FMConfigErrorInfo = -1;
|
|
static gint hf_opa_ErrorPortInfo_ErrorInfoSelectMask_reserved = -1;
|
|
static const gint *_ErrorPortInfo_ErrorInfoSelectMask[] = {
|
|
&hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvErrorInfo,
|
|
&hf_opa_ErrorPortInfo_ErrorInfoSelectMask_ExcessiveBufferOverrunInfo,
|
|
&hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortXmitConstraintErrorInfo,
|
|
&hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvConstraintErrorInfo,
|
|
&hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvSwitchRelayErrorInfo,
|
|
&hf_opa_ErrorPortInfo_ErrorInfoSelectMask_UncorrectableErrorInfo,
|
|
&hf_opa_ErrorPortInfo_ErrorInfoSelectMask_FMConfigErrorInfo,
|
|
&hf_opa_ErrorPortInfo_ErrorInfoSelectMask_reserved,
|
|
NULL
|
|
};
|
|
static gint hf_opa_ErrorPortInfo_PortNumber = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvErrorInfo_Status = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvErrorInfo_ErrorCode = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketFlit1 = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketFlit2 = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvErrorInfo_Flit1Bits = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvErrorInfo_Flit2Bits = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved2 = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketBytes = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvErrorInfo_FlitBits = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved3 = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved4 = -1;
|
|
static gint hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_Status = -1;
|
|
static gint hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_SC = -1;
|
|
static gint hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_reserved = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_Status = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_reserved = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_P_Key = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_SLID = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_Status = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_reserved = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_P_Key = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_SLID = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_Status = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_reserved = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_ErrorCode = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_DLID = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_EgressPortNum = -1;
|
|
static gint hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_SC = -1;
|
|
static gint hf_opa_ErrorPortInfo_UncorrectableErrorInfo_Status = -1;
|
|
static gint hf_opa_ErrorPortInfo_UncorrectableErrorInfo_reserved = -1;
|
|
static gint hf_opa_ErrorPortInfo_UncorrectableErrorInfo_ErrorCode = -1;
|
|
static gint hf_opa_ErrorPortInfo_FMConfigErrorInfo_Status = -1;
|
|
static gint hf_opa_ErrorPortInfo_FMConfigErrorInfo_reserved = -1;
|
|
static gint hf_opa_ErrorPortInfo_FMConfigErrorInfo_ErrorCode = -1;
|
|
static gint hf_opa_ErrorPortInfo_FMConfigErrorInfo_VL = -1;
|
|
static gint hf_opa_ErrorPortInfo_FMConfigErrorInfo_Distance = -1;
|
|
static gint hf_opa_ErrorPortInfo_FMConfigErrorInfo_BadFlitBits = -1;
|
|
static gint hf_opa_ErrorPortInfo_FMConfigErrorInfo_SC = -1;
|
|
/* PA */
|
|
static gint hf_opa_ImageID_imageNumber = -1;
|
|
static gint hf_opa_ImageID_imageOffset = -1;
|
|
static gint hf_opa_GetGroupList = -1;
|
|
static gint hf_opa_GetGroupList_groupName = -1;
|
|
static gint hf_opa_GetGroupInfo = -1;
|
|
static gint hf_opa_GetGroupInfo_groupName = -1;
|
|
static gint hf_opa_GetGroupInfo_numInternalPorts = -1;
|
|
static gint hf_opa_GetGroupInfo_numExternalPorts = -1;
|
|
static gint hf_opa_GetGroupInfo_totalMBps = -1;
|
|
static gint hf_opa_GetGroupInfo_totalKPps = -1;
|
|
static gint hf_opa_GetGroupInfo_avgMBps = -1;
|
|
static gint hf_opa_GetGroupInfo_minMBps = -1;
|
|
static gint hf_opa_GetGroupInfo_maxMBps = -1;
|
|
static gint hf_opa_GetGroupInfo_numBWBuckets = -1;
|
|
static gint hf_opa_GetGroupInfo_BWBuckets = -1;
|
|
static gint hf_opa_GetGroupInfo_avgKPps = -1;
|
|
static gint hf_opa_GetGroupInfo_minKPps = -1;
|
|
static gint hf_opa_GetGroupInfo_maxKPps = -1;
|
|
static gint hf_opa_GetGroupInfo_pmaFailedPorts = -1;
|
|
static gint hf_opa_GetGroupInfo_topoFailedPorts = -1;
|
|
static gint hf_opa_GetGroupInfo_integrityErrors = -1;
|
|
static gint hf_opa_GetGroupInfo_congestionErrors = -1;
|
|
static gint hf_opa_GetGroupInfo_smaCongestionErrors = -1;
|
|
static gint hf_opa_GetGroupInfo_bubbleErrors = -1;
|
|
static gint hf_opa_GetGroupInfo_securityErrors = -1;
|
|
static gint hf_opa_GetGroupInfo_routingErrors = -1;
|
|
static gint hf_opa_GetGroupInfo_utlizationPct10 = -1;
|
|
static gint hf_opa_GetGroupInfo_discardsPct10 = -1;
|
|
static gint hf_opa_GetGroupInfo_maxInternalRate = -1;
|
|
static gint hf_opa_GetGroupInfo_minInternalRate = -1;
|
|
static gint hf_opa_GetGroupInfo_maxExternalRate = -1;
|
|
static gint hf_opa_GetGroupInfo_minExternalRate = -1;
|
|
static gint hf_opa_GetGroupInfo_maxInternalMBps = -1;
|
|
static gint hf_opa_GetGroupInfo_maxExternalMBps = -1;
|
|
static gint hf_opa_GetGroupConfig = -1;
|
|
static gint hf_opa_GetGroupConfig_groupName = -1;
|
|
static gint hf_opa_GetGroupConfig_Port_NodeGUID = -1;
|
|
static gint hf_opa_GetGroupConfig_Port_nodeDesc = -1;
|
|
static gint hf_opa_GetGroupConfig_Port_NodeLID = -1;
|
|
static gint hf_opa_GetGroupConfig_Port_PortNumber = -1;
|
|
static gint hf_opa_GetPortCounters = -1;
|
|
static gint hf_opa_GetPortCounters_nodeLID = -1;
|
|
static gint hf_opa_GetPortCounters_PortNumber = -1;
|
|
static gint hf_opa_GetPortCounters_flags = -1;
|
|
static gint hf_opa_GetPortCounters_PortXmitData = -1;
|
|
static gint hf_opa_GetPortCounters_PortRcvData = -1;
|
|
static gint hf_opa_GetPortCounters_PortXmitPkts = -1;
|
|
static gint hf_opa_GetPortCounters_PortRcvPkts = -1;
|
|
static gint hf_opa_GetPortCounters_PortMulticastXmitPkts = -1;
|
|
static gint hf_opa_GetPortCounters_PortMulticastRcvPkts = -1;
|
|
static gint hf_opa_GetPortCounters_LocalLinkIntegrityErrors = -1;
|
|
static gint hf_opa_GetPortCounters_FMConfigErrors = -1;
|
|
static gint hf_opa_GetPortCounters_PortRcvErrors = -1;
|
|
static gint hf_opa_GetPortCounters_ExcessiveBufferOverruns = -1;
|
|
static gint hf_opa_GetPortCounters_PortRcvConstraintErrors = -1;
|
|
static gint hf_opa_GetPortCounters_PortRcvSwitchRelayErrors = -1;
|
|
static gint hf_opa_GetPortCounters_PortXmitDiscards = -1;
|
|
static gint hf_opa_GetPortCounters_PortXmitConstraintErrors = -1;
|
|
static gint hf_opa_GetPortCounters_PortRcvRemotePhysicalErrors = -1;
|
|
static gint hf_opa_GetPortCounters_SwPortCongestion = -1;
|
|
static gint hf_opa_GetPortCounters_PortXmitWait = -1;
|
|
static gint hf_opa_GetPortCounters_PortRcvFECN = -1;
|
|
static gint hf_opa_GetPortCounters_PortRcvBECN = -1;
|
|
static gint hf_opa_GetPortCounters_PortXmitTimeCong = -1;
|
|
static gint hf_opa_GetPortCounters_PortXmitWastedBW = -1;
|
|
static gint hf_opa_GetPortCounters_PortXmitWaitData = -1;
|
|
static gint hf_opa_GetPortCounters_PortRcvBubble = -1;
|
|
static gint hf_opa_GetPortCounters_PortMarkFECN = -1;
|
|
static gint hf_opa_GetPortCounters_LinkErrorRecovery = -1;
|
|
static gint hf_opa_GetPortCounters_LinkDowned = -1;
|
|
static gint hf_opa_GetPortCounters_UncorrectableErrors = -1;
|
|
static gint hf_opa_GetPortCounters_NumLanesDown = -1;
|
|
static gint hf_opa_GetPortCounters_reserved = -1;
|
|
static gint hf_opa_GetPortCounters_LinkQualityIndicator = -1;
|
|
static gint hf_opa_ClearPortCounters = -1;
|
|
static gint hf_opa_ClearPortCounters_nodeLID = -1;
|
|
static gint hf_opa_ClearPortCounters_PortNumber = -1;
|
|
static gint hf_opa_ClearPortCounters_PortXmitData = -1;
|
|
static gint hf_opa_ClearPortCounters_PortRcvData = -1;
|
|
static gint hf_opa_ClearPortCounters_PortXmitPkts = -1;
|
|
static gint hf_opa_ClearPortCounters_PortRcvPkts = -1;
|
|
static gint hf_opa_ClearPortCounters_PortMulticastXmitPkts = -1;
|
|
static gint hf_opa_ClearPortCounters_PortMulticastRcvPkts = -1;
|
|
static gint hf_opa_ClearPortCounters_LocalLinkIntegrityErrors = -1;
|
|
static gint hf_opa_ClearPortCounters_FMConfigErrors = -1;
|
|
static gint hf_opa_ClearPortCounters_PortRcvErrors = -1;
|
|
static gint hf_opa_ClearPortCounters_ExcessiveBufferOverruns = -1;
|
|
static gint hf_opa_ClearPortCounters_PortRcvConstraintErrors = -1;
|
|
static gint hf_opa_ClearPortCounters_PortRcvSwitchRelayErrors = -1;
|
|
static gint hf_opa_ClearPortCounters_PortXmitDiscards = -1;
|
|
static gint hf_opa_ClearPortCounters_PortXmitConstraintErrors = -1;
|
|
static gint hf_opa_ClearPortCounters_PortRcvRemotePhysicalErrors = -1;
|
|
static gint hf_opa_ClearPortCounters_SwPortCongestion = -1;
|
|
static gint hf_opa_ClearPortCounters_PortXmitWait = -1;
|
|
static gint hf_opa_ClearPortCounters_PortRcvFECN = -1;
|
|
static gint hf_opa_ClearPortCounters_PortRcvBECN = -1;
|
|
static gint hf_opa_ClearPortCounters_PortXmitTimeCong = -1;
|
|
static gint hf_opa_ClearPortCounters_PortXmitWastedBW = -1;
|
|
static gint hf_opa_ClearPortCounters_PortXmitWaitData = -1;
|
|
static gint hf_opa_ClearPortCounters_PortRcvBubble = -1;
|
|
static gint hf_opa_ClearPortCounters_PortMarkFECN = -1;
|
|
static gint hf_opa_ClearPortCounters_LinkErrorRecovery = -1;
|
|
static gint hf_opa_ClearPortCounters_LinkDowned = -1;
|
|
static gint hf_opa_ClearPortCounters_UncorrectableErrors = -1;
|
|
static gint hf_opa_ClearPortCounters_reserved = -1;
|
|
static gint hf_opa_ClearPortCounters_CounterSelectMask = -1;
|
|
static const gint *_ClearPortCounters_CounterSelectMask[] = {
|
|
&hf_opa_ClearPortCounters_PortXmitData,
|
|
&hf_opa_ClearPortCounters_PortRcvData,
|
|
&hf_opa_ClearPortCounters_PortXmitPkts,
|
|
&hf_opa_ClearPortCounters_PortRcvPkts,
|
|
&hf_opa_ClearPortCounters_PortMulticastXmitPkts,
|
|
&hf_opa_ClearPortCounters_PortMulticastRcvPkts,
|
|
&hf_opa_ClearPortCounters_LocalLinkIntegrityErrors,
|
|
&hf_opa_ClearPortCounters_FMConfigErrors,
|
|
&hf_opa_ClearPortCounters_PortRcvErrors,
|
|
&hf_opa_ClearPortCounters_ExcessiveBufferOverruns,
|
|
&hf_opa_ClearPortCounters_PortRcvConstraintErrors,
|
|
&hf_opa_ClearPortCounters_PortRcvSwitchRelayErrors,
|
|
&hf_opa_ClearPortCounters_PortXmitDiscards,
|
|
&hf_opa_ClearPortCounters_PortXmitConstraintErrors,
|
|
&hf_opa_ClearPortCounters_PortRcvRemotePhysicalErrors,
|
|
&hf_opa_ClearPortCounters_SwPortCongestion,
|
|
&hf_opa_ClearPortCounters_PortXmitWait,
|
|
&hf_opa_ClearPortCounters_PortRcvFECN,
|
|
&hf_opa_ClearPortCounters_PortRcvBECN,
|
|
&hf_opa_ClearPortCounters_PortXmitTimeCong,
|
|
&hf_opa_ClearPortCounters_PortXmitWastedBW,
|
|
&hf_opa_ClearPortCounters_PortXmitWaitData,
|
|
&hf_opa_ClearPortCounters_PortRcvBubble,
|
|
&hf_opa_ClearPortCounters_PortMarkFECN,
|
|
&hf_opa_ClearPortCounters_LinkErrorRecovery,
|
|
&hf_opa_ClearPortCounters_LinkDowned,
|
|
&hf_opa_ClearPortCounters_UncorrectableErrors,
|
|
&hf_opa_ClearPortCounters_reserved,
|
|
NULL
|
|
};
|
|
static gint hf_opa_ClearAllPortCounters = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortXmitData = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortRcvData = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortXmitPkts = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortRcvPkts = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortMulticastXmitPkts = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortMulticastRcvPkts = -1;
|
|
static gint hf_opa_ClearAllPortCounters_LocalLinkIntegrityErrors = -1;
|
|
static gint hf_opa_ClearAllPortCounters_FMConfigErrors = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortRcvErrors = -1;
|
|
static gint hf_opa_ClearAllPortCounters_ExcessiveBufferOverruns = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortRcvConstraintErrors = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortRcvSwitchRelayErrors = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortXmitDiscards = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortXmitConstraintErrors = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortRcvRemotePhysicalErrors = -1;
|
|
static gint hf_opa_ClearAllPortCounters_SwPortCongestion = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortXmitWait = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortRcvFECN = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortRcvBECN = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortXmitTimeCong = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortXmitWastedBW = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortXmitWaitData = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortRcvBubble = -1;
|
|
static gint hf_opa_ClearAllPortCounters_PortMarkFECN = -1;
|
|
static gint hf_opa_ClearAllPortCounters_LinkErrorRecovery = -1;
|
|
static gint hf_opa_ClearAllPortCounters_LinkDowned = -1;
|
|
static gint hf_opa_ClearAllPortCounters_UncorrectableErrors = -1;
|
|
static gint hf_opa_ClearAllPortCounters_reserved = -1;
|
|
static gint hf_opa_ClearAllPortCounters_CounterSelectMask = -1;
|
|
static const gint *_ClearAllPortCounters_CounterSelectMask[] = {
|
|
&hf_opa_ClearAllPortCounters_PortXmitData,
|
|
&hf_opa_ClearAllPortCounters_PortRcvData,
|
|
&hf_opa_ClearAllPortCounters_PortXmitPkts,
|
|
&hf_opa_ClearAllPortCounters_PortRcvPkts,
|
|
&hf_opa_ClearAllPortCounters_PortMulticastXmitPkts,
|
|
&hf_opa_ClearAllPortCounters_PortMulticastRcvPkts,
|
|
&hf_opa_ClearAllPortCounters_LocalLinkIntegrityErrors,
|
|
&hf_opa_ClearAllPortCounters_FMConfigErrors,
|
|
&hf_opa_ClearAllPortCounters_PortRcvErrors,
|
|
&hf_opa_ClearAllPortCounters_ExcessiveBufferOverruns,
|
|
&hf_opa_ClearAllPortCounters_PortRcvConstraintErrors,
|
|
&hf_opa_ClearAllPortCounters_PortRcvSwitchRelayErrors,
|
|
&hf_opa_ClearAllPortCounters_PortXmitDiscards,
|
|
&hf_opa_ClearAllPortCounters_PortXmitConstraintErrors,
|
|
&hf_opa_ClearAllPortCounters_PortRcvRemotePhysicalErrors,
|
|
&hf_opa_ClearAllPortCounters_SwPortCongestion,
|
|
&hf_opa_ClearAllPortCounters_PortXmitWait,
|
|
&hf_opa_ClearAllPortCounters_PortRcvFECN,
|
|
&hf_opa_ClearAllPortCounters_PortRcvBECN,
|
|
&hf_opa_ClearAllPortCounters_PortXmitTimeCong,
|
|
&hf_opa_ClearAllPortCounters_PortXmitWastedBW,
|
|
&hf_opa_ClearAllPortCounters_PortXmitWaitData,
|
|
&hf_opa_ClearAllPortCounters_PortRcvBubble,
|
|
&hf_opa_ClearAllPortCounters_PortMarkFECN,
|
|
&hf_opa_ClearAllPortCounters_LinkErrorRecovery,
|
|
&hf_opa_ClearAllPortCounters_LinkDowned,
|
|
&hf_opa_ClearAllPortCounters_UncorrectableErrors,
|
|
&hf_opa_ClearAllPortCounters_reserved,
|
|
NULL
|
|
};
|
|
static gint hf_opa_PMConfig = -1;
|
|
static gint hf_opa_PMConfig_sweepInterval = -1;
|
|
static gint hf_opa_PMConfig_maxClients = -1;
|
|
static gint hf_opa_PMConfig_sizeHistory = -1;
|
|
static gint hf_opa_PMConfig_sizeFreeze = -1;
|
|
static gint hf_opa_PMConfig_lease = -1;
|
|
static gint hf_opa_PMConfig_pmFlags = -1;
|
|
static gint hf_opa_PMConfig_PortXmitWait = -1;
|
|
static gint hf_opa_PMConfig_SwPortCongestion = -1;
|
|
static gint hf_opa_PMConfig_PortRcvFECN = -1;
|
|
static gint hf_opa_PMConfig_PortRcvBECN = -1;
|
|
static gint hf_opa_PMConfig_PortXmitTimeCong = -1;
|
|
static gint hf_opa_PMConfig_PortMarkFECN = -1;
|
|
static gint hf_opa_PMConfig_integrityErrors = -1;
|
|
static gint hf_opa_PMConfig_congestionErrors = -1;
|
|
static gint hf_opa_PMConfig_smaCongestionErrors = -1;
|
|
static gint hf_opa_PMConfig_bubbleErrors = -1;
|
|
static gint hf_opa_PMConfig_securityErrors = -1;
|
|
static gint hf_opa_PMConfig_routingErrors = -1;
|
|
static gint hf_opa_PMConfig_LocalLinkIntegrityErrors = -1;
|
|
static gint hf_opa_PMConfig_PortRcvErrors = -1;
|
|
static gint hf_opa_PMConfig_ExcessiveBufferOverrunErrors = -1;
|
|
static gint hf_opa_PMConfig_LinkErrorRecovery = -1;
|
|
static gint hf_opa_PMConfig_LinkDowned = -1;
|
|
static gint hf_opa_PMConfig_UncorrectableErrors = -1;
|
|
static gint hf_opa_PMConfig_FMConfigErrors = -1;
|
|
static gint hf_opa_PMConfig_LinkQualityIndicator = -1;
|
|
static gint hf_opa_PMConfig_LinkWidthDowngrade = -1;
|
|
static gint hf_opa_PMConfig_memoryFootprint = -1;
|
|
static gint hf_opa_PMConfig_maxAttempts = -1;
|
|
static gint hf_opa_PMConfig_respTimeout = -1;
|
|
static gint hf_opa_PMConfig_minRespTimeout = -1;
|
|
static gint hf_opa_PMConfig_maxParallelNodes = -1;
|
|
static gint hf_opa_PMConfig_pmaBatchSize = -1;
|
|
static gint hf_opa_PMConfig_errorClear = -1;
|
|
static gint hf_opa_MoveFreezeFrame_old = -1;
|
|
static gint hf_opa_MoveFreezeFrame_new = -1;
|
|
static gint hf_opa_GetFocusPorts = -1;
|
|
static gint hf_opa_GetFocusPorts_groupName = -1;
|
|
static gint hf_opa_GetFocusPorts_select = -1;
|
|
static gint hf_opa_GetFocusPorts_start = -1;
|
|
static gint hf_opa_GetFocusPorts_range = -1;
|
|
static gint hf_opa_GetFocusPorts_nodeLID = -1;
|
|
static gint hf_opa_GetFocusPorts_portNumber = -1;
|
|
static gint hf_opa_GetFocusPorts_rate = -1;
|
|
static gint hf_opa_GetFocusPorts_mtu = -1;
|
|
static gint hf_opa_GetFocusPorts_localFlags = -1;
|
|
static gint hf_opa_GetFocusPorts_neighborFlags = -1;
|
|
static gint hf_opa_GetFocusPorts_value = -1;
|
|
static gint hf_opa_GetFocusPorts_nodeGUID = -1;
|
|
static gint hf_opa_GetFocusPorts_nodeDesc = -1;
|
|
static gint hf_opa_GetFocusPorts_neighborLid = -1;
|
|
static gint hf_opa_GetFocusPorts_neighborPortNumber = -1;
|
|
static gint hf_opa_GetFocusPorts_neighborValue = -1;
|
|
static gint hf_opa_GetFocusPorts_neighborGuid = -1;
|
|
static gint hf_opa_GetFocusPorts_neighborNodeDesc = -1;
|
|
static gint hf_opa_GetImageInfo = -1;
|
|
static gint hf_opa_GetImageInfo_sweepStart = -1;
|
|
static gint hf_opa_GetImageInfo_sweepDuration = -1;
|
|
static gint hf_opa_GetImageInfo_numHFIPorts = -1;
|
|
static gint hf_opa_GetImageInfo_numSwitchNodes = -1;
|
|
static gint hf_opa_GetImageInfo_numSwitchPorts = -1;
|
|
static gint hf_opa_GetImageInfo_numLinks = -1;
|
|
static gint hf_opa_GetImageInfo_numSMs = -1;
|
|
static gint hf_opa_GetImageInfo_numFailedNodes = -1;
|
|
static gint hf_opa_GetImageInfo_numFailedPorts = -1;
|
|
static gint hf_opa_GetImageInfo_numSkippedNodes = -1;
|
|
static gint hf_opa_GetImageInfo_numSkippedPorts = -1;
|
|
static gint hf_opa_GetImageInfo_numUnexpectedClearPorts = -1;
|
|
static gint hf_opa_GetImageInfo_imageInterval = -1;
|
|
static gint hf_opa_GetImageInfo_smPortGuid = -1;
|
|
static gint hf_opa_GetImageInfo_smNodeDesc = -1;
|
|
static gint hf_opa_GetImageInfo_lid = -1;
|
|
static gint hf_opa_GetImageInfo_state = -1;
|
|
static gint hf_opa_GetImageInfo_priority = -1;
|
|
static gint hf_opa_GetImageInfo_portNumber = -1;
|
|
static gint hf_opa_GetVFList = -1;
|
|
static gint hf_opa_GetVFList_vfName = -1;
|
|
|
|
static gint hf_opa_GetVFInfo = -1;
|
|
static gint hf_opa_GetVFInfo_vfName = -1;
|
|
static gint hf_opa_GetVFInfo_numPorts = -1;
|
|
static gint hf_opa_GetVFInfo_totalMBps = -1;
|
|
static gint hf_opa_GetVFInfo_totalKPps = -1;
|
|
static gint hf_opa_GetVFInfo_avgMBps = -1;
|
|
static gint hf_opa_GetVFInfo_minMBps = -1;
|
|
static gint hf_opa_GetVFInfo_maxMBps = -1;
|
|
static gint hf_opa_GetVFInfo_numBWBuckets = -1;
|
|
static gint hf_opa_GetVFInfo_BWBuckets = -1;
|
|
static gint hf_opa_GetVFInfo_avgKPps = -1;
|
|
static gint hf_opa_GetVFInfo_minKPps = -1;
|
|
static gint hf_opa_GetVFInfo_maxKPps = -1;
|
|
static gint hf_opa_GetVFInfo_pmaFailedPorts = -1;
|
|
static gint hf_opa_GetVFInfo_topoFailedPorts = -1;
|
|
static gint hf_opa_GetVFInfo_integrityErrors = -1;
|
|
static gint hf_opa_GetVFInfo_congestionErrors = -1;
|
|
static gint hf_opa_GetVFInfo_smaCongestionErrors = -1;
|
|
static gint hf_opa_GetVFInfo_bubbleErrors = -1;
|
|
static gint hf_opa_GetVFInfo_securityErrors = -1;
|
|
static gint hf_opa_GetVFInfo_routingErrors = -1;
|
|
static gint hf_opa_GetVFInfo_utlizationPct10 = -1;
|
|
static gint hf_opa_GetVFInfo_discardsPct10 = -1;
|
|
static gint hf_opa_GetVFInfo_maxInternalRate = -1;
|
|
static gint hf_opa_GetVFInfo_minInternalRate = -1;
|
|
static gint hf_opa_GetVFInfo_maxInternalMBps = -1;
|
|
|
|
static gint hf_opa_GetVFConfig = -1;
|
|
static gint hf_opa_GetVFConfig_vfName = -1;
|
|
static gint hf_opa_GetVFConfig_Port_NodeGUID = -1;
|
|
static gint hf_opa_GetVFConfig_Port_nodeDesc = -1;
|
|
static gint hf_opa_GetVFConfig_Port_NodeLID = -1;
|
|
static gint hf_opa_GetVFConfig_Port_PortNumber = -1;
|
|
|
|
static gint hf_opa_GetVFPortCounters = -1;
|
|
static gint hf_opa_GetVFPortCounters_vfName = -1;
|
|
static gint hf_opa_GetVFPortCounters_nodeLID = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortNumber = -1;
|
|
static gint hf_opa_GetVFPortCounters_flags = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortVFXmitData = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortVFRcvData = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortVFXmitPkts = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortVFRcvPkts = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortVFXmitDiscards = -1;
|
|
static gint hf_opa_GetVFPortCounters_SwPortVFCongestion = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortVFXmitWait = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortVFRcvFECN = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortVFRcvBECN = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortVFXmitTimeCong = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortVFXmitWastedBW = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortVFXmitWaitData = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortVFRcvBubble = -1;
|
|
static gint hf_opa_GetVFPortCounters_PortVFMarkFECN = -1;
|
|
|
|
static gint hf_opa_ClearVFPortCounters = -1;
|
|
static gint hf_opa_ClearVFPortCounters_vfName = -1;
|
|
static gint hf_opa_ClearVFPortCounters_nodeLID = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortNumber = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortVFXmitData = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortVFRcvData = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortVFXmitPkts = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortVFRcvPkts = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortVFXmitDiscards = -1;
|
|
static gint hf_opa_ClearVFPortCounters_SwPortVFCongestion = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortVFXmitWait = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortVFRcvFECN = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortVFRcvBECN = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortVFXmitTimeCong = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortVFXmitWastedBW = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortVFXmitWaitData = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortVFRcvBubble = -1;
|
|
static gint hf_opa_ClearVFPortCounters_PortVFMarkFECN = -1;
|
|
static gint hf_opa_ClearVFPortCounters_reserved = -1;
|
|
static gint hf_opa_ClearVFPortCounters_CounterSelectMask = -1;
|
|
static const gint *_ClearVFPortCounters_CounterSelectMask[] = {
|
|
&hf_opa_ClearVFPortCounters_PortVFXmitData,
|
|
&hf_opa_ClearVFPortCounters_PortVFRcvData,
|
|
&hf_opa_ClearVFPortCounters_PortVFXmitPkts,
|
|
&hf_opa_ClearVFPortCounters_PortVFRcvPkts,
|
|
&hf_opa_ClearVFPortCounters_PortVFXmitDiscards,
|
|
&hf_opa_ClearVFPortCounters_SwPortVFCongestion,
|
|
&hf_opa_ClearVFPortCounters_PortVFXmitWait,
|
|
&hf_opa_ClearVFPortCounters_PortVFRcvFECN,
|
|
&hf_opa_ClearVFPortCounters_PortVFRcvBECN,
|
|
&hf_opa_ClearVFPortCounters_PortVFXmitTimeCong,
|
|
&hf_opa_ClearVFPortCounters_PortVFXmitWastedBW,
|
|
&hf_opa_ClearVFPortCounters_PortVFXmitWaitData,
|
|
&hf_opa_ClearVFPortCounters_PortVFRcvBubble,
|
|
&hf_opa_ClearVFPortCounters_PortVFMarkFECN,
|
|
&hf_opa_ClearVFPortCounters_reserved,
|
|
NULL
|
|
};
|
|
|
|
static gint hf_opa_GetVFFocusPorts = -1;
|
|
static gint hf_opa_GetVFFocusPorts_vfName = -1;
|
|
static gint hf_opa_GetVFFocusPorts_select = -1;
|
|
static gint hf_opa_GetVFFocusPorts_start = -1;
|
|
static gint hf_opa_GetVFFocusPorts_range = -1;
|
|
static gint hf_opa_GetVFFocusPorts_nodeLID = -1;
|
|
static gint hf_opa_GetVFFocusPorts_portNumber = -1;
|
|
static gint hf_opa_GetVFFocusPorts_rate = -1;
|
|
static gint hf_opa_GetVFFocusPorts_mtu = -1;
|
|
static gint hf_opa_GetVFFocusPorts_localFlags = -1;
|
|
static gint hf_opa_GetVFFocusPorts_neighborFlags = -1;
|
|
static gint hf_opa_GetVFFocusPorts_value = -1;
|
|
static gint hf_opa_GetVFFocusPorts_nodeGUID = -1;
|
|
static gint hf_opa_GetVFFocusPorts_nodeDesc = -1;
|
|
static gint hf_opa_GetVFFocusPorts_neighborLid = -1;
|
|
static gint hf_opa_GetVFFocusPorts_neighborPortNumber = -1;
|
|
static gint hf_opa_GetVFFocusPorts_neighborValue = -1;
|
|
static gint hf_opa_GetVFFocusPorts_neighborGuid = -1;
|
|
static gint hf_opa_GetVFFocusPorts_neighborNodeDesc = -1;
|
|
|
|
/* Expert Info */
|
|
static expert_field ei_opa_mad_error = EI_INIT;
|
|
static expert_field ei_opa_mad_no_attribute_dissector = EI_INIT;
|
|
static expert_field ei_opa_mad_attribute_modifier_error_nonzero = EI_INIT;
|
|
static expert_field ei_opa_rmpp_undecoded = EI_INIT;
|
|
static expert_field ei_opa_aggregate_error = EI_INIT;
|
|
|
|
/* Fragments */
|
|
static gint hf_opa_rmpp_fragments = -1;
|
|
static gint hf_opa_rmpp_fragment = -1;
|
|
static gint hf_opa_rmpp_fragment_overlap = -1;
|
|
static gint hf_opa_rmpp_fragment_overlap_conflicts = -1;
|
|
static gint hf_opa_rmpp_fragment_multiple_tails = -1;
|
|
static gint hf_opa_rmpp_fragment_too_long_fragment = -1;
|
|
static gint hf_opa_rmpp_fragment_error = -1;
|
|
static gint hf_opa_rmpp_fragment_count = -1;
|
|
static gint hf_opa_rmpp_reassembled_in = -1;
|
|
static gint hf_opa_rmpp_reassembled_length = -1;
|
|
|
|
static const fragment_items opa_rmpp_frag_items = {
|
|
&ett_rmpp_fragment,
|
|
&ett_rmpp_fragments,
|
|
&hf_opa_rmpp_fragments,
|
|
&hf_opa_rmpp_fragment,
|
|
&hf_opa_rmpp_fragment_overlap,
|
|
&hf_opa_rmpp_fragment_overlap_conflicts,
|
|
&hf_opa_rmpp_fragment_multiple_tails,
|
|
&hf_opa_rmpp_fragment_too_long_fragment,
|
|
&hf_opa_rmpp_fragment_error,
|
|
&hf_opa_rmpp_fragment_count,
|
|
&hf_opa_rmpp_reassembled_in,
|
|
&hf_opa_rmpp_reassembled_length,
|
|
NULL,
|
|
"RMPP Fragments"
|
|
};
|
|
|
|
/* Custom Functions */
|
|
static void cf_opa_mad_swinfo_ar_frequency(gchar *buf, guint16 value)
|
|
{
|
|
g_snprintf(buf, ITEM_LABEL_LENGTH, "%u ms", 2 ^ (value)*64);
|
|
}
|
|
static void cf_opa_mad_linkspeed(gchar *buf, guint16 value)
|
|
{
|
|
int len = 0;
|
|
if (value & 0x1) /* 12.5 Gbps */
|
|
len = g_snprintf(buf, ITEM_LABEL_LENGTH, "12.5");
|
|
if (value & 0x2) /* 25.78125 Gbps */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s25.78125", (len ? ", " : ""));
|
|
if (len)
|
|
g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, " Gbps");
|
|
else
|
|
g_snprintf(buf, ITEM_LABEL_LENGTH, "No State Change");
|
|
}
|
|
static void cf_opa_mad_linkwidth(gchar *buf, guint16 value)
|
|
{
|
|
int len = 0;
|
|
if (value & 0x1) /* 1x */
|
|
len = g_snprintf(buf, ITEM_LABEL_LENGTH, "1X");
|
|
if (value & 0x2) /* 2x */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s2X", (len ? ", " : ""));
|
|
if (value & 0x4) /* 3x */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s3X", (len ? ", " : ""));
|
|
if (value & 0x8) /* 4x */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s4X", (len ? ", " : ""));
|
|
if (!len)
|
|
g_snprintf(buf, ITEM_LABEL_LENGTH, "No State Change");
|
|
}
|
|
static void cf_opa_mad_portlinkmode(gchar *buf, guint16 value)
|
|
{
|
|
int len = 0;
|
|
if (value & 0x1) /* Reserved */
|
|
len = g_snprintf(buf, ITEM_LABEL_LENGTH, "Reserved");
|
|
if (value & 0x2) /* Ethernet */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%sEthernet", (len ? ", " : ""));
|
|
if (value & 0x4) /* STL */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%sSTL", (len ? ", " : ""));
|
|
if (!len)
|
|
g_snprintf(buf, ITEM_LABEL_LENGTH, "No State Change");
|
|
}
|
|
static void cf_opa_mad_portltpcrcmode(gchar *buf, guint16 value)
|
|
{
|
|
int len = 0;
|
|
if (value & 0x1) /* 14-bit */
|
|
len = g_snprintf(buf, ITEM_LABEL_LENGTH, "14-bit");
|
|
if (value & 0x2) /* 16-bit */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s16-bit", (len ? ", " : ""));
|
|
if (value & 0x4) /* 48-bit */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s48-bit overlapping", (len ? ", " : ""));
|
|
if (value & 0x8) /* 12 to 16 bit per lane */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s[12,16]-bit per lane", (len ? ", " : ""));
|
|
if (len)
|
|
g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, " LTP CRC Mode");
|
|
else
|
|
g_snprintf(buf, ITEM_LABEL_LENGTH, "No State Change");
|
|
}
|
|
static void cf_opa_mad_packetformat(gchar *buf, guint16 value)
|
|
{
|
|
int len = 0;
|
|
if (value & 0x1) /* 8B */
|
|
len = g_snprintf(buf, ITEM_LABEL_LENGTH, "8B");
|
|
if (value & 0x2) /* 9B */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s9B", (len ? ", " : ""));
|
|
if (value & 0x4) /* 10B */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s10B", (len ? ", " : ""));
|
|
if (value & 0x8) /* 16B */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s16B", (len ? ", " : ""));
|
|
if (len)
|
|
g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, " Format%s", (len > 4 ? "s" : ""));
|
|
else
|
|
g_snprintf(buf, ITEM_LABEL_LENGTH, "No State Change");
|
|
}
|
|
static void cf_opa_mad_swcongestionsetting_controlmap(gchar *buf, guint32 value)
|
|
{
|
|
int len = 0;
|
|
if (value & 0x1) /* Victim */
|
|
len = g_snprintf(buf, ITEM_LABEL_LENGTH, "Victim");
|
|
if (value & 0x2) /* Credit */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%sCredit", (len ? ", " : ""));
|
|
if (value & 0x4) /* Thresold & PacketSize */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%sThresold & PacketSize", (len ? ", " : ""));
|
|
if (value & 0x8) /* CS_threshold & CS_ReturnDelay */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%sCS_threshold & CS_ReturnDelay", (len ? ", " : ""));
|
|
if (value & 0x10) /* Marking Rate */
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%sMarking Rate", (len ? ", " : ""));
|
|
if (!len)
|
|
g_snprintf(buf, ITEM_LABEL_LENGTH, "No Valid Fields");
|
|
}
|
|
static void cf_opa_mad_32b_mask(gchar *buf, guint32 value)
|
|
{
|
|
int len = 0;
|
|
guint32 i, mask;
|
|
for (i = 0, mask = value; mask && i < 32 && len < ITEM_LABEL_LENGTH; i++, mask >>= 1) {
|
|
if (mask & 1) {
|
|
len += g_snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s%u", (len ? ", " : ""), i);
|
|
}
|
|
}
|
|
if (!len) {
|
|
g_snprintf(buf, ITEM_LABEL_LENGTH, " ");
|
|
}
|
|
}
|
|
static void cf_opa_mad_computed_pct10(gchar *buf, guint16 value)
|
|
{
|
|
g_snprintf(buf, ITEM_LABEL_LENGTH, "%u.%01u", value / 10, value % 10);
|
|
}
|
|
|
|
/* Dissector Declarations */
|
|
static dissector_handle_t opa_mad_handle;
|
|
static dissector_handle_t eth_handle;
|
|
static dissector_table_t ethertype_dissector_table;
|
|
|
|
static reassembly_table opa_mad_rmpp_reassembly_table;
|
|
|
|
gboolean pref_parse_on_mad_status_error = FALSE;
|
|
gboolean pref_attempt_rmpp_defragment = TRUE;
|
|
|
|
static range_t *global_mad_vendor_class = NULL;
|
|
static range_t *global_mad_vendor_rmpp_class = NULL;
|
|
static range_t *global_mad_application_class = NULL;
|
|
static range_t *global_mad_reserved_class = NULL;
|
|
static range_t *global_mad_opa_class = NULL;
|
|
|
|
static gint parse_MAD_AttributeModifier(proto_tree *MAD_tree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
proto_tree *AttributeModifier_tree;
|
|
proto_item *AttributeModifier_item;
|
|
gint local_offset = *offset;
|
|
|
|
AttributeModifier_item = proto_tree_add_item(MAD_tree, hf_opa_attribute_modifier, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
AttributeModifier_tree = proto_item_add_subtree(AttributeModifier_item, ett_mad_attributemod);
|
|
|
|
switch (MAD->MgmtClass) {
|
|
case SUBN_LID_ROUTED:
|
|
case SUBN_DIRECTED_ROUTE:
|
|
switch (MAD->AttributeID) {
|
|
case SM_ATTR_ID_CLASS_PORT_INFO: /* Shall be 0 */
|
|
case SM_ATTR_ID_NOTICE:
|
|
case SM_ATTR_ID_NODE_DESCRIPTION:
|
|
case SM_ATTR_ID_NODE_INFO:
|
|
case SM_ATTR_ID_SWITCH_INFO:
|
|
case SM_ATTR_ID_SL_SC_MAPPING_TABLE:
|
|
case SM_ATTR_ID_SC_SL_MAPPING_TABLE:
|
|
case SM_ATTR_ID_SM_INFO:
|
|
case SM_ATTR_ID_CONGESTION_INFO:
|
|
case SM_ATTR_ID_SWITCH_CONGESTION_LOG:
|
|
case SM_ATTR_ID_SWITCH_CONGESTION_SETTING:
|
|
case SM_ATTR_ID_HFI_CONGESTION_LOG:
|
|
case SM_ATTR_ID_HFI_CONGESTION_SETTING:
|
|
if (MAD->AttributeModifier)
|
|
expert_add_info(NULL, AttributeModifier_item, &ei_opa_mad_attribute_modifier_error_nonzero);
|
|
break;
|
|
case SM_ATTR_ID_PORT_INFO: /* NNNN NNNN 0000 0000 0000 00SA PPPP PPPP */
|
|
proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_Nps2AP, ENC_BIG_ENDIAN);
|
|
break;
|
|
case SM_ATTR_ID_PORT_STATE_INFO: /* NNNN NNNN 0000 0000 0000 00S0 PPPP PPPP */
|
|
proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NpS2P, ENC_BIG_ENDIAN);
|
|
break;
|
|
case SM_ATTR_ID_LED_INFO: /* NNNN NNNN 0000 0000 0000 000A PPPP PPPP */
|
|
case SM_ATTR_ID_BUFFER_CONTROL_TABLE:
|
|
proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NpAP, ENC_BIG_ENDIAN);
|
|
break;
|
|
case SM_ATTR_ID_PART_TABLE: /* NNNN NNNN PPPP PPPP 0000 0BBB BBBB BBBB */
|
|
proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbP2B, ENC_BIG_ENDIAN);
|
|
break;
|
|
case SM_ATTR_ID_SC_SC_MAPPING_TABLE: /* NNNN NNNN 0000 00AB IIII IIII EEEE EEEE */
|
|
proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbA2B2IE, ENC_BIG_ENDIAN);
|
|
break;
|
|
case SM_ATTR_ID_VL_ARBITRATION: /* NNNN NNNN SSSS SSSS 0000 000A PPPP PPPP */
|
|
proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NpSAP, ENC_BIG_ENDIAN);
|
|
break;
|
|
case SM_ATTR_ID_LINEAR_FWD_TABLE: /* NNNN NNNN 0000 0ABB BBBB BBBB BBBB BBBB */
|
|
case SM_ATTR_ID_PORT_GROUP_FWD_TABLE:
|
|
proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbA3B3, ENC_BIG_ENDIAN);
|
|
break;
|
|
case SM_ATTR_ID_MCAST_FWD_TABLE: /* NNNN NNNN PP0A BBBB BBBB BBBB BBBB BBBB */
|
|
proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbP3A4B4, ENC_BIG_ENDIAN);
|
|
break;
|
|
case SM_ATTR_ID_CABLE_INFO: /* 0AAA AAAA AAAA ALLL LLL0 0000 PPPP PPPP */
|
|
proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_A5LP, ENC_BIG_ENDIAN);
|
|
break;
|
|
case SM_ATTR_ID_AGGREGATE: /* 0000 0000 0000 0000 0000 0000 NNNN NNNN */
|
|
proto_tree_add_item(AttributeModifier_tree, hf_opa_attribute_modifier_N2, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
break;
|
|
case SM_ATTR_ID_SC_VLR_MAPPING_TABLE: /* NNNN NNNN 0000 0000 000Y 000A PPPP PPPP */
|
|
case SM_ATTR_ID_SC_VLT_MAPPING_TABLE:
|
|
case SM_ATTR_ID_SC_VLNT_MAPPING_TABLE:
|
|
proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbYAP, ENC_BIG_ENDIAN);
|
|
break;
|
|
case SM_ATTR_ID_SWITCH_PORT_CONGESTION_SETTING: /* NNNN NNNN 0000 0000 0000 0000 PPPP PPPP */
|
|
proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NpP, ENC_BIG_ENDIAN);
|
|
break;
|
|
case SM_ATTR_ID_HFI_CONGESTION_CONTROL_TABLE: /* NNNN NNNN 0000 0000 0000 0000 PPPP PPPP */
|
|
proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbP, ENC_BIG_ENDIAN);
|
|
break;
|
|
case SM_ATTR_ID_PORT_GROUP_TABLE: /* NNNN NNNN PP00 0000 0000 0000 00AB BBBB */
|
|
proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbP3A6B5, ENC_BIG_ENDIAN);
|
|
break;
|
|
default:
|
|
if (MAD->AttributeModifier)
|
|
expert_add_info(NULL, AttributeModifier_item, &ei_opa_mad_attribute_modifier_error_nonzero);
|
|
break;
|
|
}
|
|
break;
|
|
case PERF:
|
|
switch (MAD->AttributeID) {
|
|
case PM_ATTR_ID_CLASS_PORTINFO: /* 0 */
|
|
if (MAD->AttributeModifier)
|
|
expert_add_info(NULL, AttributeModifier_item, &ei_opa_mad_attribute_modifier_error_nonzero);
|
|
break;
|
|
case PM_ATTR_ID_PORT_STATUS: /* PPPP PPPP 0000 0000 0000 0000 0000 0000 */
|
|
case PM_ATTR_ID_CLEAR_PORT_STATUS:
|
|
case PM_ATTR_ID_DATA_PORT_COUNTERS:
|
|
case PM_ATTR_ID_ERROR_PORT_COUNTERS:
|
|
proto_tree_add_item(AttributeModifier_tree, hf_opa_attribute_modifier_NP, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
break;
|
|
case PM_ATTR_ID_ERROR_INFO:
|
|
default:
|
|
if (MAD->AttributeModifier)
|
|
expert_add_info(NULL, AttributeModifier_item, &ei_opa_mad_attribute_modifier_error_nonzero);
|
|
break;
|
|
}
|
|
break;
|
|
case PERFADMN:
|
|
case SUBNADMN:
|
|
if (MAD->AttributeModifier)
|
|
expert_add_info(NULL, AttributeModifier_item, &ei_opa_mad_attribute_modifier_error_nonzero);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return local_offset += 4;
|
|
}
|
|
/* Parse the common MAD Header */
|
|
static gboolean parse_MAD_Common(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *MAD_header_item;
|
|
proto_tree *MAD_header_tree;
|
|
proto_item *MAD_Status_item;
|
|
|
|
if (MAD == NULL) {
|
|
return FALSE;
|
|
}
|
|
|
|
/* Get the Management Class to decide between LID Routed and Direct Route */
|
|
|
|
/* Populate the Dissector Tree */
|
|
MAD_header_item = proto_tree_add_item(parentTree, hf_opa_mad, tvb, local_offset, 24, ENC_NA);
|
|
MAD_header_tree = proto_item_add_subtree(MAD_header_item, ett_mad);
|
|
|
|
proto_tree_add_item(MAD_header_tree, hf_opa_mad_base_version, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
MAD->BaseVersion = tvb_get_guint8(tvb, local_offset);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MAD_header_tree, hf_opa_mad_mgmt_class, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
MAD->MgmtClass = tvb_get_guint8(tvb, local_offset);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MAD_header_tree, hf_opa_mad_class_version, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
MAD->ClassVersion = tvb_get_guint8(tvb, local_offset);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MAD_header_tree, hf_opa_mad_method, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
MAD->Method = tvb_get_guint8(tvb, local_offset);
|
|
local_offset += 1;
|
|
if (MAD->MgmtClass == SUBN_DIRECTED_ROUTE) {
|
|
proto_tree_add_item(MAD_header_tree, hf_opa_mad_status_DR_D, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
MAD_Status_item = proto_tree_add_item(MAD_header_tree, hf_opa_mad_status_DR_status, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
MAD->Status = tvb_get_ntohs(tvb, local_offset);
|
|
local_offset += 2;
|
|
if (MAD->Status & 0x7FFF) {
|
|
proto_item_append_text(MAD_header_item, " Error: 0x%04x", MAD->Status & 0x7FFF);
|
|
expert_add_info_format(pinfo, MAD_Status_item, &ei_opa_mad_error,
|
|
"Mad Status Error (0x%04x)", MAD->Status & 0x7FFF);
|
|
}
|
|
proto_tree_add_item(MAD_header_tree, hf_opa_mad_status_DR_Hop_Pointer, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
MAD->HopPointer = tvb_get_guint8(tvb, local_offset);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MAD_header_tree, hf_opa_mad_status_DR_Hop_Count, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
MAD->HopCount = tvb_get_guint8(tvb, local_offset);
|
|
local_offset += 1;
|
|
} else {
|
|
MAD_Status_item = proto_tree_add_bitmask(MAD_header_tree, tvb, local_offset,
|
|
hf_opa_mad_status, ett_mad_status, _mad_status, ENC_BIG_ENDIAN);
|
|
MAD->Status = tvb_get_ntohs(tvb, local_offset);
|
|
local_offset += 2;
|
|
if (MAD->Status) {
|
|
proto_item_append_text(MAD_header_item, " Error: 0x%04x", MAD->Status);
|
|
expert_add_info_format(pinfo, MAD_Status_item, &ei_opa_mad_error,
|
|
"Mad Status Error (0x%04x)", MAD->Status);
|
|
}
|
|
proto_tree_add_item(MAD_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
}
|
|
proto_tree_add_item(MAD_header_tree, hf_opa_mad_transaction_id, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
MAD->TransactionID = tvb_get_ntoh64(tvb, local_offset);
|
|
local_offset += 8;
|
|
proto_tree_add_item(MAD_header_tree, hf_opa_mad_attribute_id, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
MAD->AttributeID = tvb_get_ntohs(tvb, local_offset);
|
|
local_offset += 2;
|
|
proto_tree_add_item(MAD_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
MAD->AttributeModifier = tvb_get_ntohl(tvb, local_offset);
|
|
*offset = parse_MAD_AttributeModifier(MAD_header_tree, tvb, &local_offset, MAD);
|
|
|
|
return TRUE;
|
|
}
|
|
/* Parse the RMPP (Reliable Multi-Packet Transaction Protocol) */
|
|
static gboolean parse_RMPP(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset, RMPP_t *RMPP)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *RMPP_header_item;
|
|
proto_item *RMPP_type_item;
|
|
proto_item *RMPP_segment_number_item;
|
|
proto_tree *RMPP_header_tree;
|
|
|
|
RMPP_header_item = proto_tree_add_item(parentTree, hf_opa_rmpp, tvb, local_offset, 12, ENC_NA);
|
|
RMPP_header_tree = proto_item_add_subtree(RMPP_header_item, ett_rmpp);
|
|
|
|
proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_version, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
RMPP->Version = tvb_get_guint8(tvb, local_offset);
|
|
local_offset += 1;
|
|
|
|
RMPP_type_item = proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_type, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
RMPP->Type = tvb_get_guint8(tvb, local_offset);
|
|
local_offset += 1;
|
|
proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_r_resp_time, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_flags_last, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_flags_first, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_flags_active, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
RMPP->resptime_flags = tvb_get_guint8(tvb, local_offset);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
RMPP->Status = tvb_get_guint8(tvb, local_offset);
|
|
local_offset += 1;
|
|
|
|
if (!(RMPP->resptime_flags & RMPP_FLAG_ACTIVE_MASK) && RMPP->Type == RMPP_ILLEGAL) {
|
|
proto_item_set_text(RMPP_header_item, "%s%s", "RMPP (Empty)", " - Reliable Multi-Packet Transaction Protocol");
|
|
proto_item_append_text(RMPP_type_item, " %s", "RMPP (Empty)");
|
|
} else {
|
|
proto_item_set_text(RMPP_header_item, "%s%s", val_to_str(RMPP->Type, RMPP_Packet_Types, "RMPP (Reserved 0x%02x)"), " - Reliable Multi-Packet Transaction Protocol");
|
|
proto_item_append_text(RMPP_type_item, " %s", val_to_str(RMPP->Type, RMPP_Packet_Types, "RMPP (Reserved 0x%02x)"));
|
|
}
|
|
|
|
RMPP->PayloadLength = 0;
|
|
|
|
switch (RMPP->Type) {
|
|
case RMPP_ILLEGAL:
|
|
proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_data1, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_data2, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
case RMPP_DATA:
|
|
RMPP_segment_number_item = proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_segment_number, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
RMPP->SegmentNumber = tvb_get_ntohl(tvb, local_offset);
|
|
if (!pref_attempt_rmpp_defragment && RMPP->SegmentNumber > 1) {
|
|
expert_add_info_format(pinfo, RMPP_segment_number_item, &ei_opa_rmpp_undecoded,
|
|
"Parsing Disabled for RMPP Data Segments greater than 1 (%u)", RMPP->SegmentNumber);
|
|
}
|
|
local_offset += 4;
|
|
proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_payload_length32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
RMPP->PayloadLength = tvb_get_ntohl(tvb, local_offset);
|
|
local_offset += 4;
|
|
break;
|
|
case RMPP_ACK:
|
|
proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_segment_number, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_new_window_last, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
case RMPP_STOP:
|
|
case RMPP_ABORT:
|
|
proto_tree_add_item(RMPP_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_NA);
|
|
local_offset += 4;
|
|
proto_tree_add_item(RMPP_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_NA);
|
|
local_offset += 4;
|
|
break;
|
|
default:
|
|
return FALSE;
|
|
}
|
|
*offset = local_offset;
|
|
return TRUE;
|
|
}
|
|
/* Parse NoticeDataDetails Attribute Field */
|
|
static gint parse_NoticeDataDetails(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, guint16 trapNumber)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *DataDetails_header_item;
|
|
proto_tree *DataDetails_header_tree;
|
|
|
|
if (!parentTree)
|
|
return 0;
|
|
|
|
DataDetails_header_item = proto_tree_add_item(parentTree, hf_opa_Trap, tvb, local_offset, 64, ENC_NA);
|
|
DataDetails_header_tree = proto_item_add_subtree(DataDetails_header_item, ett_datadetails);
|
|
proto_item_append_text(DataDetails_header_item, " %u DataDetails", trapNumber);
|
|
|
|
switch (trapNumber) {
|
|
case 64:
|
|
case 65:
|
|
case 66:
|
|
case 67:
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_GID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
break;
|
|
case 128:
|
|
case 2048:
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
case 129:
|
|
case 130:
|
|
case 131:
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_PORTNO, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
case 144:
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_CAPABILITYMASK, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_CAPABILITYMASK3, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_144_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LinkWidthDowngradeEnabledChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LinkSpeecEnabledChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LinkWidthEnabledChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_NodeDescriptionChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
case 145:
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_SystemImageGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
case 256:
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_DRSLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_Method, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_DRNotice, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_DRPathTruncated, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_DRHopCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_AttributeID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_AttributeModifier, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_MKey, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_DRNoticeReturnPath, tvb, local_offset, 30, ENC_NA);
|
|
local_offset += 30;
|
|
break;
|
|
case 257:
|
|
case 258:
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_Key, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_SL_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_GID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_GID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_QP, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_QP, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
break;
|
|
case 259:
|
|
proto_tree_add_bitmask(DataDetails_header_tree, tvb, local_offset, hf_opa_Trap_DataValid,
|
|
ett_datadetails_trap259datavalid, _Trap_DataValid, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_PKey, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_SL_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_GID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_GID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_QP, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_QP, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse NoticesAndTraps Attribute */
|
|
static gint parse_NoticesAndTraps(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *NoticesAndTraps_header_item;
|
|
proto_tree *NoticesAndTraps_header_tree;
|
|
gboolean isGeneric = tvb_get_bits8(tvb, local_offset * 8, 1);
|
|
guint16 trapNumber = tvb_get_ntohs(tvb, local_offset + 4);
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
NoticesAndTraps_header_item = proto_tree_add_item(parentTree, hf_opa_Notice, tvb, local_offset, 64, ENC_NA);
|
|
proto_item_set_text(NoticesAndTraps_header_item, "%s", val_to_str(trapNumber, Trap_Description, "Unknown or Vendor Specific Trap Number! (0x%02x)"));
|
|
NoticesAndTraps_header_tree = proto_item_add_subtree(NoticesAndTraps_header_item, ett_noticestraps);
|
|
|
|
proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_IsGeneric, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_Type, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
if (isGeneric) {
|
|
proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_ProducerType, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_TrapNumber, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
} else {
|
|
proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_VendorID, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_DeviceID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
}
|
|
proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_Toggle, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_Count, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_IssuerLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_IssuerGID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
|
|
parse_NoticeDataDetails(NoticesAndTraps_header_tree, tvb, &local_offset, trapNumber);
|
|
local_offset += 64;
|
|
proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_ClassDataDetails, tvb, local_offset, -1, ENC_NA);
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse InformInfo Attribute*/
|
|
static gint parse_InformInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *InformInfo_header_item;
|
|
proto_tree *InformInfo_header_tree;
|
|
gboolean isGeneric;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
InformInfo_header_item = proto_tree_add_item(parentTree, hf_opa_InformInfo, tvb, local_offset, 40, ENC_NA);
|
|
InformInfo_header_tree = proto_item_add_subtree(InformInfo_header_item, ett_informinfo);
|
|
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_GID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_LIDRangeBegin, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_LIDRangeEnd, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
isGeneric = (gboolean)tvb_get_bits8(tvb, local_offset * 8 + 7, 1);
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_IsGeneric, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_Subscribe, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_Type, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
if (isGeneric) {
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_TrapNumber, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
} else {
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_DeviceID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
}
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_QPN, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_RespTimeValue, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
if (isGeneric) {
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_ProducerType, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
} else {
|
|
proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_VendorID, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse ClassPortInfo MAD from the ALL classes. */
|
|
static gint parse_ClassPortInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
proto_item *ClassPortInfo_item;
|
|
proto_tree *ClassPortInfo_tree;
|
|
proto_tree *ClassPortInfo_Redirect_tree;
|
|
proto_tree *ClassPortInfo_Trap_tree;
|
|
gint local_offset = *offset;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
ClassPortInfo_item = proto_tree_add_item(parentTree, hf_opa_ClassPortInfo, tvb, local_offset, 80, ENC_NA);
|
|
ClassPortInfo_tree = proto_item_add_subtree(ClassPortInfo_item, ett_classportinfo);
|
|
|
|
proto_tree_add_item(ClassPortInfo_tree, hf_opa_ClassPortInfo_BaseVersion, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(ClassPortInfo_tree, hf_opa_ClassPortInfo_ClassVersion, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(ClassPortInfo_tree, hf_opa_ClassPortInfo_CapMask, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(ClassPortInfo_tree, hf_opa_ClassPortInfo_CapMask2, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(ClassPortInfo_tree, hf_opa_ClassPortInfo_RespTimeValue, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
ClassPortInfo_Redirect_tree = proto_tree_add_subtree(ClassPortInfo_tree, tvb, local_offset, 32,
|
|
ett_classportinfo_redirect, NULL, "Redirect");
|
|
|
|
proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_GID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_reserved, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_FlowLabel, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_QP, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_Q_Key, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
ClassPortInfo_Trap_tree = proto_tree_add_subtree(ClassPortInfo_tree, tvb, local_offset, 32,
|
|
ett_classportinfo_trap, NULL, "Trap");
|
|
|
|
proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_GID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_reserved, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_FlowLabel, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_HopLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_QP, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_Q_Key, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(ClassPortInfo_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse NodeDescription Attribute */
|
|
static gint parse_NodeDescription(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_tree *NodeDescription_header_tree = parentTree;
|
|
proto_item *NodeDescription_header_item;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
NodeDescription_header_item = proto_tree_add_item(NodeDescription_header_tree, hf_opa_NodeDescription, tvb, local_offset, 64, ENC_NA);
|
|
NodeDescription_header_tree = proto_item_add_subtree(NodeDescription_header_item, ett_nodedescription);
|
|
|
|
proto_tree_add_item(NodeDescription_header_tree, hf_opa_NodeDescription_NodeString, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse NodeInfo Attribute */
|
|
static gint parse_NodeInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_tree *NodeInfo_header_tree = parentTree;
|
|
proto_item *NodeInfo_header_item;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
NodeInfo_header_item = proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo, tvb, local_offset, 44, ENC_NA);
|
|
NodeInfo_header_tree = proto_item_add_subtree(NodeInfo_header_item, ett_nodeinfo);
|
|
|
|
proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_BaseVersion, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_ClassVersion, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_NodeType, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_NumPorts, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(NodeInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_SystemImageGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_NodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_PortGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_PartitionCap, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_DeviceID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_Revision, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_LocalPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_VendorID, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
|
|
return local_offset;
|
|
|
|
}
|
|
|
|
/* Parse SwitchInfo Attribute */
|
|
static gint parse_SwitchInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_tree *SwitchInfo_header_tree = parentTree;
|
|
proto_item *SwitchInfo_header_item;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
SwitchInfo_header_item = proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo, tvb, local_offset, 84, ENC_NA);
|
|
SwitchInfo_header_tree = proto_item_add_subtree(SwitchInfo_header_item, ett_switchinfo);
|
|
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_LinearFDBCap, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_MulticastFDBCap, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_LinearFDBTop, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_MulticastFDBTop, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_CollectiveCap, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_CollectiveTop, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_IPAddrIPv6, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_IPAddrIPv4, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_LifeTimeValue, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_PortStateChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_PartitionEnforcementCap, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_PortGroupCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_PortGroupTop, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_SupportedRoutingMode, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_EnabledRoutingMode, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_reserved3, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_EnhancedPortZero, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_reserved4, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_reserved5, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_CollectiveMask, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_MulticastMask, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_bitmask_list(SwitchInfo_header_tree, tvb, local_offset, 2,
|
|
_SwitchInfo_AdaptiveRouting, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_bitmask(SwitchInfo_header_tree, tvb, local_offset, hf_opa_SwitchInfo_SwitchCapabilityMask,
|
|
ett_switchinfo_switchcapabilitymask, _SwitchInfo_SwitchCapabilityMask, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_CapabilityMaskCollectives, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse PortInfo Attribute */
|
|
static gint parse_PortInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_tree *PortInfo_header_tree = parentTree,
|
|
*PortInfo_VL_tree,
|
|
*PortInfo_Link_tree,
|
|
*PortInfo_FlitControl_tree,
|
|
*PortInfo_NeighborMTU_tree,
|
|
*PortInfo_XmitQ_tree;
|
|
proto_item * PortInfo_header_item,
|
|
*PortInfo_PortWdthSpeedActive_item;
|
|
proto_item *temp_item;
|
|
guint p, i, Num_ports, Port_num;
|
|
guint16 active;
|
|
|
|
if (MAD->MgmtClass == SUBNADMN) {
|
|
Num_ports = 1;
|
|
Port_num = tvb_get_guint8(tvb, local_offset - 4);
|
|
} else {
|
|
Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
Port_num = (MAD->AttributeModifier & 0x000000FF);
|
|
}
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
for (p = Port_num; p < (Port_num + Num_ports); p++) {
|
|
PortInfo_header_item = proto_tree_add_item(parentTree, hf_opa_PortInfo, tvb, local_offset, 242, ENC_NA);
|
|
proto_item_set_text(PortInfo_header_item, "PortInfo on Port %d", p);
|
|
PortInfo_header_tree = proto_item_add_subtree(PortInfo_header_item, ett_portinfo);
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_FlowControlMask, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
/* VL */
|
|
PortInfo_VL_tree = proto_tree_add_subtree(PortInfo_header_tree, tvb, local_offset, 8,
|
|
ett_portinfo_vl, NULL, "VL Info");
|
|
proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_PreemptCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_Cap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_HighLimit, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_PreemptingLimit, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_ArbitrationHighCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_ArbitrationLowCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
/* Port States */
|
|
proto_tree_add_bitmask_list(PortInfo_header_tree, tvb, local_offset, 4, _PortStates, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortPhysConfig_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortPhysConfig_PortType, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
/* MultiCollectMask */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MultiCollectMask_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MultiCollectMask_CollectiveMask, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MultiCollectMask_MulticastMask, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_M_KeyProtectBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_S1_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_LMC, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_S2_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MasterSMSL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_LinkInitReason, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PartitionEnforcementInbound, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PartitionEnforcementOutbound, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_S3_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_S4_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_OperationalVL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
/* P_Keys */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_P_Keys_P_Key_8B, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_P_Keys_P_Key_10B, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
/* Violations */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_M_KeyViolations, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_P_KeyViolations, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_Q_KeyViolations, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_TrapQueuePair_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_TrapQueuePair, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_SAQueuePair_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_SAQueuePair, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_NeighborPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
/*STL Linkdown reason */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_LinkDownReason, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
/*STL NeighborLinkdown reason */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_NeighborLinkDownReason, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
/* Subnet */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_ClientReregister, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MulticastPKeyTrapSuppressEnabled, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_Timeout, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
PortInfo_Link_tree = proto_tree_add_subtree(PortInfo_header_tree, tvb, local_offset, 22,
|
|
ett_portinfo_link, NULL, "Link Info");
|
|
/* LinkSpeed */
|
|
proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkSpeedSupported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkSpeedEnabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
active = tvb_get_ntohs(tvb, local_offset);
|
|
PortInfo_PortWdthSpeedActive_item = proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkSpeedActive, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
if (!active && (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP))
|
|
proto_item_set_text(PortInfo_PortWdthSpeedActive_item, "None");
|
|
/* LinkWidth */
|
|
proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthSupported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthEnabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
active = tvb_get_ntohs(tvb, local_offset);
|
|
PortInfo_PortWdthSpeedActive_item = proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthActive, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
if (!active && (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP))
|
|
proto_item_set_text(PortInfo_PortWdthSpeedActive_item, "None");
|
|
|
|
/* LinkWidthDowngrade */
|
|
proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthDowngrade_Supported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthDowngrade_Enabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
active = tvb_get_ntohs(tvb, local_offset);
|
|
PortInfo_PortWdthSpeedActive_item = proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthDowngrade_TxActive, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
if (!active && (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP))
|
|
proto_item_set_text(PortInfo_PortWdthSpeedActive_item, "None");;
|
|
active = tvb_get_ntohs(tvb, local_offset);
|
|
PortInfo_PortWdthSpeedActive_item = proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthDowngrade_RxActive, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
if (!active && (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP))
|
|
proto_item_set_text(PortInfo_PortWdthSpeedActive_item, "None");
|
|
|
|
/*PortLinkMode */
|
|
proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_PortLinkMode_reserved, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_PortLinkMode_Supported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_PortLinkMode_Enabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_PortLinkMode_Active, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
/*PortLTPCRCMode */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortLTPCRCMode_reserved, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortLTPCRCMode_Supported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortLTPCRCMode_Enabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortLTPCRCMode_Active, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
/*PortMode*/
|
|
proto_tree_add_bitmask(PortInfo_header_tree, tvb, local_offset, hf_opa_PortInfo_PortMode,
|
|
ett_portinfo_portmode, _PortInfo_PortMode, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
/* PortPacketFormats */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortPacketFormats_Supported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortPacketFormats_Enabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
/* Flit Control */
|
|
PortInfo_FlitControl_tree = proto_tree_add_subtree(PortInfo_header_tree, tvb, local_offset, 10,
|
|
ett_portinfo_flitcontrol, NULL, "Flit Control");
|
|
proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Interleave_reserved, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Interleave_DistanceSupported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Interleave_DistanceEnabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Interleave_MaxNestLevelTxEnabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Interleave_MaxNestLevelRxSupported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Preemption_MinInitial, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Preemption_MinTail, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Preemption_LargePacketLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Preemption_SmallPacketLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Preemption_MaxSmallPacketLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Preemption_PreemptionLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
/*PortErrorAction*/
|
|
proto_tree_add_bitmask(PortInfo_header_tree, tvb, local_offset, hf_opa_PortInfo_PortErrorAction,
|
|
ett_portinfo_porterroraction, _PortInfo_PortErrorAction, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
/* PassThroughControl */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PassThroughControl_EgressPort, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PassThroughControl_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PassThroughControl_DRControl, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_M_KeyLeasePeriod, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
/* BufferUnits */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_BufferUnits_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_BufferUnits_VL15Init, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_BufferUnits_VL15CreditRate, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_BufferUnits_CreditAck, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_BufferUnits_BufferAlloc, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MasterSMLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_M_Key, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_SubnetPrefix, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
/*NeighborMTU */
|
|
PortInfo_NeighborMTU_tree = proto_tree_add_subtree(PortInfo_header_tree, tvb, local_offset, 32 / 2,
|
|
ett_portinfo_neighbormtu, NULL, "NeighborMTU");
|
|
for (i = 0; i < (32 / 2); i++) {
|
|
temp_item = proto_tree_add_item(PortInfo_NeighborMTU_tree, hf_opa_PortInfo_VL1, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(temp_item, "%3u: ", 2 * i);
|
|
temp_item = proto_tree_add_item(PortInfo_NeighborMTU_tree, hf_opa_PortInfo_VL2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_item_prepend_text(temp_item, "%3u: ", 2 * i + 1);
|
|
}
|
|
|
|
/*XmitQ*/
|
|
PortInfo_XmitQ_tree = proto_tree_add_subtree(PortInfo_header_tree, tvb, local_offset, 32,
|
|
ett_portinfo_xmitq, NULL, "XmitQ");
|
|
for (i = 0; i < 32; i++) {
|
|
temp_item = proto_tree_add_item(PortInfo_XmitQ_tree, hf_opa_PortInfo_XmitQ_VLStallCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(temp_item, "%3u: ", i);
|
|
temp_item = proto_tree_add_item(PortInfo_XmitQ_tree, hf_opa_PortInfo_XmitQ_HOQLife, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_item_prepend_text(temp_item, " ");
|
|
}
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_IPAddrIPv6, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_IPAddrIPv4, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_NeighborNodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
/* Capability Mask Flags */
|
|
proto_tree_add_bitmask(PortInfo_header_tree, tvb, local_offset, hf_opa_PortInfo_CapabilityMask,
|
|
ett_portinfo_capmask, _PortInfo_CapabilityMask, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
/* End Capability Mask Flags */
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
/* CapabilityMask3 */
|
|
proto_tree_add_bitmask(PortInfo_header_tree, tvb, local_offset, hf_opa_PortInfo_CapabilityMask3,
|
|
ett_portinfo_capmask3, _PortInfo_CapabilityMask3, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_OverallBufferSpace, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
/* Diag Code */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_DiagCode, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
/* End Diag Code */
|
|
|
|
/* Replay Depth */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_ReplayDepth_BufferDepth, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_ReplayDepth_WireDepth, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
/* PortNeighborMode */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortNeighborMode_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortNeighborMode_MgmtAllowed, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortNeighborMode_NeighborFWAuthenBypass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortNeighborMode_NeighborNodeType, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
/* MTU */
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MTU_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MTU_Cap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_Resp_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_Resp_TimeValue, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_LocalPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
if (Num_ports > 1) {
|
|
/* 8 Byte Padding offset */
|
|
local_offset += 8 - (242 % 8);
|
|
}
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse PortStateInfo Attribute */
|
|
static gint parse_PortStateInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *PortStates_header_item;
|
|
proto_tree *PortStates_header_tree;
|
|
guint i, Num_ports, Port_num;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
Port_num = (MAD->AttributeModifier & 0x000000FF);
|
|
|
|
for (i = Port_num; i < Port_num + Num_ports; i++) {
|
|
PortStates_header_item = proto_tree_add_item(parentTree, hf_opa_PortStates, tvb, local_offset, 4, ENC_NA);
|
|
proto_item_set_text(PortStates_header_item, "Port Sate Info on Port %d", i);
|
|
PortStates_header_tree = proto_item_add_subtree(PortStates_header_item, ett_portstates);
|
|
|
|
proto_tree_add_bitmask_list(PortStates_header_tree, tvb, local_offset, 4,
|
|
_PortStates, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PortStates_header_tree, hf_opa_PortStates_LinkWidthDowngradeTxActive, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortStates_header_tree, hf_opa_PortStates_LinkWidthDowngradeRxActive, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse P_KeyTable Attribute */
|
|
static gint parse_P_KeyTable(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *P_KeyTable_header_item;
|
|
proto_tree *P_KeyTable_header_tree;
|
|
proto_tree *tempBlock_tree;
|
|
proto_item *tempItemLow;
|
|
proto_item *tempItemHigh;
|
|
guint i, b, Num_blocks, Block_num/*, Port_num*/;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
if (MAD->MgmtClass == SUBNADMN) {
|
|
Num_blocks = 1;
|
|
Block_num = tvb_get_ntohs(tvb, local_offset - 4);
|
|
/*Port_num = tvb_get_guint8(tvb, local_offset - 2);*/
|
|
} else {
|
|
Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
Block_num = (MAD->AttributeModifier & 0x000007FF);
|
|
/*Port_num = (MAD->AttributeModifier & 0x00FF0000) >> 16;*/
|
|
}
|
|
|
|
P_KeyTable_header_item = proto_tree_add_item(parentTree, hf_opa_P_KeyTable, tvb, local_offset, 64 * Num_blocks, ENC_NA);
|
|
P_KeyTable_header_tree = proto_item_add_subtree(P_KeyTable_header_item, ett_pkeytable);
|
|
|
|
for (b = Block_num; b < Block_num + Num_blocks; b++) {
|
|
tempBlock_tree = proto_tree_add_subtree_format(P_KeyTable_header_tree, tvb, local_offset, 64,
|
|
ett_pkeytable_block, NULL, "PKey Table Block %u", b);
|
|
|
|
for (i = 0; i < 32; i++) {
|
|
tempItemHigh = proto_tree_add_item(tempBlock_tree, hf_opa_P_KeyTable_MembershipType, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
tempItemLow = proto_tree_add_item(tempBlock_tree, hf_opa_P_KeyTable_P_KeyBase, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_item_prepend_text(tempItemHigh, "%3u: ", i);
|
|
proto_item_prepend_text(tempItemLow, " ");
|
|
}
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse SLtoSC Mapping Table Attribute */
|
|
static gint parse_SLtoSCMappingTable(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *SLtoSCMappingTable_header_item;
|
|
proto_tree *SLtoSCMappingTable_header_tree;
|
|
proto_item *tempItemHigh;
|
|
proto_item *tempItemLow;
|
|
guint i;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
SLtoSCMappingTable_header_item = proto_tree_add_item(parentTree, hf_opa_SLtoSCMappingTable, tvb, local_offset, 32, ENC_NA);
|
|
SLtoSCMappingTable_header_tree = proto_item_add_subtree(SLtoSCMappingTable_header_item, ett_sltoscmapping);
|
|
|
|
for (i = 0; i < 32; i++) {
|
|
tempItemHigh = proto_tree_add_item(SLtoSCMappingTable_header_tree, hf_opa_SLtoSCMappingTable_SLtoSC_HighBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItemHigh, "%3u: ", i);
|
|
tempItemLow = proto_tree_add_item(SLtoSCMappingTable_header_tree, hf_opa_SLtoSCMappingTable_SLtoSC_LowBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItemLow, " ");
|
|
local_offset += 1;
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse SCtoSC Mapping Table Attribute */
|
|
static gint parse_SCtoSCMappingTable(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *SCtoSCMappingTable_header_item;
|
|
proto_tree *SCtoSCMappingTable_header_tree;
|
|
proto_item *tempItemHigh;
|
|
proto_item *tempItemLow;
|
|
proto_tree *tempBlock_tree;
|
|
guint i, b, i_block, e_block, Num_blocks, Block_num;
|
|
gboolean B;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
if (MAD->MgmtClass == SUBNADMN) {
|
|
Num_blocks = 1;
|
|
B = FALSE;
|
|
i_block = tvb_get_guint8(tvb, local_offset - 4);
|
|
e_block = tvb_get_guint8(tvb, local_offset - 3);
|
|
Block_num = e_block;
|
|
} else {
|
|
Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
B = (gboolean)((MAD->AttributeModifier & 0x00010000) >> 16);
|
|
i_block = (MAD->AttributeModifier & 0x0000FF00) >> 8;
|
|
e_block = (MAD->AttributeModifier & 0x000000FF);
|
|
Block_num = (B ? i_block : e_block);
|
|
}
|
|
|
|
SCtoSCMappingTable_header_item = proto_tree_add_item(parentTree, hf_opa_SCtoSCMappingTable, tvb, local_offset, 32 * Num_blocks, ENC_NA);
|
|
SCtoSCMappingTable_header_tree = proto_item_add_subtree(SCtoSCMappingTable_header_item, ett_sctoscmapping);
|
|
|
|
for (b = Block_num; b < (Block_num + Num_blocks); b++) {
|
|
tempBlock_tree = proto_tree_add_subtree_format(SCtoSCMappingTable_header_tree, tvb, local_offset, 32,
|
|
ett_sctoscmapping_block, NULL, "SC to SC Mapping Table for InPort %u, OutPort %u", (B ? b : i_block), (B ? e_block : b));
|
|
|
|
for (i = 0; i < 32; i++) {
|
|
tempItemHigh = proto_tree_add_item(tempBlock_tree, hf_opa_SCtoSCMappingTable_SCtoSC_HighBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItemHigh, "%3u: ", i);
|
|
tempItemLow = proto_tree_add_item(tempBlock_tree, hf_opa_SCtoSCMappingTable_SCtoSC_LowBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItemLow, " ");
|
|
local_offset += 1;
|
|
}
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse SCtoSL Mapping Table Attribute */
|
|
static gint parse_SCtoSLMappingTable(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *SCtoSLMappingTable_header_item;
|
|
proto_tree *SCtoSLMappingTable_header_tree;
|
|
proto_item *tempItemHigh;
|
|
proto_item *tempItemLow;
|
|
guint i;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
SCtoSLMappingTable_header_item = proto_tree_add_item(parentTree, hf_opa_SCtoSLMappingTable, tvb, local_offset, 32, ENC_NA);
|
|
SCtoSLMappingTable_header_tree = proto_item_add_subtree(SCtoSLMappingTable_header_item, ett_sctoslmapping);
|
|
|
|
for (i = 0; i < 32; i++) {
|
|
tempItemHigh = proto_tree_add_item(SCtoSLMappingTable_header_tree, hf_opa_SCtoSLMappingTable_SCtoSL_HighBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItemHigh, "%3u: ", i);
|
|
tempItemLow = proto_tree_add_item(SCtoSLMappingTable_header_tree, hf_opa_SCtoSLMappingTable_SCtoSL_LowBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItemLow, " ");
|
|
local_offset += 1;
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse SCtoVLx Mapping Table Attribute */
|
|
static gint parse_SCtoVLxMappingTable(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *SCtoVLxMappingTable_header_item;
|
|
proto_tree *SCtoVLxMappingTable_header_tree;
|
|
proto_item *tempItemLow;
|
|
proto_item *tempItemHigh;
|
|
proto_tree *tempBlock_tree;
|
|
guint p, v, Port_num, Num_ports;
|
|
const gchar *VLx;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
if (MAD->MgmtClass == SUBNADMN) {
|
|
Num_ports = 1;
|
|
Port_num = tvb_get_guint8(tvb, local_offset - 4);
|
|
VLx = val_to_str_const(MAD->AttributeID, SA_SC_VLx, "x");
|
|
} else {
|
|
Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
Port_num = (MAD->AttributeModifier & 0x000000FF);
|
|
VLx = val_to_str_const(MAD->AttributeID, SM_SC_VLx, "x");
|
|
}
|
|
|
|
SCtoVLxMappingTable_header_item = proto_tree_add_item(parentTree, hf_opa_SCtoVLxMappingTable, tvb, local_offset, 32 * Num_ports, ENC_NA);
|
|
proto_item_set_text(SCtoVLxMappingTable_header_item, "SC to VL%s Mapping Table", VLx);
|
|
SCtoVLxMappingTable_header_tree = proto_item_add_subtree(SCtoVLxMappingTable_header_item, ett_sctovlxmappingtable);
|
|
|
|
for (p = Port_num; p < (Port_num + Num_ports); p++) {
|
|
tempBlock_tree = proto_tree_add_subtree_format(SCtoVLxMappingTable_header_tree, tvb, local_offset, 32,
|
|
ett_sctovlxmappingtable_block, NULL, "SC to VL%s Mapping Table for Port %u", VLx, p);
|
|
|
|
for (v = 0; v < 32; v++) {
|
|
tempItemHigh = proto_tree_add_item(tempBlock_tree, hf_opa_SCtoVLxMappingTable_SCtoVLx_HighBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItemHigh, "%3u: ", v);
|
|
tempItemLow = proto_tree_add_item(tempBlock_tree, hf_opa_SCtoVLxMappingTable_SCtoVLx_LowBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItemLow, " ");
|
|
local_offset += 1;
|
|
}
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse VLArbitrationTable Attribute */
|
|
static gint parse_VLArbitrationTable(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *VLArbitrationTable_header_item;
|
|
proto_tree * VLArbitrationTable_header_tree,*VLArbitrationTable_port_tree;
|
|
proto_item *tempItemHigh;
|
|
proto_item *tempItemLow;
|
|
proto_item *tempItem;
|
|
guint i, p, Section, Num_ports, Port_num;
|
|
const gchar *TableType;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
if (MAD->MgmtClass == SUBNADMN) {
|
|
Num_ports = 1;
|
|
Section = tvb_get_guint8(tvb, local_offset - 3);
|
|
Port_num = tvb_get_guint8(tvb, local_offset - 4);
|
|
} else {
|
|
Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
Section = (MAD->AttributeModifier & 0x00FF0000) >> 16;
|
|
Port_num = (MAD->AttributeModifier & 0x000000FF);
|
|
}
|
|
TableType = val_to_str_const(Section, MADAttrModSectionVLarb_short, "Reserved");
|
|
|
|
VLArbitrationTable_header_item = proto_tree_add_item(parentTree, hf_opa_VLArbitrationTable, tvb, local_offset, 256 * Num_ports, ENC_NA);
|
|
VLArbitrationTable_header_tree = proto_item_add_subtree(VLArbitrationTable_header_item, ett_vlarbitrationtable);
|
|
|
|
for (p = Port_num; p < (Port_num + Num_ports); p++) {
|
|
VLArbitrationTable_port_tree = proto_tree_add_subtree_format(VLArbitrationTable_header_tree, tvb, local_offset, 256,
|
|
ett_vlarbitrationtable_port, NULL, "%s VL Arbitration Table on Port %u", TableType, p);
|
|
|
|
if (Section < 3) {
|
|
for (i = 0; i < 128; i++) {
|
|
tempItemHigh = proto_tree_add_item(VLArbitrationTable_port_tree, hf_opa_VLArbitrationTable_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItemHigh, "%3u: ", i);
|
|
tempItemLow = proto_tree_add_item(VLArbitrationTable_port_tree, hf_opa_VLArbitrationTable_VL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItemLow, " ");
|
|
local_offset += 1;
|
|
|
|
tempItem = proto_tree_add_item(VLArbitrationTable_port_tree, hf_opa_VLArbitrationTable_Weight, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_item_prepend_text(tempItem, " ");
|
|
}
|
|
} else if (Section == 3) {
|
|
for (i = 0; i < 32; i++) {
|
|
tempItemLow = proto_tree_add_item(VLArbitrationTable_port_tree, hf_opa_VLArbitrationTable_Matrix, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_item_prepend_text(tempItemLow, "%3u: ", i);
|
|
}
|
|
local_offset += 128;
|
|
} else {
|
|
local_offset += 256;
|
|
}
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse LinearForwardingTable Attribute */
|
|
static gint parse_LinearForwardingTable(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *LinearForwardingTable_header_item;
|
|
proto_tree *LinearForwardingTable_header_tree;
|
|
proto_item *tempItemLow;
|
|
proto_tree *tempBlock_tree;
|
|
guint b, i, Block_num, Num_blocks;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
if (MAD->MgmtClass == SUBNADMN) {
|
|
Num_blocks = 1;
|
|
Block_num = tvb_get_ntohl(tvb, local_offset - 4) & 0x0003FFFF;
|
|
} else {
|
|
Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
Block_num = (MAD->AttributeModifier & 0x0003FFFF);
|
|
}
|
|
|
|
LinearForwardingTable_header_item = proto_tree_add_item(parentTree, hf_opa_LinearForwardingTable, tvb, local_offset, 64 * Num_blocks, ENC_NA);
|
|
LinearForwardingTable_header_tree = proto_item_add_subtree(LinearForwardingTable_header_item, ett_linearforwardingtable);
|
|
for (b = Block_num; b < (Block_num + Num_blocks); b++) {
|
|
tempBlock_tree = proto_tree_add_subtree_format(LinearForwardingTable_header_tree, tvb, local_offset, 64,
|
|
ett_linearforwardingtable_block, NULL, "Linear Forwarding Table Block %u", b);
|
|
|
|
for (i = 0; i < 64; i++) {
|
|
tempItemLow = proto_tree_add_item(tempBlock_tree, hf_opa_LinearForwardingTable_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_item_prepend_text(tempItemLow, "%3u: ", i);
|
|
}
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse MulticastForwardingTable Attribute */
|
|
static gint parse_MulticastForwardingTable(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *MulticastForwardingTable_header_item;
|
|
proto_tree *MulticastForwardingTable_header_tree;
|
|
proto_item *tempItem;
|
|
proto_tree *tempBlock_tree;
|
|
guint b, i, Block_num, Num_blocks, Pos;
|
|
const gchar *Position;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
if (MAD->MgmtClass == SUBNADMN) {
|
|
Num_blocks = 1;
|
|
Pos = 0;
|
|
Block_num = tvb_get_ntohl(tvb, local_offset - 4) & 0x001FFFFF;
|
|
} else {
|
|
Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
Pos = (MAD->AttributeModifier & 0x00C00000) >> 22;
|
|
Block_num = (MAD->AttributeModifier & 0x000FFFFF);
|
|
}
|
|
Position = val_to_str_const(Pos, GroupTablePosition, "Unknown");
|
|
|
|
MulticastForwardingTable_header_item = proto_tree_add_item(parentTree, hf_opa_MulticastForwardingTable, tvb, local_offset, 64 * Num_blocks, ENC_NA);
|
|
MulticastForwardingTable_header_tree = proto_item_add_subtree(MulticastForwardingTable_header_item, ett_multicastforwardingtable);
|
|
for (b = Block_num; b < (Block_num + Num_blocks); b++) {
|
|
tempBlock_tree = proto_tree_add_subtree_format(MulticastForwardingTable_header_tree, tvb, local_offset, 64,
|
|
ett_multicastforwardingtable_block, NULL, "Multicast Forwarding Table Block %u, Ports %s", b, Position);
|
|
|
|
for (i = 0; i < 8; i++) {
|
|
tempItem = proto_tree_add_item(tempBlock_tree, hf_opa_MulticastForwardingTable_PortMask, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_item_prepend_text(tempItem, "%3u: ", i);
|
|
}
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse PortGroupForwardingTable Attribute */
|
|
static gint parse_PortGroupForwardingTable(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *PortGroupForwardingTable_header_item;
|
|
proto_tree *PortGroupForwardingTable_header_tree;
|
|
proto_item *tempItemLow;
|
|
proto_tree *tempBlock_tree;
|
|
guint b, i, Block_num, Num_blocks;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
if (MAD->MgmtClass == SUBNADMN) {
|
|
Num_blocks = 1;
|
|
Block_num = tvb_get_ntohl(tvb, local_offset - 4) & 0x0003FFFF;
|
|
} else {
|
|
Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
Block_num = (MAD->AttributeModifier & 0x0003FFFF);
|
|
}
|
|
|
|
PortGroupForwardingTable_header_item = proto_tree_add_item(parentTree, hf_opa_PortGroupForwardingTable, tvb, local_offset, 64 * Num_blocks, ENC_NA);
|
|
PortGroupForwardingTable_header_tree = proto_item_add_subtree(PortGroupForwardingTable_header_item, ett_portgroupforwardingtable);
|
|
|
|
for (b = Block_num; b < (Block_num + Num_blocks); b++) {
|
|
tempBlock_tree = proto_tree_add_subtree_format(PortGroupForwardingTable_header_tree, tvb, local_offset, 64,
|
|
ett_portgroupforwardingtable_block, NULL, "Port Group Forwarding Table Block %u", b);
|
|
|
|
for (i = 0; i < 64; i++) {
|
|
tempItemLow = proto_tree_add_item(tempBlock_tree, hf_opa_PortGroupForwardingTable_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_item_prepend_text(tempItemLow, "%3u: ", i);
|
|
}
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse PortGroupTable Attribute */
|
|
static gint parse_PortGroupTable(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *PortGroupTable_header_item;
|
|
proto_tree *PortGroupTable_header_tree;
|
|
proto_item *tempItemLow;
|
|
proto_tree *tempBlock_tree;
|
|
guint b, i, Block_num, Num_blocks, Pos;
|
|
const gchar *Position;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
if (MAD->MgmtClass == SUBNADMN) {
|
|
Num_blocks = 1;
|
|
Pos = 0;
|
|
Block_num = tvb_get_guint8(tvb, local_offset - 3) & 0x1F;
|
|
} else {
|
|
Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
Pos = (MAD->AttributeModifier & 0x00C00000) >> 22;
|
|
Block_num = (MAD->AttributeModifier & 0x0000001F);
|
|
}
|
|
Position = val_to_str_const(Pos, GroupTablePosition, "Unknown");
|
|
|
|
PortGroupTable_header_item = proto_tree_add_item(parentTree, hf_opa_PortGroupTable, tvb, local_offset, 64 * Num_blocks, ENC_NA);
|
|
PortGroupTable_header_tree = proto_item_add_subtree(PortGroupTable_header_item, ett_portgrouptable);
|
|
|
|
for (b = Block_num; b < (Block_num + Num_blocks); b++) {
|
|
tempBlock_tree = proto_tree_add_subtree_format(PortGroupTable_header_tree, tvb, local_offset, 64,
|
|
ett_portgrouptable_block, NULL, "Port Group Table Block %u, Ports %s", b, Position);
|
|
|
|
for (i = 0; i < 8; i++) {
|
|
tempItemLow = proto_tree_add_item(tempBlock_tree, hf_opa_PortGroupTable_PortMask, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_item_prepend_text(tempItemLow, "%3u: ", i);
|
|
}
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse SMInfo Attribute */
|
|
static gint parse_SMInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *SMInfo_header_item;
|
|
proto_tree *SMInfo_header_tree;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
SMInfo_header_item = proto_tree_add_item(parentTree, hf_opa_SMInfo, tvb, local_offset, 26, ENC_NA);
|
|
SMInfo_header_tree = proto_item_add_subtree(SMInfo_header_item, ett_sminfo);
|
|
|
|
proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_GUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_SM_Key, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_ActCount, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_ElapsedTime, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_Priority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_ElevatedPriority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_InitialPriority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_SMState, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse LedInfo Attribute */
|
|
static gint parse_LedInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *LedInfo_header_item;
|
|
proto_tree *LedInfo_header_tree;
|
|
proto_item *tempItemHigh;
|
|
proto_item *tempItemLow;
|
|
guint p, Port_num, Num_ports;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
Port_num = (MAD->AttributeModifier & 0x000000FF);
|
|
|
|
LedInfo_header_item = proto_tree_add_item(parentTree, hf_opa_LedInfo, tvb, local_offset, 8 * Num_ports, ENC_NA);
|
|
LedInfo_header_tree = proto_item_add_subtree(LedInfo_header_item, ett_ledinfo);
|
|
|
|
for (p = Port_num; p < (Port_num + Num_ports); p++) {
|
|
tempItemHigh = proto_tree_add_item(LedInfo_header_tree, hf_opa_LedInfo_LedMask, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItemHigh, "Port %3u: ", p);
|
|
tempItemLow = proto_tree_add_item(LedInfo_header_tree, hf_opa_LedInfo_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItemLow, " ");
|
|
local_offset += 4;
|
|
proto_tree_add_item(LedInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse CableInfo Attribute */
|
|
static gint parse_CableInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *CableInfo_header_item;
|
|
proto_tree *CableInfo_header_tree;
|
|
proto_item *tempItemLow;
|
|
guint i, Port_num, Data_Len, start_addr;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
start_addr = (MAD->AttributeModifier & 0x7FF80000) >> 19;
|
|
Port_num = (MAD->AttributeModifier & 0x000000FF);
|
|
Data_Len = ((MAD->AttributeModifier & 0x0007E000) >> 13) + 1;
|
|
|
|
CableInfo_header_item = proto_tree_add_item(parentTree, hf_opa_CableInfo, tvb, local_offset, Data_Len, ENC_NA);
|
|
proto_item_set_text(CableInfo_header_item, "Cable Info on Port %u", Port_num);
|
|
CableInfo_header_tree = proto_item_add_subtree(CableInfo_header_item, ett_cableinfo);
|
|
|
|
proto_tree_add_item(CableInfo_header_tree, hf_opa_CableInfo_DataStream, tvb, local_offset, Data_Len, ENC_ASCII | ENC_NA);
|
|
for (i = 0; i < Data_Len; i++) {
|
|
tempItemLow = proto_tree_add_item(CableInfo_header_tree, hf_opa_CableInfo_Data, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItemLow, "0x%04X: ", i + start_addr);
|
|
local_offset += 1;
|
|
}
|
|
return local_offset;
|
|
}
|
|
/* Parse BufferControlTable Attribute */
|
|
static gint parse_BufferControlTable(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *BufferControlTable_header_item;
|
|
proto_tree *BufferControlTable_header_tree;
|
|
proto_item *tempItemLow;
|
|
proto_item *tempItemHigh;
|
|
proto_tree *tempBlock_tree;
|
|
guint p, i, Port_num, Num_ports;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
if (MAD->MgmtClass == SUBNADMN) {
|
|
Num_ports = 1;
|
|
Port_num = tvb_get_guint8(tvb, local_offset - 4);
|
|
} else {
|
|
Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
Port_num = (MAD->AttributeModifier & 0x000000FF);
|
|
}
|
|
|
|
BufferControlTable_header_item = proto_tree_add_item(parentTree, hf_opa_BufferControlTable, tvb, local_offset, (4 + 32 * 4) * Num_ports, ENC_NA);
|
|
BufferControlTable_header_tree = proto_item_add_subtree(BufferControlTable_header_item, ett_buffercontroltable);
|
|
|
|
for (p = Port_num; p < Port_num + Num_ports; p++) {
|
|
tempBlock_tree = proto_tree_add_subtree_format(BufferControlTable_header_tree, tvb, local_offset, (4 + 32 * 4),
|
|
ett_buffercontroltable_port, NULL, "Buffer Control Table Port %u", p);
|
|
|
|
proto_tree_add_item(tempBlock_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(tempBlock_tree, hf_opa_BufferControlTable_TxOverallSharedLimit, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
for (i = 0; i < 32; i++) {
|
|
tempItemHigh = proto_tree_add_item(tempBlock_tree, hf_opa_BufferControlTable_TxSharedLimit, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
tempItemLow = proto_tree_add_item(tempBlock_tree, hf_opa_BufferControlTable_TxDedicatedLimit, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_item_prepend_text(tempItemHigh, "VL %2u: ", i);
|
|
proto_item_prepend_text(tempItemLow, " ");
|
|
}
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse CongestionInfo Attribute */
|
|
static gint parse_CongestionInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *CongestionInfo_header_item;
|
|
proto_tree *CongestionInfo_header_tree;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
CongestionInfo_header_item = proto_tree_add_item(parentTree, hf_opa_CongestionInfo, tvb, local_offset, 4, ENC_NA);
|
|
CongestionInfo_header_tree = proto_item_add_subtree(CongestionInfo_header_item, ett_congestioninfo);
|
|
|
|
proto_tree_add_item(CongestionInfo_header_tree, hf_opa_CongestionInfo_CongestionInfo, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(CongestionInfo_header_tree, hf_opa_CongestionInfo_ControlTableCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(CongestionInfo_header_tree, hf_opa_CongestionInfo_CongestionLogLength, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse SwitchCongestionLog Attribute */
|
|
static gint parse_SwitchCongestionLog(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *SwitchCongestionLog_header_item;
|
|
proto_tree *SwitchCongestionLog_header_tree;
|
|
proto_tree *SwitchCongestionLog_Entry_tree;
|
|
guint i;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
SwitchCongestionLog_header_item = proto_tree_add_item(parentTree, hf_opa_SwitchCongestionLog, tvb, local_offset, 40 + (96 * 16), ENC_NA);
|
|
SwitchCongestionLog_header_tree = proto_item_add_subtree(SwitchCongestionLog_header_item, ett_switchcongestionlog);
|
|
|
|
proto_tree_add_item(SwitchCongestionLog_header_tree, hf_opa_SwitchCongestionLog_LogType, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchCongestionLog_header_tree, hf_opa_SwitchCongestionLog_CongestionFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchCongestionLog_header_tree, hf_opa_SwitchCongestionLog_LogEventsCounter, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(SwitchCongestionLog_header_tree, hf_opa_SwitchCongestionLog_CurrentTimeStamp, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchCongestionLog_header_tree, hf_opa_SwitchCongestionLog_PortMap, tvb, local_offset, 32, ENC_NA);
|
|
local_offset += 32;
|
|
|
|
for (i = 0; i < 96; i++) {
|
|
SwitchCongestionLog_Entry_tree = proto_tree_add_subtree_format(SwitchCongestionLog_header_tree, tvb, local_offset, 16,
|
|
ett_switchcongestionlog_entry, NULL, "Switch Congestion Log Entry %u", i);
|
|
|
|
proto_tree_add_item(SwitchCongestionLog_Entry_tree, hf_opa_SwitchCongestionLog_SLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchCongestionLog_Entry_tree, hf_opa_SwitchCongestionLog_DLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchCongestionLog_Entry_tree, hf_opa_SwitchCongestionLog_SC, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SwitchCongestionLog_Entry_tree, hf_opa_SwitchCongestionLog_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchCongestionLog_Entry_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(SwitchCongestionLog_Entry_tree, hf_opa_SwitchCongestionLog_TimeStamp, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse SwitchCongestionSetting Attribute */
|
|
static gint parse_SwitchCongestionSetting(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *SwitchCongestionSetting_header_item;
|
|
proto_tree *SwitchCongestionSetting_header_tree;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
SwitchCongestionSetting_header_item = proto_tree_add_item(parentTree, hf_opa_SwitchCongestionSetting, tvb, local_offset, 64, ENC_NA);
|
|
SwitchCongestionSetting_header_tree = proto_item_add_subtree(SwitchCongestionSetting_header_item, ett_switchcongestionsetting);
|
|
|
|
proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_Control_Map, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_Victim_Mask, tvb, local_offset, 32, ENC_NA);
|
|
local_offset += 32;
|
|
proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_Credit_Mask, tvb, local_offset, 32, ENC_NA);
|
|
local_offset += 32;
|
|
proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_Threshold, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_reserved1, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_Packet_Size, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_CS_Threshold, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_CS_ReturnDelay, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_Marking_Rate, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse SwitchPortCongestionSetting Attribute */
|
|
static gint parse_SwitchPortCongestionSetting(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *SwitchPortCongestionSetting_header_item;
|
|
proto_tree *SwitchPortCongestionSetting_header_tree;
|
|
proto_tree *SwitchPortCongestionSetting_Port_tree;
|
|
guint p, Num_ports, Port_num;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
if (MAD->MgmtClass == SUBNADMN) {
|
|
Num_ports = 1;
|
|
Port_num = tvb_get_guint8(tvb, local_offset - 4);
|
|
} else {
|
|
Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
Port_num = (MAD->AttributeModifier & 0x000000FF);
|
|
}
|
|
|
|
SwitchPortCongestionSetting_header_item = proto_tree_add_item(parentTree, hf_opa_SwitchPortCongestionSetting, tvb, local_offset, 4 * Num_ports, ENC_NA);
|
|
SwitchPortCongestionSetting_header_tree = proto_item_add_subtree(SwitchPortCongestionSetting_header_item, ett_switchportcongestionsetting);
|
|
|
|
for (p = Port_num; p < Port_num + Num_ports; p++) {
|
|
SwitchPortCongestionSetting_Port_tree = proto_tree_add_subtree_format(SwitchPortCongestionSetting_header_tree, tvb, local_offset, 4,
|
|
ett_switchportcongestionsetting_port, NULL, "Switch Port Congestion Setting on Port %u", p);
|
|
|
|
proto_tree_add_item(SwitchPortCongestionSetting_Port_tree, hf_opa_SwitchPortCongestionSetting_Valid, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SwitchPortCongestionSetting_Port_tree, hf_opa_SwitchPortCongestionSetting_Control_Type, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SwitchPortCongestionSetting_Port_tree, hf_opa_SwitchPortCongestionSetting_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SwitchPortCongestionSetting_Port_tree, hf_opa_SwitchPortCongestionSetting_Threshold, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchPortCongestionSetting_Port_tree, hf_opa_SwitchPortCongestionSetting_Packet_Size, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SwitchPortCongestionSetting_Port_tree, hf_opa_SwitchPortCongestionSetting_Marking_Rate, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse HFICongestionLog Attribute */
|
|
static gint parse_HFICongestionLog(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *HFICongestionLog_header_item;
|
|
proto_tree *HFICongestionLog_header_tree;
|
|
proto_tree *HFICongestionLog_Entry_tree;
|
|
guint i;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
HFICongestionLog_header_item = proto_tree_add_item(parentTree, hf_opa_HFICongestionLog, tvb, local_offset, 12 + (96 * 16), ENC_NA);
|
|
HFICongestionLog_header_tree = proto_item_add_subtree(HFICongestionLog_header_item, ett_hficongestionlog);
|
|
|
|
proto_tree_add_item(HFICongestionLog_header_tree, hf_opa_HFICongestionLog_LogType, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(HFICongestionLog_header_tree, hf_opa_HFICongestionLog_CongestionFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(HFICongestionLog_header_tree, hf_opa_HFICongestionLog_ThresholdEventCounter, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(HFICongestionLog_header_tree, hf_opa_HFICongestionLog_CurrentTimeStamp, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(HFICongestionLog_header_tree, hf_opa_HFICongestionLog_ThresholdCongestionEventMap, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
for (i = 0; i < 96; i++) {
|
|
HFICongestionLog_Entry_tree = proto_tree_add_subtree_format(HFICongestionLog_header_tree, tvb, local_offset, 16,
|
|
ett_hficongestionlog_entry, NULL, "HFI Congestion Log Entry %u", i);
|
|
|
|
proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_HFICongestionLog_Local_QP_CN_Entry, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_HFICongestionLog_Remote_QP_Number_CN_Entry, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_HFICongestionLog_SL_CN_Entry, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_HFICongestionLog_Service_Type_CN_Entry, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_HFICongestionLog_Remote_LID_CN_Entry, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_HFICongestionLog_TimeStamp_CN_Entry, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse HFICongestionSetting Attribute*/
|
|
static gint parse_HFICongestionSetting(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint i;
|
|
gint local_offset = *offset;
|
|
proto_item *HFICongestionSetting_header_item;
|
|
proto_tree *HFICongestionSetting_header_tree;
|
|
proto_item *tempItem;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
HFICongestionSetting_header_item = proto_tree_add_item(parentTree, hf_opa_HFICongestionSetting, tvb, local_offset, 6 + 32 * 6, ENC_NA);
|
|
HFICongestionSetting_header_tree = proto_item_add_subtree(HFICongestionSetting_header_item, ett_hficongestionsetting);
|
|
|
|
proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_HFICongestionSetting_Control_Map, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_HFICongestionSetting_Port_Control, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
for (i = 0; i < 32; i++) {
|
|
tempItem = proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_HFICongestionSetting_CCTI_Increase, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItem, "%3u: ", i);
|
|
local_offset += 1;
|
|
|
|
tempItem = proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItem, " ");
|
|
local_offset += 1;
|
|
|
|
tempItem = proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_HFICongestionSetting_CCTI_Timer, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItem, " ");
|
|
local_offset += 2;
|
|
|
|
tempItem = proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_HFICongestionSetting_TriggerThreshold, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItem, " ");
|
|
local_offset += 1;
|
|
|
|
tempItem = proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_HFICongestionSetting_CCTI_Min, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItem, " ");
|
|
local_offset += 1;
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse HFICongestionControlTable Attribute*/
|
|
static gint parse_HFICongestionControlTable(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *HFICongestionControlTable_header_item;
|
|
proto_tree *HFICongestionControlTable_header_tree;
|
|
proto_item *tempItem;
|
|
proto_tree *tempBlock_tree;
|
|
guint b, i, Num_blocks, Block_Num;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
if (MAD->MgmtClass == SUBNADMN) {
|
|
Num_blocks = 1;
|
|
Block_Num = tvb_get_ntohs(tvb, local_offset - 4);
|
|
} else { /* SM LID and SM DR */
|
|
Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
Block_Num = (MAD->AttributeModifier & 0x000000FF);
|
|
}
|
|
|
|
HFICongestionControlTable_header_item = proto_tree_add_item(parentTree, hf_opa_HFICongestionControlTable, tvb, local_offset, 2 + ((64 * 2) * Num_blocks), ENC_NA);
|
|
HFICongestionControlTable_header_tree = proto_item_add_subtree(HFICongestionControlTable_header_item, ett_hficongestioncontroltable);
|
|
|
|
proto_tree_add_item(HFICongestionControlTable_header_tree, hf_opa_HFICongestionControlTable_CCTI_Limit, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
for (b = Block_Num; b < Block_Num + Num_blocks; b++) {
|
|
tempBlock_tree = proto_tree_add_subtree_format(HFICongestionControlTable_header_tree, tvb, local_offset, 128,
|
|
ett_hficongestioncontroltable_block, NULL, "HFI Congestion Control Table Block %u", b);
|
|
|
|
for (i = 0; i < 64; i++) {
|
|
tempItem = proto_tree_add_item(tempBlock_tree, hf_opa_HFICongestionControlTable_CCT_Shift, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_item_prepend_text(tempItem, "%3u: ", i);
|
|
tempItem = proto_tree_add_item(tempBlock_tree, hf_opa_HFICongestionControlTable_CCT_Multiplier, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_item_prepend_text(tempItem, " ");
|
|
|
|
}
|
|
}
|
|
return local_offset;
|
|
}
|
|
/* Call appropriate parsing function */
|
|
static gboolean call_SUBM_Parser(proto_tree *parentTree, tvbuff_t *tvb, guint *offset, MAD_t *MAD, guint16 AttributeID)
|
|
{
|
|
proto_tree *SUBM_Attribute_header_tree = parentTree;
|
|
guint local_offset = *offset;
|
|
|
|
if (!tvb_bytes_exist(tvb, local_offset, 8))
|
|
return TRUE;
|
|
|
|
switch (AttributeID) {
|
|
case SM_ATTR_ID_CLASS_PORT_INFO:
|
|
local_offset = parse_ClassPortInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_NOTICE:
|
|
local_offset = parse_NoticesAndTraps(SUBM_Attribute_header_tree, tvb, offset);
|
|
break;
|
|
case SM_ATTR_ID_NODE_DESCRIPTION:
|
|
local_offset = parse_NodeDescription(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_NODE_INFO:
|
|
local_offset = parse_NodeInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_SWITCH_INFO:
|
|
local_offset = parse_SwitchInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_PORT_INFO:
|
|
local_offset = parse_PortInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_PART_TABLE:
|
|
local_offset = parse_P_KeyTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_SL_SC_MAPPING_TABLE:
|
|
local_offset = parse_SLtoSCMappingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_VL_ARBITRATION:
|
|
local_offset = parse_VLArbitrationTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_LINEAR_FWD_TABLE:
|
|
local_offset = parse_LinearForwardingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_MCAST_FWD_TABLE:
|
|
local_offset = parse_MulticastForwardingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_SM_INFO:
|
|
local_offset = parse_SMInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_LED_INFO:
|
|
local_offset = parse_LedInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_CABLE_INFO:
|
|
local_offset = parse_CableInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_SC_SC_MAPPING_TABLE:
|
|
local_offset = parse_SCtoSCMappingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_SC_SL_MAPPING_TABLE:
|
|
local_offset = parse_SCtoSLMappingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_SC_VLR_MAPPING_TABLE:
|
|
case SM_ATTR_ID_SC_VLT_MAPPING_TABLE:
|
|
case SM_ATTR_ID_SC_VLNT_MAPPING_TABLE:
|
|
local_offset = parse_SCtoVLxMappingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_PORT_STATE_INFO:
|
|
local_offset = parse_PortStateInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_PORT_GROUP_FWD_TABLE:
|
|
local_offset = parse_PortGroupForwardingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_PORT_GROUP_TABLE:
|
|
local_offset = parse_PortGroupTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_BUFFER_CONTROL_TABLE:
|
|
local_offset = parse_BufferControlTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_CONGESTION_INFO:
|
|
local_offset = parse_CongestionInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_SWITCH_CONGESTION_LOG:
|
|
local_offset = parse_SwitchCongestionLog(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_SWITCH_CONGESTION_SETTING:
|
|
local_offset = parse_SwitchCongestionSetting(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_SWITCH_PORT_CONGESTION_SETTING:
|
|
local_offset = parse_SwitchPortCongestionSetting(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_HFI_CONGESTION_LOG:
|
|
local_offset = parse_HFICongestionLog(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_HFI_CONGESTION_SETTING:
|
|
local_offset = parse_HFICongestionSetting(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
case SM_ATTR_ID_HFI_CONGESTION_CONTROL_TABLE:
|
|
local_offset = parse_HFICongestionControlTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
|
|
break;
|
|
default:
|
|
return FALSE;
|
|
}
|
|
*offset = local_offset;
|
|
return TRUE;
|
|
}
|
|
|
|
/* Parse Aggregate Attribute */
|
|
static gint parse_Aggregate(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint i;
|
|
guint requestLength;
|
|
gint numAttributes;
|
|
gint local_offset = *offset;
|
|
gint saved_offset;
|
|
guint16 LocalAttributeID = 0;
|
|
gboolean AggregatError = FALSE;
|
|
proto_item *Aggregate_header_item;
|
|
proto_item *Aggregate_Length_item;
|
|
proto_item *Aggregate_Error_item;
|
|
proto_tree *Aggregate_header_tree;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
numAttributes = MAD->AttributeModifier & 0x000000FF;
|
|
|
|
for (i = 0; i < numAttributes; i++) {
|
|
requestLength = (tvb_get_guint8(tvb, local_offset + 3) & 0x7F) * 8;
|
|
if (i == numAttributes - 1 && MAD->Method == METHOD_GET) {
|
|
Aggregate_header_item = proto_tree_add_item(parentTree, hf_opa_Aggregate, tvb, local_offset, 8, ENC_NA);
|
|
} else {
|
|
Aggregate_header_item = proto_tree_add_item(parentTree, hf_opa_Aggregate, tvb, local_offset, requestLength + 8, ENC_NA);
|
|
}
|
|
Aggregate_header_tree = proto_item_add_subtree(Aggregate_header_item, ett_aggregate);
|
|
|
|
proto_tree_add_item(Aggregate_header_tree, hf_opa_Aggregate_AttributeID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
LocalAttributeID = tvb_get_ntohs(tvb, local_offset);
|
|
local_offset += 2;
|
|
proto_item_set_text(Aggregate_header_item, "Aggregate %u: %s", i + 1, val_to_str(LocalAttributeID, SUBM_Attributes, "Unknown Attribute Type! (0x%02x)"));
|
|
|
|
AggregatError = (gboolean)tvb_get_bits(tvb, local_offset * 8, 1, ENC_BIG_ENDIAN);
|
|
Aggregate_Error_item = proto_tree_add_item(Aggregate_header_tree, hf_opa_Aggregate_Error, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
if (AggregatError)
|
|
expert_add_info(NULL, Aggregate_Error_item, &ei_opa_aggregate_error);
|
|
|
|
Aggregate_Length_item = proto_tree_add_item(Aggregate_header_tree, hf_opa_Aggregate_RequestLength, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_item_append_text(Aggregate_Length_item, " (%u Bytes)", requestLength);
|
|
local_offset += 2;
|
|
|
|
MAD->AttributeModifier = tvb_get_ntohl(tvb, local_offset);
|
|
MAD->AttributeID = LocalAttributeID;
|
|
local_offset = parse_MAD_AttributeModifier(Aggregate_header_tree, tvb, &local_offset, MAD);
|
|
if (i == numAttributes - 1 && MAD->Method == METHOD_GET) {
|
|
/* Do Nothing */
|
|
} else {
|
|
saved_offset = local_offset;
|
|
call_SUBM_Parser(Aggregate_header_tree, tvb, &local_offset, MAD, LocalAttributeID);
|
|
if (local_offset != (saved_offset + (gint)requestLength)) {
|
|
local_offset = saved_offset + (gint)requestLength;
|
|
}
|
|
}
|
|
}
|
|
return local_offset;
|
|
}
|
|
/* Parse the attribute from a Subnet Management Packet. */
|
|
static gboolean parse_SUBM_Attribute(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
if (MAD->AttributeID == SM_ATTR_ID_AGGREGATE) {
|
|
*offset = parse_Aggregate(parentTree, tvb, &local_offset, MAD);
|
|
return TRUE;
|
|
} else
|
|
return call_SUBM_Parser(parentTree, tvb, offset, MAD, MAD->AttributeID);
|
|
}
|
|
/* Parse the Method from the MAD Common Header. */
|
|
static void label_SUBM_Method(proto_item *SubMItem, MAD_t *MAD, packet_info *pinfo)
|
|
{
|
|
const guchar *label = val_to_str_const(MAD->Method, SUBM_Methods, "(Unknown SM Method!)");
|
|
proto_item_append_text(SubMItem, " %s", label);
|
|
col_append_str(pinfo->cinfo, COL_INFO, label);
|
|
}
|
|
/* Parse the Attribute from the MAD Common Header */
|
|
static void label_SUBM_Attribute(proto_item *SubMItem, MAD_t *MAD, packet_info *pinfo)
|
|
{
|
|
const guchar *label = val_to_str_const(MAD->AttributeID, SUBM_Attributes, "Attribute (Unknown SM Attribute!)");
|
|
proto_item_append_text(SubMItem, "%s", &label[11]);
|
|
col_append_str(pinfo->cinfo, COL_INFO, &label[11]);
|
|
}
|
|
/* Parse Subnet Management (LID Routed) */
|
|
static void parse_SUBN_LID_ROUTED(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
MAD_t MAD;
|
|
gint local_offset;
|
|
proto_item *SM_LID_header_item;
|
|
proto_tree *SM_LID_header_tree;
|
|
|
|
if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
|
|
return;
|
|
}
|
|
local_offset = *offset;
|
|
|
|
SM_LID_header_item = proto_tree_add_item(parentTree, hf_opa_sm_lid, tvb, local_offset, -1, ENC_NA);
|
|
SM_LID_header_tree = proto_item_add_subtree(SM_LID_header_item, ett_sm_lid);
|
|
|
|
proto_tree_add_item(SM_LID_header_tree, hf_opa_sm_m_key, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
label_SUBM_Method(SM_LID_header_item, &MAD, pinfo);
|
|
label_SUBM_Attribute(SM_LID_header_item, &MAD, pinfo);
|
|
|
|
*offset = local_offset;
|
|
if (!pref_parse_on_mad_status_error && MAD.Status) {
|
|
local_offset += tvb_captured_length_remaining(tvb, *offset);
|
|
} else if (!parse_SUBM_Attribute(SM_LID_header_tree, tvb, &local_offset, &MAD)) {
|
|
expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
|
|
"Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
|
|
local_offset += tvb_captured_length_remaining(tvb, *offset);
|
|
}
|
|
*offset = local_offset;
|
|
}
|
|
|
|
/* Parse Subnet Management (Directed Route) */
|
|
static void parse_SUBN_DIRECTED_ROUTE(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
MAD_t MAD;
|
|
gint local_offset;
|
|
proto_item *SM_DR_header_item;
|
|
proto_tree *SM_DR_header_tree;
|
|
|
|
if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
|
|
return;
|
|
}
|
|
local_offset = *offset;
|
|
|
|
SM_DR_header_item = proto_tree_add_item(parentTree, hf_opa_sm_dr, tvb, local_offset, -1, ENC_NA);
|
|
SM_DR_header_tree = proto_item_add_subtree(SM_DR_header_item, ett_sm_dr);
|
|
|
|
proto_tree_add_item(SM_DR_header_item, hf_opa_sm_m_key, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
label_SUBM_Method(SM_DR_header_item, &MAD, pinfo);
|
|
label_SUBM_Attribute(SM_DR_header_item, &MAD, pinfo);
|
|
|
|
proto_tree_add_item(SM_DR_header_tree, hf_opa_sm_dr_slid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SM_DR_header_tree, hf_opa_sm_dr_dlid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SM_DR_header_tree, hf_opa_sm_dr_initial_path, tvb, local_offset, 64, ENC_NA);
|
|
local_offset += 64;
|
|
proto_tree_add_item(SM_DR_header_tree, hf_opa_sm_dr_return_path, tvb, local_offset, 64, ENC_NA);
|
|
local_offset += 64;
|
|
proto_tree_add_item(SM_DR_header_tree, hf_opa_sm_dr_reserved64, tvb, local_offset, 8, ENC_NA);
|
|
local_offset += 8;
|
|
*offset = local_offset;
|
|
if (!pref_parse_on_mad_status_error && (MAD.Status & 0x7FFF)) {
|
|
local_offset += tvb_captured_length_remaining(tvb, *offset);
|
|
} else if (!parse_SUBM_Attribute(SM_DR_header_tree, tvb, &local_offset, &MAD)) {
|
|
expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
|
|
"Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
|
|
local_offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
*offset = local_offset;
|
|
}
|
|
|
|
static gint parse_PortInfoRecord(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_tree * PortInfoRecord_LinkDownReason_tree,
|
|
*PortInfoRecord_LinkDownReason_Entry_tree;
|
|
gint i;
|
|
local_offset = parse_PortInfo(parentTree, tvb, &local_offset, MAD);
|
|
|
|
PortInfoRecord_LinkDownReason_tree = proto_tree_add_subtree(parentTree, tvb, local_offset, 8 * 16,
|
|
ett_portinforecord_linkdownreason, NULL, "Port Info Record LinkDown Reason");
|
|
for (i = 0; i < 8; i++) {
|
|
PortInfoRecord_LinkDownReason_Entry_tree = proto_tree_add_subtree_format(PortInfoRecord_LinkDownReason_tree, tvb, local_offset, 16,
|
|
ett_portinforecord_linkdownreason_entry, NULL, "Link Down Reason Entry %u", i);
|
|
|
|
proto_tree_add_item(PortInfoRecord_LinkDownReason_Entry_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_NA);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PortInfoRecord_LinkDownReason_Entry_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_NA);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortInfoRecord_LinkDownReason_Entry_tree, hf_opa_PortInfoRecord_LinkDownReason_NeighborLinkDownReason, tvb, local_offset, 1, ENC_NA);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortInfoRecord_LinkDownReason_Entry_tree, hf_opa_PortInfoRecord_LinkDownReason_LinkDownReason, tvb, local_offset, 1, ENC_NA);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortInfoRecord_LinkDownReason_Entry_tree, hf_opa_PortInfoRecord_LinkDownReason_Timestamp, tvb, local_offset, 8, ENC_NA);
|
|
local_offset += 8;
|
|
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse LinkRecord Attribute*/
|
|
static gint parse_LinkRecord(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *LinkRecord_header_item;
|
|
proto_tree *LinkRecord_header_tree;
|
|
|
|
if (!parentTree) {
|
|
return *offset;
|
|
}
|
|
|
|
LinkRecord_header_item = proto_tree_add_item(parentTree, hf_opa_LinkRecord, tvb, local_offset, 7, ENC_NA);
|
|
LinkRecord_header_tree = proto_item_add_subtree(LinkRecord_header_item, ett_linkrecord);
|
|
|
|
proto_tree_add_item(LinkRecord_header_tree, hf_opa_LinkRecord_ToPort, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(LinkRecord_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(LinkRecord_header_tree, hf_opa_LinkRecord_ToLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
return local_offset;
|
|
|
|
}
|
|
|
|
/* Parse ServiceRecord Attribute*/
|
|
static gint parse_ServiceRecord(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *ServiceRecord_header_item;
|
|
proto_tree *ServiceRecord_header_tree;
|
|
proto_item *tempData;
|
|
|
|
if (!parentTree) {
|
|
return *offset;
|
|
}
|
|
|
|
ServiceRecord_header_item = proto_tree_add_item(parentTree, hf_opa_ServiceRecord, tvb, local_offset, 152, ENC_NA);
|
|
ServiceRecord_header_tree = proto_item_add_subtree(ServiceRecord_header_item, ett_servicerecord);
|
|
|
|
proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceLease, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(ServiceRecord_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceKey, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
|
|
tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_item_append_text(tempData, "(ServiceData 8.1, 8.16)");
|
|
tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_item_append_text(tempData, "(ServiceData 16.1, 16.8)");
|
|
tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_item_append_text(tempData, "(ServiceData 32.1, 32.4)");
|
|
tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_item_append_text(tempData, "(ServiceData 64.1, 64.2)");
|
|
|
|
return local_offset;
|
|
|
|
}
|
|
|
|
/* Parse PathRecord Attribute*/
|
|
static gint parse_PathRecord(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item * PathRecord_header_item;
|
|
proto_tree * PathRecord_header_tree;
|
|
|
|
if (!parentTree) {
|
|
return *offset;
|
|
}
|
|
|
|
PathRecord_header_item = proto_tree_add_item(parentTree, hf_opa_PathRecord, tvb, local_offset, 64, ENC_NA);
|
|
PathRecord_header_tree = proto_item_add_subtree(PathRecord_header_item, ett_pathrecord);
|
|
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_NA);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_DGID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_SGID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_DLID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_SLID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_RawTraffic, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_FlowLabel, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_HopLimit, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_Reversible, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_NumbPath, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_QosType, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_reserved2, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_QosPriority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_SL, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_MTUSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_RateSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_PacketLifeTimeSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_Preference, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PathRecord_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse MCMemberRecord Attribute*/
|
|
static gint parse_MCMemberRecord(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *MCMemberRecord_header_item;
|
|
proto_tree *MCMemberRecord_header_tree;
|
|
|
|
if (!parentTree) {
|
|
return *offset;
|
|
}
|
|
|
|
MCMemberRecord_header_item = proto_tree_add_item(parentTree, hf_opa_MCMemberRecord, tvb, local_offset, 24, ENC_NA);
|
|
MCMemberRecord_header_tree = proto_item_add_subtree(MCMemberRecord_header_item, ett_mcmemberrecord);
|
|
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_Q_Key, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_MTUSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_RateSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_PacketLifeTimeSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_SL, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_HopLimit, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_Scope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_JoinSendOnlyMember, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_JoinNonMember, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_JoinFullMember, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_ProxyJoin, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_reserved3, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_MLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
return local_offset;
|
|
|
|
}
|
|
|
|
/* Parse TraceRecord Attribute*/
|
|
static gint parse_TraceRecord(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *TraceRecord_header_item;
|
|
proto_tree *TraceRecord_header_tree;
|
|
|
|
if (!parentTree) {
|
|
return *offset;
|
|
}
|
|
|
|
TraceRecord_header_item = proto_tree_add_item(parentTree, hf_opa_TraceRecord, tvb, local_offset, 40, ENC_NA);
|
|
TraceRecord_header_tree = proto_item_add_subtree(TraceRecord_header_item, ett_tracerecord);
|
|
|
|
proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_IDGeneration, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(TraceRecord_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_NodeType, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_EntryPort, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_ExitPort, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(TraceRecord_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_NodeID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_ChassisID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_EntryPortID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_ExitPortID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse MultiPathRecord Attribute*/
|
|
static gint parse_MultiPathRecord_GID(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *MultiPathRecord_header_item;
|
|
proto_tree *MultiPathRecord_header_tree;
|
|
proto_item *SDGID;
|
|
guint8 SGIDCount;
|
|
guint8 DGIDCount;
|
|
guint32 i;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
SGIDCount = tvb_get_guint8(tvb, local_offset + 14);
|
|
DGIDCount = tvb_get_guint8(tvb, local_offset + 15);
|
|
MultiPathRecord_header_item = proto_tree_add_item(parentTree, hf_opa_MultiPathRecord, tvb, local_offset, 32 + (SGIDCount + DGIDCount) * 16, ENC_NA);
|
|
proto_item_append_text(MultiPathRecord_header_item, " (GID)");
|
|
MultiPathRecord_header_tree = proto_item_add_subtree(MultiPathRecord_header_item, ett_multipathrecord_gid);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_FlowLabel, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_HopLimit, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_Reversible, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_NumbPath, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_QoSType, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_QoSPriority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved2, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SL, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_MTUSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_RateSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_PacketLifeTimeSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_IndependenceSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_sa_ServiceID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_8B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_10B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_9B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_16B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved3, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
for (i = 0; i < SGIDCount; i++) {
|
|
SDGID = proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_item_prepend_text(SDGID, "%u: ", i);
|
|
}
|
|
for (i = 0; i < DGIDCount; i++) {
|
|
SDGID = proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_item_prepend_text(SDGID, "%u: ", i);
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse MultiPathRecord Attribute*/
|
|
static gint parse_MultiPathRecord_GUID(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *MultiPathRecord_header_item;
|
|
proto_tree *MultiPathRecord_header_tree;
|
|
proto_item *SDGUID;
|
|
guint16 SGUIDCount;
|
|
guint16 DGUIDCount;
|
|
guint32 i;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
SGUIDCount = tvb_get_ntohs(tvb, local_offset + 14);
|
|
DGUIDCount = tvb_get_ntohs(tvb, local_offset + 16);
|
|
MultiPathRecord_header_item = proto_tree_add_item(parentTree, hf_opa_MultiPathRecord, tvb, local_offset, 40 + (SGUIDCount + DGUIDCount) * 8, ENC_NA);
|
|
proto_item_append_text(MultiPathRecord_header_item, " (GUID)");
|
|
MultiPathRecord_header_tree = proto_item_add_subtree(MultiPathRecord_header_item, ett_multipathrecord_guid);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_FlowLabel, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_HopLimit, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_Reversible, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_NumbPath, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_QoSType, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_QoSPriority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved2, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SL, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_MTUSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_RateSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_PacketLifeTimeSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_IndependenceSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGUIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGUIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGUIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGUIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_8B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_10B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_9B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_16B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved3, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_ServiceID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SubnetPrefix, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
for (i = 0; i < SGUIDCount; i++) {
|
|
SDGUID = proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGUID, tvb, local_offset, 8, ENC_NA);
|
|
local_offset += 8;
|
|
proto_item_prepend_text(SDGUID, "%u: ", i);
|
|
}
|
|
for (i = 0; i < DGUIDCount; i++) {
|
|
SDGUID = proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGUID, tvb, local_offset, 8, ENC_NA);
|
|
local_offset += 8;
|
|
proto_item_prepend_text(SDGUID, "%u: ", i);
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse MultiPathRecord Attribute*/
|
|
static gint parse_MultiPathRecord_lid(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *MultiPathRecord_header_item;
|
|
proto_tree *MultiPathRecord_header_tree;
|
|
proto_item *SDLID;
|
|
guint16 SLIDCount;
|
|
guint16 DLIDCount;
|
|
guint32 i;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
SLIDCount = tvb_get_ntohs(tvb, local_offset + 14);
|
|
DLIDCount = tvb_get_ntohs(tvb, local_offset + 16);
|
|
MultiPathRecord_header_item = proto_tree_add_item(parentTree, hf_opa_MultiPathRecord, tvb, local_offset, 40 + (SLIDCount + DLIDCount) * 4, ENC_NA);
|
|
MultiPathRecord_header_tree = proto_item_add_subtree(MultiPathRecord_header_item, ett_multipathrecord_lid);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_FlowLabel, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_HopLimit, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_Reversible, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_NumbPath, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_QoSType, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_QoSPriority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved2, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SL, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_MTUSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_RateSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_PacketLifeTimeSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_IndependenceSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGUIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGUIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SLIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DLIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_8B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_10B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_9B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_16B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved3, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_ServiceID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SubnetPrefix, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
for (i = 0; i < SLIDCount; i++) {
|
|
SDLID = proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SLID, tvb, local_offset, 4, ENC_NA);
|
|
local_offset += 4;
|
|
proto_item_prepend_text(SDLID, "%u: ", i);
|
|
}
|
|
for (i = 0; i < DLIDCount; i++) {
|
|
SDLID = proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DLID, tvb, local_offset, 4, ENC_NA);
|
|
local_offset += 4;
|
|
proto_item_prepend_text(SDLID, "%u: ", i);
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse CableInfoRecord Attribute*/
|
|
static gint parse_CableInfoRecord(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *CableInfoRecord_header_item;
|
|
proto_tree *CableInfoRecord_header_tree;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
CableInfoRecord_header_item = proto_tree_add_item(parentTree, hf_opa_CableInfoRecord, tvb, local_offset, 72, ENC_NA);
|
|
CableInfoRecord_header_tree = proto_item_add_subtree(CableInfoRecord_header_item, ett_cableinforecord);
|
|
|
|
proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_Lid, tvb, local_offset, 4, ENC_NA);
|
|
local_offset += 4;
|
|
proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_Port, tvb, local_offset, 1, ENC_NA);
|
|
local_offset += 1;
|
|
proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_Length, tvb, local_offset, 1, ENC_NA);
|
|
proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_reserved, tvb, local_offset, 1, ENC_NA);
|
|
local_offset += 1;
|
|
proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_Address, tvb, local_offset, 2, ENC_NA);
|
|
proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_PortType, tvb, local_offset, 2, ENC_NA);
|
|
local_offset += 2;
|
|
proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_Data, tvb, local_offset, 64, ENC_NA);
|
|
local_offset += 64;
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse ServiceAssociationRecord Attribute*/
|
|
static gint parse_ServiceAssociationRecord(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
gint local_offset = *offset;
|
|
/* proto_item *ServiceAssociationRecord_header_item; */
|
|
proto_tree *ServiceAssociationRecord_header_tree;
|
|
|
|
if (!parentTree) {
|
|
return *offset;
|
|
}
|
|
|
|
/* ServiceAssociationRecord_header_item = proto_tree_add_item(parentTree, hf_opa_sapa, tvb, local_offset, 80, ENC_NA); */
|
|
/* proto_item_set_text(ServiceAssociationRecord_header_item, "%s", "ServiceAssociationRecord"); */
|
|
ServiceAssociationRecord_header_tree = parentTree; /* proto_item_add_subtree(ServiceAssociationRecord_header_item, ett_serviceassocrecord); */
|
|
|
|
proto_tree_add_item(ServiceAssociationRecord_header_tree, hf_opa_ServiceAssociationRecord_ServiceKey, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(ServiceAssociationRecord_header_tree, hf_opa_ServiceAssociationRecord_ServiceName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
static gint parse_VFInfoRecord(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *VFInfoRecord_header_item;
|
|
proto_tree *VFInfoRecord_header_tree;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
VFInfoRecord_header_item = proto_tree_add_item(parentTree, hf_opa_VFInfoRecord, tvb, local_offset, 128, ENC_NA);
|
|
VFInfoRecord_header_tree = proto_item_add_subtree(VFInfoRecord_header_item, ett_vfinforecord);
|
|
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_vfIndex, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_pKey, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_sa_ServiceID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_MGID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_SelectFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_MTUSpecified, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_RateSpecified, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_reserved4, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_PktLifeSpecified, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_reserved5, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_PktLifeTimeInc, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_OptionFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_BandwidthPercent, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_reserved6, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_Priority, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_RoutingSLs, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_reserved7, tvb, local_offset, 24, ENC_NA);
|
|
local_offset += 24;
|
|
|
|
return local_offset;
|
|
}
|
|
static gint parse_QuarantinedNodeRecord(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *QuarantinedNodeRecord_header_item;
|
|
proto_tree *QuarantinedNodeRecord_header_tree;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
QuarantinedNodeRecord_header_item = proto_tree_add_item(parentTree, hf_opa_QuarantinedNodeRecord, tvb, local_offset, 213, ENC_NA);
|
|
QuarantinedNodeRecord_header_tree = proto_item_add_subtree(QuarantinedNodeRecord_header_item, ett_quarantinednoderecord);
|
|
|
|
proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_TrustedLid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_TrustedPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_TrustedNodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_TrustedNeighborNodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
local_offset = parse_NodeDescription(QuarantinedNodeRecord_header_tree, tvb, &local_offset, MAD);
|
|
local_offset = parse_NodeInfo(QuarantinedNodeRecord_header_tree, tvb, &local_offset, MAD);
|
|
|
|
proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_QuarantineReasons, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_ExpectedNodeDesc, tvb, local_offset, 64, ENC_BIG_ENDIAN);
|
|
local_offset += 64;
|
|
proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_ExpectedNodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_ExpectedPortGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
return local_offset;
|
|
}
|
|
static gint parse_FabricInfoRecord(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *FabricInfoRecord_header_item;
|
|
proto_tree *FabricInfoRecord_header_tree;
|
|
|
|
if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
|
|
return *offset;
|
|
|
|
FabricInfoRecord_header_item = proto_tree_add_item(parentTree, hf_opa_FabricInfoRecord, tvb, local_offset, 132, ENC_NA);
|
|
FabricInfoRecord_header_tree = proto_item_add_subtree(FabricInfoRecord_header_item, ett_fabricinforecord);
|
|
|
|
proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumHFIs, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumSwitches, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumInternalHFILinks, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumExternalHFILinks, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumInternalISLs, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumExternalISLs, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumDegradedHFILinks, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumDegradedISLs, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumOmittedHFILinks, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumOmittedISLs, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_Reserved, tvb, local_offset, 92, ENC_NA);
|
|
local_offset += 92;
|
|
|
|
return local_offset;
|
|
}
|
|
/* Parse RID Field from Subnet Administration Packets. */
|
|
static void parse_RID(proto_tree *SA_header_tree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
|
|
if (!SA_header_tree)
|
|
return;
|
|
|
|
switch (MAD->AttributeID) {
|
|
case SA_ATTR_ID_CLASS_PORT_INFO:
|
|
break;
|
|
case SA_ATTR_ID_NOTICE:
|
|
break;
|
|
case SA_ATTR_ID_NODE_RECORD: /* NodeRecord */
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
case SA_ATTR_ID_PORTINFO_RECORD: /* PortInfoRecord */
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_EndportLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_PortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
case SA_ATTR_ID_SC_MAPTBL_RECORD: /* SCMappingTableRecord */
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_InputPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_OutputPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
case SA_ATTR_ID_SL2SC_MAPTBL_RECORD:
|
|
case SA_ATTR_ID_SC2SL_MAPTBL_RECORD:
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
break;
|
|
case SA_ATTR_ID_SC_VLNT_MAPTBL_RECORD:
|
|
case SA_ATTR_ID_SC_VLT_MAPTBL_RECORD:
|
|
case SA_ATTR_ID_SC_VLR_MAPTBL_RECORD:
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
case SA_ATTR_ID_SWITCHINFO_RECORD: /* SwitchInfoRecord */
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
case SA_ATTR_ID_LINEAR_FWDTBL_RECORD: /* LinearForwardingTableRecord */
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_reserved14, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_BlockNum_18b, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
case SA_ATTR_ID_MCAST_FWDTBL_RECORD: /* MulticastForwardingTableRecord */
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Position, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_reserved9, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_BlockNum_21b, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
case SA_ATTR_ID_VLARBTABLE_RECORD: /*VLArbitrationTableRecord */
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_OutputPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_BlockNum_8b, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
case SA_ATTR_ID_SMINFO_RECORD: /* SMInfoRecord */
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
case SA_ATTR_ID_P_KEY_TABLE_RECORD: /* P_KeyTableRecord */
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_BlockNum_16b, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_PortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
case SA_ATTR_ID_INFORM_INFO_RECORD: /* InformInfoRecord */
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_SubscriberLID, tvb, local_offset, 4, ENC_NA);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Enum, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
break;
|
|
case SA_ATTR_ID_LINK_RECORD: /* LinkRecord */
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_FromLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_FromPort, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
case SA_ATTR_ID_SERVICE_RECORD: /* ServiceRecord */
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_ServiceID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_ServiceLID, tvb, local_offset, 4, ENC_NA);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_ServiceP_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_ServiceGID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
break;
|
|
case SA_ATTR_ID_PATH_RECORD: /* PathRecord */
|
|
break;
|
|
case SA_ATTR_ID_MCMEMBER_RECORD: /* MCMemberRecord */
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_MGID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_PortGID, tvb, local_offset, 16, ENC_NA);
|
|
local_offset += 16;
|
|
break;
|
|
case SA_ATTR_ID_TRACE_RECORD:
|
|
break;
|
|
case SA_ATTR_ID_MULTIPATH_GID_RECORD:
|
|
break;
|
|
case SA_ATTR_ID_MULTIPATH_GUID_RECORD:
|
|
break;
|
|
case SA_ATTR_ID_MULTIPATH_LID_RECORD:
|
|
break;
|
|
case SA_ATTR_ID_CABLE_INFO_RECORD:
|
|
break;
|
|
case SA_ATTR_ID_VF_INFO_RECORD:
|
|
break;
|
|
case SA_ATTR_ID_PORTGROUP_TABLE_RECORD:
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Position_16b, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_reserved9_16b, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_BlockNum_5b, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
break;
|
|
case SA_ATTR_ID_QUARANTINED_NODE_RECORD:
|
|
break;
|
|
case SA_ATTR_ID_CONGESTION_INFO_RECORD:
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
case SA_ATTR_ID_SWITCH_CONG_RECORD:
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
case SA_ATTR_ID_SWITCH_PORT_CONG_RECORD:
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
case SA_ATTR_ID_HFI_CONG_RECORD:
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
case SA_ATTR_ID_HFI_CONG_CTRL_RECORD:
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_BlockNum_16b, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
break;
|
|
case SA_ATTR_ID_BUFF_CTRL_TAB_RECORD:
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(SA_header_tree, hf_opa_sa_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
case SA_ATTR_ID_FABRICINFO_RECORD:
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
*offset = local_offset;
|
|
}
|
|
/* Parse the attribute from a Subnet Administration Packet. */
|
|
static gboolean parse_SUBA_Attribute(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD, RMPP_t *RMPP, SA_HEADER_t *SA_HEADER)
|
|
{
|
|
proto_tree *SUBA_Attribute_header_tree = parentTree;
|
|
guint local_offset = *offset;
|
|
|
|
if (RMPP->Type == RMPP_ACK || SA_HEADER->AttributeOffset == 0 || (RMPP->PayloadLength <= 20 && RMPP->Type == RMPP_DATA) ||
|
|
(!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1))
|
|
return TRUE;
|
|
|
|
/* Skim off the RID fields should they be present */
|
|
parse_RID(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
|
|
/* Parse the rest of the attributes */
|
|
switch (MAD->AttributeID) {
|
|
case SA_ATTR_ID_CLASS_PORT_INFO: /* (ClassPortInfo) */
|
|
local_offset = parse_ClassPortInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_NOTICE: /* (Notice) */
|
|
local_offset = parse_NoticesAndTraps(SUBA_Attribute_header_tree, tvb, &local_offset);
|
|
break;
|
|
case SA_ATTR_ID_INFORM_INFO: /* (InformInfo) */
|
|
local_offset = parse_InformInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_NODE_RECORD: /* (NodeRecord) */
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
local_offset = parse_NodeInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
local_offset = parse_NodeDescription(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_PORTINFO_RECORD: /* (PortInfoRecord) */
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
local_offset = parse_PortInfoRecord(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_SL2SC_MAPTBL_RECORD:
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
local_offset = parse_SLtoSCMappingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_SC_MAPTBL_RECORD:
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
local_offset = parse_SCtoSCMappingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_SC2SL_MAPTBL_RECORD:
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
local_offset = parse_SCtoSLMappingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_SC_VLNT_MAPTBL_RECORD:
|
|
case SA_ATTR_ID_SC_VLT_MAPTBL_RECORD:
|
|
case SA_ATTR_ID_SC_VLR_MAPTBL_RECORD:
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
local_offset = parse_SCtoVLxMappingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_SWITCHINFO_RECORD: /* (SwitchInfoRecord) */
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
local_offset = parse_SwitchInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_LINEAR_FWDTBL_RECORD: /*(LinearForwardingTableRecord) */
|
|
local_offset = parse_LinearForwardingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_MCAST_FWDTBL_RECORD: /* (MulticastForwardingTableRecord) */
|
|
local_offset = parse_MulticastForwardingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_VLARBTABLE_RECORD: /* (VLArbitrationTableRecord) */
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
local_offset = parse_VLArbitrationTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_SMINFO_RECORD: /* (SMInfoRecord) */
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
local_offset = parse_SMInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_P_KEY_TABLE_RECORD: /* (P_KeyTableRecord) */
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
local_offset = parse_P_KeyTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_INFORM_INFO_RECORD: /*(InformInfoRecord) */
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
local_offset = parse_InformInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_LINK_RECORD: /* (LinkRecord) */
|
|
local_offset = parse_LinkRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
|
|
break;
|
|
case SA_ATTR_ID_SERVICE_RECORD: /*(ServiceRecord) */
|
|
local_offset = parse_ServiceRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
|
|
break;
|
|
case SA_ATTR_ID_PATH_RECORD: /* (PathRecord) */
|
|
local_offset = parse_PathRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
|
|
break;
|
|
case SA_ATTR_ID_MCMEMBER_RECORD: /* (MCMemberRecord) */
|
|
local_offset = parse_MCMemberRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
|
|
break;
|
|
case SA_ATTR_ID_TRACE_RECORD: /* (TraceRecord) */
|
|
local_offset = parse_TraceRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
|
|
break;
|
|
case SA_ATTR_ID_MULTIPATH_GID_RECORD: /* (MultiPathRecord) */
|
|
local_offset = parse_MultiPathRecord_GID(SUBA_Attribute_header_tree, tvb, &local_offset);
|
|
break;
|
|
case SA_ATTR_ID_MULTIPATH_GUID_RECORD:
|
|
local_offset = parse_MultiPathRecord_GUID(SUBA_Attribute_header_tree, tvb, &local_offset);
|
|
break;
|
|
case SA_ATTR_ID_MULTIPATH_LID_RECORD:
|
|
local_offset = parse_MultiPathRecord_lid(SUBA_Attribute_header_tree, tvb, &local_offset);
|
|
break;
|
|
case SA_ATTR_ID_SERVICEASSOCIATION_RECORD: /* (ServiceAssociationRecord) */
|
|
local_offset = parse_ServiceAssociationRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
|
|
break;
|
|
case SA_ATTR_ID_PGROUP_FWDTBL_RECORD:
|
|
local_offset = parse_PortGroupForwardingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_CABLE_INFO_RECORD: /* (CableInfoRecord) */
|
|
local_offset = parse_CableInfoRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
|
|
break;
|
|
case SA_ATTR_ID_VF_INFO_RECORD:
|
|
local_offset = parse_VFInfoRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
|
|
break;
|
|
case SA_ATTR_ID_PORTGROUP_TABLE_RECORD:
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
local_offset = parse_PortGroupTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_QUARANTINED_NODE_RECORD:
|
|
local_offset = parse_QuarantinedNodeRecord(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_CONGESTION_INFO_RECORD:
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
local_offset = parse_CongestionInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_SWITCH_CONG_RECORD:
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
local_offset = parse_SwitchCongestionSetting(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_SWITCH_PORT_CONG_RECORD:
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
local_offset = parse_SwitchPortCongestionSetting(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_HFI_CONG_RECORD:
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
local_offset = parse_HFICongestionSetting(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_HFI_CONG_CTRL_RECORD:
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
local_offset = parse_HFICongestionControlTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_BUFF_CTRL_TAB_RECORD:
|
|
proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
local_offset = parse_BufferControlTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
case SA_ATTR_ID_FABRICINFO_RECORD:
|
|
local_offset = parse_FabricInfoRecord(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
|
|
break;
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
*offset = local_offset;
|
|
return TRUE;
|
|
}
|
|
/* Parse the SA Method from the MAD Common Header. */
|
|
static void label_SUBA_Method(proto_item *SubAItem, MAD_t *MAD, packet_info *pinfo)
|
|
{
|
|
const guchar *label = val_to_str_const(MAD->Method, SUBA_Methods, "(Unknown SA Method!)");
|
|
proto_item_append_text(SubAItem, " %s", label);
|
|
col_append_str(pinfo->cinfo, COL_INFO, label);
|
|
}
|
|
/* Parse the SA Attribute from the MAD Common Header */
|
|
static void label_SUBA_Attribute(proto_item *SubAItem, MAD_t *MAD, packet_info *pinfo)
|
|
{
|
|
const guchar *label = val_to_str_const(MAD->AttributeID, SUBA_Attributes, "Attribute (Unknown SA Attribute!)");
|
|
proto_item_append_text(SubAItem, "%s", &label[11]);
|
|
col_append_str(pinfo->cinfo, COL_INFO, &label[11]);
|
|
}
|
|
/* Parse the SA_HEADER
|
|
* IN: parentTree to add the dissection to
|
|
* IN: tvb - the data buffer from wireshark
|
|
* IN/OUT: The current and updated offset */
|
|
static gboolean parse_SA_HEADER(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset, MAD_t *MAD, SA_HEADER_t *SA_HEADER)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *SA_HEADER_header_item;
|
|
proto_tree *SA_HEADER_header_tree;
|
|
|
|
SA_HEADER_header_item = proto_tree_add_item(parentTree, hf_opa_sa, tvb, local_offset, 20, ENC_NA);
|
|
SA_HEADER_header_tree = proto_item_add_subtree(SA_HEADER_header_item, ett_sa);
|
|
|
|
SA_HEADER->SM_Key = tvb_get_ntoh64(tvb, local_offset);
|
|
proto_tree_add_item(SA_HEADER_header_tree, hf_opa_sa_sm_key, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
SA_HEADER->AttributeOffset = tvb_get_ntohs(tvb, local_offset);
|
|
proto_tree_add_item(SA_HEADER_header_tree, hf_opa_sa_attribute_offset, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
SA_HEADER->Reserved = tvb_get_ntohs(tvb, local_offset);
|
|
proto_tree_add_item(SA_HEADER_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
SA_HEADER->ComponentMask = tvb_get_ntoh64(tvb, local_offset);
|
|
proto_tree_add_item(SA_HEADER_header_tree, hf_opa_sa_component_mask, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
label_SUBA_Method(SA_HEADER_header_item, MAD, pinfo);
|
|
label_SUBA_Attribute(SA_HEADER_header_item, MAD, pinfo);
|
|
|
|
*offset = local_offset;
|
|
return TRUE;
|
|
}
|
|
/* Parse Subnet Administration */
|
|
static void parse_SUBNADMN(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
MAD_t MAD;
|
|
RMPP_t RMPP;
|
|
SA_HEADER_t SA_HEADER;
|
|
fragment_head *frag_head = NULL;
|
|
tvbuff_t *old_tvb = NULL;
|
|
gint old_offset;
|
|
guint r, records, length;
|
|
proto_tree *SA_record_tree;
|
|
const guchar *label;
|
|
gboolean parent_was_opa_fe = proto_is_frame_protocol(pinfo->layers, "opa.fe");
|
|
|
|
if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
|
|
return;
|
|
}
|
|
if (!parse_RMPP(parentTree, pinfo, tvb, offset, &RMPP)) {
|
|
return;
|
|
}
|
|
if (!parse_SA_HEADER(parentTree, pinfo, tvb, offset, &MAD, &SA_HEADER)) {
|
|
return;
|
|
}
|
|
if ((!pref_parse_on_mad_status_error && MAD.Status) ||
|
|
RMPP.Type == RMPP_ACK) {
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
|
|
if (!parent_was_opa_fe && pref_attempt_rmpp_defragment
|
|
&& (RMPP.resptime_flags & RMPP_FLAG_ACTIVE_MASK) && (RMPP.Type == RMPP_DATA)
|
|
&& !((RMPP.resptime_flags & RMPP_FLAG_FIRST_MASK)
|
|
&& (RMPP.resptime_flags & RMPP_FLAG_LAST_MASK))) {
|
|
|
|
frag_head = fragment_add_seq_check(&opa_mad_rmpp_reassembly_table,
|
|
tvb, *offset, pinfo, (guint32)MAD.TransactionID, NULL, RMPP.SegmentNumber - 1,
|
|
((RMPP.resptime_flags & RMPP_FLAG_LAST_MASK) ?
|
|
RMPP.PayloadLength - 20 : (guint32)tvb_captured_length_remaining(tvb, *offset)),
|
|
(gboolean)!(RMPP.resptime_flags & RMPP_FLAG_LAST_MASK));
|
|
/* Back up tvb & offset */
|
|
old_tvb = tvb;
|
|
old_offset = *offset;
|
|
/* Create new tvb from reassembled data */
|
|
tvb = process_reassembled_data(old_tvb, old_offset, pinfo, "Reassembled RMPP Packet",
|
|
frag_head, &opa_rmpp_frag_items, NULL, parentTree);
|
|
if (tvb == NULL) {
|
|
return;
|
|
}
|
|
*offset = 0;
|
|
}
|
|
|
|
length = tvb_captured_length_remaining(tvb, *offset);
|
|
records = (SA_HEADER.AttributeOffset ? length / (SA_HEADER.AttributeOffset * 8) : 0);
|
|
for (r = 0; r < records; r++) {
|
|
old_offset = *offset;
|
|
label = val_to_str_const(MAD.AttributeID, SUBA_Attributes, "Attribute (Unknown SA Attribute!)");
|
|
SA_record_tree = proto_tree_add_subtree_format(parentTree, tvb, old_offset,
|
|
(SA_HEADER.AttributeOffset * 8), ett_rmpp_sa_record, NULL, "%.*s Record %u: ",
|
|
(gint)strlen(&label[11]) - 1, &label[11], r);
|
|
|
|
if (!parse_SUBA_Attribute(SA_record_tree, tvb, offset, &MAD, &RMPP, &SA_HEADER)) {
|
|
expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
|
|
"Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
*offset = old_offset + (SA_HEADER.AttributeOffset * 8);
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* Parse PortStatus MAD from the Performance management class. */
|
|
static gint parse_PortStatus(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
proto_item *PortStatus_header_item;
|
|
proto_tree *PortStatus_header_tree;
|
|
proto_tree *PortStatus_VL_tree;
|
|
gint local_offset = *offset;
|
|
guint32 VLSelectMask;
|
|
guint i, VLs;
|
|
guint32 vlSelMskTmp;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
VLSelectMask = tvb_get_ntohl(tvb, local_offset + 4);
|
|
for (i = 0, VLs = 0, vlSelMskTmp = VLSelectMask; vlSelMskTmp && i < 32; i++, vlSelMskTmp >>= 1) {
|
|
VLs = VLs + (vlSelMskTmp & 0x1);
|
|
}
|
|
|
|
if (MAD->Method == METHOD_GET) { /* Get() */
|
|
PortStatus_header_item = proto_tree_add_item(parentTree, hf_opa_PortStatus, tvb, local_offset, 8, ENC_NA);
|
|
} else if (MAD->Method == METHOD_GET_RESP) { /* GetResp(): */
|
|
PortStatus_header_item = proto_tree_add_item(parentTree, hf_opa_PortStatus, tvb, local_offset, 208 + VLs * 112, ENC_NA);
|
|
} else {
|
|
return *offset;
|
|
}
|
|
PortStatus_header_tree = proto_item_add_subtree(PortStatus_header_item, ett_portstatus);
|
|
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_VLSelectMask, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
if (MAD->Method == METHOD_GET)
|
|
return local_offset;
|
|
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortMulticastXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortMulticastRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitWait, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_SwPortCongestion, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvBECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitTimeCong, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitWastedBW, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitWaitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvBubble, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortMarkFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvConstraintErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvSwitchRelayErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitDiscards, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitConstraintErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvRemotePhysicalErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_LocalLinkIntegrityErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_ExcessiveBufferOverruns, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_FMConfigErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_LinkErrorRecovery, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_LinkDowned, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_UncorrectableErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_LinkQualityIndicator, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortStatus_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
for (i = 0, vlSelMskTmp = VLSelectMask; vlSelMskTmp && i < 32; i++, vlSelMskTmp >>= 1) {
|
|
if (vlSelMskTmp & 0x1) {
|
|
PortStatus_VL_tree = proto_tree_add_subtree_format(PortStatus_header_tree, tvb, local_offset, 112,
|
|
ett_portstatus_vl, NULL, "VL %u", i);
|
|
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLRcvData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitWait, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_SwPortVLCongestion, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLRcvFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLRcvBECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitTimeCong, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitWastedBW, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitWaitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLRcvBubble, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLMarkFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitDiscards, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
}
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse ClearPortStatus MAD from the Performance management class.*/
|
|
static gint parse_ClearPortStatus(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
proto_item *ClearPortStatus_header_item;
|
|
proto_tree *ClearPortStatus_header_tree;
|
|
proto_item *ClearPortStatus_PortSelectMask_item;
|
|
gint local_offset = *offset;
|
|
guint64 PortSelectMask[4];
|
|
guint64 PortSelectMaskTemp;
|
|
guint i, j;
|
|
guint PortsOffset = 0;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
if (MAD->Method == METHOD_SET || MAD->Method == METHOD_GET_RESP) { /* Only Set()/GetResp() is supported. */
|
|
ClearPortStatus_header_item = proto_tree_add_item(parentTree, hf_opa_ClearPortStatus, tvb, local_offset, 36, ENC_NA);
|
|
} else
|
|
return *offset;
|
|
|
|
ClearPortStatus_header_tree = proto_item_add_subtree(ClearPortStatus_header_item, ett_clearportstatus);
|
|
PortSelectMask[0] = tvb_get_ntoh64(tvb, local_offset);
|
|
PortSelectMask[1] = tvb_get_ntoh64(tvb, local_offset + 8);
|
|
PortSelectMask[2] = tvb_get_ntoh64(tvb, local_offset + 16);
|
|
PortSelectMask[3] = tvb_get_ntoh64(tvb, local_offset + 24);
|
|
|
|
ClearPortStatus_PortSelectMask_item = proto_tree_add_item(ClearPortStatus_header_tree, hf_opa_ClearPortStatus_PortSelectMask, tvb, local_offset, 32, ENC_NA);
|
|
for (j = 0; j < 4; j++) {
|
|
for (i = 0, PortSelectMaskTemp = PortSelectMask[3 - j]; i < 64 && (PortSelectMaskTemp); i++, PortSelectMaskTemp >>= (guint64)1) {
|
|
if (PortSelectMaskTemp & (guint64)0x1) {
|
|
proto_item_append_text(ClearPortStatus_PortSelectMask_item, "%s%u", (PortsOffset ? ", " : " "), (i)+(j * 64));
|
|
PortsOffset++;
|
|
}
|
|
}
|
|
}
|
|
local_offset += 32;
|
|
|
|
proto_tree_add_bitmask(ClearPortStatus_header_tree, tvb, local_offset,
|
|
hf_opa_ClearPortStatus_CounterSelectMask, ett_clearportstatus_counterselectmask,
|
|
_ClearPortStatus_CounterSelectMask, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse DataPortCounters MAD from the Performance management class.*/
|
|
static gint parse_DataPortCounters(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
proto_item *DataPortCounters_header_item;
|
|
proto_item *DataPortCounters_PortSelectMask_item;
|
|
proto_tree *DataPortCounters_header_tree;
|
|
proto_tree *DataPortCounters_Port_tree;
|
|
proto_tree *DataPortCounters_VL_tree;
|
|
|
|
gint local_offset = *offset;
|
|
guint32 VLSelectMask, vlSelMskTmp;
|
|
guint64 PortSelectMask[4];
|
|
guint64 PortSelectMaskTemp;
|
|
guint VLs, i, j, p;
|
|
guint PortsOffset = 0;
|
|
guint Num_Ports = (MAD->AttributeModifier >> 24) & 0xFF;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
VLSelectMask = tvb_get_ntohl(tvb, local_offset + 32);
|
|
for (i = 0, VLs = 0, vlSelMskTmp = VLSelectMask; vlSelMskTmp && i < 32; i++, vlSelMskTmp >>= 1) {
|
|
VLs += (vlSelMskTmp & 0x1);
|
|
}
|
|
|
|
if (MAD->Method == METHOD_GET) { /* Get() */
|
|
DataPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_DataPortCounters, tvb, local_offset, 40, ENC_NA);
|
|
} else if (MAD->Method == METHOD_GET_RESP) { /* GetResp(): */
|
|
DataPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_DataPortCounters, tvb, local_offset, 40 + Num_Ports * (136 + VLs * 104), ENC_NA);
|
|
} else { /* Set() */
|
|
return *offset;
|
|
}
|
|
DataPortCounters_header_tree = proto_item_add_subtree(DataPortCounters_header_item, ett_dataportcounters);
|
|
|
|
PortSelectMask[0] = tvb_get_ntoh64(tvb, local_offset);
|
|
PortSelectMask[1] = tvb_get_ntoh64(tvb, local_offset + 8);
|
|
PortSelectMask[2] = tvb_get_ntoh64(tvb, local_offset + 16);
|
|
PortSelectMask[3] = tvb_get_ntoh64(tvb, local_offset + 24);
|
|
|
|
DataPortCounters_PortSelectMask_item = proto_tree_add_item(DataPortCounters_header_tree, hf_opa_DataPortCounters_PortSelectMask, tvb, local_offset, 32, ENC_NA);
|
|
for (j = 0; j < 4; j++) {
|
|
for (i = 0, PortSelectMaskTemp = PortSelectMask[3 - j]; i < 64 && (PortSelectMaskTemp); i++, PortSelectMaskTemp >>= (guint64)1) {
|
|
if (PortSelectMaskTemp & (guint64)0x1) {
|
|
proto_item_append_text(DataPortCounters_PortSelectMask_item, "%s%u", (PortsOffset ? ", " : " "), (i)+(j * 64));
|
|
PortsOffset++;
|
|
}
|
|
}
|
|
}
|
|
local_offset += 32;
|
|
|
|
proto_tree_add_item(DataPortCounters_header_tree, hf_opa_DataPortCounters_VLSelectMask, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(DataPortCounters_header_tree, hf_opa_DataPortCounters_resolution_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(DataPortCounters_header_tree, hf_opa_DataPortCounters_LocalLinkIntegrityResolution, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(DataPortCounters_header_tree, hf_opa_DataPortCounters_LinkErrorRecoveryResolution, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
if (MAD->Method == METHOD_GET)
|
|
return local_offset;
|
|
|
|
for (p = 0; p < Num_Ports; p++) {
|
|
DataPortCounters_Port_tree = proto_tree_add_subtree_format(DataPortCounters_header_tree, tvb, local_offset, (1 + 3 + 4 + (8 * 16) + VLs * (8 * 13)),
|
|
ett_dataportcounters_port, NULL, "Port %u", tvb_get_guint8(tvb, local_offset));
|
|
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_lqi_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_LinkQualityIndicator, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortXmitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortRcvData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortMulticastXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortMulticastRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortXmitWait, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_SwPortCongestion, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortRcvFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortRcvBECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortXmitTimeCong, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortXmitWastedBW, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortXmitWaitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortRcvBubble, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortMarkFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortErrorCounterSummary, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
for (i = 0, vlSelMskTmp = VLSelectMask; vlSelMskTmp && i < 32; i++, vlSelMskTmp >>= 1) {
|
|
if (vlSelMskTmp & 0x1) {
|
|
DataPortCounters_VL_tree = proto_tree_add_subtree_format(DataPortCounters_Port_tree, tvb, local_offset, 8 * 13,
|
|
ett_dataportcounters_vl, NULL, "VL %u", i);
|
|
|
|
proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLXmitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLRcvData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLXmitWait, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_SwPortVLCongestion, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLRcvFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLRcvBECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLXmitTimeCong, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLXmitWastedBW, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLXmitWaitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLRcvBubble, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLMarkFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
}
|
|
}
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse ErrorPortCounters MAD from the Performance management class.*/
|
|
static gint parse_ErrorPortCounters(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
proto_item *ErrorPortCounters_header_item;
|
|
proto_item *ErrorPortCounters_PortSelectMask_item;
|
|
proto_item *ErrorPortCounters_VL_item;
|
|
proto_tree *ErrorPortCounters_header_tree;
|
|
proto_tree *ErrorPortCounters_Port_tree;
|
|
|
|
gint local_offset = *offset;
|
|
guint32 VLSelectMask, vlSelMskTmp;
|
|
guint64 PortSelectMask[4];
|
|
guint64 PortSelectMaskTemp;
|
|
guint VLs, i, j, p;
|
|
guint PortsOffset = 0;
|
|
guint Num_Ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
VLSelectMask = tvb_get_ntohl(tvb, local_offset + 32);
|
|
for (i = 0, VLs = 0, vlSelMskTmp = VLSelectMask; vlSelMskTmp && i < 32; i++, vlSelMskTmp >>= 1) {
|
|
VLs += (vlSelMskTmp & 0x1);
|
|
}
|
|
|
|
if (MAD->Method == METHOD_GET) { /* Get() */
|
|
ErrorPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_ErrorPortCounters, tvb, local_offset, 40, ENC_NA);
|
|
} else if (MAD->Method == METHOD_GET_RESP) { /* GetResp(): */
|
|
ErrorPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_ErrorPortCounters, tvb, local_offset, 40 + Num_Ports * (96 + VLs * 8), ENC_NA);
|
|
} else { /* Set() */
|
|
return *offset;
|
|
}
|
|
ErrorPortCounters_header_tree = proto_item_add_subtree(ErrorPortCounters_header_item, ett_errorportcounters);
|
|
|
|
PortSelectMask[0] = tvb_get_ntoh64(tvb, local_offset);
|
|
PortSelectMask[1] = tvb_get_ntoh64(tvb, local_offset + 8);
|
|
PortSelectMask[2] = tvb_get_ntoh64(tvb, local_offset + 16);
|
|
PortSelectMask[3] = tvb_get_ntoh64(tvb, local_offset + 24);
|
|
ErrorPortCounters_PortSelectMask_item = proto_tree_add_item(ErrorPortCounters_header_tree, hf_opa_ErrorPortCounters_PortSelectMask, tvb, local_offset, 32, ENC_NA);
|
|
for (j = 0; j < 4; j++) {
|
|
for (i = 0, PortSelectMaskTemp = PortSelectMask[3 - j]; i < 64 && (PortSelectMaskTemp); i++, PortSelectMaskTemp >>= (guint64)1) {
|
|
if (PortSelectMaskTemp & (guint64)0x1) {
|
|
proto_item_append_text(ErrorPortCounters_PortSelectMask_item, "%s%u", (PortsOffset ? ", " : " "), (i)+(j * 64));
|
|
PortsOffset++;
|
|
}
|
|
}
|
|
}
|
|
local_offset += 32;
|
|
|
|
proto_tree_add_item(ErrorPortCounters_header_tree, hf_opa_ErrorPortCounters_VLSelectMask, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(ErrorPortCounters_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
if (MAD->Method == METHOD_GET)
|
|
return local_offset;
|
|
|
|
for (p = 0; p < Num_Ports; p++) {
|
|
ErrorPortCounters_Port_tree = proto_tree_add_subtree_format(ErrorPortCounters_header_tree, tvb, local_offset, (96 + VLs * 8),
|
|
ett_errorportcounters_port, NULL, "Port %u", tvb_get_guint8(tvb, local_offset));
|
|
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortRcvConstraintErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortRcvSwitchRelayErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortXmitDiscards, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortXmitConstraintErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortRcvRemotePhysicalErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_LocalLinkIntegrityErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortRcvErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_ExcessiveBufferOverruns, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_FMConfigErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_LinkErrorRecovery, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_LinkDowned, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_UncorrectableErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
for (i = 0, vlSelMskTmp = VLSelectMask; vlSelMskTmp && i < 32; i++, vlSelMskTmp >>= 1) {
|
|
if (vlSelMskTmp & 0x1) {
|
|
ErrorPortCounters_VL_item = proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortVLXmitDiscards, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_item_prepend_text(ErrorPortCounters_VL_item, "%3u: ", i);
|
|
}
|
|
}
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse ErrorPortInfo MAD from the Performance management class.*/
|
|
static gint parse_ErrorPortInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
proto_item *ErrorPortInfo_header_item;
|
|
proto_item *ErrorPortInfo_PortSelectMask_item;
|
|
|
|
proto_tree *ErrorPortInfo_header_tree;
|
|
proto_tree *ErrorPortInfo_Port_tree;
|
|
proto_tree * PortRcvErrorInfo_tree,
|
|
*ExcessiveBufferOverrunInfo_tree,
|
|
*PortXmitConstraintErrorInfo_tree,
|
|
*PortRcvConstraintErrorInfo_tree,
|
|
*PortRcvSwitchRelayErrorInfo_tree,
|
|
*UncorrectableErrorInfo_tree,
|
|
*FMConfigErrorInfo_tree;
|
|
|
|
gint local_offset = *offset;
|
|
guint64 PortSelectMask[4];
|
|
guint64 PortSelectMaskTemp;
|
|
guint i, j, p, ErrorCode;
|
|
guint PortsOffset = 0;
|
|
guint Num_Ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
if (MAD->Method == METHOD_GET_RESP) {
|
|
ErrorPortInfo_header_item = proto_tree_add_item(parentTree, hf_opa_ErrorPortInfo, tvb, local_offset, -1, ENC_NA);
|
|
} else if (MAD->Method == METHOD_SET) {
|
|
ErrorPortInfo_header_item = proto_tree_add_item(parentTree, hf_opa_ErrorPortInfo, tvb, local_offset, 40, ENC_NA);
|
|
} else { /* GET */
|
|
ErrorPortInfo_header_item = proto_tree_add_item(parentTree, hf_opa_ErrorPortInfo, tvb, local_offset, 32, ENC_NA);
|
|
}
|
|
ErrorPortInfo_header_tree = proto_item_add_subtree(ErrorPortInfo_header_item, ett_errorportinfo);
|
|
|
|
PortSelectMask[0] = tvb_get_ntoh64(tvb, local_offset);
|
|
PortSelectMask[1] = tvb_get_ntoh64(tvb, local_offset + 8);
|
|
PortSelectMask[2] = tvb_get_ntoh64(tvb, local_offset + 16);
|
|
PortSelectMask[3] = tvb_get_ntoh64(tvb, local_offset + 24);
|
|
ErrorPortInfo_PortSelectMask_item = proto_tree_add_item(ErrorPortInfo_header_tree, hf_opa_ErrorPortInfo_PortSelectMask, tvb, local_offset, 32, ENC_NA);
|
|
for (j = 0; j < 4; j++) {
|
|
for (i = 0, PortSelectMaskTemp = PortSelectMask[3 - j]; i < 64 && (PortSelectMaskTemp); i++, PortSelectMaskTemp >>= (guint64)1) {
|
|
if (PortSelectMaskTemp & (guint64)0x1) {
|
|
proto_item_append_text(ErrorPortInfo_PortSelectMask_item, "%s%u", (PortsOffset ? ", " : " "), (i)+(j * 64));
|
|
PortsOffset++;
|
|
}
|
|
}
|
|
}
|
|
local_offset += 32;
|
|
|
|
if (MAD->Method == METHOD_GET)
|
|
return local_offset;
|
|
/* ErrorInfoSelectMask */
|
|
proto_tree_add_bitmask_list(ErrorPortInfo_header_tree, tvb, local_offset, 4, _ErrorPortInfo_ErrorInfoSelectMask, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
if (MAD->Method == METHOD_SET
|
|
/* GetResp packet from a Set operation will contain 1 zeroed port struct */
|
|
|| (MAD->Method == METHOD_GET_RESP && Num_Ports > 1
|
|
&& tvb_reported_length_remaining(tvb, local_offset) < (72 * 2)))
|
|
return local_offset;
|
|
|
|
proto_tree_add_item(ErrorPortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
for (p = 0; p < Num_Ports; p++) {
|
|
ErrorPortInfo_Port_tree = proto_tree_add_subtree_format(ErrorPortInfo_header_tree, tvb, local_offset, 72,
|
|
ett_errorportinfoport, NULL, "Port %u", tvb_get_guint8(tvb, local_offset));
|
|
|
|
proto_tree_add_item(ErrorPortInfo_Port_tree, hf_opa_ErrorPortInfo_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(ErrorPortInfo_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(ErrorPortInfo_Port_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
/* PortRcvErrorInfo */
|
|
PortRcvErrorInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 24,
|
|
ett_errorportinfo_portrcverrorinfo, NULL, "PortRcv Error Info");
|
|
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_ErrorCode, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
ErrorCode = tvb_get_guint8(tvb, local_offset) & 0x0F;
|
|
local_offset += 1;
|
|
if (ErrorCode >= 1 && ErrorCode <= 12) {
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketFlit1, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketFlit2, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_Flit1Bits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_Flit2Bits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
} else if (ErrorCode == 13) {
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketBytes, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_FlitBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved3, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
} else {
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved4, tvb, local_offset, 17, ENC_NA);
|
|
local_offset += 17;
|
|
}
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
/* ExcessiveBufferOverrunErrorInfo */
|
|
ExcessiveBufferOverrunInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 8,
|
|
ett_errorportinfo_excessivebufferoverruninfo, NULL, "ExcessiveBufferOverrun Error Info");
|
|
|
|
proto_tree_add_item(ExcessiveBufferOverrunInfo_tree, hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(ExcessiveBufferOverrunInfo_tree, hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_SC, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(ExcessiveBufferOverrunInfo_tree, hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(ExcessiveBufferOverrunInfo_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(ExcessiveBufferOverrunInfo_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
/* PortXmitConstraintErrorInfo */
|
|
PortXmitConstraintErrorInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 8,
|
|
ett_errorportinfo_portxmitconstrainterrorinfo, NULL, "PortXmitConstraint Error Info");
|
|
|
|
proto_tree_add_item(PortXmitConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortXmitConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortXmitConstraintErrorInfo_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortXmitConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortXmitConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_SLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
/* PortRcvConstraintErrorInfo */
|
|
PortRcvConstraintErrorInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 8,
|
|
ett_errorportinfo_portrcvconstrainterrorinfo, NULL, "PortRcvConstraint Error Info");
|
|
|
|
proto_tree_add_item(PortRcvConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortRcvConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortRcvConstraintErrorInfo_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortRcvConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PortRcvConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_SLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
/* PortRcvSwitchRelayErrorInfo */
|
|
PortRcvSwitchRelayErrorInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 8,
|
|
ett_errorportinfo_portrcvswitchrelayerrorinfo, NULL, "PortRcvSwitchRelay Error Info");
|
|
|
|
proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_ErrorCode, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
ErrorCode = tvb_get_guint8(tvb, local_offset) & 0x0F;
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
switch (ErrorCode) {
|
|
case 0:
|
|
proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_DLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
case 2:
|
|
proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_EgressPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
break;
|
|
case 3:
|
|
proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_EgressPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_SC, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
break;
|
|
default:
|
|
proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
break;
|
|
}
|
|
|
|
/* UncorrectableErrorInfo */
|
|
UncorrectableErrorInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 2,
|
|
ett_errorportinfo_uncorrectableerrorinfo, NULL, "Uncorrectable Error Info");
|
|
|
|
proto_tree_add_item(UncorrectableErrorInfo_tree, hf_opa_ErrorPortInfo_UncorrectableErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(UncorrectableErrorInfo_tree, hf_opa_ErrorPortInfo_UncorrectableErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(UncorrectableErrorInfo_tree, hf_opa_ErrorPortInfo_UncorrectableErrorInfo_ErrorCode, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(UncorrectableErrorInfo_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
/* FMConfigErrorInfo */
|
|
FMConfigErrorInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 6,
|
|
ett_errorportinfo_fmconfigerrorinfo, NULL, "FMConfig Error Info");
|
|
|
|
proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_ErrorCode, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
ErrorCode = tvb_get_guint8(tvb, local_offset) & 0x0F;
|
|
local_offset += 1;
|
|
switch (ErrorCode) {
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_Distance, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
case 3:
|
|
case 4:
|
|
case 5:
|
|
proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_VL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
case 6:
|
|
proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_BadFlitBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
case 7:
|
|
proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_SC, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
default:
|
|
proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
break;
|
|
}
|
|
|
|
proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
}
|
|
return local_offset;
|
|
}
|
|
static gboolean parse_PM_Attribute(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
gint local_offset = *offset;
|
|
|
|
switch (MAD->AttributeID) {
|
|
/* Mgmt */
|
|
case PA_ATTR_ID_CLASS_PORTINFO:
|
|
local_offset = parse_ClassPortInfo(parentTree, tvb, &local_offset, MAD);
|
|
break;
|
|
case PM_ATTR_ID_PORT_STATUS:
|
|
local_offset = parse_PortStatus(parentTree, tvb, &local_offset, MAD);
|
|
break;
|
|
case PM_ATTR_ID_CLEAR_PORT_STATUS:
|
|
local_offset = parse_ClearPortStatus(parentTree, tvb, &local_offset, MAD);
|
|
break;
|
|
case PM_ATTR_ID_DATA_PORT_COUNTERS:
|
|
local_offset = parse_DataPortCounters(parentTree, tvb, &local_offset, MAD);
|
|
break;
|
|
case PM_ATTR_ID_ERROR_PORT_COUNTERS:
|
|
local_offset = parse_ErrorPortCounters(parentTree, tvb, &local_offset, MAD);
|
|
break;
|
|
case PM_ATTR_ID_ERROR_INFO:
|
|
local_offset = parse_ErrorPortInfo(parentTree, tvb, &local_offset, MAD);
|
|
break;
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
*offset = local_offset;
|
|
return TRUE;
|
|
}
|
|
|
|
/* Parse the Method from the MAD Common Header. */
|
|
static void label_PM_Method(proto_item *PMItem, MAD_t *MAD, packet_info *pinfo)
|
|
{
|
|
const guchar *label = val_to_str_const(MAD->Method, PM_Methods, "(Unknown Perf Method!)");
|
|
proto_item_append_text(PMItem, " %s", label);
|
|
col_append_str(pinfo->cinfo, COL_INFO, label);
|
|
}
|
|
|
|
/* Parse the Attribute from the MAD Common Header */
|
|
static void label_PM_Attribute(proto_item *PMItem, MAD_t *MAD, packet_info *pinfo)
|
|
{
|
|
const guchar *label = val_to_str_const(MAD->AttributeID, PM_Attributes, "Attribute (Unknown Perf Attribute!)");
|
|
proto_item_append_text(PMItem, "%s", &label[11]);
|
|
col_append_str(pinfo->cinfo, COL_INFO, &label[11]);
|
|
}
|
|
/* Parse Performance Management */
|
|
static void parse_PERF(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
MAD_t MAD;
|
|
proto_item *PM_header_item;
|
|
proto_tree *PM_header_tree;
|
|
|
|
if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
|
|
return;
|
|
}
|
|
|
|
PM_header_item = proto_tree_add_item(parentTree, hf_opa_pm, tvb, *offset, -1, ENC_NA);
|
|
PM_header_tree = proto_item_add_subtree(PM_header_item, ett_pm);
|
|
|
|
label_PM_Method(PM_header_item, &MAD, pinfo);
|
|
label_PM_Attribute(PM_header_item, &MAD, pinfo);
|
|
|
|
if (!pref_parse_on_mad_status_error && MAD.Status) {
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
if (!parse_PM_Attribute(PM_header_tree, tvb, offset, &MAD)) {
|
|
expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
|
|
"Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
}
|
|
|
|
/* Parse Image MAD from the Performance Admin class. */
|
|
static gint parse_Image(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
proto_tree *Image_header_tree = parentTree;
|
|
|
|
gint local_offset = *offset;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
/* ImageID */
|
|
proto_tree_add_item(Image_header_tree, hf_opa_ImageID_imageNumber, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(Image_header_tree, hf_opa_ImageID_imageOffset, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(Image_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
/* End ImageID */
|
|
|
|
return local_offset;
|
|
}
|
|
/* Parse GetGroupList MAD from the Performance Admin class.*/
|
|
static gint parse_GetGroupList(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
|
|
{
|
|
proto_item *GetGroupList_GroupName_item;
|
|
proto_tree *GetGroupList_header_tree;
|
|
proto_item *GetGroupList_header_item;
|
|
gint local_offset = *offset;
|
|
guint i;
|
|
|
|
guint length = tvb_captured_length_remaining(tvb, local_offset);
|
|
guint records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
|
|
|
|
if (!parentTree || RMPP->Type != RMPP_DATA ||
|
|
(MAD->Method != METHOD_GET_RESP && MAD->Method != METHOD_GETTABLE_RESP)) {
|
|
return *offset;
|
|
}
|
|
|
|
GetGroupList_header_item = proto_tree_add_item(parentTree, hf_opa_GetGroupList, tvb, local_offset, length, ENC_NA);
|
|
GetGroupList_header_tree = proto_item_add_subtree(GetGroupList_header_item, ett_getgrouplist);
|
|
proto_tree_add_none_format(GetGroupList_header_tree, hf_opa_GetGroupList, tvb, local_offset, length, "Number of Groups: %u", records);
|
|
|
|
for (i = 0; i < records; i++) {
|
|
GetGroupList_GroupName_item = proto_tree_add_item(GetGroupList_header_tree, hf_opa_GetGroupList_groupName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
proto_item_prepend_text(GetGroupList_GroupName_item, "%3u: ", i + 1);
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse GetGroupInfo MAD from the Performance Admin class.*/
|
|
static gint parse_GetGroupInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
|
|
{
|
|
proto_tree *GetGroupInfo_header_tree;
|
|
proto_tree *GetGroupInfo_header_item;
|
|
|
|
proto_tree *GetGroupInfo_Util_Stats_tree;
|
|
proto_item *GetGroupInfo_Util_Stats_Buckets_item;
|
|
proto_tree *GetGroupInfo_Util_Stats_Buckets_tree;
|
|
proto_item *GetGroupInfo_Util_Stats_Bucket_item;
|
|
|
|
proto_tree *GetGroupInfo_Error_Summary_tree;
|
|
proto_tree *GetGroupInfo_Error_Integrity_Buckets_tree;
|
|
proto_tree *GetGroupInfo_Error_Congestion_Buckets_tree;
|
|
proto_tree *GetGroupInfo_Error_SmaCongestion_Buckets_tree;
|
|
proto_tree *GetGroupInfo_Error_Bubble_Buckets_tree;
|
|
proto_tree *GetGroupInfo_Error_Security_Buckets_tree;
|
|
proto_tree *GetGroupInfo_Error_Routing_Buckets_tree;
|
|
proto_item *GetGroupInfo_Error_Stats_Integrity_Buckets_item;
|
|
proto_item *GetGroupInfo_Error_Stats_Congestion_Buckets_item;
|
|
proto_item *GetGroupInfo_Error_Stats_SmaCongestion_Buckets_item;
|
|
proto_item *GetGroupInfo_Error_Stats_Bubble_Buckets_item;
|
|
proto_item *GetGroupInfo_Error_Stats_Security_Buckets_item;
|
|
proto_item *GetGroupInfo_Error_Stats_Routing_Buckets_item;
|
|
proto_item *GetGroupInfo_Error_Stats_Bucket_item;
|
|
|
|
gint local_offset = *offset;
|
|
guint i, r;
|
|
|
|
guint length = tvb_captured_length_remaining(tvb, local_offset);
|
|
guint records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
|
|
|
|
guint util = 100 / PM_UTIL_BUCKETS; /* 0%+ 10%+ 20%+ ... 80%+ 90%+ */
|
|
guint err = 100 / (PM_ERR_BUCKETS - 1); /* 0%+ 25%+ 50%+ 75%+ 100%+ */
|
|
|
|
if (!parentTree || (!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1))
|
|
return *offset;
|
|
|
|
if (MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE) {
|
|
GetGroupInfo_header_item = proto_tree_add_item(parentTree, hf_opa_GetGroupInfo, tvb, local_offset, 64 + 16, ENC_NA);
|
|
proto_item_set_text(GetGroupInfo_header_item, "GroupInfo for %s", tvb_get_string_enc(wmem_file_scope(), tvb, local_offset, 64, ENC_ASCII));
|
|
GetGroupInfo_header_tree = proto_item_add_subtree(GetGroupInfo_header_item, ett_getgroupinfo);
|
|
proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_groupName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
/* ImageID */
|
|
local_offset = parse_Image(GetGroupInfo_header_tree, tvb, &local_offset);
|
|
return local_offset;
|
|
}
|
|
|
|
for (r = 0; r < records; r++) {
|
|
GetGroupInfo_header_item = proto_tree_add_item(parentTree, hf_opa_GetGroupInfo, tvb, local_offset, 64 + 16, ENC_NA);
|
|
proto_item_set_text(GetGroupInfo_header_item, "GroupInfo for %s", tvb_get_string_enc(wmem_file_scope(), tvb, local_offset, 64, ENC_ASCII));
|
|
GetGroupInfo_header_tree = proto_item_add_subtree(GetGroupInfo_header_item, ett_getgroupinfo);
|
|
proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_groupName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
|
|
/* ImageID */
|
|
local_offset = parse_Image(GetGroupInfo_header_tree, tvb, &local_offset);
|
|
|
|
proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_numInternalPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_numExternalPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
/* internalUtilStats */
|
|
GetGroupInfo_Util_Stats_tree = proto_tree_add_subtree(GetGroupInfo_header_tree, tvb, local_offset, 48 + PM_UTIL_BUCKETS * 4,
|
|
ett_getgroupinfoutilstats, NULL, "Internal Utilization Statistics");
|
|
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_totalMBps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_totalKPps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_avgMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_minMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_maxMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Util_Stats_Buckets_item = proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_numBWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Util_Stats_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Util_Stats_Buckets_item, ett_getgroupinfoutilbuckets);
|
|
for (i = 0; i < PM_UTIL_BUCKETS; i++) {
|
|
GetGroupInfo_Util_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Util_Stats_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Util_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * util, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
}
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_avgKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_minKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_maxKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_pmaFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_topoFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
/* sendUtilStats */
|
|
GetGroupInfo_Util_Stats_tree = proto_tree_add_subtree(GetGroupInfo_header_tree, tvb, local_offset, 48 + PM_UTIL_BUCKETS * 4,
|
|
ett_getgroupinfoutilstats, NULL, "External Send Utilization Statistics");
|
|
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_totalMBps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_totalKPps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_avgMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_minMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_maxMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Util_Stats_Buckets_item = proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_numBWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Util_Stats_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Util_Stats_Buckets_item, ett_getgroupinfoutilbuckets);
|
|
for (i = 0; i < PM_UTIL_BUCKETS; i++) {
|
|
GetGroupInfo_Util_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Util_Stats_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Util_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * util, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
}
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_avgKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_minKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_maxKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_pmaFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_topoFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
/* recvUtilStats */
|
|
GetGroupInfo_Util_Stats_tree = proto_tree_add_subtree(GetGroupInfo_header_tree, tvb, local_offset, 48 + PM_UTIL_BUCKETS * 4,
|
|
ett_getgroupinfoutilstats, NULL, "External Receive Utilization Statistics");
|
|
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_totalMBps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_totalKPps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_avgMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_minMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_maxMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Util_Stats_Buckets_item = proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_numBWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Util_Stats_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Util_Stats_Buckets_item, ett_getgroupinfoutilbuckets);
|
|
for (i = 0; i < PM_UTIL_BUCKETS; i++) {
|
|
GetGroupInfo_Util_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Util_Stats_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Util_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * util, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
}
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_avgKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_minKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_maxKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_pmaFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_topoFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
/* internalErrors */
|
|
GetGroupInfo_Error_Summary_tree = proto_tree_add_subtree(GetGroupInfo_header_tree, tvb, local_offset, 40 + PM_ERR_BUCKETS * 24,
|
|
ett_getgroupinfoerrorsummary, NULL, "Internal Error Statistics");
|
|
|
|
GetGroupInfo_Error_Stats_Integrity_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_integrityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Congestion_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_congestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_SmaCongestion_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_smaCongestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Bubble_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_bubbleErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Security_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_securityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Routing_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_routingErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_utlizationPct10, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_discardsPct10, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
GetGroupInfo_Error_Integrity_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Integrity_Buckets_item, ett_getgroupinfoerrintegritybucket);
|
|
GetGroupInfo_Error_Congestion_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Congestion_Buckets_item, ett_getgroupinfoerrcongestionbucket);
|
|
GetGroupInfo_Error_SmaCongestion_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_SmaCongestion_Buckets_item, ett_getgroupinfoerrsmacongestionbucket);
|
|
GetGroupInfo_Error_Bubble_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Bubble_Buckets_item, ett_getgroupinfoerrbubblebucket);
|
|
GetGroupInfo_Error_Security_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Security_Buckets_item, ett_getgroupinfoerrsecuritybucket);
|
|
GetGroupInfo_Error_Routing_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Routing_Buckets_item, ett_getgroupinfoerrroutingbucket);
|
|
|
|
for (i = 0; i < PM_ERR_BUCKETS; i++) {
|
|
GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Integrity_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Congestion_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_SmaCongestion_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Bubble_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Security_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Routing_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
}
|
|
|
|
/* externalErrors */
|
|
GetGroupInfo_Error_Summary_tree = proto_tree_add_subtree(GetGroupInfo_header_tree, tvb, local_offset, 40 + PM_ERR_BUCKETS * 24,
|
|
ett_getgroupinfoerrorsummary, NULL, "External Error Statistics");
|
|
|
|
GetGroupInfo_Error_Stats_Integrity_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_integrityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Congestion_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_congestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_SmaCongestion_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_smaCongestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Bubble_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_bubbleErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Security_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_securityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Routing_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_routingErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_utlizationPct10, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_discardsPct10, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
GetGroupInfo_Error_Integrity_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Integrity_Buckets_item, ett_getgroupinfoerrintegritybucket);
|
|
GetGroupInfo_Error_Congestion_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Congestion_Buckets_item, ett_getgroupinfoerrcongestionbucket);
|
|
GetGroupInfo_Error_SmaCongestion_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_SmaCongestion_Buckets_item, ett_getgroupinfoerrsmacongestionbucket);
|
|
GetGroupInfo_Error_Bubble_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Bubble_Buckets_item, ett_getgroupinfoerrbubblebucket);
|
|
GetGroupInfo_Error_Security_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Security_Buckets_item, ett_getgroupinfoerrsecuritybucket);
|
|
GetGroupInfo_Error_Routing_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Routing_Buckets_item, ett_getgroupinfoerrroutingbucket);
|
|
|
|
for (i = 0; i < PM_ERR_BUCKETS; i++) {
|
|
GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Integrity_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Congestion_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_SmaCongestion_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Bubble_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Security_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Routing_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
}
|
|
|
|
proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_maxInternalRate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_minInternalRate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_maxExternalRate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_minExternalRate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_maxInternalMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_maxExternalMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse GetGroupConfig MAD from the Performance Admin class.*/
|
|
static gint parse_GetGroupConfig(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
|
|
{
|
|
proto_item *GetGroupConfig_header_item;
|
|
proto_tree *GetGroupConfig_header_tree = parentTree;
|
|
|
|
proto_item *GetGroupConfig_Port_item;
|
|
proto_tree *GetGroupConfig_Port_tree;
|
|
|
|
gint local_offset = *offset;
|
|
guint i;
|
|
|
|
guint length = tvb_captured_length_remaining(tvb, local_offset);
|
|
guint records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
|
|
|
|
if (!parentTree || (!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1))
|
|
return *offset;
|
|
|
|
if (MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE) {
|
|
GetGroupConfig_header_item = proto_tree_add_item(parentTree, hf_opa_GetGroupConfig, tvb, local_offset, 64 + 16, ENC_NA);
|
|
proto_item_set_text(GetGroupConfig_header_item, "GroupConfig for %s", tvb_get_string_enc(wmem_file_scope(), tvb, local_offset, 64, ENC_ASCII));
|
|
GetGroupConfig_header_tree = proto_item_add_subtree(GetGroupConfig_header_item, ett_getgroupconfig);
|
|
|
|
proto_tree_add_item(GetGroupConfig_header_tree, hf_opa_GetGroupConfig_groupName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
local_offset = parse_Image(GetGroupConfig_header_tree, tvb, &local_offset);
|
|
} else if (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP) {
|
|
GetGroupConfig_header_item = proto_tree_add_item(parentTree, hf_opa_GetGroupConfig, tvb, local_offset, records * PA_HEADER->AttributeOffset * 8, ENC_NA);
|
|
GetGroupConfig_header_tree = proto_item_add_subtree(GetGroupConfig_header_item, ett_getgroupconfig);
|
|
for (i = 0; i < records; i++) {
|
|
GetGroupConfig_Port_tree = proto_tree_add_subtree_format(GetGroupConfig_header_tree, tvb, local_offset,
|
|
PA_HEADER->AttributeOffset * 8, ett_getgroupconfigport, &GetGroupConfig_Port_item, "%3u: ", i);
|
|
local_offset = parse_Image(GetGroupConfig_Port_tree, tvb, &local_offset);
|
|
proto_tree_add_item(GetGroupConfig_Port_tree, hf_opa_GetGroupConfig_Port_NodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetGroupConfig_Port_tree, hf_opa_GetGroupConfig_Port_nodeDesc, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
proto_item_append_text(GetGroupConfig_Port_item, "LID: 0x%04x, Port: %u", tvb_get_ntohl(tvb, local_offset), tvb_get_guint8(tvb, local_offset + 4));
|
|
proto_tree_add_item(GetGroupConfig_Port_tree, hf_opa_GetGroupConfig_Port_NodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetGroupConfig_Port_tree, hf_opa_GetGroupConfig_Port_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetGroupConfig_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
}
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse GetPortCounters MAD from the Performance Admin class.*/
|
|
static gint parse_GetPortCounters(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
proto_tree *GetPortCounters_header_tree;
|
|
proto_item *GetPortCounters_header_item;
|
|
|
|
gint local_offset = *offset;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
GetPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_GetPortCounters, tvb, local_offset, 232 + 16, ENC_NA);
|
|
proto_item_set_text(GetPortCounters_header_item, "Port Counters for LID: 0x%x Port: %u", tvb_get_ntohl(tvb, local_offset), tvb_get_guint8(tvb, local_offset + 4));
|
|
GetPortCounters_header_tree = proto_item_add_subtree(GetPortCounters_header_item, ett_getportcounters);
|
|
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_nodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_flags, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
/* ImageID */
|
|
local_offset = parse_Image(GetPortCounters_header_tree, tvb, &local_offset);
|
|
if (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP) {
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortMulticastXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortMulticastRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_LocalLinkIntegrityErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_FMConfigErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_ExcessiveBufferOverruns, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvConstraintErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvSwitchRelayErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitDiscards, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitConstraintErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvRemotePhysicalErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_SwPortCongestion, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitWait, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvBECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitTimeCong, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitWastedBW, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitWaitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvBubble, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortMarkFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_LinkErrorRecovery, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_LinkDowned, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_UncorrectableErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_NumLanesDown, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_LinkQualityIndicator, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetPortCounters_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
} else {
|
|
local_offset += 208;
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
static gint parse_ClearPortCounters(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
proto_tree *ClearPortCounters_header_tree;
|
|
proto_item *ClearPortCounters_header_item;
|
|
|
|
gint local_offset = *offset;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
ClearPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_ClearPortCounters, tvb, local_offset, 20, ENC_NA);
|
|
proto_item_set_text(ClearPortCounters_header_item, "Clear User Port Counters for LID: 0x%x Port: %u", tvb_get_ntohl(tvb, local_offset), tvb_get_guint8(tvb, local_offset + 4));
|
|
ClearPortCounters_header_tree = proto_item_add_subtree(ClearPortCounters_header_item, ett_clearportcounters);
|
|
|
|
proto_tree_add_item(ClearPortCounters_header_tree, hf_opa_ClearPortCounters_nodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(ClearPortCounters_header_tree, hf_opa_ClearPortCounters_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(ClearPortCounters_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(ClearPortCounters_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_bitmask(ClearPortCounters_header_tree, tvb, local_offset,
|
|
hf_opa_ClearPortCounters_CounterSelectMask, ett_clearportcounters_counterselectmask,
|
|
_ClearPortCounters_CounterSelectMask, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
static gint parse_ClearAllPortCounters(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
|
|
proto_tree *ClearAllPortCounters_header_tree;
|
|
proto_item *ClearAllPortCounters_header_item;
|
|
|
|
gint local_offset = *offset;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
ClearAllPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_ClearAllPortCounters, tvb, local_offset, 4, ENC_NA);
|
|
proto_item_set_text(ClearAllPortCounters_header_item, "Clear All User Port Counters");
|
|
ClearAllPortCounters_header_tree = proto_item_add_subtree(ClearAllPortCounters_header_item, ett_clearallportcounters);
|
|
|
|
proto_tree_add_bitmask(ClearAllPortCounters_header_tree, tvb, local_offset,
|
|
hf_opa_ClearAllPortCounters_CounterSelectMask, ett_clearallportcounters_counterselectmask,
|
|
_ClearAllPortCounters_CounterSelectMask, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
static gint parse_PMConfig(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
proto_tree *PMConfig_header_tree;
|
|
proto_item *PMConfig_header_item;
|
|
|
|
gint local_offset = *offset;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
PMConfig_header_item = proto_tree_add_item(parentTree, hf_opa_PMConfig, tvb, local_offset, 104, ENC_NA);
|
|
PMConfig_header_tree = proto_item_add_subtree(PMConfig_header_item, ett_pmconfig);
|
|
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_sweepInterval, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_maxClients, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_sizeHistory, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_sizeFreeze, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_lease, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_pmFlags, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_PortXmitWait, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_SwPortCongestion, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_PortRcvFECN, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_PortRcvBECN, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_PortXmitTimeCong, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_PortMarkFECN, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_integrityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_congestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_smaCongestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_bubbleErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_securityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_routingErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_LocalLinkIntegrityErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_PortRcvErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_ExcessiveBufferOverrunErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_LinkErrorRecovery, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_LinkDowned, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_UncorrectableErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_FMConfigErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_LinkQualityIndicator, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_LinkWidthDowngrade, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_memoryFootprint, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_maxAttempts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_respTimeout, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_minRespTimeout, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_maxParallelNodes, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_pmaBatchSize, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_errorClear, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(PMConfig_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse MoveFreezeFrame MAD from the Performance Admin class. */
|
|
static gint parse_MoveFreezeFrame(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
proto_tree *MoveFreezeFrame_header_tree = parentTree;
|
|
proto_item *MoveFreezeFrame_old_item;
|
|
proto_tree *MoveFreezeFrame_old_tree;
|
|
proto_item *MoveFreezeFrame_new_item;
|
|
proto_tree *MoveFreezeFrame_new_tree;
|
|
|
|
gint local_offset = *offset;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
MoveFreezeFrame_old_item = proto_tree_add_item(MoveFreezeFrame_header_tree, hf_opa_MoveFreezeFrame_old, tvb, local_offset, 16, ENC_NA);
|
|
MoveFreezeFrame_old_tree = proto_item_add_subtree(MoveFreezeFrame_old_item, ett_movefreezeframeold);
|
|
local_offset = parse_Image(MoveFreezeFrame_old_tree, tvb, &local_offset);
|
|
|
|
MoveFreezeFrame_new_item = proto_tree_add_item(MoveFreezeFrame_header_tree, hf_opa_MoveFreezeFrame_new, tvb, local_offset, 16, ENC_NA);
|
|
MoveFreezeFrame_new_tree = proto_item_add_subtree(MoveFreezeFrame_new_item, ett_movefreezeframenew);
|
|
local_offset = parse_Image(MoveFreezeFrame_new_tree, tvb, &local_offset);
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse GetFocusPorts MAD from the Performance Admin class. */
|
|
static gint parse_GetFocusPorts(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
|
|
{
|
|
proto_tree *GetFocusPorts_header_tree;
|
|
proto_item *GetFocusPorts_header_item;
|
|
|
|
proto_tree *GetFocusPorts_Port_tree;
|
|
proto_item *GetFocusPorts_Port_item;
|
|
|
|
gint local_offset = *offset;
|
|
guint i = 0;
|
|
|
|
guint length = tvb_captured_length_remaining(tvb, local_offset);
|
|
guint records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
|
|
|
|
if (!parentTree || (!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1))
|
|
return *offset;
|
|
|
|
if (MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE) {
|
|
GetFocusPorts_header_item = proto_tree_add_item(parentTree, hf_opa_GetFocusPorts, tvb, local_offset, 64 + 28, ENC_NA);
|
|
proto_item_set_text(GetFocusPorts_header_item, "Focus Ports for %s", tvb_get_string_enc(wmem_file_scope(), tvb, local_offset, 64, ENC_ASCII));
|
|
GetFocusPorts_header_tree = proto_item_add_subtree(GetFocusPorts_header_item, ett_getfocusports);
|
|
|
|
proto_tree_add_item(GetFocusPorts_header_tree, hf_opa_GetFocusPorts_groupName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
local_offset = parse_Image(GetFocusPorts_header_tree, tvb, &local_offset);
|
|
proto_tree_add_item(GetFocusPorts_header_tree, hf_opa_GetFocusPorts_select, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetFocusPorts_header_tree, hf_opa_GetFocusPorts_start, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetFocusPorts_header_tree, hf_opa_GetFocusPorts_range, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
} else if (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP) {
|
|
GetFocusPorts_header_item = proto_tree_add_item(parentTree, hf_opa_GetFocusPorts, tvb, local_offset, records * PA_HEADER->AttributeOffset * 8, ENC_NA);
|
|
GetFocusPorts_header_tree = proto_item_add_subtree(GetFocusPorts_header_item, ett_getfocusports);
|
|
for (i = 0; i < records; i++) {
|
|
GetFocusPorts_Port_tree = proto_tree_add_subtree_format(GetFocusPorts_header_tree, tvb, local_offset,
|
|
PA_HEADER->AttributeOffset * 8, ett_getfocusportsport, &GetFocusPorts_Port_item, "%3u: ", i);
|
|
local_offset = parse_Image(GetFocusPorts_Port_tree, tvb, &local_offset);
|
|
|
|
proto_item_append_text(GetFocusPorts_Port_item, "LID: %04x, Port %u",
|
|
tvb_get_ntohl(tvb, local_offset), tvb_get_guint8(tvb, local_offset + 4));
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_nodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_portNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_mtu, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_localFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_neighborFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_value, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_nodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_nodeDesc, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_neighborLid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_neighborPortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_neighborValue, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_neighborGuid, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_neighborNodeDesc, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
}
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse GetImageInfo MAD from the Performance Admin class. */
|
|
static gint parse_GetImageInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
proto_tree *GetImageInfo_header_tree = parentTree;
|
|
proto_item *GetImageInfo_header_item;
|
|
proto_tree *GetImageInfo_SM_tree;
|
|
guint32 numSMs;
|
|
nstime_t ts;
|
|
|
|
gint local_offset = *offset;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
GetImageInfo_header_item = proto_tree_add_item(parentTree, hf_opa_GetImageInfo, tvb, local_offset, 216, ENC_NA);
|
|
GetImageInfo_header_tree = proto_item_add_subtree(GetImageInfo_header_item, ett_getimageinfo);
|
|
|
|
local_offset = parse_Image(GetImageInfo_header_tree, tvb, &local_offset);
|
|
|
|
ts.secs = (time_t)tvb_get_guint64(tvb, local_offset, ENC_BIG_ENDIAN);
|
|
ts.nsecs = 0;
|
|
proto_tree_add_time(GetImageInfo_header_tree, hf_opa_GetImageInfo_sweepStart, tvb, local_offset, 8, &ts);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_sweepDuration, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numHFIPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetImageInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numSwitchNodes, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numSwitchPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numLinks, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
numSMs = tvb_get_ntohl(tvb, local_offset);
|
|
proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numSMs, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numFailedNodes, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numFailedPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numSkippedNodes, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numSkippedPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numUnexpectedClearPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_imageInterval, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
GetImageInfo_SM_tree = proto_tree_add_subtree(GetImageInfo_header_tree, tvb, local_offset, 16 + 64,
|
|
ett_getimageinfosm, NULL, "Primary SM Info");
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_state, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_priority, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_portNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_smPortGuid, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_smNodeDesc, tvb, local_offset, 64, ENC_NA | ENC_ASCII);
|
|
local_offset += 64;
|
|
|
|
if (!numSMs || numSMs > 1) {
|
|
GetImageInfo_SM_tree = proto_tree_add_subtree(GetImageInfo_header_tree, tvb, local_offset, 16 + 64,
|
|
ett_getimageinfosm, NULL, "Secondary SM Info");
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_state, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_priority, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_portNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_smPortGuid, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_smNodeDesc, tvb, local_offset, 64, ENC_NA | ENC_ASCII);
|
|
local_offset += 64;
|
|
} else {
|
|
proto_tree_add_subtree(GetImageInfo_header_tree, tvb, local_offset, 16 + 64,
|
|
ett_getimageinfosm, NULL, "No Secondary SM Info");
|
|
local_offset += (16 + 64);
|
|
}
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse GetVFList MAD from the Performance Admin class. */
|
|
static gint parse_GetVFList(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
|
|
{
|
|
proto_item *GetVFList_GroupName_item;
|
|
proto_tree *GetVFList_header_tree;
|
|
proto_item *GetVFList_header_item;
|
|
|
|
gint local_offset = *offset;
|
|
guint i;
|
|
|
|
guint length = tvb_captured_length_remaining(tvb, local_offset);
|
|
guint records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
|
|
|
|
if (!parentTree || RMPP->Type != RMPP_DATA ||
|
|
(MAD->Method != METHOD_GET_RESP && MAD->Method != METHOD_GETTABLE_RESP)) {
|
|
return *offset;
|
|
}
|
|
|
|
GetVFList_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFList, tvb, local_offset, length, ENC_NA);
|
|
GetVFList_header_tree = proto_item_add_subtree(GetVFList_header_item, ett_getvflist);
|
|
proto_tree_add_none_format(GetVFList_header_tree, hf_opa_GetVFList, tvb, local_offset, length, "Number of VFs: %u", records);
|
|
|
|
for (i = 0; i < records; i++) {
|
|
GetVFList_GroupName_item = proto_tree_add_item(GetVFList_header_tree, hf_opa_GetVFList_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
proto_item_prepend_text(GetVFList_GroupName_item, "%3u: ", i + 1);
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse GetVFInfo MAD from the Performance Admin class. */
|
|
static gint parse_GetVFInfo(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
|
|
{
|
|
proto_tree *GetVFInfo_header_tree = parentTree;
|
|
proto_tree *GetVFInfo_header_item = parentTree;
|
|
|
|
proto_tree *GetVFInfo_Util_Stats_tree;
|
|
proto_item *GetVFInfo_Util_Stats_Buckets_item;
|
|
proto_tree *GetVFInfo_Util_Stats_Buckets_tree;
|
|
proto_item *GetVFInfo_Util_Stats_Bucket_item;
|
|
|
|
proto_tree *GetVFInfo_Error_Summary_tree;
|
|
proto_tree *GetVFInfo_Error_Integrity_Buckets_tree;
|
|
proto_tree *GetVFInfo_Error_Congestion_Buckets_tree;
|
|
proto_tree *GetVFInfo_Error_SmaCongestion_Buckets_tree;
|
|
proto_tree *GetVFInfo_Error_Bubble_Buckets_tree;
|
|
proto_tree *GetVFInfo_Error_Security_Buckets_tree;
|
|
proto_tree *GetVFInfo_Error_Routing_Buckets_tree;
|
|
proto_item *GetVFInfo_Error_Stats_Integrity_Buckets_item;
|
|
proto_item *GetVFInfo_Error_Stats_Congestion_Buckets_item;
|
|
proto_item *GetVFInfo_Error_Stats_SmaCongestion_Buckets_item;
|
|
proto_item *GetVFInfo_Error_Stats_Bubble_Buckets_item;
|
|
proto_item *GetVFInfo_Error_Stats_Security_Buckets_item;
|
|
proto_item *GetVFInfo_Error_Stats_Routing_Buckets_item;
|
|
proto_item *GetVFInfo_Error_Stats_Bucket_item;
|
|
|
|
gint local_offset = *offset;
|
|
guint i;
|
|
|
|
guint length = tvb_captured_length_remaining(tvb, local_offset);
|
|
guint records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
|
|
|
|
guint util = 100 / PM_UTIL_BUCKETS; /* 0%+ 10%+ 20%+ ... 80%+ 90%+ */
|
|
guint err = 100 / (PM_ERR_BUCKETS - 1); /* 0%+ 25%+ 50%+ 75%+ 100%+ */
|
|
|
|
if (!parentTree || (!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1)) {
|
|
return *offset;
|
|
}
|
|
|
|
if (MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE) {
|
|
GetVFInfo_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFInfo, tvb, local_offset, 64 + 24, ENC_NA);
|
|
proto_item_set_text(GetVFInfo_header_item, "VFInfo for %s", tvb_get_string_enc(wmem_file_scope(), tvb, local_offset, 64, ENC_ASCII));
|
|
GetVFInfo_header_tree = proto_item_add_subtree(GetVFInfo_header_item, ett_getvfinfo);
|
|
proto_tree_add_item(GetVFInfo_header_tree, hf_opa_GetVFInfo_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
proto_tree_add_item(GetVFInfo_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
/* ImageID */
|
|
local_offset = parse_Image(GetVFInfo_header_tree, tvb, &local_offset);
|
|
return local_offset;
|
|
}
|
|
|
|
for (i = 0; i < records; i++) {
|
|
GetVFInfo_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFInfo, tvb, local_offset, PA_HEADER->AttributeOffset * 8, ENC_NA);
|
|
proto_item_set_text(GetVFInfo_header_item, "VFInfo for %s", tvb_get_string_enc(wmem_file_scope(), tvb, local_offset, 64, ENC_ASCII));
|
|
GetVFInfo_header_tree = proto_item_add_subtree(GetVFInfo_header_item, ett_getvfinfo);
|
|
|
|
proto_tree_add_item(GetVFInfo_header_tree, hf_opa_GetVFInfo_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
proto_tree_add_item(GetVFInfo_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
local_offset = parse_Image(GetVFInfo_header_tree, tvb, &local_offset);
|
|
|
|
proto_tree_add_item(GetVFInfo_header_tree, hf_opa_GetVFInfo_numPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
/* UtilStats */
|
|
GetVFInfo_Util_Stats_tree = proto_tree_add_subtree(GetVFInfo_header_tree, tvb, local_offset, 40 + PM_UTIL_BUCKETS * 4,
|
|
ett_getvfinfoutilstats, NULL, "Internal Utilization Statistics");
|
|
|
|
proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_totalMBps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_totalKPps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_avgMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_minMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_maxMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetVFInfo_Util_Stats_Buckets_item = proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_numBWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetVFInfo_Util_Stats_Buckets_tree = proto_item_add_subtree(GetVFInfo_Util_Stats_Buckets_item, ett_getvfinfoutilbuckets);
|
|
for (i = 0; i < PM_UTIL_BUCKETS; i++) {
|
|
GetVFInfo_Util_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Util_Stats_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetVFInfo_Util_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * util, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
|
|
}
|
|
proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_avgKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_minKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_maxKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_pmaFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_topoFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
|
|
/* ErrorStats */
|
|
GetVFInfo_Error_Summary_tree = proto_tree_add_subtree(GetVFInfo_header_tree, tvb, local_offset, 40 + PM_ERR_BUCKETS * 24,
|
|
ett_getvfinfoerrorsummary, NULL, "Internal Error Statistics");
|
|
|
|
GetVFInfo_Error_Stats_Integrity_Buckets_item = proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_integrityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetVFInfo_Error_Stats_Congestion_Buckets_item = proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_congestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetVFInfo_Error_Stats_SmaCongestion_Buckets_item = proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_smaCongestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetVFInfo_Error_Stats_Bubble_Buckets_item = proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_bubbleErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetVFInfo_Error_Stats_Security_Buckets_item = proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_securityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
GetVFInfo_Error_Stats_Routing_Buckets_item = proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_routingErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_utlizationPct10, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_discardsPct10, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
GetVFInfo_Error_Integrity_Buckets_tree = proto_item_add_subtree(GetVFInfo_Error_Stats_Integrity_Buckets_item, ett_getvfinfoerrintegritybucket);
|
|
GetVFInfo_Error_Congestion_Buckets_tree = proto_item_add_subtree(GetVFInfo_Error_Stats_Congestion_Buckets_item, ett_getvfinfoerrcongestionbucket);
|
|
GetVFInfo_Error_SmaCongestion_Buckets_tree = proto_item_add_subtree(GetVFInfo_Error_Stats_SmaCongestion_Buckets_item, ett_getvfinfoerrsmacongestionbucket);
|
|
GetVFInfo_Error_Bubble_Buckets_tree = proto_item_add_subtree(GetVFInfo_Error_Stats_Bubble_Buckets_item, ett_getvfinfoerrbubblebucket);
|
|
GetVFInfo_Error_Security_Buckets_tree = proto_item_add_subtree(GetVFInfo_Error_Stats_Security_Buckets_item, ett_getvfinfoerrsecuritybucket);
|
|
GetVFInfo_Error_Routing_Buckets_tree = proto_item_add_subtree(GetVFInfo_Error_Stats_Routing_Buckets_item, ett_getvfinfoerrroutingbucket);
|
|
|
|
for (i = 0; i < PM_ERR_BUCKETS; i++) {
|
|
GetVFInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Error_Integrity_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetVFInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetVFInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Error_Congestion_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetVFInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetVFInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Error_SmaCongestion_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetVFInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetVFInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Error_Bubble_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetVFInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetVFInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Error_Security_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetVFInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
GetVFInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Error_Routing_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
proto_item_set_text(GetVFInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
|
|
local_offset += 4;
|
|
}
|
|
/* End internalErrors */
|
|
proto_tree_add_item(GetVFInfo_header_tree, hf_opa_GetVFInfo_maxInternalRate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetVFInfo_header_tree, hf_opa_GetVFInfo_minInternalRate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetVFInfo_header_tree, hf_opa_GetVFInfo_maxInternalMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse GetVFConfig MAD from the Performance Admin class. */
|
|
static gint parse_GetVFConfig(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
|
|
{
|
|
proto_tree *GetVFConfig_header_tree;
|
|
proto_item *GetVFConfig_header_item;
|
|
proto_item *GetVFConfig_Port_item;
|
|
proto_tree *GetVFConfig_Port_tree;
|
|
|
|
gint local_offset = *offset;
|
|
guint i;
|
|
|
|
guint length = tvb_captured_length_remaining(tvb, local_offset);
|
|
guint records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
|
|
|
|
if (!parentTree || (!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1))
|
|
return *offset;
|
|
|
|
if (MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE) {
|
|
GetVFConfig_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFConfig, tvb, local_offset, 64 + 24, ENC_NA);
|
|
proto_item_set_text(GetVFConfig_header_item, "VF Config");
|
|
GetVFConfig_header_tree = proto_item_add_subtree(GetVFConfig_header_item, ett_getvfconfig);
|
|
proto_tree_add_item(GetVFConfig_header_tree, hf_opa_GetVFConfig_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
proto_tree_add_item(GetVFConfig_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
local_offset = parse_Image(GetVFConfig_header_tree, tvb, &local_offset);
|
|
} else if (MAD->Method == METHOD_GETTABLE_RESP || MAD->Method == METHOD_GET_RESP) {
|
|
GetVFConfig_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFConfig, tvb, local_offset, records * PA_HEADER->AttributeOffset * 8, ENC_NA);
|
|
proto_item_set_text(GetVFConfig_header_item, "VF Config");
|
|
GetVFConfig_header_tree = proto_item_add_subtree(GetVFConfig_header_item, ett_getvfconfig);
|
|
for (i = 0; i < records; i++) {
|
|
GetVFConfig_Port_tree = proto_tree_add_subtree_format(GetVFConfig_header_tree, tvb, local_offset,
|
|
PA_HEADER->AttributeOffset * 8, ett_getvfconfigport, &GetVFConfig_Port_item, "%3u: ", i);
|
|
local_offset = parse_Image(GetVFConfig_Port_tree, tvb, &local_offset);
|
|
proto_tree_add_item(GetVFConfig_Port_tree, hf_opa_GetVFConfig_Port_NodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFConfig_Port_tree, hf_opa_GetVFConfig_Port_nodeDesc, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
proto_item_append_text(GetVFConfig_Port_item, "LID: 0x%04x, Port: %u", tvb_get_ntohl(tvb, local_offset), tvb_get_guint8(tvb, local_offset + 4));
|
|
proto_tree_add_item(GetVFConfig_Port_tree, hf_opa_GetVFConfig_Port_NodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFConfig_Port_tree, hf_opa_GetVFConfig_Port_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetVFConfig_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
}
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse GetVFPortCounters MAD from the Performance Admin class. */
|
|
static gint parse_GetVFPortCounters(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD)
|
|
{
|
|
proto_tree *GetVFPortCounters_header_tree;
|
|
proto_item *GetVFPortCounters_header_item;
|
|
|
|
gint local_offset = *offset;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
GetVFPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFPortCounters, tvb, local_offset, 224, ENC_NA);
|
|
GetVFPortCounters_header_tree = proto_item_add_subtree(GetVFPortCounters_header_item, ett_getvfportcounters);
|
|
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_nodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_flags, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
local_offset = parse_Image(GetVFPortCounters_header_tree, tvb, &local_offset);
|
|
|
|
if (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP) {
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFRcvData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitDiscards, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_SwPortVFCongestion, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitWait, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFRcvFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFRcvBECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitTimeCong, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitWastedBW, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitWaitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFRcvBubble, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFMarkFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
} else {
|
|
local_offset += 112;
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse ClearVFPortCounters MAD from the Performance Admin class. */
|
|
static gint parse_ClearVFPortCounters(proto_tree *parentTree, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
proto_tree *ClearVFPortCounters_header_tree;
|
|
proto_item *ClearVFPortCounters_header_item;
|
|
|
|
gint local_offset = *offset;
|
|
|
|
if (!parentTree)
|
|
return *offset;
|
|
|
|
ClearVFPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_ClearVFPortCounters, tvb, local_offset, 92, ENC_NA);
|
|
ClearVFPortCounters_header_tree = proto_item_add_subtree(ClearVFPortCounters_header_item, ett_clearvfportcounters);
|
|
|
|
proto_tree_add_item(ClearVFPortCounters_header_tree, hf_opa_ClearVFPortCounters_nodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(ClearVFPortCounters_header_tree, hf_opa_ClearVFPortCounters_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(ClearVFPortCounters_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(ClearVFPortCounters_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_item(ClearVFPortCounters_header_tree, hf_opa_ClearVFPortCounters_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
proto_tree_add_item(ClearVFPortCounters_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
proto_tree_add_bitmask(ClearVFPortCounters_header_tree, tvb, local_offset,
|
|
hf_opa_ClearVFPortCounters_CounterSelectMask, ett_clearvfportcounters_counterselectmask,
|
|
_ClearVFPortCounters_CounterSelectMask, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
|
|
return local_offset;
|
|
}
|
|
|
|
/* Parse GetVFFocusPorts MAD from the Performance Admin class. */
|
|
static gint parse_GetVFFocusPorts(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
|
|
{
|
|
proto_tree *GetVFFocusPorts_header_tree;
|
|
proto_item *GetVFFocusPorts_header_item;
|
|
|
|
proto_tree *GetVFFocusPorts_Port_tree;
|
|
|
|
gint local_offset = *offset;
|
|
guint i;
|
|
|
|
guint length = tvb_captured_length_remaining(tvb, local_offset);
|
|
guint records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
|
|
|
|
if (!parentTree || (!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1))
|
|
return *offset;
|
|
|
|
if (MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE) {
|
|
GetVFFocusPorts_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFFocusPorts, tvb, local_offset, 130, ENC_NA);
|
|
GetVFFocusPorts_header_tree = proto_item_add_subtree(GetVFFocusPorts_header_item, ett_getvffocusports);
|
|
|
|
proto_tree_add_item(GetVFFocusPorts_header_tree, hf_opa_GetVFFocusPorts_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
proto_tree_add_item(GetVFFocusPorts_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
local_offset = parse_Image(GetVFFocusPorts_header_tree, tvb, &local_offset);
|
|
proto_tree_add_item(GetVFFocusPorts_header_tree, hf_opa_GetVFFocusPorts_select, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFFocusPorts_header_tree, hf_opa_GetVFFocusPorts_start, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFFocusPorts_header_tree, hf_opa_GetVFFocusPorts_range, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
} else if (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP) {
|
|
GetVFFocusPorts_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFFocusPorts, tvb, local_offset, records * PA_HEADER->AttributeOffset * 8, ENC_NA);
|
|
GetVFFocusPorts_header_tree = proto_item_add_subtree(GetVFFocusPorts_header_item, ett_getvffocusports);
|
|
for (i = 0; i < records; i++) {
|
|
GetVFFocusPorts_Port_tree = proto_tree_add_subtree_format(GetVFFocusPorts_header_tree,
|
|
tvb, local_offset, PA_HEADER->AttributeOffset * 8, ett_getvffocusportsport, NULL,
|
|
"%3u: LID: 0x%04x, Port: %u",
|
|
i, tvb_get_ntohl(tvb, local_offset), tvb_get_guint8(tvb, local_offset + 4));
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_nodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_portNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_mtu, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_localFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_neighborFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_value, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_nodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_nodeDesc, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_neighborLid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
|
|
local_offset += 4;
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_neighborPortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
|
|
local_offset += 1;
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
|
|
local_offset += 3;
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_neighborValue, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_neighborGuid, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_neighborNodeDesc, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
|
|
local_offset += 64;
|
|
}
|
|
}
|
|
|
|
return local_offset;
|
|
}
|
|
static gboolean parse_PA_Attribute(proto_tree *parentTree, tvbuff_t *tvb, gint *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
|
|
{
|
|
gint local_offset = *offset;
|
|
|
|
switch (MAD->AttributeID) {
|
|
case PA_ATTR_ID_CLASS_PORTINFO:
|
|
local_offset = parse_ClassPortInfo(parentTree, tvb, &local_offset, MAD);
|
|
break;
|
|
case PA_ATTR_ID_GET_GRP_LIST:
|
|
local_offset = parse_GetGroupList(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
|
|
break;
|
|
case PA_ATTR_ID_GET_GRP_INFO:
|
|
local_offset = parse_GetGroupInfo(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
|
|
break;
|
|
case PA_ATTR_ID_GET_GRP_CFG:
|
|
local_offset = parse_GetGroupConfig(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
|
|
break;
|
|
case PA_ATTR_ID_GET_PORT_CTRS:
|
|
local_offset = parse_GetPortCounters(parentTree, tvb, &local_offset, MAD);
|
|
break;
|
|
case PA_ATTR_ID_CLR_PORT_CTRS:
|
|
local_offset = parse_ClearPortCounters(parentTree, tvb, &local_offset);
|
|
break;
|
|
case PA_ATTR_ID_CLR_ALL_PORT_CTRS:
|
|
local_offset = parse_ClearAllPortCounters(parentTree, tvb, &local_offset);
|
|
break;
|
|
case PA_ATTR_ID_GET_PM_CFG:
|
|
local_offset = parse_PMConfig(parentTree, tvb, &local_offset);
|
|
break;
|
|
case PA_ATTR_ID_FREEZE_IMAGE:
|
|
local_offset = parse_Image(parentTree, tvb, &local_offset);
|
|
break;
|
|
case PA_ATTR_ID_RELEASE_IMAGE:
|
|
local_offset = parse_Image(parentTree, tvb, &local_offset);
|
|
break;
|
|
case PA_ATTR_ID_RENEW_IMAGE:
|
|
local_offset = parse_Image(parentTree, tvb, &local_offset);
|
|
break;
|
|
case PA_ATTR_ID_GET_FOCUS_PORTS:
|
|
local_offset = parse_GetFocusPorts(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
|
|
break;
|
|
case PA_ATTR_ID_GET_IMAGE_INFO:
|
|
local_offset = parse_GetImageInfo(parentTree, tvb, &local_offset);
|
|
break;
|
|
case PA_ATTR_ID_MOVE_FREEZE_FRAME:
|
|
local_offset = parse_MoveFreezeFrame(parentTree, tvb, &local_offset);
|
|
break;
|
|
case PA_ATTR_ID_GET_VF_LIST:
|
|
local_offset = parse_GetVFList(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
|
|
break;
|
|
case PA_ATTR_ID_GET_VF_INFO:
|
|
local_offset = parse_GetVFInfo(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
|
|
break;
|
|
case PA_ATTR_ID_GET_VF_CONFIG:
|
|
local_offset = parse_GetVFConfig(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
|
|
break;
|
|
case PA_ATTR_ID_GET_VF_PORT_CTRS:
|
|
local_offset = parse_GetVFPortCounters(parentTree, tvb, &local_offset, MAD);
|
|
break;
|
|
case PA_ATTR_ID_CLR_VF_PORT_CTRS:
|
|
local_offset = parse_ClearVFPortCounters(parentTree, tvb, &local_offset);
|
|
break;
|
|
case PA_ATTR_ID_GET_VF_FOCUS_PORTS:
|
|
local_offset = parse_GetVFFocusPorts(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
|
|
break;
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
*offset = local_offset;
|
|
return TRUE;
|
|
}
|
|
|
|
/* Parse the Method from the MAD Common Header. */
|
|
static void label_PA_Method(proto_item *PAItem, MAD_t *MAD, packet_info *pinfo)
|
|
{
|
|
const guchar *label = val_to_str_const(MAD->Method, PA_Methods, "(Unknown Perf Method!)");
|
|
proto_item_append_text(PAItem, " %s", label);
|
|
col_append_str(pinfo->cinfo, COL_INFO, label);
|
|
}
|
|
|
|
/* Parse the Attribute from the MAD Common Header */
|
|
static void label_PA_Attribute(proto_item *PAItem, MAD_t *MAD, packet_info *pinfo)
|
|
{
|
|
const guchar *label = val_to_str_const(MAD->AttributeID, PA_Attributes, "Attribute (Unknown Perf Attribute!)");
|
|
proto_item_append_text(PAItem, "%s", &label[11]);
|
|
col_append_str(pinfo->cinfo, COL_INFO, &label[11]);
|
|
}
|
|
/* Parse the PA_HEADER
|
|
* IN: parentTree to add the dissection to
|
|
* IN: tvb - the data buffer from wireshark
|
|
* IN/OUT: The current and updated offset */
|
|
static gboolean parse_PA_HEADER(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset, MAD_t *MAD, PA_HEADER_t *PA_HEADER)
|
|
{
|
|
gint local_offset = *offset;
|
|
proto_item *PA_HEADER_header_item;
|
|
proto_tree *PA_HEADER_header_tree;
|
|
|
|
PA_HEADER_header_item = proto_tree_add_item(parentTree, hf_opa_pa, tvb, local_offset, 20, ENC_NA);
|
|
PA_HEADER_header_tree = proto_item_add_subtree(PA_HEADER_header_item, ett_pa);
|
|
|
|
PA_HEADER->SM_Key = tvb_get_ntoh64(tvb, local_offset);
|
|
proto_tree_add_item(PA_HEADER_header_tree, hf_opa_pa_sm_key, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
PA_HEADER->AttributeOffset = tvb_get_ntohs(tvb, local_offset);
|
|
proto_tree_add_item(PA_HEADER_header_tree, hf_opa_pa_attribute_offset, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
PA_HEADER->Reserved = tvb_get_ntohs(tvb, local_offset);
|
|
proto_tree_add_item(PA_HEADER_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
|
|
local_offset += 2;
|
|
PA_HEADER->ComponentMask = tvb_get_ntoh64(tvb, local_offset);
|
|
proto_tree_add_item(PA_HEADER_header_tree, hf_opa_pa_component_mask, tvb, local_offset, 8, ENC_BIG_ENDIAN);
|
|
local_offset += 8;
|
|
|
|
label_PA_Method(PA_HEADER_header_item, MAD, pinfo);
|
|
label_PA_Attribute(PA_HEADER_header_item, MAD, pinfo);
|
|
|
|
*offset = local_offset;
|
|
return TRUE;
|
|
}
|
|
/* Parse Performance Administration */
|
|
static void parse_PERFADMN(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
MAD_t MAD;
|
|
RMPP_t RMPP;
|
|
PA_HEADER_t PA_HEADER;
|
|
fragment_head *frag_head = NULL;
|
|
tvbuff_t *old_tvb = NULL;
|
|
gint old_offset;
|
|
gboolean parent_was_opa_fe = proto_is_frame_protocol(pinfo->layers, "opa.fe");
|
|
|
|
if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
|
|
return;
|
|
}
|
|
if (!parse_RMPP(parentTree, pinfo, tvb, offset, &RMPP)) {
|
|
return;
|
|
}
|
|
if (!parse_PA_HEADER(parentTree, pinfo, tvb, offset, &MAD, &PA_HEADER)) {
|
|
return;
|
|
}
|
|
if ((!pref_parse_on_mad_status_error && MAD.Status) ||
|
|
RMPP.Type == RMPP_ACK) {
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
|
|
if (!parent_was_opa_fe && pref_attempt_rmpp_defragment
|
|
&& (RMPP.resptime_flags & RMPP_FLAG_ACTIVE_MASK) && (RMPP.Type == RMPP_DATA)
|
|
&& !((RMPP.resptime_flags & RMPP_FLAG_FIRST_MASK)
|
|
&& (RMPP.resptime_flags & RMPP_FLAG_LAST_MASK))) {
|
|
|
|
frag_head = fragment_add_seq_check(&opa_mad_rmpp_reassembly_table,
|
|
tvb, *offset, pinfo, (guint32)MAD.TransactionID, NULL, RMPP.SegmentNumber - 1,
|
|
((RMPP.resptime_flags & RMPP_FLAG_LAST_MASK) ?
|
|
RMPP.PayloadLength - 20 : (guint32)tvb_captured_length_remaining(tvb, *offset)),
|
|
(gboolean)!(RMPP.resptime_flags & RMPP_FLAG_LAST_MASK));
|
|
/* Back up tvb & offset */
|
|
old_tvb = tvb;
|
|
old_offset = *offset;
|
|
/* Create new tvb from reassembled data */
|
|
tvb = process_reassembled_data(old_tvb, old_offset, pinfo, "Reassembled RMPP Packet",
|
|
frag_head, &opa_rmpp_frag_items, NULL, parentTree);
|
|
if (tvb == NULL) {
|
|
return;
|
|
}
|
|
*offset = 0;
|
|
}
|
|
if (!parse_PA_Attribute(parentTree, tvb, offset, &MAD, &RMPP, &PA_HEADER)) {
|
|
expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
|
|
"Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
}
|
|
/* Parse Vendor Specific Management Packets */
|
|
/* TBD: Replace with dissector table to call other possible dissectors */
|
|
static void parse_VENDOR_MANAGEMENT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
MAD_t MAD;
|
|
RMPP_t RMPP;
|
|
|
|
if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
|
|
return;
|
|
}
|
|
if (value_is_in_range(global_mad_vendor_class, MAD.MgmtClass)) {
|
|
/* Vendor MAD 0x09 to 0x0F does NOT have an RMPP header */
|
|
|
|
} else if (value_is_in_range(global_mad_vendor_rmpp_class, MAD.MgmtClass)) {
|
|
/* Vendor MAD 0x30 to 0x4F has an RMPP header */
|
|
if (!parse_RMPP(parentTree, pinfo, tvb, offset, &RMPP)) {
|
|
return;
|
|
}
|
|
}
|
|
if (!pref_parse_on_mad_status_error && MAD.Status) {
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
proto_tree_add_item(parentTree, hf_opa_vendor, tvb, *offset, -1, ENC_NA);
|
|
|
|
col_append_str(pinfo->cinfo, COL_INFO, "Vendor: (Dissector Not Implemented)");
|
|
|
|
expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
|
|
"Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
|
|
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
|
|
/* Parse Application Specific Management Packets */
|
|
/* TBD: Replace with dissector table to call other possible dissectors */
|
|
static void parse_APPLICATION_MANAGEMENT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
MAD_t MAD;
|
|
|
|
if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
|
|
return;
|
|
}
|
|
if (!pref_parse_on_mad_status_error && MAD.Status) {
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
proto_tree_add_item(parentTree, hf_opa_application, tvb, *offset, -1, ENC_NA);
|
|
|
|
col_append_str(pinfo->cinfo, COL_INFO, "Application: (Dissector Not Implemented)");
|
|
|
|
expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
|
|
"Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
|
|
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
|
|
/* Parse Reserved Management Packets --- ERROR */
|
|
static void parse_RESERVED_MANAGEMENT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
MAD_t MAD;
|
|
|
|
if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
|
|
return;
|
|
}
|
|
if (!pref_parse_on_mad_status_error && MAD.Status) {
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
proto_tree_add_item(parentTree, hf_opa_reservedmclass, tvb, *offset, -1, ENC_NA);
|
|
|
|
col_append_str(pinfo->cinfo, COL_INFO, "Reserved: (Dissector Not Implemented)");
|
|
|
|
expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
|
|
"Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
|
|
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
|
|
/* Parse Unknown Management Packets --- WARNING */
|
|
/* TBD: Replace with dissector table to call other possible dissectors */
|
|
static void parse_UNKNOWN_MANAGEMENT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, gint *offset)
|
|
{
|
|
MAD_t MAD;
|
|
|
|
if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
|
|
return;
|
|
}
|
|
if (!pref_parse_on_mad_status_error && MAD.Status) {
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
proto_tree_add_item(parentTree, hf_opa_unknown, tvb, *offset, -1, ENC_NA);
|
|
|
|
col_append_str(pinfo->cinfo, COL_INFO, "Unknown: (Dissector Not Implemented)");
|
|
|
|
expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
|
|
"Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
|
|
|
|
*offset += tvb_captured_length_remaining(tvb, *offset);
|
|
return;
|
|
}
|
|
|
|
/* Main OPA MAD dissector */
|
|
static int dissect_opa_mad(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
|
|
{
|
|
gint offset = 0; /* Current Offset */
|
|
guint8 management_class;
|
|
guint16 etype, reserved;
|
|
dissector_handle_t dissector_found = NULL;
|
|
gboolean parent_was_opa_fe = proto_is_frame_protocol(pinfo->layers, "opa.fe");
|
|
|
|
col_set_str(pinfo->cinfo, COL_PROTOCOL, "Omni-Path");
|
|
col_clear_fence(pinfo->cinfo, COL_INFO);
|
|
|
|
/* management datagrams are determined by the source/destination QPs */
|
|
if (pinfo->srcport == 0 || pinfo->srcport == 1 || pinfo->destport == 0
|
|
|| pinfo->destport == 1 || parent_was_opa_fe) {
|
|
management_class = tvb_get_guint8(tvb, offset + 1);
|
|
if (value_is_in_range(global_mad_vendor_class, management_class) ||
|
|
value_is_in_range(global_mad_vendor_rmpp_class, management_class)) {
|
|
/* parse vendor specific */
|
|
parse_VENDOR_MANAGEMENT(tree, pinfo, tvb, &offset);
|
|
} else if (value_is_in_range(global_mad_application_class, management_class)) {
|
|
/* parse application specific */
|
|
parse_APPLICATION_MANAGEMENT(tree, pinfo, tvb, &offset);
|
|
} else if (value_is_in_range(global_mad_reserved_class, management_class)) {
|
|
/* parse reserved classes */
|
|
parse_RESERVED_MANAGEMENT(tree, pinfo, tvb, &offset);
|
|
} else if (value_is_in_range(global_mad_opa_class, management_class)) {
|
|
switch (management_class) {
|
|
case SUBN_LID_ROUTED: /* parse subn man lid routed */
|
|
parse_SUBN_LID_ROUTED(tree, pinfo, tvb, &offset);
|
|
break;
|
|
case SUBN_DIRECTED_ROUTE: /* parse subn directed route */
|
|
parse_SUBN_DIRECTED_ROUTE(tree, pinfo, tvb, &offset);
|
|
break;
|
|
case SUBNADMN: /* parse sub admin */
|
|
parse_SUBNADMN(tree, pinfo, tvb, &offset);
|
|
break;
|
|
case PERFADMN:
|
|
parse_PERFADMN(tree, pinfo, tvb, &offset);
|
|
break;
|
|
case PERF: /* parse performance */
|
|
parse_PERF(tree, pinfo, tvb, &offset);
|
|
break;
|
|
default:
|
|
parse_UNKNOWN_MANAGEMENT(tree, pinfo, tvb, &offset);
|
|
break;
|
|
}
|
|
} else {
|
|
/* parse Unknown classes */
|
|
parse_UNKNOWN_MANAGEMENT(tree, pinfo, tvb, &offset);
|
|
}
|
|
} else { /* Normal Data Packet - Parse as such */
|
|
etype = tvb_get_ntohs(tvb, offset);
|
|
reserved = tvb_get_ntohs(tvb, offset + 2);
|
|
dissector_found = dissector_get_uint_handle(ethertype_dissector_table, etype);
|
|
if (dissector_found != NULL && (reserved == 0)) {
|
|
proto_tree_add_item(tree, hf_opa_etype, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
proto_tree_add_item(tree, hf_opa_etype_reserved16, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
|
|
call_dissector(dissector_found, tvb_new_subset_remaining(tvb, offset), pinfo, tree);
|
|
}
|
|
}
|
|
return tvb_captured_length(tvb);
|
|
}
|
|
|
|
static void opa_mad_init(void)
|
|
{
|
|
reassembly_table_init(&opa_mad_rmpp_reassembly_table,
|
|
&addresses_ports_reassembly_table_functions);
|
|
}
|
|
static void opa_mad_cleanup(void)
|
|
{
|
|
reassembly_table_destroy(&opa_mad_rmpp_reassembly_table);
|
|
}
|
|
void proto_register_opa_mad(void)
|
|
{
|
|
module_t *opa_mad_module;
|
|
expert_module_t *expert_opa_mad;
|
|
|
|
static hf_register_info hf[] = {
|
|
{ &hf_opa_reserved64, {
|
|
"Reserved (64 bits)", "opa.reserved64",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_reserved32, {
|
|
"Reserved (32 bits)", "opa.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_reserved24, {
|
|
"Reserved (24 bits)", "opa.reserved",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_reserved16, {
|
|
"Reserved (16 bits)", "opa.reserved",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_reserved8, {
|
|
"Reserved (8 bits)", "opa.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
/* Omni-Path*/
|
|
{ &hf_opa_etype, {
|
|
"Ethertype", "opa.etype",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_etype_reserved16, {
|
|
"Reserved (16 bits)", "opa.etype.reserved",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* SM - Lid Routed*/
|
|
{ &hf_opa_sm_lid, {
|
|
"Subnet Management (LID Routed)", "opa.sm.lid",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sm_m_key, {
|
|
"M_Key", "opa.sm.lid.mkey",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* SM - Directed Route */
|
|
{ &hf_opa_sm_dr, {
|
|
"Subnet Management (Directed Route)", "opa.sm.dr",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sm_dr_slid, {
|
|
"DrSLID", "opa.sm.dr.slid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sm_dr_dlid, {
|
|
"DrDLID", "opa.sm.dr.dlid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sm_dr_initial_path, {
|
|
"Initial Path", "opa.sm.dr.initialpath",
|
|
FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sm_dr_return_path, {
|
|
"Return Path", "opa.sm.dr.returnpath",
|
|
FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sm_dr_reserved64, {
|
|
"Reserved (64 bits)", "opa.sm.dr.reserved",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* SA MAD Header */
|
|
{ &hf_opa_sa, {
|
|
"Subnet Administration Header", "opa.sa",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_sm_key, {
|
|
"SM_Key (Verification Key)", "opa.sa.smkey",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_attribute_offset, {
|
|
"Attribute Offset", "opa.sa.attributeoffset",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_component_mask, {
|
|
"Component Mask", "opa.sa.componentmask",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* PM MAD Header */
|
|
{ &hf_opa_pm, {
|
|
"Performance Management", "opa.pm",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* PA MAD Header */
|
|
{ &hf_opa_pa, {
|
|
"Performance Administration Header", "opa.pa",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_pa_sm_key, {
|
|
"SM_Key (Verification Key)", "opa.pa.smkey",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_pa_attribute_offset, {
|
|
"Attribute Offset", "opa.pa.attributeoffset",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_pa_component_mask, {
|
|
"Component Mask", "opa.pa.componentmask",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* Other MAD Headers */
|
|
{ &hf_opa_vendor, {
|
|
"Vendor MAD Header", "opa.vendor",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_application, {
|
|
"Application MAD Header", "opa.application",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_reservedmclass, {
|
|
"Reserved MAD Header", "opa.reservedmclass",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_unknown, {
|
|
"Unknown MAD Header", "opa.unknown",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* MAD Header */
|
|
{ &hf_opa_mad, {
|
|
"MAD Header - Common Management Datagram", "opa.mad.header",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_base_version, {
|
|
"Base Version", "opa.mad.baseversion",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_mgmt_class, {
|
|
"Management Class", "opa.mad.mgmtclass",
|
|
FT_UINT8, BASE_HEX | BASE_EXT_STRING, &MAD_mgmt_names_ext, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_class_version, {
|
|
"Class Version", "opa.mad.classversion",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_method, {
|
|
"Method", "opa.mad.method",
|
|
FT_UINT8, BASE_HEX, VALS(Methods), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_status, {
|
|
"Status", "opa.mad.status",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_status_DR_D, {
|
|
"Direction", "opa.mad.dr.direction",
|
|
FT_UINT16, BASE_HEX, NULL, 0x8000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_status_DR_status, {
|
|
"Status", "opa.mad.status",
|
|
FT_UINT16, BASE_HEX, NULL, 0x7FFF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_status_DR_Hop_Pointer, {
|
|
"Hop Pointer", "opa.mad.dr.hoppointer",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_status_DR_Hop_Count, {
|
|
"Hop Counter", "opa.mad.dr.hopcounter",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_status_NM_ClassSpecific, {
|
|
"Class Specific", "opa.mad.status.classspecific",
|
|
FT_UINT16, BASE_HEX, NULL, 0xFF00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_status_NM_reserved1, {
|
|
"Reserved (3 Bits)", "opa.mad.status.reserved",
|
|
FT_UINT16, BASE_HEX, NULL, 0x00E0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_status_NM_InvalidField, {
|
|
"Invalid Field", "opa.mad.status.invalidfield",
|
|
FT_UINT16, BASE_HEX, VALS(MAD_Status_InvalidField), 0x001C, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_status_NM_RedirectRqrd, {
|
|
"Redirect Required", "opa.mad.status.redirectrqrd",
|
|
FT_BOOLEAN, 16, TFS(&tfs_redirect_no_redirect), 0x0002, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_status_NM_Busy, {
|
|
"Busy", "opa.mad.status.busy",
|
|
FT_BOOLEAN, 16, TFS(&tfs_busy_not_busy), 0x0001, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_transaction_id, {
|
|
"Transaction ID", "opa.mad.transactionid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_mad_attribute_id, {
|
|
"Attribute ID", "opa.mad.attributeid",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
/* MAD Header - Attribute Modifier */
|
|
{ &hf_opa_attribute_modifier, {
|
|
"Attribute Modifier", "opa.mad.attributemodifier",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_A, {
|
|
"All", "opa.mad.attributemodifier.a",
|
|
FT_BOOLEAN, 32, NULL, 0x00000100, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_A2, {
|
|
"All Ingress Ports", "opa.mad.attributemodifier.a2",
|
|
FT_BOOLEAN, 32, NULL, 0x00020000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_A3, {
|
|
"All", "opa.mad.attributemodifier.a3",
|
|
FT_BOOLEAN, 32, NULL, 0x00040000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_A4, {
|
|
"All", "opa.mad.attributemodifier.a4",
|
|
FT_BOOLEAN, 32, NULL, 0x00100000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_A5, {
|
|
"Starting Address", "opa.mad.attributemodifier.a5",
|
|
FT_UINT32, BASE_HEX, NULL, 0x7FF80000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_A6, {
|
|
"All", "opa.mad.attributemodifier.a6",
|
|
FT_BOOLEAN, 32, NULL, 0x00000020, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_B, {
|
|
"Block Number", "opa.mad.attributemodifier.b",
|
|
FT_UINT32, BASE_DEC, NULL, 0x000007FF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_B2, {
|
|
"All Egress Ports", "opa.mad.attributemodifier.b2",
|
|
FT_BOOLEAN, 32, NULL, 0x00010000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_B3, {
|
|
"Block Number", "opa.mad.attributemodifier.b3",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0003FFFF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_B4, {
|
|
"Block Number", "opa.mad.attributemodifier.b4",
|
|
FT_UINT32, BASE_DEC, NULL, 0x000FFFFF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_B5, {
|
|
"Block Number", "opa.mad.attributemodifier.b5",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0000001F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_E, {
|
|
"Egress Ports", "opa.mad.attributemodifier.e",
|
|
FT_UINT32, BASE_DEC, NULL, 0x000000FF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_I, {
|
|
"Ingress Ports", "opa.mad.attributemodifier.i",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0000FF00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_L, {
|
|
"Length", "opa.mad.attributemodifier.l",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0007E000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_NP, {
|
|
"Number of Ports", "opa.mad.attributemodifier.n",
|
|
FT_UINT32, BASE_DEC, NULL, 0xFF000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_NB, {
|
|
"Number of Blocks", "opa.mad.attributemodifier.n",
|
|
FT_UINT32, BASE_DEC, NULL, 0xFF000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_N2, {
|
|
"Number of aggregated Attributes", "opa.mad.attributemodifier.n",
|
|
FT_UINT32, BASE_DEC, NULL, 0x000000FF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_P, {
|
|
"Port Number", "opa.mad.attributemodifier.p",
|
|
FT_UINT32, BASE_DEC, NULL, 0x000000FF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_P2, {
|
|
"Port Number", "opa.mad.attributemodifier.p",
|
|
FT_UINT32, BASE_DEC, NULL, 0x00FF0000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_P3, {
|
|
"Position", "opa.mad.attributemodifier.p",
|
|
FT_UINT32, BASE_DEC, NULL, 0x00C00000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_S, {
|
|
"Section of Table", "opa.mad.attributemodifier.s",
|
|
FT_UINT32, BASE_DEC, VALS(MADAttrModSectionVLarb), 0x00FF0000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_S2, {
|
|
"Start of SM Configuration", "opa.mad.attributemodifier.s2",
|
|
FT_BOOLEAN, 32, NULL, 0x00000200, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_attribute_modifier_Y, {
|
|
"Asynchronous update", "opa.mad.attributemodifier.y",
|
|
FT_BOOLEAN, 32, NULL, 0x00001000, NULL, HFILL }
|
|
},
|
|
|
|
/* RMPP Header */
|
|
{ &hf_opa_rmpp, {
|
|
"RMPP - Reliable Multi-Packet Transaction Protocol", "opa.rmpp",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_version, {
|
|
"RMPP Version", "opa.rmpp.rmppversion",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_type, {
|
|
"RMPP Type", "opa.rmpp.rmpptype",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_r_resp_time, {
|
|
"R Resp Time", "opa.rmpp.rresptime",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_flags_last, {
|
|
"Last", "opa.rmpp.flags.last",
|
|
FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_flags_first, {
|
|
"First", "opa.rmpp.flags.first",
|
|
FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_flags_active, {
|
|
"Active", "opa.rmpp.flags.active",
|
|
FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_status, {
|
|
"RMPP Status", "opa.rmpp.rmppstatus",
|
|
FT_UINT8, BASE_HEX, VALS(RMPP_Status), 0xFF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_data1, {
|
|
"RMPP Data 1", "opa.rmpp.data1",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_data2, {
|
|
"RMPP Data 2", "opa.rmpp.data2",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
/* RMPP Data */
|
|
{ &hf_opa_rmpp_segment_number, {
|
|
"Segment Number", "opa.rmpp.segmentnumber",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_payload_length32, {
|
|
"Payload Length", "opa.rmpp.payloadlength",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
/* RMPP ACK */
|
|
{ &hf_opa_rmpp_new_window_last, {
|
|
"New Window Last", "opa.rmpp.newwindowlast",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
/* Fragments */
|
|
{ &hf_opa_rmpp_fragments, {
|
|
"Message fragments", "opa.fragments",
|
|
FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_fragment, {
|
|
"Message fragment", "opa.fragment",
|
|
FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_fragment_overlap, {
|
|
"Message fragment overlap", "opa.fragment.overlap",
|
|
FT_BOOLEAN, 0, NULL, 0x00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_fragment_overlap_conflicts, {
|
|
"Message fragment overlapping with conflicting data", "opa.fragment.overlap.conflicts",
|
|
FT_BOOLEAN, 0, NULL, 0x00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_fragment_multiple_tails, {
|
|
"Message has multiple tail fragments", "opa.fragment.multiple_tails",
|
|
FT_BOOLEAN, 0, NULL, 0x00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_fragment_too_long_fragment, {
|
|
"Message fragment too long", "opa.fragment.too_long_fragment",
|
|
FT_BOOLEAN, 0, NULL, 0x00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_fragment_error, {
|
|
"Message defragmentation error", "opa.fragment.error",
|
|
FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_fragment_count, {
|
|
"Message fragment count", "opa.fragment.count",
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_reassembled_in, {
|
|
"Reassembled in", "opa.reassembled.in",
|
|
FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_rmpp_reassembled_length, {
|
|
"Reassembled length", "opa.reassembled.length",
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
},
|
|
|
|
/* SA Packet */
|
|
/* SA RID */
|
|
{ &hf_opa_sa_Lid, {
|
|
"LID", "opa.sa.lid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_Port, {
|
|
"Port", "opa.sa.port",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_EndportLID, {
|
|
"EndportLID", "opa.sa.endportlid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_PortNum, {
|
|
"PortNum", "opa.sa.portnum",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_InputPortNum, {
|
|
"InputPortNum", "opa.sa.inputportnum",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_OutputPortNum, {
|
|
"OutputPortNum", "opa.sa.outputportnum",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_reserved14, {
|
|
"Reserved (14 bits)", "opa.sa.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0xFFFC0000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_BlockNum_18b, {
|
|
"BlockNum", "opa.sa.blocknum",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0003FFFF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_Position, {
|
|
"Position", "opa.sa.position",
|
|
FT_UINT32, BASE_HEX, NULL, 0xC0000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_Position_16b, {
|
|
"Position", "opa.sa.position",
|
|
FT_UINT16, BASE_HEX, NULL, 0xC000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_reserved9, {
|
|
"Reserved (9 bits)", "opa.sa.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0x3FE00000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_reserved9_16b, {
|
|
"Reserved (9 bits)", "opa.sa.reserved",
|
|
FT_UINT16, BASE_HEX, NULL, 0x3FE0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_BlockNum_21b, {
|
|
"BlockNum", "opa.sa.blocknum",
|
|
FT_UINT32, BASE_HEX, NULL, 0x001FFFFF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_BlockNum_8b, {
|
|
"BlockNum", "opa.sa.blocknum",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_BlockNum_16b, {
|
|
"BlockNum", "opa.sa.blocknum",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_BlockNum_5b, {
|
|
"BlockNum", "opa.sa.blocknum",
|
|
FT_UINT16, BASE_HEX, NULL, 0x001F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_SubscriberLID, {
|
|
"SubscriberGID", "opa.sa.subscribergid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_Enum, {
|
|
"Enum", "opa.sa.enum",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_FromLID, {
|
|
"FromLID", "opa.sa.fromlid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_FromPort, {
|
|
"FromPort", "opa.sa.fromport",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_ServiceID, {
|
|
"ServiceID", "opa.sa.serviceid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_ServiceLID, {
|
|
"ServiceLID", "opa.sa.servicelid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_ServiceP_Key, {
|
|
"ServiceP_Key", "opa.sa.servicep_key",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_ServiceGID, {
|
|
"ServiceGID", "opa.sa.servicegid",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_MGID, {
|
|
"MGID", "opa.sa.mgid",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_sa_PortGID, {
|
|
"PortGID", "opa.sa.portgid",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* Notice */
|
|
{ &hf_opa_Notice, {
|
|
"Notice", "opa.notice",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Notice_IsGeneric, {
|
|
"IsGeneric", "opa.notice.isgeneric",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Notice_Type, {
|
|
"Type", "opa.notice.type",
|
|
FT_UINT8, BASE_HEX, VALS(NoticeType), 0x7F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Notice_ProducerType, {
|
|
"ProducerType", "opa.notice.producertype",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Notice_TrapNumber, {
|
|
"TrapNumber", "opa.notice.trapnumber",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Notice_VendorID, {
|
|
"VendorID", "opa.notice.vendorid",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Notice_DeviceID, {
|
|
"DeviceID", "opa.notice.deviceid",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Notice_Toggle, {
|
|
"Toggle", "opa.notice.toggle",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Notice_Count, {
|
|
"Count", "opa.notice.count",
|
|
FT_UINT16, BASE_HEX, NULL, 0x7FFF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Notice_IssuerLID, {
|
|
"IssuerLID", "opa.notice.issuerlid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Notice_IssuerGID, {
|
|
"IssuerGID", "opa.notice.issuergid",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Notice_ClassDataDetails, {
|
|
"ClassDataDetails", "opa.notice.classdatadetails",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* Trap */
|
|
{ &hf_opa_Trap, {
|
|
"Trap", "opa.trap",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* Traps 64,65,66,67 */
|
|
{ &hf_opa_Trap_GID, {
|
|
"GID", "opa.trap.gid",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
/* Traps 68,69 */
|
|
|
|
/* Trap 128 */
|
|
{ &hf_opa_Trap_LID, {
|
|
"LIDADDR", "opa.trap.lidaddr",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* Trap 129, 130, 131 */
|
|
{ &hf_opa_Trap_PORTNO, {
|
|
"PORTNO", "opa.trap.portno",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* Trap 144 */
|
|
{ &hf_opa_Trap_CAPABILITYMASK, {
|
|
"CapabilityMask", "opa.trap.capabilitymask",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_CAPABILITYMASK3, {
|
|
"CapabilityMask3", "opa.trap.capabilitymask3",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_144_reserved, {
|
|
"Reserved (4 bits)", "opa.trap.144.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_LinkWidthDowngradeEnabledChange, {
|
|
"LinkWidthDowngradeEnabledChange", "opa.trap.linkwidthdowngradeenabledchange",
|
|
FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_LinkSpeecEnabledChange, {
|
|
"LinkSpeecEnabledChange", "opa.trap.linkspeecenabledchange",
|
|
FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_LinkWidthEnabledChange, {
|
|
"LinkWidthEnabledChange", "opa.trap.linkwidthenabledchange",
|
|
FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_NodeDescriptionChange, {
|
|
"NodeDescriptionChange", "opa.trap.nodedescriptionchange",
|
|
FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }
|
|
},
|
|
|
|
/* Trap 145 */
|
|
{ &hf_opa_Trap_SystemImageGUID, {
|
|
"SystemImageGUID", "opa.trap.systemimageguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* Trap 256 */
|
|
{ &hf_opa_Trap_DRSLID, {
|
|
"DR SLID", "opa.trap.drslid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_Method, {
|
|
"Method", "opa.trap.method",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_AttributeID, {
|
|
"AttributeID", "opa.trap.attributeid",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_AttributeModifier, {
|
|
"AttributeModifier", "opa.trap.attributemodifier",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_MKey, {
|
|
"MKey", "opa.trap.mkey",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_DRNotice, {
|
|
"DRNotice", "opa.trap.drnotice",
|
|
FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_DRPathTruncated, {
|
|
"DRPathTruncated", "opa.trap.drpathtruncated",
|
|
FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_DRHopCount, {
|
|
"DRHopCount", "opa.trap.drhopcount",
|
|
FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_DRNoticeReturnPath, {
|
|
"DRNoticeReturnPath", "opa.trap.drnoticereturnpath",
|
|
FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* Trap 257, 258 */
|
|
{ &hf_opa_Trap_Key, {
|
|
"Key", "opa.trap.key",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_SL, {
|
|
"SL", "opa.trap.sl",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_SL_reserved, {
|
|
"Reserved (3 bits)", "opa.trap.sl.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_QP, {
|
|
"QP", "opa.trap.qp",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* Trap 259 */
|
|
{ &hf_opa_Trap_DataValid, {
|
|
"DataValid", "opa.trap.datavalid",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_DataValid_Lid1, {
|
|
"Lid1", "opa.trap.datavalid.lid1",
|
|
FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x8000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_DataValid_Lid2, {
|
|
"Lid2", "opa.trap.datavalid.lid2",
|
|
FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x4000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_DataValid_PKey, {
|
|
"PKey", "opa.trap.datavalid.pkey",
|
|
FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x2000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_DataValid_SL, {
|
|
"SL", "opa.trap.datavalid.sl",
|
|
FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x1000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_DataValid_QP1, {
|
|
"QP1", "opa.trap.datavalid.qp1",
|
|
FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x0800, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_DataValid_QP2, {
|
|
"QP2", "opa.trap.datavalid.qp2",
|
|
FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x0400, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_DataValid_Gid1, {
|
|
"Gid1", "opa.trap.datavalid.gid1",
|
|
FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x0200, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_DataValid_Gid2, {
|
|
"Gid2", "opa.trap.datavalid.gid2",
|
|
FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x01000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Trap_DataValid_Reserved, {
|
|
"DataValid", "opa.trap.datavalid.reserved",
|
|
FT_UINT16, BASE_HEX, NULL, 0x00FF, NULL, HFILL }
|
|
},
|
|
|
|
{ &hf_opa_Trap_PKey, {
|
|
"PKey", "opa.trap.pkey",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* ClassPortInfo in Performance class */
|
|
{ &hf_opa_ClassPortInfo, {
|
|
"ClassPortInfo", "opa.classportinfo",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_BaseVersion, {
|
|
"BaseVersion", "opa.clasportinfo.baseversion",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_ClassVersion, {
|
|
"ClassVersion", "opa.clasportinfo.classversion",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_CapMask, {
|
|
"CapMask", "opa.clasportinfo.capmask",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_CapMask2, {
|
|
"CapMask2", "opa.clasportinfo.capmask2",
|
|
FT_UINT32, BASE_HEX, NULL, 0xFFFFFFE0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_RespTimeValue, {
|
|
"RespTimeValue", "opa.clasportinfo.resptimevalue",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0000001F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Redirect_GID, {
|
|
"GID", "opa.clasportinfo.redirect.gid",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Redirect_TClass, {
|
|
"TClass", "opa.clasportinfo.redirect.tclass",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Redirect_reserved, {
|
|
"Reserved (4 bits)", "opa.clasportinfo.redirect.reserved",
|
|
FT_UINT24, BASE_HEX, NULL, 0xF00000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Redirect_FlowLabel, {
|
|
"FlowLabel", "opa.clasportinfo.redirect.flowlabel",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0FFFFF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Redirect_LID, {
|
|
"LID", "opa.clasportinfo.redirect.lid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Redirect_SL, {
|
|
"SL", "opa.clasportinfo.redirect.sl",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Redirect_reserved2, {
|
|
"Reserved (3 bits)", "opa.clasportinfo.redirect.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Redirect_QP, {
|
|
"QP", "opa.clasportinfo.redirect.qp",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Redirect_Q_Key, {
|
|
"Q_Key", "opa.clasportinfo.redirect.q_key",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Trap_GID, {
|
|
"GID", "opa.clasportinfo.trap.gid",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Trap_TClass, {
|
|
"TClass", "opa.clasportinfo.trap.tclass",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Trap_reserved, {
|
|
"Reserved (4 bits)", "opa.clasportinfo.trap.reserved",
|
|
FT_UINT24, BASE_HEX, NULL, 0xF00000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Trap_FlowLabel, {
|
|
"FlowLabel", "opa.clasportinfo.trap.flowlabel",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0FFFFF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Trap_LID, {
|
|
"LID", "opa.clasportinfo.trap.lid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Trap_HopLimit, {
|
|
"HopLimit", "opa.clasportinfo.trap.hoplimit",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Trap_QP, {
|
|
"QP", "opa.clasportinfo.trap.qp",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Trap_Q_Key, {
|
|
"Q_Key", "opa.clasportinfo.trap.q_key",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Trap_P_Key, {
|
|
"P_Key", "opa.clasportinfo.trap.p_key",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Redirect_P_Key, {
|
|
"P_Key", "opa.clasportinfo.redirect.p_key",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Trap_SL, {
|
|
"SL", "opa.clasportinfo.trap.sl",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClassPortInfo_Trap_reserved2, {
|
|
"Reserved (3 bits)", "opa.clasportinfo.trap.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
|
|
},
|
|
/*******************
|
|
* NodeDescription *
|
|
*******************/
|
|
|
|
{ &hf_opa_NodeDescription, {
|
|
"NodeDescription", "opa.nodedescription",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_NodeDescription_NodeString, {
|
|
"NodeString", "opa.nodedescription.nodestring",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/************
|
|
* NodeInfo *
|
|
************/
|
|
{ &hf_opa_NodeInfo, {
|
|
"Node Info", "opa.nodeinfo",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_NodeInfo_BaseVersion, {
|
|
"Base Version", "opa.nodeinfo.baseversion",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_NodeInfo_ClassVersion, {
|
|
"Class Version", "opa.nodeinfo.classversion",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_NodeInfo_NodeType, {
|
|
"Node Type", "opa.nodeinfo.nodetype",
|
|
FT_UINT8, BASE_HEX, VALS(NodeType), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_NodeInfo_NumPorts, {
|
|
"Num Ports", "opa.nodeinfo.numports",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_NodeInfo_SystemImageGUID, {
|
|
"System Image GUID", "opa.nodeinfo.systemimageguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_NodeInfo_NodeGUID, {
|
|
"Node GUID", "opa.nodeinfo.nodeguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_NodeInfo_PortGUID, {
|
|
"Port GUID", "opa.nodeinfo.portguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_NodeInfo_PartitionCap, {
|
|
"Partition Cap", "opa.nodeinfo.partitioncap",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_NodeInfo_DeviceID, {
|
|
"Device ID", "opa.nodeinfo.deviceid",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_NodeInfo_Revision, {
|
|
"Revision", "opa.nodeinfo.revision",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_NodeInfo_LocalPortNum, {
|
|
"Local Port Num", "opa.nodeinfo.localportnum",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_NodeInfo_VendorID, {
|
|
"Vendor ID", "opa.nodeinfo.vendorid",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/**************
|
|
* SwitchInfo *
|
|
**************/
|
|
|
|
{ &hf_opa_SwitchInfo, {
|
|
"Switch Info", "opa.switchinfo",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_LinearFDBCap, {
|
|
"Linear FDB Cap", "opa.switchinfo.linearfdbcap",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_MulticastFDBCap, {
|
|
"Multicast FDB Cap", "opa.switchinfo.multicastfdbcap",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_LinearFDBTop, {
|
|
"Linear FDB Top", "opa.switchinfo.linearfdbtop",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_MulticastFDBTop, {
|
|
"Multicast FDB Top", "opa.switchinfo.multicastfdbtop",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_CollectiveCap, {
|
|
"Collective Cap", "opa.switchinfo.collectivecap",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_CollectiveTop, {
|
|
"Collective Top", "opa.switchinfo.collectivetop",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_IPAddrIPv6, {
|
|
"IP Addr IPv6", "opa.switchinfo.ipaddripv6",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_IPAddrIPv4, {
|
|
"IP Addr IPv4", "opa.switchinfo.ipaddripv4",
|
|
FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_LifeTimeValue, {
|
|
"Life Time Value", "opa.switchinfo.lifetimevalue",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_PortStateChange, {
|
|
"Port State Change", "opa.switchinfo.portstatechange",
|
|
FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_reserved2, {
|
|
"Reserved (2 bits)", "opa.switchinfo.reserved2",
|
|
FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_PartitionEnforcementCap, {
|
|
"Partition Enforcement Cap", "opa.switchinfo.partitionenforcementcap",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_PortGroupCap, {
|
|
"Port Group Cap", "opa.switchinfo.portgroupcap",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_PortGroupTop, {
|
|
"Port Group Top", "opa.switchinfo.portgrouptop",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_SupportedRoutingMode, {
|
|
"Supported Routing Mode", "opa.switchinfo.supportedroutingmode",
|
|
FT_UINT8, BASE_HEX, VALS(RoutingMode), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_EnabledRoutingMode, {
|
|
"Enabled Routing Mode", "opa.switchinfo.enabledroutingmode",
|
|
FT_UINT8, BASE_HEX, VALS(RoutingMode), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_reserved3, {
|
|
"Reserved (4 bits)", "opa.switchinfo.reserved3",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_EnhancedPortZero, {
|
|
"Enhanced Port Zero", "opa.switchinfo.enhancedportzero",
|
|
FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_reserved4, {
|
|
"Reserved (3 bits)", "opa.switchinfo.reserved4",
|
|
FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_reserved5, {
|
|
"Reserved (2 bits)", "opa.switchinfo.reserved5",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_CollectiveMask, {
|
|
"Collective Mask", "opa.switchinfo.collectivemask",
|
|
FT_UINT8, BASE_HEX, NULL, 0x38, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_MulticastMask, {
|
|
"Multicast Mask", "opa.switchinfo.multicastmask",
|
|
FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_AdaptiveRoutingEnable, {
|
|
"Adaptive Routing Enable", "opa.switchinfo.adaptiveroutingenable",
|
|
FT_BOOLEAN, 16, NULL, 0x8000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_AdaptiveRoutingPause, {
|
|
"Adaptive Routing Pause", "opa.switchinfo.adaptiveroutingpause",
|
|
FT_BOOLEAN, 16, NULL, 0x4000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_AdaptiveRoutingAlgorithm, {
|
|
"Adaptive Routing Algorithm", "opa.switchinfo.adaptiveroutingalgorithm",
|
|
FT_UINT16, BASE_HEX, VALS(AdaptiveRoutingAlgorithm), 0x3800, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_AdaptiveRoutingFrequency, {
|
|
"Adaptive Routing Frequency", "opa.switchinfo.adaptiveroutingfrequency",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_swinfo_ar_frequency), 0x0700, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_AdaptiveRoutingLostRoutesOnly, {
|
|
"Adaptive Routing Lost Routes Only", "opa.switchinfo.adaptiveroutinglostroutesonly",
|
|
FT_BOOLEAN, 16, NULL, 0x0080, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_AdaptiveRoutingThreshold, {
|
|
"Adaptive Routing Threshold", "opa.switchinfo.adaptiveroutingthreshold",
|
|
FT_UINT16, BASE_HEX, VALS(AdaptiveRoutingThreshold), 0x0070, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_reserved6, {
|
|
"Reserved (4 bits)", "opa.switchinfo.reserved6",
|
|
FT_UINT16, BASE_HEX, NULL, 0x000F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_SwitchCapabilityMask, {
|
|
"Switch Capability Mask", "opa.switchinfo.switchcapabilitymask",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_SwitchCapabilityMask_reserved, {
|
|
"Reserved (13 bits)", "opa.switchinfo.switchcapabilitymask.reserved",
|
|
FT_UINT16, BASE_HEX, NULL, 0xFFF8, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_SwitchCapabilityMask_IsAddrRangeConfigSupported, {
|
|
"IsAddrRangeConfigSupported", "opa.switchinfo.switchcapabilitymask.isaddrrangeconfigsupported",
|
|
FT_BOOLEAN, 16, NULL, 0x0004, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_SwitchCapabilityMask_reserved2, {
|
|
"Reserved (1 bit)", "opa.switchinfo.switchcapabilitymask.reserved",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0002, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_SwitchCapabilityMask_IsAdaptiveRoutingSupported, {
|
|
"IsAdaptiveRoutingSupported", "opa.switchinfo.switchcapabilitymask.isadaptiveroutingsupported",
|
|
FT_BOOLEAN, 16, NULL, 0x0001, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchInfo_CapabilityMaskCollectives, {
|
|
"Capability Mask Collectives", "opa.switchinfo.capabilitymaskcollectives",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/************
|
|
* PortInfo *
|
|
************/
|
|
{ &hf_opa_PortInfo, {
|
|
"Port Info", "opa.portinfo",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_LID, {
|
|
"LID", "opa.portinfo.lid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, "Base LID of this node", HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_FlowControlMask, {
|
|
"Flow Control Mask", "opa.portinfo.flowcontrolmask",
|
|
FT_UINT32, BASE_CUSTOM, CF_FUNC(cf_opa_mad_32b_mask), 0x0, "Flow control enabled on all VLs except VL15", HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_VL_PreemptCap, {
|
|
"PreemptCap", "opa.portinfo.vl.preemptcap",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, "Size of Preempting VL Arbitration table", HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_VL_reserved, {
|
|
"Reserved (3 bits)", "opa.portinfo.vl.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_VL_Cap, {
|
|
"VL Cap", "opa.portinfo.vl.cap",
|
|
FT_UINT8, BASE_DEC, NULL, 0x1F, "Virtual Lanes supported on this port", HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_VL_HighLimit, {
|
|
"HighLimit", "opa.portinfo.vl.highlimit",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, "Limit of high priority component of VL Arbitration table", HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_VL_PreemptingLimit, {
|
|
"PreemptingLimit", "opa.portinfo.vl.preemptinglimit",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, "Limit of preempt component of VL Arbitration table", HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_VL_ArbitrationHighCap, {
|
|
"ArbitrationHighCap", "opa.portinfo.vl.arbitrationhighcap",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_VL_ArbitrationLowCap, {
|
|
"ArbitrationLowCap", "opa.portinfo.vl.arbitrationlowcap",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
{ &hf_opa_PortInfo_PortPhysConfig_reserved, {
|
|
"Reserved (4 bits)", "opa.portinfo.portphysconfig.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortPhysConfig_PortType, {
|
|
"PortPhysConfig PortType", "opa.portinfo.portphysconfig.porttype",
|
|
FT_UINT8, BASE_HEX, VALS(PortType), 0x0F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_MultiCollectMask_reserved, {
|
|
"Reserved (2 bits)", "opa.portinfo.multicollectmask.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_MultiCollectMask_CollectiveMask, {
|
|
"MultiCollectMask CollectiveMask", "opa.portinfo.multicollectmask.collectivemask",
|
|
FT_UINT8, BASE_HEX, NULL, 0x38, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_MultiCollectMask_MulticastMask, {
|
|
"MultiCollectMask MulticastMask", "opa.portinfo.multicollectmask.multicastmask",
|
|
FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_M_KeyProtectBits, {
|
|
"M_KeyProtectBits", "opa.portinfo.mkeyprotectbits",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_S1_reserved, {
|
|
"Reserved (2 bits)", "opa.portinfo.s1.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x30, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_LMC, {
|
|
"LMC", "opa.portinfo.lmc",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_S2_reserved, {
|
|
"Reserved (3 bits)", "opa.portinfo.s2.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_MasterSMSL, {
|
|
"MasterSMSL", "opa.portinfo.mastersml",
|
|
FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_LinkInitReason, {
|
|
"LinkInitReason", "opa.portinfo.linkinitreason",
|
|
FT_UINT8, BASE_HEX, VALS(LinkInitReason), 0xF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PartitionEnforcementInbound, {
|
|
"PartitionEnforcementInbound", "opa.portinfo.partitionenforcementinbound",
|
|
FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PartitionEnforcementOutbound, {
|
|
"PartitionEnforcementOutbound", "opa.portinfo.partitionenforcementoutbound",
|
|
FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_S3_reserved2, {
|
|
"Reserved (2 bits)", "opa.portinfo.s3.reserved2",
|
|
FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_S4_reserved, {
|
|
"Reserved (3 bits)", "opa.portinfo.s4.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_OperationalVL, {
|
|
"OperationalVL", "opa.portinfo.operationalvl",
|
|
FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
|
|
},
|
|
/* P_Keys */
|
|
{ &hf_opa_PortInfo_P_Keys_P_Key_8B, {
|
|
"P_Keys P_Key_8B", "opa.portinfo.pkey8",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_P_Keys_P_Key_10B, {
|
|
"P_Keys P_Key_10B", "opa.portinfo.pkey10",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
{ &hf_opa_PortInfo_M_KeyViolations, {
|
|
"M_KeyViolations", "opa.portinfo.m_keyviolations",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_P_KeyViolations, {
|
|
"P_KeyViolations", "opa.portinfo.p_keyviolations",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_Q_KeyViolations, {
|
|
"Q_KeyViolations", "opa.portinfo.q_keyviolations",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
{ &hf_opa_PortInfo_TrapQueuePair_reserved, {
|
|
"TrapQueuePair Reserved (8 bits)", "opa.portinfo.trapqpair.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0xFF000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_TrapQueuePair, {
|
|
"TrapQueuePair", "opa.portinfo.trapqpair",
|
|
FT_UINT32, BASE_HEX, NULL, 0x00FFFFFF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_SAQueuePair_reserved, {
|
|
"SAQueuePair Reserved (8 bits)", "opa.portinfo.saqpair.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0xFF000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_SAQueuePair, {
|
|
"SAQueuePair", "opa.portinfo.saqpair",
|
|
FT_UINT32, BASE_HEX, NULL, 0x00FFFFFF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_NeighborPortNum, {
|
|
"NeighborPortNum", "opa.portinfo.neighborportnum",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_LinkDownReason, {
|
|
"LinkDownReason", "opa.portinfo.linkdownreason",
|
|
FT_UINT8, BASE_HEX, VALS(LinkDownReason), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_NeighborLinkDownReason, {
|
|
"NeighborLinkDownReason", "opa.portinfo.neighborlinkdownreason",
|
|
FT_UINT8, BASE_HEX, VALS(LinkDownReason), 0x0, NULL, HFILL }
|
|
},
|
|
|
|
{ &hf_opa_PortInfo_ClientReregister, {
|
|
"Subnet ClientReregister", "opa.portinfo.clientreregister",
|
|
FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_MulticastPKeyTrapSuppressEnabled, {
|
|
"Subnet Multicast PKey Trap Enabled", "opa.portinfo.multicastpkeytrapenabled",
|
|
FT_UINT8, BASE_HEX, NULL, 0x60, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_Timeout, {
|
|
"Subnet Timeout", "opa.portinfo.timeout",
|
|
FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_LinkSpeedSupported, {
|
|
"LinkSpeedSupported", "opa.portinfo.linkspeedsupported",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkspeed), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_LinkSpeedEnabled, {
|
|
"LinkSpeedEnabled", "opa.portinfo.linkspeedenabled",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkspeed), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_LinkSpeedActive, {
|
|
"LinkSpeedActive", "opa.portinfo.linkspeedactive",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkspeed), 0x0, NULL, HFILL }
|
|
},
|
|
|
|
{ &hf_opa_PortInfo_LinkWidthSupported, {
|
|
"LinkWidthSupported", "opa.portinfo.linkwidthsupported",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_LinkWidthEnabled, {
|
|
"LinkWidthEnabled", "opa.portinfo.linkwidthenabled",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_LinkWidthActive, {
|
|
"LinkWidthActive", "opa.portinfo.linkwidthactive",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
|
|
},
|
|
|
|
{ &hf_opa_PortInfo_LinkWidthDowngrade_Supported, {
|
|
"LinkWidthDowngrade Supported", "opa.portinfo.linkwidthdowngradesupported",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_LinkWidthDowngrade_Enabled, {
|
|
"LinkWidthDowngrade Enabled", "opa.portinfo.linkwidthdowngradeenabled",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_LinkWidthDowngrade_TxActive, {
|
|
"LinkWidthDowngrade TxActive", "opa.portinfo.linkwidthdowngradetxactive",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_LinkWidthDowngrade_RxActive, {
|
|
"LinkWidthDowngrade RxActive", "opa.portinfo.linkwidthdowngraderxactive",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
|
|
},
|
|
/* PortLinkMode */
|
|
{ &hf_opa_PortInfo_PortLinkMode_reserved, {
|
|
"PortLinkMode Reserved (1 bit)", "opa.portinfo.portlinkmode.reserved",
|
|
FT_UINT16, BASE_HEX, NULL, 0x8000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortLinkMode_Supported, {
|
|
"PortLinkMode Supported", "opa.portinfo.portlinkmode.supported",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_portlinkmode), 0x7C00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortLinkMode_Enabled, {
|
|
"PortLinkMode Enabled", "opa.portinfo.portlinkmode.enabled",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_portlinkmode), 0x03E0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortLinkMode_Active, {
|
|
"PortLinkMode Active", "opa.portinfo.portlinkmode.active",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_portlinkmode), 0x001F, NULL, HFILL }
|
|
},
|
|
|
|
/* PortLTPCRCMode */
|
|
{ &hf_opa_PortInfo_PortLTPCRCMode_reserved, {
|
|
"PortLTPCRCMode Reserved (4 bits)", "opa.portinfo.portltpcrc.reserved",
|
|
FT_UINT16, BASE_HEX, NULL, 0xF000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortLTPCRCMode_Supported, {
|
|
"PortLTPCRCMode Supported", "opa.portinfo.portltpcrc.supported",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_portltpcrcmode), 0x0F00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortLTPCRCMode_Enabled, {
|
|
"PortLTPCRCMode Enabled", "opa.portinfo.portltpcrc.enabled",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_portltpcrcmode), 0x00F0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortLTPCRCMode_Active, {
|
|
"PortLTPCRCMode Active", "opa.portinfo.portltpcrc.active",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_portltpcrcmode), 0x000F, NULL, HFILL }
|
|
},
|
|
|
|
/* PortMode */
|
|
{ &hf_opa_PortInfo_PortMode, {
|
|
"PortMode", "opa.portinfo.portmode",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortMode_reserved, {
|
|
"Reserved (9 bits)", "opa.portinfo.portmode.reserved",
|
|
FT_UINT16, BASE_HEX, NULL, 0xFF80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortMode_IsActiveOptimizeEnabled, {
|
|
"IsActiveOptimizeEnabled", "opa.portinfo.portmode.isactiveoptimizeenabled",
|
|
FT_BOOLEAN, 16, NULL, 0x0040, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortMode_IsPassThroughEnabled, {
|
|
"IsPassThroughEnabled", "opa.portinfo.portmode.ispassthroughenabled",
|
|
FT_BOOLEAN, 16, NULL, 0x0020, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortMode_IsVLMarkerEnabled, {
|
|
"IsVLMarkerEnabled", "opa.portinfo.portmode.isvlmarkerenabled",
|
|
FT_BOOLEAN, 16, NULL, 0x0010, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortMode_reserved2, {
|
|
"Reserved (2 bits)", "opa.portinfo.portmode.reserved2",
|
|
FT_UINT16, BASE_HEX, NULL, 0x000C, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortMode_Is16BTrapQueryEnabled, {
|
|
"Is16BTrapQueryEnabled", "opa.portinfo.portmode.is16btrapqueryenabled",
|
|
FT_BOOLEAN, 16, NULL, 0x0002, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortMode_reserved3, {
|
|
"Reserved (1 bit)", "opa.portinfo.portmode.reserved3",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0001, NULL, HFILL }
|
|
},
|
|
|
|
/*PortPacketFormats*/
|
|
{ &hf_opa_PortInfo_PortPacketFormats_Supported, {
|
|
"PortPacketFormats Supported", "opa.portinfo.portpacketformats.supported",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_packetformat), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortPacketFormats_Enabled, {
|
|
"PortPacketFormats Enabled", "opa.portinfo.portpacketformats.enabled",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_packetformat), 0x0, NULL, HFILL }
|
|
},
|
|
/* Flit Control*/
|
|
{ &hf_opa_PortInfo_FlitControl_Interleave_reserved, {
|
|
"Interleave Reserved (2 bits)", "opa.portinfo.flitcontrol.interleave.reserved",
|
|
FT_UINT16, BASE_HEX, NULL, 0xC000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_FlitControl_Interleave_DistanceSupported, {
|
|
"Interleave DistanceSupported", "opa.portinfo.flitcontrol.interleave.distancesupported",
|
|
FT_UINT16, BASE_HEX, VALS(PortFlitDistanceMode), 0x3000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_FlitControl_Interleave_DistanceEnabled, {
|
|
"Interleave DistanceEnabled", "opa.portinfo.flitcontrol.interleave.distanceenabled",
|
|
FT_UINT16, BASE_HEX, VALS(PortFlitDistanceMode), 0x0C00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_FlitControl_Interleave_MaxNestLevelTxEnabled, {
|
|
"Interleave MaxNestLevelTxEnabled", "opa.portinfo.flitcontrol.interleave.maxnestleveltxenabled",
|
|
FT_UINT16, BASE_HEX, NULL, 0x03E0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_FlitControl_Interleave_MaxNestLevelRxSupported, {
|
|
"Interleave MaxNestLevelRxEnabled", "opa.portinfo.flitcontrol.interleave.maxnestlevelrxenabled",
|
|
FT_UINT16, BASE_HEX, NULL, 0x001F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_FlitControl_Preemption_MinInitial, {
|
|
"Preemption MinIntial", "opa.portinfo.flitcontrol.preemption.mininitial",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_FlitControl_Preemption_MinTail, {
|
|
"Preemption Mintail", "opa.portinfo.flitcontrol.preemption.mintail",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_FlitControl_Preemption_LargePacketLimit, {
|
|
"Preemption LargePacketLimit", "opa.portinfo.flitcontrol.preemption.largepacketlimit",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_FlitControl_Preemption_SmallPacketLimit, {
|
|
"Preemption SmallPacketLimit", "opa.portinfo.flitcontrol.preemption.smallpacketlimit",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_FlitControl_Preemption_MaxSmallPacketLimit, {
|
|
"Preemption MaxSmallPacketLimit", "opa.portinfo.flitcontrol.preemption.maxsmallpacketlimit",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_FlitControl_Preemption_PreemptionLimit, {
|
|
"Preemption PreemptionLimit", "opa.portinfo.flitcontrol.preemption.preemptionlimit",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* PortErrorAction */
|
|
{ &hf_opa_PortInfo_PortErrorAction, {
|
|
"PortErrorAction", "opa.portinfo.porterroraction",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_ExcessiveBufferOverrun, {
|
|
"ExcessiveBufferOverrun", "opa.portinfo.porterroraction.excessivebufferoverrun",
|
|
FT_BOOLEAN, 32, NULL, 0x80000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_reserved, {
|
|
"Reserved (7 bits)", "opa.portinfo.porterroraction.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0x7F000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_FmConfigErrorExceedMulticastLimit, {
|
|
"FMConfigErrorExceedMulticastLimit", "opa.portinfo.porterroraction.fmconfigerrorexceedmulticastlimit",
|
|
FT_BOOLEAN, 32, NULL, 0x00800000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadControlFlit, {
|
|
"FmConfigErrorBadControlFlit", "opa.portinfo.porterroraction.fmconfigerrorbadcontrolflit",
|
|
FT_BOOLEAN, 32, NULL, 0x00400000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadPreempt, {
|
|
"FmConfigErrorBadPreempt", "opa.portinfo.porterroraction.fmconfigerrorbadpreempt",
|
|
FT_BOOLEAN, 32, NULL, 0x00200000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadVLMarker, {
|
|
"FmConfigErrorBadVLMarker", "opa.portinfo.porterroraction.fmconfigerrorbadvlmarker",
|
|
FT_BOOLEAN, 32, NULL, 0x00100000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadCrdtAck, {
|
|
"FmConfigErrorBadCrdtAck", "opa.portinfo.porterroraction.fmconfigerrorbadcrdtack",
|
|
FT_BOOLEAN, 32, NULL, 0x00080000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadCtrlDist, {
|
|
"FmConfigErrorBadCtrlDist", "opa.portinfo.porterroraction.fmconfigerrorbadctrldist",
|
|
FT_BOOLEAN, 32, NULL, 0x00040000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadTailDist, {
|
|
"FmConfigErrorBadTailDist", "opa.portinfo.porterroraction.fmconfigerrorbadtaildist",
|
|
FT_BOOLEAN, 32, NULL, 0x00020000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadHeadDist, {
|
|
"FmConfigErrorBadHeadDist", "opa.portinfo.porterroraction.fmconfigerrorbadheaddist",
|
|
FT_BOOLEAN, 32, NULL, 0x00010000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_reserved2, {
|
|
"Reserved (2 bits)", "opa.portinfo.porterroraction.reserved2",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0000C000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadVLMarker, {
|
|
"PortRcvErrorBadVLMarker", "opa.portinfo.porterroraction.portrcverrorbadvlmarker",
|
|
FT_BOOLEAN, 32, NULL, 0x00002000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_PortRcvErrorPreemptVL15, {
|
|
"PortRcvErrorPreemptVL15", "opa.portinfo.porterroraction.portrcverrorpreemptvl15",
|
|
FT_BOOLEAN, 32, NULL, 0x00001000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_PortRcvErrorPreemptError, {
|
|
"PortRcvErrorPreemptError", "opa.portinfo.porterroraction.portrcverrorpreempterror",
|
|
FT_BOOLEAN, 32, NULL, 0x00000800, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_reserved3, {
|
|
"Reserved (1 bit)", "opa.portinfo.porterroraction.reserved3",
|
|
FT_UINT32, BASE_HEX, NULL, 0x00000400, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadMidTail, {
|
|
"PortRcvErrorBadMidTail", "opa.portinfo.porterroraction.portrcverrorbadmidtail",
|
|
FT_BOOLEAN, 32, NULL, 0x00000200, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_PortRcvErrorReserved, {
|
|
"PortRcvErrorReserved", "opa.portinfo.porterroraction.portrcverrorreserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0x00000100, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadSC, {
|
|
"PortRcvErrorBadSC", "opa.portinfo.porterroraction.portrcverrorbadsc",
|
|
FT_BOOLEAN, 32, NULL, 0x00000080, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadL2, {
|
|
"PortRcvErrorBadL2", "opa.portinfo.porterroraction.portrcverrorbadl2",
|
|
FT_BOOLEAN, 32, NULL, 0x00000040, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadDLID, {
|
|
"PortRcvErrorBadDLID", "opa.portinfo.porterroraction.portrcverrorbaddlid",
|
|
FT_BOOLEAN, 32, NULL, 0x00000020, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadSLID, {
|
|
"PortRcvErrorBadSLID", "opa.portinfo.porterroraction.portrcverrorbadslid",
|
|
FT_BOOLEAN, 32, NULL, 0x00000010, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_PortRcvErrorPktLenTooShort, {
|
|
"PortRcvErrorPktLenTooShort", "opa.portinfo.porterroraction.portrcverrorpktlentooshort",
|
|
FT_BOOLEAN, 32, NULL, 0x00000008, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_PortRcvErrorPktLenTooLong, {
|
|
"PortRcvErrorPktLenTooLong", "opa.portinfo.porterroraction.portrcverrorpktlentoolong",
|
|
FT_BOOLEAN, 32, NULL, 0x00000004, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadPktLen, {
|
|
"PortRcvErrorBadPktLen", "opa.portinfo.porterroraction.portrcverrorbadpktlen",
|
|
FT_BOOLEAN, 32, NULL, 0x00000002, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortErrorAction_reserved4, {
|
|
"Reserved (1 bit)", "opa.portinfo.porterroraction.reserved4",
|
|
FT_UINT32, BASE_HEX, NULL, 0x00000001, NULL, HFILL }
|
|
},
|
|
/* PassThroughControl */
|
|
{ &hf_opa_PortInfo_PassThroughControl_EgressPort, {
|
|
"PassThroughControl EgressPort", "opa.portinfo.passthroughcontrol.egressport",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
{ &hf_opa_PortInfo_PassThroughControl_reserved, {
|
|
"Reserved (7 Bits)", "opa.portinfo.passthroughcontrol.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xFE, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PassThroughControl_DRControl, {
|
|
"PassThroughControl DRControl", "opa.portinfo.passthroughcontrol.drcontrol",
|
|
FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_M_KeyLeasePeriod, {
|
|
"M_KeyLeasePeriod", "opa.portinfo.m_keyleaseperiod",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_BufferUnits_reserved, {
|
|
"BufferUnits Reserved (9 bits)", "opa.portinfo.bufferunits.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0xFF800000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_BufferUnits_VL15Init, {
|
|
"BufferUnits VL15Init", "opa.portinfo.bufferunits.vl15init",
|
|
FT_UINT32, BASE_HEX, NULL, 0x007FF800, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_BufferUnits_VL15CreditRate, {
|
|
"BufferUnits VL15Credit", "opa.portinfo.bufferunits.vl15credit",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0000007C0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_BufferUnits_CreditAck, {
|
|
"BufferUnits CreditAck", "opa.portinfo.bufferunits.creditack",
|
|
FT_UINT32, BASE_HEX, NULL, 0x00000038, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_BufferUnits_BufferAlloc, {
|
|
"BufferUnits BufferAlloc", "opa.portinfo.bufferunits.bufferalloc",
|
|
FT_UINT32, BASE_HEX, NULL, 0x00000007, NULL, HFILL }
|
|
},
|
|
|
|
{ &hf_opa_PortInfo_MasterSMLID, {
|
|
"MasterSMLID", "opa.portinfo.mastersmlid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_M_Key, {
|
|
"MKey", "opa.portinfo.mkey",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_SubnetPrefix, {
|
|
"SubnetPrefix", "opa.portinfo.subnetprefix",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_VL1, {
|
|
"VL", "opa.portinfo.vl1",
|
|
FT_UINT8, BASE_HEX, VALS(MTU), 0xF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_VL2, {
|
|
"VL", "opa.portinfo.vl2",
|
|
FT_UINT8, BASE_HEX, VALS(MTU), 0x0F, NULL, HFILL }
|
|
},
|
|
/* XmitQ */
|
|
{ &hf_opa_PortInfo_XmitQ_VLStallCount, {
|
|
"VLStallCount", "opa.portinfo.xmitq.vlstallcount",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_XmitQ_HOQLife, {
|
|
"HOQLife", "opa.portinfo.xmitq.hoqlife",
|
|
FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
|
|
},
|
|
|
|
{ &hf_opa_PortInfo_IPAddrIPv6, {
|
|
"IPAddr IPv6", "opa.portinfo.ipaddripv6",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_IPAddrIPv4, {
|
|
"IPAddr IPv4", "opa.portinfo.ipaddripv4",
|
|
FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_NeighborNodeGUID, {
|
|
"NeighborNodeGUID", "opa.portinfo.neighbornodeguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* Capability Mask Flags */
|
|
{ &hf_opa_PortInfo_CapabilityMask, {
|
|
"CapabilityMask", "opa.portinfo.capabilitymask",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask_reserved, {
|
|
"Reserved (9 bits)", "opa.portinfo.capabilitymask.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0xFF800000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask_IsCapabilityMaskNoticeSupported, {
|
|
"IsCapabilityMaskNoticeSupported", "opa.portinfo.capabilitymask.iscapabilitymasknoticesupported",
|
|
FT_BOOLEAN, 32, NULL, 0x00400000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask_reserved2, {
|
|
"Reserved (1 bit)", "opa.portinfo.capabilitymask.reserved2",
|
|
FT_UINT32, BASE_HEX, NULL, 0x00200000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask_IsVendorClassSupported, {
|
|
"IsVendorClassSupported", "opa.portinfo.capabilitymask.isvendorclasssupported",
|
|
FT_BOOLEAN, 32, NULL, 0x00100000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask_IsDeviceManagementSupported, {
|
|
"IsDeviceManagementSupported", "opa.portinfo.capabilitymask.isdevicemanagementsupported",
|
|
FT_BOOLEAN, 32, NULL, 0x00080000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask_reserved3, {
|
|
"Reserved (2 bits)", "opa.portinfo.capabilitymask.reserved3",
|
|
FT_UINT32, BASE_HEX, NULL, 0x00060000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask_IsConnectionManagementSupported, {
|
|
"IsConnectionManagementSupported", "opa.portinfo.capabilitymask.isconnectionmanagementsupported",
|
|
FT_BOOLEAN, 32, NULL, 0x00010000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask_reserved4, {
|
|
"Reserved (10 bits)", "opa.portinfo.capabilitymask.reserved4",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0000FFC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask_IsAutomaticMigrationSupported, {
|
|
"IsAutomaticMigrationSupported", "opa.portinfo.capabilitymask.isautomaticmigrationsupported",
|
|
FT_BOOLEAN, 32, NULL, 0x00000020, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask_reserved5, {
|
|
"Reserved (3 bits)", "opa.portinfo.capabilitymask.reserved5",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0000001C, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask_IsSM, {
|
|
"IsSM", "opa.portinfo.capabilitymask.issm",
|
|
FT_BOOLEAN, 32, NULL, 0x00000002, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask_reserved6, {
|
|
"Reserved (1 bit)", "opa.portinfo.capabilitymask.reserved6",
|
|
FT_UINT32, BASE_HEX, NULL, 0x00000001, NULL, HFILL }
|
|
},
|
|
/* End Capability Mask Flags */
|
|
|
|
/* Capability Mask 3 */
|
|
{ &hf_opa_PortInfo_CapabilityMask3, {
|
|
"CapabilityMask3", "opa.portinfo.capabilitymask3",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask3_reserved, {
|
|
"Reserved (8 bits)", "opa.portinfo.capabilitymask3.reserved",
|
|
FT_UINT16, BASE_HEX, NULL, 0xFF00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask3_IsSnoopSupported, {
|
|
"IsSnoopSupported", "opa.portinfo.capabilitymask3.issnoopsupported",
|
|
FT_BOOLEAN, 16, NULL, 0x0080, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask3_IsAsyncSCtoVLSupported, {
|
|
"IsAsyncSCtoVLSupported", "opa.portinfo.capabilitymask3.isasyncsc2vlsupported",
|
|
FT_BOOLEAN, 16, NULL, 0x0040, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask3_IsAddrRangeConfigSupported, {
|
|
"IsAddrRangeConfigSupported", "opa.portinfo.capabilitymask3.isaddrrangeconfigsupported",
|
|
FT_BOOLEAN, 16, NULL, 0x0020, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask3_IsPassThroughSupported, {
|
|
"IsPassThroughSupported", "opa.portinfo.capabilitymask3.ispassthroughsupported",
|
|
FT_BOOLEAN, 16, NULL, 0x0010, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask3_IsSharedSpaceSupported, {
|
|
"IsSharedSpaceSupported", "opa.portinfo.capabilitymask3.issharedspacesupported",
|
|
FT_BOOLEAN, 16, NULL, 0x0008, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask3_reserved2, {
|
|
"IsVLMarkerSupported", "opa.portinfo.capabilitymask3.reserved2",
|
|
FT_BOOLEAN, 16, NULL, 0x0004, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask3_IsVLMarkerSupported, {
|
|
"IsVLMarkerSupported", "opa.portinfo.capabilitymask3.isvlmarkersupported",
|
|
FT_BOOLEAN, 16, NULL, 0x0002, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_CapabilityMask3_IsVLrSupported, {
|
|
"IsVLrSupported", "opa.portinfo.capabilitymask3.isvlrsupported",
|
|
FT_BOOLEAN, 16, NULL, 0x0001, NULL, HFILL }
|
|
},
|
|
/* End Capability Mask3 Flags */
|
|
|
|
{ &hf_opa_PortInfo_OverallBufferSpace, {
|
|
"OverallBufferSpace", "opa.portinfo.overallbufferspace",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_DiagCode, {
|
|
"DiagCode", "opa.portinfo.diagcode",
|
|
FT_UINT16, BASE_HEX, VALS(DiagCode), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_ReplayDepth_BufferDepth, {
|
|
"Replay BufferDepth", "opa.portinfo.replaydepth.bufferdepth",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_ReplayDepth_WireDepth, {
|
|
"Replay WireDepth", "opa.portinfo.replaydepth.wiredepth",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* PortNeighrborNode*/
|
|
{ &hf_opa_PortInfo_PortNeighborMode_reserved, {
|
|
"PortNeighborMode Reserved (4 bits)", "opa.portinfo.portneighbormode.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortNeighborMode_MgmtAllowed, {
|
|
"PortNeighborMode MgmtAllowed", "opa.portinfo.portneighbormode.mgmtallowed",
|
|
FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortNeighborMode_NeighborFWAuthenBypass, {
|
|
"PortNeighborMode NeighborFWAuthenBypass", "opa.portinfo.portneighbormode.neighborfwauthenbypass",
|
|
FT_BOOLEAN, 8, TFS(&tfs_NeighborFWAuthenBypass), 0x04, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_PortNeighborMode_NeighborNodeType, {
|
|
"PortNeighborMode NeighborNodeType", "opa.portinfo.portneighbormode.neighbornodetype",
|
|
FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }
|
|
},
|
|
|
|
/* MTU*/
|
|
{ &hf_opa_PortInfo_MTU_reserved, {
|
|
"MTU Reserved (4 bits)", "opa.portinfo.mtu.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_MTU_Cap, {
|
|
"MTU Cap", "opa.portinfo.mtu.cap",
|
|
FT_UINT8, BASE_HEX, VALS(MTU), 0x0F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_Resp_reserved, {
|
|
"Resp Reserved (3 bits)", "opa.portinfo.resp.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_Resp_TimeValue, {
|
|
"Resp TimeValue", "opa.portinfo.resp.timevalue",
|
|
FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfo_LocalPortNum, {
|
|
"LocalPortNum", "opa.portinfo.localportnum",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/*******************
|
|
* Port State Info *
|
|
*******************/
|
|
|
|
{ &hf_opa_PortStates, {
|
|
"PortStates", "opa.portstates",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStates_reserved, {
|
|
"Reserved (10 bits)", "opa.portstates.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0xFF800000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStates_LEDEnabled, {
|
|
"LEDEnabled", "opa.portstates.ledenabled",
|
|
FT_BOOLEAN, 32, NULL, 0x00400000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStates_IsSMConfigurationStarted, {
|
|
"IsSMConfigurationStarted", "opa.portstates.issmconfigurationstarted",
|
|
FT_BOOLEAN, 32, NULL, 0x00200000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStates_NeighborNormal, {
|
|
"NeighborNormal", "opa.portstates.neighbornormal",
|
|
FT_BOOLEAN, 32, NULL, 0x00100000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStates_OfflineDisabledReason, {
|
|
"OfflineDisabledReason", "opa.portstates.offlinedisabledreason",
|
|
FT_UINT32, BASE_HEX, VALS(OfflineDisabledReason), 0x000F0000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStates_PortUnsleepState, {
|
|
"PortUnsleepState", "opa.portstates.portunsleepstates",
|
|
FT_UINT32, BASE_HEX, VALS(PortPhysicalState), 0x0000F000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStates_DownDefaultState, {
|
|
"DownDefaultState", "opa.portstates.downdefaultstate",
|
|
FT_UINT32, BASE_HEX, VALS(PortPhysicalState), 0x00000F00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStates_PortPhysicalState, {
|
|
"PortPhysicalState", "opa.portstates.portphysicalstate",
|
|
FT_UINT32, BASE_HEX, VALS(PortPhysicalState), 0x000000F0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStates_PortState, {
|
|
"PortState", "opa.portstates.portstate",
|
|
FT_UINT32, BASE_HEX, VALS(PortState), 0x0000000F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStates_LinkWidthDowngradeTxActive, {
|
|
"LinkWidthDowngrade TxActive", "opa.portstates.linkwidthdowngradetxactive",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStates_LinkWidthDowngradeRxActive, {
|
|
"LinkWidthDowngrade RxActive", "opa.portstates.linkwidthdowngradetxactive",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/*****************
|
|
* P_KeyTable *
|
|
*****************/
|
|
|
|
{ &hf_opa_P_KeyTable, {
|
|
"P_Key Table", "opa.p_keytable",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_P_KeyTable_MembershipType, {
|
|
"Membership Type", "opa.p_keytable.membershiptype",
|
|
FT_BOOLEAN, 16, TFS(&tfs_PKeyMembershipType), 0x8000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_P_KeyTable_P_KeyBase, {
|
|
"P_Key Base", "opa.p_keytable.p_keybase",
|
|
FT_UINT16, BASE_HEX, NULL, 0x7FFF, NULL, HFILL }
|
|
},
|
|
|
|
/**************************
|
|
* SLtoSC Mapping Table *
|
|
**************************/
|
|
|
|
{ &hf_opa_SLtoSCMappingTable, {
|
|
"SL to SC Mapping Table", "opa.sltoscmappingtable",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SLtoSCMappingTable_SLtoSC_HighBits, {
|
|
"Reserved (3 bits)", "opa.sltoscmappingtable.sltoschighbits",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SLtoSCMappingTable_SLtoSC_LowBits, {
|
|
"SC", "opa.sltoscmappingtable.sltosclowbits",
|
|
FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
|
|
},
|
|
|
|
/**************************
|
|
* SCtoSC Mapping Table *
|
|
**************************/
|
|
|
|
{ &hf_opa_SCtoSCMappingTable, {
|
|
"SC to SC Mapping Table", "opa.sctoscmappingtable",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SCtoSCMappingTable_SCtoSC_HighBits, {
|
|
"Reserved (3 bits)", "opa.sctoscmappingtable.sctoschighbits",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SCtoSCMappingTable_SCtoSC_LowBits, {
|
|
"SC", "opa.sctoscmappingtable.sctosclowbits",
|
|
FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
|
|
},
|
|
|
|
/**************************
|
|
* SCtoSL Mapping Table *
|
|
**************************/
|
|
|
|
{ &hf_opa_SCtoSLMappingTable, {
|
|
"SC to SL Mapping Table", "opa.sctoslmappingtable",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SCtoSLMappingTable_SCtoSL_HighBits, {
|
|
"Reserved (3 bits)", "opa.sctoslmappingtable.sctoslhighbits",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SCtoSLMappingTable_SCtoSL_LowBits, {
|
|
"SL", "opa.sctoslmappingtable.sctosllowbits",
|
|
FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
|
|
},
|
|
|
|
/**************************
|
|
* SCtoVLx Mapping Table *
|
|
**************************/
|
|
|
|
{ &hf_opa_SCtoVLxMappingTable, {
|
|
"SC to VLx Mapping Table", "opa.sctovlxmappingtable",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SCtoVLxMappingTable_SCtoVLx_HighBits, {
|
|
"Reserved (3 bits)", "opa.sctovlxmappingtable.sctovlxhighbits",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SCtoVLxMappingTable_SCtoVLx_LowBits, {
|
|
"VL", "opa.sctovlxmappingtable.sctovlxlowbits",
|
|
FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
|
|
},
|
|
|
|
/**************************
|
|
* VLArbitrationTable *
|
|
**************************/
|
|
{ &hf_opa_VLArbitrationTable, {
|
|
"VL Arbitration Table", "opa.vlarbitrationtable",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VLArbitrationTable_reserved, {
|
|
"Reserved (3 bits)", "opa.vlarbitrationtable.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VLArbitrationTable_VL, {
|
|
"VL", "opa.vlarbitrationtable.vl",
|
|
FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VLArbitrationTable_Weight, {
|
|
"Weight", "opa.vlarbitrationtable.weight",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VLArbitrationTable_Matrix, {
|
|
"Element", "opa.vlarbitrationtable.matrix",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/*************************
|
|
* LinearForwardingTable *
|
|
*************************/
|
|
|
|
{ &hf_opa_LinearForwardingTable, {
|
|
"Linear Forwarding Table", "opa.linearforwardingtable",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_LinearForwardingTable_Port, {
|
|
"Port", "opa.linearforwardingtable.port",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/****************************
|
|
* MulticastForwardingTable *
|
|
****************************/
|
|
|
|
{ &hf_opa_MulticastForwardingTable, {
|
|
"Multicast Forwarding Table", "opa.multicastforwardingtable",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MulticastForwardingTable_PortMask, {
|
|
"Port Mask", "opa.multicastforwardingtable.portmask",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/****************************
|
|
* PortGroupForwardingTable *
|
|
****************************/
|
|
|
|
{ &hf_opa_PortGroupForwardingTable, {
|
|
"Port Group Forwarding Table", "opa.portgroupforwardingtable",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortGroupForwardingTable_Port, {
|
|
"Port", "opa.portgroupforwardingtable.port",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/******************
|
|
* PortGroupTable *
|
|
******************/
|
|
|
|
{ &hf_opa_PortGroupTable, {
|
|
"Port Group Table", "opa.portgrouptable",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortGroupTable_PortMask, {
|
|
"Port Mask", "opa.portgrouptable.portmask",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/**********
|
|
* SMInfo *
|
|
**********/
|
|
|
|
{ &hf_opa_SMInfo, {
|
|
"SM Info", "opa.sminfo",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SMInfo_GUID, {
|
|
"GUID", "opa.sminfo.guid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SMInfo_SM_Key, {
|
|
"SM_Key", "opa.sminfo.sm_key",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SMInfo_ActCount, {
|
|
"ActCount", "opa.sminfo.actcount",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SMInfo_ElapsedTime, {
|
|
"ElapsedTime", "opa.sminfo.elapsedtime",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SMInfo_Priority, {
|
|
"Priority", "opa.sminfo.priority",
|
|
FT_UINT16, BASE_HEX, NULL, 0xF000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SMInfo_ElevatedPriority, {
|
|
"ElevatedPriority", "opa.sminfo.elevatedpriority",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0F00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SMInfo_InitialPriority, {
|
|
"InitialPriority", "opa.sminfo.initialpriority",
|
|
FT_UINT16, BASE_HEX, NULL, 0x00F0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SMInfo_SMState, {
|
|
"SMState", "opa.sminfo.smstate",
|
|
FT_UINT16, BASE_HEX, NULL, 0x000F, NULL, HFILL }
|
|
},
|
|
|
|
/***********
|
|
* LedInfo *
|
|
***********/
|
|
|
|
{ &hf_opa_LedInfo, {
|
|
"Led Info", "opa.ledinfo",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_LedInfo_LedMask, {
|
|
"LedMask", "opa.ledinfo.ledmask",
|
|
FT_BOOLEAN, 32, NULL, 0x80000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_LedInfo_reserved, {
|
|
"Reserved (31 bits)", "opa.ledinfo.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0x7FFFFFFF, NULL, HFILL }
|
|
},
|
|
|
|
/************
|
|
* CableInfo *
|
|
*************/
|
|
|
|
{ &hf_opa_CableInfo, {
|
|
"Cable Info", "opa.cableinfo",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_CableInfo_Data, {
|
|
"Data", "opa.cableinfo.data",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_CableInfo_DataStream, {
|
|
"Data", "opa.cableinfo.datastream",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/************
|
|
* Aggregate *
|
|
*************/
|
|
|
|
{ &hf_opa_Aggregate, {
|
|
"Aggregate", "opa.aggregate",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Aggregate_AttributeID, {
|
|
"Attribute ID", "opa.aggregate.attrid",
|
|
FT_UINT16, BASE_HEX, VALS(SUBM_Attributes), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Aggregate_Error, {
|
|
"Error", "opa.aggregate.error",
|
|
FT_BOOLEAN, 16, NULL, 0x8000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_Aggregate_RequestLength, {
|
|
"Request Length", "opa.aggregate.requestlength",
|
|
FT_UINT16, BASE_DEC, NULL, 0x007F, NULL, HFILL }
|
|
},
|
|
|
|
/*********************
|
|
* BufferControlTable *
|
|
**********************/
|
|
|
|
{ &hf_opa_BufferControlTable, {
|
|
"Buffer Control Table", "opa.buffercontroltable",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_BufferControlTable_TxOverallSharedLimit, {
|
|
"Tx Overall Shared Limit", "opa.buffercontroltable.txoverallsharedlimit",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_BufferControlTable_TxDedicatedLimit, {
|
|
"Tx Dedictated Limit", "opa.buffercontroltable.txdedicatedlimit",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_BufferControlTable_TxSharedLimit, {
|
|
"Tx Shared Limit", "opa.buffercontroltable.txsharedlimit",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
/*******************
|
|
* FabricInfoRecord *
|
|
********************/
|
|
|
|
{ &hf_opa_FabricInfoRecord, {
|
|
"Fabric Info Record", "opa.fabricinforecord",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_FabricInfoRecord_NumHFIs, {
|
|
"Num HFIs", "opa.fabricinforecord.numhfis",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_FabricInfoRecord_NumSwitches, {
|
|
"Num Switches", "opa.fabricinforecord.numswitches",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_FabricInfoRecord_NumInternalHFILinks, {
|
|
"Num Internal HFI Links", "opa.fabricinforecord.numinternalhfilinks",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_FabricInfoRecord_NumExternalHFILinks, {
|
|
"Num External HFI Links", "opa.fabricinforecord.numexternalhfilinks",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_FabricInfoRecord_NumInternalISLs, {
|
|
"Num Internal ISLs", "opa.fabricinforecord.numinternalisls",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_FabricInfoRecord_NumExternalISLs, {
|
|
"Num External ISLs", "opa.fabricinforecord.numexternalisls",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_FabricInfoRecord_NumDegradedHFILinks, {
|
|
"Num Degraded HFI Links", "opa.fabricinforecord.numdegradedhfilinks",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_FabricInfoRecord_NumDegradedISLs, {
|
|
"Num Degraded ISLs", "opa.fabricinforecord.numdegradedisls",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_FabricInfoRecord_NumOmittedHFILinks, {
|
|
"Num Omitted HFI Links", "opa.fabricinforecord.numomittedhfilinks",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_FabricInfoRecord_NumOmittedISLs, {
|
|
"Num Omitted ISLs", "opa.fabricinforecord.numomittedisls",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_FabricInfoRecord_Reserved, {
|
|
"Reserved (92 Bytes)", "opa.fabricinforecord.reserved",
|
|
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/*****************
|
|
* CongestionInfo *
|
|
******************/
|
|
|
|
{ &hf_opa_CongestionInfo, {
|
|
"Congestion Info", "opa.congestioninfo",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_CongestionInfo_CongestionInfo, {
|
|
"Congestion Info", "opa.congestioninfo.congestioninfo",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_CongestionInfo_ControlTableCap, {
|
|
"Control Table Cap", "opa.congestioninfo.controltablecap",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_CongestionInfo_CongestionLogLength, {
|
|
"Congestion Log Length", "opa.congestioninfo.congestionloglength",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/***********************
|
|
* SwitchCongestionLog *
|
|
***********************/
|
|
|
|
{ &hf_opa_SwitchCongestionLog, {
|
|
"Switch Congestion Log", "opa.switchcongestionlog",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionLog_LogType, {
|
|
"Log Type", "opa.switchcongestionlog.logtype",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionLog_CongestionFlags, {
|
|
"Congestion Flags", "opa.switchcongestionlog.congestionflags",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionLog_LogEventsCounter, {
|
|
"Log Events Counter", "opa.switchcongestionlog.logeventscounter",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionLog_CurrentTimeStamp, {
|
|
"Current Time Stamp", "opa.switchcongestionlog.currenttimestamp",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionLog_PortMap, {
|
|
"Port Map", "opa.switchcongestionlog.portmap",
|
|
FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionLog_SLID, {
|
|
"SLID", "opa.switchcongestionlog.slid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionLog_DLID, {
|
|
"DLID", "opa.switchcongestionlog.dlid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionLog_SC, {
|
|
"SC", "opa.switchcongestionlog.sc",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionLog_reserved, {
|
|
"Reserved (3 bits)", "opa.switchcongestionlog.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionLog_TimeStamp, {
|
|
"Time Stamp", "opa.switchcongestionlog.timestamp",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/***************************
|
|
* SwitchCongestionSetting *
|
|
***************************/
|
|
|
|
{ &hf_opa_SwitchCongestionSetting, {
|
|
"Switch Congestion Setting", "opa.switchcongestionsetting",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionSetting_Control_Map, {
|
|
"Control Map", "opa.switchcongestionsetting.controlmap",
|
|
FT_UINT32, BASE_CUSTOM, CF_FUNC(cf_opa_mad_swcongestionsetting_controlmap), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionSetting_Victim_Mask, {
|
|
"Victim Mask", "opa.switchcongestionsetting.victimmask",
|
|
FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionSetting_Credit_Mask, {
|
|
"Credit Mask", "opa.switchcongestionsetting.creditmask",
|
|
FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionSetting_Threshold, {
|
|
"Threshold", "opa.switchcongestionsetting.threshold",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionSetting_reserved1, {
|
|
"Reserved (4 bits)", "opa.switchcongestionsetting.reserved1",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionSetting_Packet_Size, {
|
|
"Packet Size", "opa.switchcongestionsetting.packetsize",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionSetting_CS_Threshold, {
|
|
"CS Threshold", "opa.switchcongestionsetting.csthreshold",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionSetting_reserved2, {
|
|
"Reserved (4 bits)", "opa.switchcongestionsetting.reserved2",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionSetting_CS_ReturnDelay, {
|
|
"CS ReturnDelay", "opa.switchcongestionsetting.csreturndelay",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchCongestionSetting_Marking_Rate, {
|
|
"Marking Rate", "opa.switchcongestionsetting.markingrate",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/*******************************
|
|
* SwitchPortCongestionSetting *
|
|
*******************************/
|
|
|
|
{ &hf_opa_SwitchPortCongestionSetting, {
|
|
"Switch Port Congestion Setting", "opa.switchportcongestionsetting",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchPortCongestionSetting_Valid, {
|
|
"Valid", "opa.switchportcongestionsetting.valid",
|
|
FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchPortCongestionSetting_Control_Type, {
|
|
"Control Type", "opa.switchportcongestionsetting.controltype",
|
|
FT_BOOLEAN, 8, TFS(&tfs_SwPortCongSetting_CtrlType), 0x40, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchPortCongestionSetting_reserved, {
|
|
"Reserved (2 bits)", "opa.switchportcongestionsetting.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x30, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchPortCongestionSetting_Threshold, {
|
|
"Threshold", "opa.switchportcongestionsetting.threshold",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchPortCongestionSetting_Packet_Size, {
|
|
"Packet Size", "opa.switchportcongestionsetting.packetsize",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_SwitchPortCongestionSetting_Marking_Rate, {
|
|
"Marking Rate", "opa.switchportcongestionsetting.markingrate",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/********************
|
|
* HFICongestionLog *
|
|
********************/
|
|
|
|
{ &hf_opa_HFICongestionLog, {
|
|
"HFI Congestion Log", "opa.hficongestionlog",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionLog_LogType, {
|
|
"Log Type", "opa.hficongestionsetting.logtype",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionLog_CongestionFlags, {
|
|
"Congestion Flags", "opa.hficongestionsetting.congestionflags",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionLog_ThresholdEventCounter, {
|
|
"Threshold Event Counter", "opa.hficongestionsetting.thresholdeventcounter",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionLog_CurrentTimeStamp, {
|
|
"Current Time Stamp", "opa.hficongestionsetting.currenttimestamp",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionLog_ThresholdCongestionEventMap, {
|
|
"Threshold Congestion Event Map", "opa.hficongestionsetting.thresholdcongestioneventmap",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionLog_Local_QP_CN_Entry, {
|
|
"Local QP CN Entry", "opa.hficongestionsetting.localqpcnentry",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionLog_Remote_QP_Number_CN_Entry, {
|
|
"Remote QP Number CN Entry", "opa.hficongestionsetting.remoteqpnumbercnentry",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionLog_SL_CN_Entry, {
|
|
"Threshold Congestion Event Map", "opa.hficongestionsetting.thresholdcongestioneventmap",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionLog_Service_Type_CN_Entry, {
|
|
"Service Type CN Entry", "opa.hficongestionsetting.servicetypecnentry",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0E, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionLog_Remote_LID_CN_Entry, {
|
|
"LID CN Entry", "opa.hficongestionsetting.lidcnentry",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionLog_TimeStamp_CN_Entry, {
|
|
"TimeStamp CN Entry", "opa.hficongestionsetting.timestampcnentry",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/************************
|
|
* HFICongestionSetting *
|
|
************************/
|
|
|
|
{ &hf_opa_HFICongestionSetting, {
|
|
"HFI Congestion Setting", "opa.hficongestionsetting",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionSetting_Control_Map, {
|
|
"Control Map", "opa.hficongestionsetting.controlmap",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionSetting_Port_Control, {
|
|
"Port Control", "opa.hficongestionsetting.portcontrol",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionSetting_CCTI_Increase, {
|
|
"CCTI Increase", "opa.hficongestionsetting.cctiincrease",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionSetting_CCTI_Timer, {
|
|
"CCTI Timer", "opa.hficongestionsetting.cctitimer",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionSetting_TriggerThreshold, {
|
|
"Trigger Threshold", "opa.hficongestionsetting.triggerthreshold",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionSetting_CCTI_Min, {
|
|
"CCTI Min", "opa.hficongestionsetting.cctimin",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/*****************************
|
|
* HFICongestionControlTable *
|
|
*****************************/
|
|
|
|
{ &hf_opa_HFICongestionControlTable, {
|
|
"HFI Congestion Control Table", "opa.hficongestioncontroltable",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionControlTable_CCTI_Limit, {
|
|
"CCTI Limit", "opa.hficongestioncontroltable.cctilimit",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionControlTable_CCT_Shift, {
|
|
"CCT Shift", "opa.hficongestioncontroltable.cctshift",
|
|
FT_UINT16, BASE_HEX, NULL, 0xC000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_HFICongestionControlTable_CCT_Multiplier, {
|
|
"CCT Multiplier", "opa.hficongestioncontroltable.cctmultiplier",
|
|
FT_UINT16, BASE_HEX, NULL, 0x3FFF, NULL, HFILL }
|
|
},
|
|
|
|
/* SA */
|
|
{ &hf_opa_PortInfoRecord_LinkDownReason_NeighborLinkDownReason, {
|
|
"Neighbor Link Down Reason", "opa.portinforecord.linkdownreason.neighborlinkdownreason",
|
|
FT_UINT8, BASE_HEX, VALS(LinkDownReason), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfoRecord_LinkDownReason_LinkDownReason, {
|
|
"Link Down Reason", "opa.portinforecord.linkdownreason.linkdownreason",
|
|
FT_UINT8, BASE_HEX, VALS(LinkDownReason), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortInfoRecord_LinkDownReason_Timestamp, {
|
|
"Time Stamp", "opa.portinforecord.linkdownreason.timestamp",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* InformInfoRecord */
|
|
/* InformInfo */
|
|
{ &hf_opa_InformInfo, {
|
|
"Inform Info", "opa.informinfo",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_InformInfo_GID, {
|
|
"GID", "opa.informinfo.gid",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_InformInfo_LIDRangeBegin, {
|
|
"LID Range Begin", "opa.informinfo.lidrangebegin",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_InformInfo_LIDRangeEnd, {
|
|
"LID Range End", "opa.informinfo.lidrangeend",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_InformInfo_IsGeneric, {
|
|
"Is Generic", "opa.informinfo.isgeneric",
|
|
FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_InformInfo_Subscribe, {
|
|
"Subscribe", "opa.informinfo.subscribe",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_InformInfo_Type, {
|
|
"Type", "opa.informinfo.type",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_InformInfo_TrapNumber, {
|
|
"Trap Number", "opa.informinfo.trapnumber",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_InformInfo_DeviceID, {
|
|
"Device ID", "opa.informinfo.deviceid",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_InformInfo_QPN, {
|
|
"QPN", "opa.informinfo.qpn",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_InformInfo_reserved, {
|
|
"Reserved (3 bits)", "opa.informinfo.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_InformInfo_RespTimeValue, {
|
|
"Resp Time Value", "opa.informinfo.resptimevalue",
|
|
FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_InformInfo_ProducerType, {
|
|
"Producer Type", "opa.informinfo.producertype",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_InformInfo_VendorID, {
|
|
"Vendor ID", "opa.informinfo.vendorid",
|
|
FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* LinkRecord */
|
|
{ &hf_opa_LinkRecord, {
|
|
"Link Record", "opa.linkrecord",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_LinkRecord_ToPort, {
|
|
"To Port", "opa.linkrecord.toport",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_LinkRecord_ToLID, {
|
|
"To LID", "opa.linkrecord.tolid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* ServiceRecord */
|
|
{ &hf_opa_ServiceRecord, {
|
|
"Service Record", "opa.servicerecord",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ServiceRecord_ServiceLease, {
|
|
"ServiceLease", "opa.servicerecord.servicelease",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ServiceRecord_ServiceKey, {
|
|
"ServiceKey", "opa.servicerecord.servicekey",
|
|
FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ServiceRecord_ServiceName, {
|
|
"ServiceName", "opa.servicerecord.servicename",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ServiceRecord_ServiceData, {
|
|
"ServiceData", "opa.servicerecord.servicedata",
|
|
FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* ServiceAssociationRecord */
|
|
{ &hf_opa_ServiceAssociationRecord_ServiceKey, {
|
|
"ServiceKey", "opa.serviceassociationrecord.servicekey",
|
|
FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ServiceAssociationRecord_ServiceName, {
|
|
"ServiceName", "opa.serviceassociationrecord.servicename",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/**************
|
|
* PathRecord *
|
|
**************/
|
|
{ &hf_opa_PathRecord, {
|
|
"Path Record", "opa.pathrecord",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_DGID, {
|
|
"DGID", "opa.pathrecord.dgid",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_SGID, {
|
|
"SGID", "opa.pathrecord.sgid",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_DLID, {
|
|
"DLID", "opa.pathrecord.dlid",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_SLID, {
|
|
"SLID", "opa.pathrecord.slid",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_RawTraffic, {
|
|
"Raw Traffic", "opa.pathrecord.rawtraffic",
|
|
FT_UINT32, BASE_HEX, NULL, 0x80000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_reserved, {
|
|
"Reserved (3 bits)", "opa.pathrecord.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0x70000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_FlowLabel, {
|
|
"Flow Label", "opa.pathrecord.flowlabel",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0FFFFF00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_HopLimit, {
|
|
"Hop Limit", "opa.pathrecord.hoplimit",
|
|
FT_UINT32, BASE_HEX, NULL, 0x000000FF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_TClass, {
|
|
"T Class", "opa.pathrecord.tclass",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_Reversible, {
|
|
"Reversible", "opa.pathrecord.reversible",
|
|
FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_NumbPath, {
|
|
"Numb Path", "opa.pathrecord.numbpath",
|
|
FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_P_Key, {
|
|
"P_Key", "opa.pathrecord.p_key",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_QosType, {
|
|
"Qos Type", "opa.pathrecord.qostype",
|
|
FT_UINT16, BASE_HEX, NULL, 0xC000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_reserved2, {
|
|
"Reserved (2 bits)", "opa.pathrecord.reserved2",
|
|
FT_UINT16, BASE_HEX, NULL, 0x3000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_QosPriority, {
|
|
"Qos Priority", "opa.pathrecord.qospriority",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0FF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_SL, {
|
|
"SL", "opa.pathrecord.sl",
|
|
FT_UINT16, BASE_HEX, NULL, 0x000F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_MTUSelector, {
|
|
"MTU Selector", "opa.pathrecord.mtuselector",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_MTU, {
|
|
"MTU", "opa.pathrecord.mtu",
|
|
FT_UINT8, BASE_HEX, VALS(MTU), 0x3F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_RateSelector, {
|
|
"Rate Selector", "opa.pathrecord.rateselector",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_Rate, {
|
|
"Rate", "opa.pathrecord.rate",
|
|
FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_PacketLifeTimeSelector, {
|
|
"Packet Life Time Selector", "opa.pathrecord.packetlifetimeselector",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_PacketLifeTime, {
|
|
"Packet Life Time", "opa.pathrecord.packetlifetime",
|
|
FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PathRecord_Preference, {
|
|
"Preference", "opa.pathrecord.preference",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/******************
|
|
* MCMemberRecord *
|
|
******************/
|
|
|
|
{ &hf_opa_MCMemberRecord, {
|
|
"MC Member Record", "opa.mcmemberrecord",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_Q_Key, {
|
|
"Q_Key", "opa.mcmemberrecord.q_key",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_MLID, {
|
|
"MLID", "opa.mcmemberrecord.mlid",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_MTUSelector, {
|
|
"MTU Selector", "opa.mcmemberrecord.mtuselector",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_MTU, {
|
|
"MTU", "opa.mcmemberrecord.mtu",
|
|
FT_UINT8, BASE_HEX, VALS(MTU), 0x3F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_TClass, {
|
|
"T Class", "opa.mcmemberrecord.tclass",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_P_Key, {
|
|
"P_Key", "opa.mcmemberrecord.p_key",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_RateSelector, {
|
|
"Rate Selector", "opa.mcmemberrecord.rateselector",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_Rate, {
|
|
"Rate", "opa.mcmemberrecord.rate",
|
|
FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_PacketLifeTimeSelector, {
|
|
"Packet Life Time Selector", "opa.mcmemberrecord.packetlifetimeselector",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_PacketLifeTime, {
|
|
"Packet Life Time", "opa.mcmemberrecord.packetlifetime",
|
|
FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_SL, {
|
|
"SL", "opa.mcmemberrecord.sl",
|
|
FT_UINT32, BASE_HEX, NULL, 0xF8000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_reserved, {
|
|
"Reserved (19 bits)", "opa.mcmemberrecord.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0x07FFFF00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_HopLimit, {
|
|
"Hop Limit", "opa.mcmemberrecord.hoplimit",
|
|
FT_UINT32, BASE_HEX, NULL, 0x000000FF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_Scope, {
|
|
"Scope", "opa.mcmemberrecord.scope",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_reserved2, {
|
|
"Reserved (1 bit)", "opa.mcmemberrecord.reserved2",
|
|
FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_JoinSendOnlyMember, {
|
|
"Join Send Only Member", "opa.mcmemberrecord.joinsendonlymember",
|
|
FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_JoinNonMember, {
|
|
"Join Non Member", "opa.mcmemberrecord.joinnonmember",
|
|
FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_JoinFullMember, {
|
|
"Join Full Member", "opa.mcmemberrecord.joinfullmember",
|
|
FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_ProxyJoin, {
|
|
"Proxy Join", "opa.mcmemberrecord.proxyjoin",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MCMemberRecord_reserved3, {
|
|
"Reserved (7 bits)", "opa.mcmemberrecord.reserved3",
|
|
FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }
|
|
},
|
|
|
|
/* TraceRecord */
|
|
{ &hf_opa_TraceRecord, {
|
|
"Trace Record", "opa.tracerecord",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_TraceRecord_IDGeneration, {
|
|
"ID Generation", "opa.tracerecord.idgeneration",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_TraceRecord_NodeType, {
|
|
"Node Type", "opa.tracerecord.nodetype",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_TraceRecord_NodeID, {
|
|
"Node ID", "opa.tracerecord.nodeid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_TraceRecord_ChassisID, {
|
|
"Chassis ID", "opa.tracerecord.chassisid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_TraceRecord_EntryPortID, {
|
|
"Entry Port ID", "opa.tracerecord.entryportid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_TraceRecord_ExitPortID, {
|
|
"Exit Port ID", "opa.tracerecord.exitportid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_TraceRecord_EntryPort, {
|
|
"Entry Port", "opa.tracerecord.entryport",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_TraceRecord_ExitPort, {
|
|
"Exit Port", "opa.tracerecord.exitport",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/*******************
|
|
* MultiPathRecord *
|
|
*******************/
|
|
|
|
{ &hf_opa_MultiPathRecord, {
|
|
"Multi Path Record", "opa.multipathrecord",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_reserved, {
|
|
"Reserved (4 bits)", "opa.multipathrecord.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0xF0000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_FlowLabel, {
|
|
"Flow Label", "opa.multipathrecord.flowlabel",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0FFFFF00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_HopLimit, {
|
|
"Hop Limit", "opa.multipathrecord.hoplimit",
|
|
FT_UINT32, BASE_HEX, NULL, 0x000000FF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_TClass, {
|
|
"T Class", "opa.multipathrecord.tclass",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_Reversible, {
|
|
"Reversible", "opa.multipathrecord.reversible",
|
|
FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_NumbPath, {
|
|
"Numb Path", "opa.multipathrecord.numbpath",
|
|
FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_P_Key, {
|
|
"P_Key", "opa.multipathrecord.p_key",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_QoSType, {
|
|
"QoS Type", "opa.multipathrecord.qostype",
|
|
FT_UINT16, BASE_HEX, NULL, 0xC000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_QoSPriority, {
|
|
"QoS Priority", "opa.multipathrecord.qospriority",
|
|
FT_UINT16, BASE_HEX, NULL, 0x3FC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_reserved2, {
|
|
"Reserved (1 bit)", "opa.multipathrecord.reserved2",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0020, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_SL, {
|
|
"SL", "opa.multipathrecord.sl",
|
|
FT_UINT16, BASE_HEX, NULL, 0x001F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_MTUSelector, {
|
|
"MTU Selector", "opa.multipathrecord.mtuselector",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_MTU, {
|
|
"MTU", "opa.multipathrecord.mtu",
|
|
FT_UINT8, BASE_HEX, VALS(MTU), 0x3F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_RateSelector, {
|
|
"Rate Selector", "opa.multipathrecord.rateselector",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_Rate, {
|
|
"Rate", "opa.multipathrecord.rate",
|
|
FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_PacketLifeTimeSelector, {
|
|
"Packet Life Time Selector", "opa.multipathrecord.packetlifetimeselector",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_PacketLifeTime, {
|
|
"Packet Life Time", "opa.multipathrecord.packetlifetime",
|
|
FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_IndependenceSelector, {
|
|
"Independence Selector", "opa.multipathrecord.independenceselector",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_SGIDScope, {
|
|
"SGID Scope", "opa.multipathrecord.sgidscope",
|
|
FT_UINT8, BASE_HEX, NULL, 0x38, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_DGIDScope, {
|
|
"DGID Scope", "opa.multipathrecord.dgidscope",
|
|
FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_SGIDCount, {
|
|
"SGID Count", "opa.multipathrecord.sgidcount",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_DGIDCount, {
|
|
"DGID Count", "opa.multipathrecord.dgidcount",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_SGID, {
|
|
"Source GID", "opa.multipathrecord.sgid",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_DGID, {
|
|
"Dest GID", "opa.multipathrecord.dgid",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_L2_8B, {
|
|
"8B Support", "opa.multipathrecord.l2_8b",
|
|
FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_L2_10B, {
|
|
"10B Support", "opa.multipathrecord.l2_10b",
|
|
FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_L2_9B, {
|
|
"9B Support", "opa.multipathrecord.l2_9b",
|
|
FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_L2_16B, {
|
|
"16B Support", "opa.multipathrecord.l2_16b",
|
|
FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_reserved3, {
|
|
"Reserved (4 bits)", "opa.multipathrecord.reserved3",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
|
|
},
|
|
|
|
/* GUID */
|
|
{ &hf_opa_MultiPathRecord_ServiceID, {
|
|
"Service ID", "opa.multipathrecord.serviceid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_SubnetPrefix, {
|
|
"SubnetPrefix", "opa.multipathrecord.subnetprefix",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_SGUIDScope, {
|
|
"SGUIDScope", "opa.multipathrecord.sguidscope",
|
|
FT_UINT8, BASE_HEX, NULL, 0x38, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_DGUIDScope, {
|
|
"DGUIDScope", "opa.multipathrecord.dguidscope",
|
|
FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_SGUIDCount, {
|
|
"SGUIDCount", "opa.multipathrecord.sguidcount",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_DGUIDCount, {
|
|
"DGUIDCount", "opa.multipathrecord.dguidcount",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_SGUID, {
|
|
"Source GUID", "opa.multipathrecord.sguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_DGUID, {
|
|
"Dest GUID", "opa.multipathrecord.dguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
/* LID */
|
|
{ &hf_opa_MultiPathRecord_SLIDCount, {
|
|
"SLIDCount", "opa.multipathrecord.slidcount",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_DLIDCount, {
|
|
"DLIDCount", "opa.multipathrecord.dlidcount",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_SLID, {
|
|
"Source LID", "opa.multipathrecord.slid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MultiPathRecord_DLID, {
|
|
"Dest LID", "opa.multipathrecord.dlid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/*******************
|
|
* CableInfoRecord *
|
|
*******************/
|
|
|
|
{ &hf_opa_CableInfoRecord, {
|
|
"Cable Info Record", "opa.cableinforecord",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_CableInfoRecord_Lid, {
|
|
"LID", "opa.cableinforecord.lid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_CableInfoRecord_Port, {
|
|
"Port", "opa.cableinforecord.port",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_CableInfoRecord_Length, {
|
|
"Length", "opa.cableinforecord.length",
|
|
FT_UINT8, BASE_DEC, NULL, 0xFE, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_CableInfoRecord_reserved, {
|
|
"Reserved (1 bit)", "opa.cableinforecord.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_CableInfoRecord_Address, {
|
|
"Address", "opa.cableinforecord.address",
|
|
FT_UINT16, BASE_HEX, NULL, 0xFFF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_CableInfoRecord_PortType, {
|
|
"PortType", "opa.cableinforecord.porttype",
|
|
FT_UINT16, BASE_HEX, VALS(PortType), 0x000F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_CableInfoRecord_Data, {
|
|
"Data", "opa.cableinforecord.data",
|
|
FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/**************
|
|
* PortStatus *
|
|
**************/
|
|
|
|
{ &hf_opa_PortStatus, {
|
|
"Port Status", "opa.pm.portstatus",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortNumber, {
|
|
"Port Number", "opa.pm.portstatus.portnumber",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_VLSelectMask, {
|
|
"VL Select Mask", "opa.pm.portstatus.vlselectmask",
|
|
FT_UINT32, BASE_CUSTOM, CF_FUNC(cf_opa_mad_32b_mask), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortXmitData, {
|
|
"PortXmitData", "opa.pm.portstatus.portxmitdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortRcvData, {
|
|
"PortRcvData", "opa.pm.portstatus.portrcvdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortXmitPkts, {
|
|
"PortXmitPkts", "opa.pm.portstatus.portxmitpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortRcvPkts, {
|
|
"PortRcvPkts", "opa.pm.portstatus.portrcvpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortMulticastXmitPkts, {
|
|
"PortMulticastXmitPkts", "opa.pm.portstatus.portmulticastxmitpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortMulticastRcvPkts, {
|
|
"PortMulticastRcvPkts", "opa.pm.portstatus.portmulticastrcvpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortXmitWait, {
|
|
"PortXmitWait", "opa.pm.portstatus.portxmitwait",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_SwPortCongestion, {
|
|
"SwPortCongestion", "opa.pm.portstatus.swportcongestion",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortRcvFECN, {
|
|
"PortRcvFECN", "opa.pm.portstatus.portrecvfecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortRcvBECN, {
|
|
"PortRcvBECN", "opa.pm.portstatus.portrecvbecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortXmitTimeCong, {
|
|
"PortXmitTimeCong", "opa.pm.portstatus.portxmittimecong",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortXmitWastedBW, {
|
|
"PortXmitWastedBW", "opa.pm.portstatus.portxmitwastedbw",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortXmitWaitData, {
|
|
"PortXmitWaitData", "opa.pm.portstatus.portxmitwaitdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortRcvBubble, {
|
|
"PortRcvBubble", "opa.pm.portstatus.portrcvbubble",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortMarkFECN, {
|
|
"PortMarkFECN", "opa.pm.portstatus.portmarkfecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortRcvConstraintErrors, {
|
|
"PortRcvConstraintErrors", "opa.pm.portstatus.portrcvconstrainterrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortRcvSwitchRelayErrors, {
|
|
"PortRcvSwitchRelayErrors", "opa.pm.portstatus.portrcvswitchrelayerrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortXmitDiscards, {
|
|
"PortXmitDiscards", "opa.pm.portstatus.portxmitdiscards",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortXmitConstraintErrors, {
|
|
"PortXmitConstraintErrors", "opa.pm.portstatus.portxmitconstrainterrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortRcvRemotePhysicalErrors, {
|
|
"PortRcvRemotePhysicalErrors", "opa.pm.portstatus.portrcvremotephysicalerrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_LocalLinkIntegrityErrors, {
|
|
"LocalLinkIntegrityErrors", "opa.pm.portstatus.locallinkintegrityerrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortRcvErrors, {
|
|
"PortRcvErrors", "opa.pm.portstatus.portrcverrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_ExcessiveBufferOverruns, {
|
|
"ExcessiveBufferOverruns", "opa.pm.portstatus.excessivebufferoverruns",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_FMConfigErrors, {
|
|
"FMConfigErrors", "opa.pm.portstatus.fmconfigerrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_LinkErrorRecovery, {
|
|
"LinkErrorRecovery", "opa.pm.portstatus.linkerrorrecovery",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_LinkDowned, {
|
|
"LinkDowned", "opa.pm.portstatus.linkdowned",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_UncorrectableErrors, {
|
|
"UncorrectableErrors", "opa.pm.portstatus.uncorrectableerrors",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_reserved, {
|
|
"Reserved", "opa.pm.portstatus.reserved",
|
|
FT_UINT8, BASE_DEC, NULL, 0xF8, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_LinkQualityIndicator, {
|
|
"LinkQualityIndicator", "opa.pm.portstatus.linkqualityindicator",
|
|
FT_UINT8, BASE_DEC, VALS(LinkQualityIndicator), 0x07, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortVLXmitData, {
|
|
"PortVLXmitData", "opa.pm.portstatus.vl.xmitdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortVLRcvData, {
|
|
"PortVLRcvData", "opa.pm.portstatus.vl.rcvdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortVLXmitPkts, {
|
|
"PortVLXmitPkts", "opa.pm.portstatus.vl.xmitpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortVLRcvPkts, {
|
|
"PortVLRcvPkts", "opa.pm.portstatus.vl.rcvpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortVLXmitWait, {
|
|
"PortVLXmitWait", "opa.pm.portstatus.vl.xmitwait",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_SwPortVLCongestion, {
|
|
"SwPortVLCongestion", "opa.pm.portstatus.vl.swcongestion",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortVLRcvFECN, {
|
|
"PortVLRcvFECN", "opa.pm.portstatus.vl.rcvfecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortVLRcvBECN, {
|
|
"PortVLRcvBECN", "opa.pm.portstatus.vl.rcvbecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortVLXmitTimeCong, {
|
|
"PortVLXmitTimeCong", "opa.pm.portstatus.vl.xmittimecong",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortVLXmitWastedBW, {
|
|
"PortVLXmitWastedBW", "opa.pm.portstatus.vl.xmitwastedbw",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortVLXmitWaitData, {
|
|
"PortVLXmitWaitData", "opa.pm.portstatus.vl.xmitwaitdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortVLRcvBubble, {
|
|
"PortVLRcvBubble", "opa.pm.portstatus.vl.rcvbubble",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortVLMarkFECN, {
|
|
"PortVLMarkFECN", "opa.pm.portstatus.vl.markfecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PortStatus_PortVLXmitDiscards, {
|
|
"PortVLXmitDiscards", "opa.pm.portstatus.vl.xmitdiscards",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/*******************
|
|
* ClearPortStatus *
|
|
*******************/
|
|
|
|
{ &hf_opa_ClearPortStatus, {
|
|
"Clear Port Status", "opa.pm.clearportstatus",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortSelectMask, {
|
|
"Port Select Mask", "opa.pm.clearportstatus.portselectmask",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_CounterSelectMask, {
|
|
"CounterSelectMask", "opa.pm.clearportstatus.counterselectmask",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortXmitData, {
|
|
"PortXmitData", "opa.pm.clearportstatus.portxmitdata",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x80000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortRcvData, {
|
|
"PortRcvData", "opa.pm.clearportstatus.portrcvdata",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x40000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortXmitPkts, {
|
|
"PortXmitPkts", "opa.pm.clearportstatus.portxmitpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x20000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortRcvPkts, {
|
|
"PortRcvPkts", "opa.pm.clearportstatus.portrcvpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x10000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortMulticastXmitPkts, {
|
|
"PortMulticastXmitPkts", "opa.pm.clearportstatus.portmulticastxmitpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x08000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortMulticastRcvPkts, {
|
|
"PortMulticastRcvPkts", "opa.pm.clearportstatus.portmulticastrcvpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x04000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortXmitWait, {
|
|
"PortXmitWait", "opa.pm.clearportstatus.portxmitwait",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x02000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_SwPortCongestion, {
|
|
"SwPortCongestion", "opa.pm.clearportstatus.swportcongestion",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x01000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortRcvFECN, {
|
|
"PortRcvFECN", "opa.pm.clearportstatus.portrecvfecn",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00800000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortRcvBECN, {
|
|
"PortRcvBECN", "opa.pm.clearportstatus.portrecvbecn",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00400000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortXmitTimeCong, {
|
|
"PortXmitTimeCong", "opa.pm.clearportstatus.portxmittimecong",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00200000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortXmitWastedBW, {
|
|
"PortXmitWastedBW", "opa.pm.clearportstatus.portxmitwastedbw",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00100000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortXmitWaitData, {
|
|
"PortXmitWaitData", "opa.pm.clearportstatus.portxmitwaitdata",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00080000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortRcvBubble, {
|
|
"PortRcvBubble", "opa.pm.clearportstatus.portrcvbubble",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00040000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortMarkFECN, {
|
|
"PortMarkFECN", "opa.pm.clearportstatus.portmarkfecn",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00020000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortRcvConstraintErrors, {
|
|
"PortRcvConstraintErrors", "opa.pm.clearportstatus.portrcvconstrainterrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00010000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortRcvSwitchRelayErrors, {
|
|
"PortRcvSwitchRelayErrors", "opa.pm.clearportstatus.portrcvswitchrelayerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00008000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortXmitDiscards, {
|
|
"PortXmitDiscards", "opa.pm.clearportstatus.portxmitdiscards",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00004000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortXmitConstraintErrors, {
|
|
"PortXmitConstraintErrors", "opa.pm.clearportstatus.portxmitconstrainterrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00002000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortRcvRemotePhysicalErrors, {
|
|
"PortRcvRemotePhysicalErrors", "opa.pm.clearportstatus.portrcvremotephysicalerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00001000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_LocalLinkIntegrityErrors, {
|
|
"LocalLinkIntegrityErrors", "opa.pm.clearportstatus.locallinkintegrityerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000800, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_PortRcvErrors, {
|
|
"PortRcvErrors", "opa.pm.clearportstatus.portrcverrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000400, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_ExcessiveBufferOverruns, {
|
|
"ExcessiveBufferOverruns", "opa.pm.clearportstatus.excessivebufferoverruns",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000200, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_FMConfigErrors, {
|
|
"FMConfigErrors", "opa.pm.clearportstatus.fmconfigerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000100, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_LinkErrorRecovery, {
|
|
"LinkErrorRecovery", "opa.pm.clearportstatus.linkerrorrecovery",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000080, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_LinkDowned, {
|
|
"LinkDowned", "opa.pm.clearportstatus.linkdowned",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000040, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_UncorrectableErrors, {
|
|
"UncorrectableErrors", "opa.pm.clearportstatus.uncorrectableerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000020, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortStatus_reserved, {
|
|
"Reserved (5 bits)", "opa.pm.clearportstatus.reserved",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0000001F, NULL, HFILL }
|
|
},
|
|
|
|
/* DataPortCounters */
|
|
{ &hf_opa_DataPortCounters, {
|
|
"Data Port Counters", "opa.pm.dataportcounters",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortSelectMask, {
|
|
"Port Select Mask", "opa.pm.dataportcounters.portselectmask",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_VLSelectMask, {
|
|
"VL Select Mask", "opa.pm.dataportcounters.vlselectmask",
|
|
FT_UINT32, BASE_CUSTOM, CF_FUNC(cf_opa_mad_32b_mask), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_resolution_reserved, {
|
|
"Reserved (24 bits)", "opa.pm.dataportcounters.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0xFFFFFF00, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_LocalLinkIntegrityResolution, {
|
|
"Local Link Integrity Resolution", "opa.pm.dataportcounters.locallinkintegrityresolution",
|
|
FT_UINT32, BASE_DEC, NULL, 0x000000F0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_LinkErrorRecoveryResolution, {
|
|
"Link Error Recovery Resolution", "opa.pm.dataportcounters.linkerrorrecoveryresolution",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0000000F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortNumber, {
|
|
"PortNumber", "opa.pm.dataportcounters.portnumber",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_lqi_reserved, {
|
|
"Reserved (29 bits)", "opa.pm.dataportcounters.reserved",
|
|
FT_UINT32, BASE_DEC, NULL, 0xFFFFFFF8, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_LinkQualityIndicator, {
|
|
"LinkQualityIndicator", "opa.pm.dataportcounters.linkqualityindicator",
|
|
FT_UINT32, BASE_DEC, VALS(LinkQualityIndicator), 0x00000007, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortXmitData, {
|
|
"PortXmitData", "opa.pm.dataportcounters.portxmitdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortRcvData, {
|
|
"PortRcvData", "opa.pm.dataportcounters.portrcvdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortXmitPkts, {
|
|
"PortXmitPkts", "opa.pm.dataportcounters.portxmitpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortRcvPkts, {
|
|
"PortRcvPkts", "opa.pm.dataportcounters.portrcvpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortMulticastXmitPkts, {
|
|
"PortMulticastXmitPkts", "opa.pm.dataportcounters.portmulticastxmitpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortMulticastRcvPkts, {
|
|
"PortMulticastRcvPkts", "opa.pm.dataportcounters.portmulticastrcvpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortXmitWait, {
|
|
"PortXmitWait", "opa.pm.dataportcounters.portxmitwait",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_SwPortCongestion, {
|
|
"SwPortCongestion", "opa.pm.dataportcounters.swportcongestion",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortRcvFECN, {
|
|
"PortRcvFECN", "opa.pm.dataportcounters.portrecvfecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortRcvBECN, {
|
|
"PortRcvBECN", "opa.pm.dataportcounters.portrecvbecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortXmitTimeCong, {
|
|
"PortXmitTimeCong", "opa.pm.dataportcounters.portxmittimecong",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortXmitWastedBW, {
|
|
"PortXmitWastedBW", "opa.pm.dataportcounters.portxmitwastedbw",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortXmitWaitData, {
|
|
"PortXmitWaitData", "opa.pm.dataportcounters.portxmitwaitdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortRcvBubble, {
|
|
"PortRcvBubble", "opa.pm.dataportcounters.portrcvbubble",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortMarkFECN, {
|
|
"PortMarkFECN", "opa.pm.dataportcounters.portmarkfecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortErrorCounterSummary, {
|
|
"PortErrorCounterSummary", "opa.pm.dataportcounters.porterrorcountersummary",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortVLXmitData, {
|
|
"PortVLXmitData", "opa.pm.dataportcounters.vl.xmitdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortVLRcvData, {
|
|
"PortVLRcvData", "opa.pm.dataportcounters.vl.rcvdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortVLXmitPkts, {
|
|
"PortVLXmitPkts", "opa.pm.dataportcounters.vl.xmitpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortVLRcvPkts, {
|
|
"PortVLRcvPkts", "opa.pm.dataportcounters.vl.rcvpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortVLXmitWait, {
|
|
"PortVLXmitWait", "opa.pm.dataportcounters.vl.xmitwait",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_SwPortVLCongestion, {
|
|
"SwPortVLCongestion", "opa.pm.dataportcounters.vl.swcongestion",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortVLRcvFECN, {
|
|
"PortVLRcvFECN", "opa.pm.dataportcounters.vl.rcvfecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortVLRcvBECN, {
|
|
"PortVLRcvBECN", "opa.pm.dataportcounters.vl.rcvbecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortVLXmitTimeCong, {
|
|
"PortVLXmitTimeCong", "opa.pm.dataportcounters.vl.xmittimecong",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortVLXmitWastedBW, {
|
|
"PortVLXmitWastedBW", "opa.pm.dataportcounters.vl.xmitwastedbw",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortVLXmitWaitData, {
|
|
"PortVLXmitWaitData", "opa.pm.dataportcounters.vl.xmitwaitdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortVLRcvBubble, {
|
|
"PortVLRcvBubble", "opa.pm.dataportcounters.vl.rcvbubble",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_DataPortCounters_PortVLMarkFECN, {
|
|
"PortVLMarkFECN", "opa.pm.dataportcounters.vl.markfecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* ErrorPortCounters */
|
|
{ &hf_opa_ErrorPortCounters, {
|
|
"Error Port Counters", "opa.pm.errorportcounters",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_PortSelectMask, {
|
|
"Port Select Mask", "opa.pm.errorportcounters.portselectmask",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_VLSelectMask, {
|
|
"VL Select Mask", "opa.pm.errorportcounters.vlselectmask",
|
|
FT_UINT32, BASE_CUSTOM, CF_FUNC(cf_opa_mad_32b_mask), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_PortNumber, {
|
|
"PortNumber", "opa.pm.errorportcounters.portnumber",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_PortRcvConstraintErrors, {
|
|
"PortRcvConstraintErrors", "opa.pm.errorportcounters.portrcvconstrainterrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_PortRcvSwitchRelayErrors, {
|
|
"PortRcvSwitchRelayErrors", "opa.pm.errorportcounters.portrcvswitchrelayerrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_PortXmitDiscards, {
|
|
"PortXmitDiscards", "opa.pm.errorportcounters.portxmitdiscards",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_PortXmitConstraintErrors, {
|
|
"PortXmitConstraintErrors", "opa.pm.errorportcounters.portxmitconstrainterrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_PortRcvRemotePhysicalErrors, {
|
|
"PortRcvRemotePhysicalErrors", "opa.pm.errorportcounters.portrcvremotephysicalerrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_LocalLinkIntegrityErrors, {
|
|
"LocalLinkIntegrityErrors", "opa.pm.errorportcounters.locallinkintegrityerrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_PortRcvErrors, {
|
|
"PortRcvErrors", "opa.pm.errorportcounters.portrcverrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_ExcessiveBufferOverruns, {
|
|
"ExcessiveBufferOverruns", "opa.pm.errorportcounters.excessivebufferoverruns",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_FMConfigErrors, {
|
|
"FMConfigErrors", "opa.pm.errorportcounters.fmconfigerrors",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_LinkErrorRecovery, {
|
|
"LinkErrorRecovery", "opa.pm.errorportcounters.linkerrorrecovery",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_LinkDowned, {
|
|
"LinkDowned", "opa.pm.errorportcounters.linkdowned",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_UncorrectableErrors, {
|
|
"UncorrectableErrors", "opa.pm.errorportcounters.uncorrectableerrors",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortCounters_PortVLXmitDiscards, {
|
|
"PortVLXmitDiscards", "opa.pm.errorportcounters.portvlxmitdiscards",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* ErrorPortInfo */
|
|
{ &hf_opa_ErrorPortInfo, {
|
|
"Error Port Info", "opa.pm.errorportinfo",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortSelectMask, {
|
|
"Port Select Mask", "opa.pm.errorportinfo.portselectmask",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvErrorInfo, {
|
|
"Port Rcv Error Info", "opa.pm.errorportinfo.errorinfoselectmask.portrcverrorinfo",
|
|
FT_BOOLEAN, 32, NULL, 0x80000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_ExcessiveBufferOverrunInfo, {
|
|
"ExcessiveBufferOverrunInfo", "opa.pm.errorportinfo.errorinfoselectmask.excessivebufferoverruninfo",
|
|
FT_BOOLEAN, 32, NULL, 0x40000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortXmitConstraintErrorInfo, {
|
|
"PortXmitConstraintErrorInfo", "opa.pm.errorportinfo.errorinfoselectmask.portxmitconstrainterrorinfo",
|
|
FT_BOOLEAN, 32, NULL, 0x20000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvConstraintErrorInfo, {
|
|
"PortRcvConstraintErrorInfo", "opa.pm.errorportinfo.errorinfoselectmask.portrcvconstrainterrorinfo",
|
|
FT_BOOLEAN, 32, NULL, 0x10000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvSwitchRelayErrorInfo, {
|
|
"PortRcvSwitchRelayErrorInfo", "opa.pm.errorportinfo.errorinfoselectmask.portrcvswitchrelayerrorinfo",
|
|
FT_BOOLEAN, 32, NULL, 0x08000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_UncorrectableErrorInfo, {
|
|
"UncorrectableErrorInfo", "opa.pm.errorportinfo.errorinfoselectmask.uncorrectableerrorinfo",
|
|
FT_BOOLEAN, 32, NULL, 0x04000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_FMConfigErrorInfo, {
|
|
"Fmconfigerrorinfo", "opa.pm.errorportinfo.errorinfoselectmask.fmconfigerrorinfo",
|
|
FT_BOOLEAN, 32, NULL, 0x02000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_reserved, {
|
|
"Reserved (25 bits)", "opa.pm.errorportinfo.errorinfoselectmask.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0x01FFFFFF, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortNumber, {
|
|
"Port Number", "opa.pm.errorportinfo.Portnumber",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvErrorInfo_Status, {
|
|
"Status", "opa.pm.errorportinfo.portrcverrorinfo.status",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved, {
|
|
"Reserved", "opa.pm.errorportinfo.portrcverrorinfo.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x70, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvErrorInfo_ErrorCode, {
|
|
"ErrorCode", "opa.pm.errorportinfo.portrcverrorinfo.errorcode",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketFlit1, {
|
|
"PacketFlit1", "opa.pm.errorportinfo.portrcverrorinfo.packetflit1",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketFlit2, {
|
|
"PacketFlit2", "opa.pm.errorportinfo.portrcverrorinfo.packetflit2",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvErrorInfo_Flit1Bits, {
|
|
"Flit1Bits", "opa.pm.errorportinfo.portrcverrorinfo.flit1bits",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvErrorInfo_Flit2Bits, {
|
|
"Flit2Bits", "opa.pm.errorportinfo.portrcverrorinfo.flit2bits",
|
|
FT_UINT8, BASE_HEX, NULL, 0x40, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved2, {
|
|
"Reserved (4 bits)", "opa.pm.errorportinfo.portrcverrorinfo.reserved2",
|
|
FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketBytes, {
|
|
"PacketBytes", "opa.pm.errorportinfo.portrcverrorinfo.packetbytes",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvErrorInfo_FlitBits, {
|
|
"FlitBits", "opa.pm.errorportinfo.portrcverrorinfo.flitbits",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved3, {
|
|
"Reserved (6 bits)", "opa.pm.errorportinfo.portrcverrorinfo.reserved3",
|
|
FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved4, {
|
|
"Reserved (17 bytes)", "opa.pm.errorportinfo.portrcverrorinfo.reserved4",
|
|
FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_Status, {
|
|
"Status", "opa.pm.errorportinfo.excessivebufferoverrunerrorinfo.status",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_SC, {
|
|
"SC", "opa.pm.errorportinfo.excessivebufferoverrunerrorinfo.sc",
|
|
FT_UINT8, BASE_HEX, NULL, 0x7C, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_reserved, {
|
|
"Reserved (2 bits)", "opa.pm.errorportinfo.ExcessiveBufferOverrunErrorInfo.Reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_Status, {
|
|
"Status", "opa.pm.errorportinfo.portxmitconstrainterrorinfo.status",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_reserved, {
|
|
"Reserved (7 bits)", "opa.pm.errorportinfo.portxmitconstrainterrorinfo.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_P_Key, {
|
|
"P_Key", "opa.pm.errorportinfo.portxmitconstrainterrorinfo.pkey",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_SLID, {
|
|
"SLID", "opa.pm.errorportinfo.portxmitconstrainterrorinfo.slid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_Status, {
|
|
"Status", "opa.pm.errorportinfo.portrcvconstrainterrorinfo.status",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_reserved, {
|
|
"Reserved (7 bits)", "opa.pm.errorportinfo.portrcvconstrainterrorinfo.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_P_Key, {
|
|
"P_Key", "opa.pm.errorportinfo.portrcvconstrainterrorinfo.pkey",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_SLID, {
|
|
"SLID", "opa.pm.errorportinfo.portrcvconstrainterrorinfo.slid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_Status, {
|
|
"Status", "opa.pm.errorportinfo.portrcvswitchrelayerrorinfo.status",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_reserved, {
|
|
"Reserved (3 bits)", "opa.pm.errorportinfo.portrcvswitchrelayerrorinfo.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x70, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_ErrorCode, {
|
|
"ErrorCode", "opa.pm.errorportinfo.portrcvswitchrelayerrorinfo.errorcode",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_DLID, {
|
|
"DLID", "opa.pm.errorportinfo.portrcvswitchrelayerrorinfo.dlid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_EgressPortNum, {
|
|
"EgressPortNum", "opa.pm.errorportinfo.portrcvswitchrelayerrorinfo.egressportnum",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_SC, {
|
|
"SC", "opa.pm.errorportinfo.portrcvswitchrelayerrorinfo.scorsl",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_UncorrectableErrorInfo_Status, {
|
|
"Status", "opa.pm.errorportinfo.uncorrectableerrorinfo.status",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_UncorrectableErrorInfo_reserved, {
|
|
"Reserved (3 bits)", "opa.pm.errorportinfo.uncorrectableerrorinfo.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x70, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_UncorrectableErrorInfo_ErrorCode, {
|
|
"ErrorCode", "opa.pm.errorportinfo.uncorrectableerrorinfo.errorcode",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_FMConfigErrorInfo_Status, {
|
|
"Status", "opa.pm.errorportinfo.fmconfigerrorinfo.status",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_FMConfigErrorInfo_reserved, {
|
|
"Reserved (3 bits)", "opa.pm.errorportinfo.fmconfigerrorinfo.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x70, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_FMConfigErrorInfo_ErrorCode, {
|
|
"ErrorCode", "opa.pm.errorportinfo.fmconfigerrorinfo.errorcode",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_FMConfigErrorInfo_VL, {
|
|
"VL", "opa.pm.errorportinfo.fmconfigerrorinfo.vl",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_FMConfigErrorInfo_Distance, {
|
|
"Distance", "opa.pm.errorportinfo.fmconfigerrorinfo.distance",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_FMConfigErrorInfo_BadFlitBits, {
|
|
"BadFlitBits", "opa.pm.errorportinfo.fmconfigerrorinfo.badflitbits",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ErrorPortInfo_FMConfigErrorInfo_SC, {
|
|
"SC", "opa.pm.errorportinfo.fmconfigerrorinfo.sc",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* Gerneral PA */
|
|
{ &hf_opa_ImageID_imageNumber, {
|
|
"imageNumber", "opa.pa.imageid.imagenumber",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ImageID_imageOffset, {
|
|
"imageOffset", "opa.pa.imageid.imageoffset",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* GetGroupList */
|
|
{ &hf_opa_GetGroupList, {
|
|
"Group List", "opa.pa.getgrouplist",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupList_groupName, {
|
|
"Group Name", "opa.pa.getgrouplist.groupname",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* GetGroupInfo */
|
|
{ &hf_opa_GetGroupInfo, {
|
|
"Group Info", "opa.pa.getgroupinfo",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_groupName, {
|
|
"Group Name", "opa.pa.getgroupinfo.groupname",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_numInternalPorts, {
|
|
"numInternalPorts", "opa.pa.getgroupinfo.numinternalports",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_numExternalPorts, {
|
|
"numExternalPorts", "opa.pa.getgroupinfo.numexternalports",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_totalMBps, {
|
|
"totalMBps", "opa.pa.getgroupinfo.totalmbps",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_totalKPps, {
|
|
"totalKPps", "opa.pa.getgroupinfo.totalkpps",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_avgMBps, {
|
|
"avgMBps", "opa.pa.getgroupinfo.avgmbps",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_minMBps, {
|
|
"minMBps", "opa.pa.getgroupinfo.minmbps",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_maxMBps, {
|
|
"maxMBps", "opa.pa.getgroupinfo.maxmbps",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_numBWBuckets, {
|
|
"numBWBuckets", "opa.pa.getgroupinfo.numbwbuckets",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_BWBuckets, {
|
|
"BWBuckets", "opa.pa.getgroupinfo.bwbuckets",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_avgKPps, {
|
|
"avgKPps", "opa.pa.getgroupinfo.avgkpps",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_minKPps, {
|
|
"minKPps", "opa.pa.getgroupinfo.minkpps",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_maxKPps, {
|
|
"maxKPps", "opa.pa.getgroupinfo.maxkpps",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_pmaFailedPorts, {
|
|
"pmaFailedPorts", "opa.pa.getgroupinfo.pmafailedports",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_topoFailedPorts, {
|
|
"topoFailedPorts", "opa.pa.getgroupinfo.topofailedports",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_integrityErrors, {
|
|
"integrityErrors", "opa.pa.getgroupinfo.integrityerrors",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_congestionErrors, {
|
|
"congestionErrors", "opa.pa.getgroupinfo.congestionerrors",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_smaCongestionErrors, {
|
|
"smaCongestionErrors", "opa.pa.getgroupinfo.smacongestionerrors",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_bubbleErrors, {
|
|
"bubbleErrors", "opa.pa.getgroupinfo.bubbleerrors",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_securityErrors, {
|
|
"securityErrors", "opa.pa.getgroupinfo.securityerrors",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_routingErrors, {
|
|
"routingErrors", "opa.pa.getgroupinfo.routingerrors",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_utlizationPct10, {
|
|
"utlizationPct10", "opa.pa.getgroupinfo.utlizationpct10",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_computed_pct10), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_discardsPct10, {
|
|
"discardsPct10", "opa.pa.getgroupinfo.discardspct10",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_computed_pct10), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_maxInternalRate, {
|
|
"maxInternalRate", "opa.pa.getgroupinfo.maxinternalrate",
|
|
FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_minInternalRate, {
|
|
"minInternalRate", "opa.pa.getgroupinfo.mininternalrate",
|
|
FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_maxExternalRate, {
|
|
"maxExternalRate", "opa.pa.getgroupinfo.maxexternalrate",
|
|
FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_minExternalRate, {
|
|
"minExternalRate", "opa.pa.getgroupinfo.minexternalrate",
|
|
FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_maxInternalMBps, {
|
|
"maxInternalMBps", "opa.pa.getgroupinfo.maxinternalmbps",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupInfo_maxExternalMBps, {
|
|
"maxExternalMBps", "opa.pa.getgroupinfo.maxexternalmbps",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* GetGroupConfig */
|
|
{ &hf_opa_GetGroupConfig, {
|
|
"Group Config", "opa.pa.getgroupconfig",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupConfig_groupName, {
|
|
"Group Name", "opa.pa.getgroupconfig.groupname",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupConfig_Port_NodeGUID, {
|
|
"NodeGUID", "opa.pa.getgroupconfig.port.nodeguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupConfig_Port_nodeDesc, {
|
|
"nodeDesc", "opa.pa.getgroupconfig.port.nodedesc",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupConfig_Port_NodeLID, {
|
|
"NodeLID", "opa.pa.getgroupconfig.port.nodelid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetGroupConfig_Port_PortNumber, {
|
|
"PortNumber", "opa.pa.getgroupconfig.port.portnumber",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* GetPortCounters */
|
|
{ &hf_opa_GetPortCounters, {
|
|
"Port Counters", "opa.pa.getportcounters",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_nodeLID, {
|
|
"nodeLID", "opa.pa.getportcounters.nodelid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortNumber, {
|
|
"PortNumber", "opa.pa.getportcounters.portnumber",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_flags, {
|
|
"flags", "opa.pa.getportcounters.flags",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortXmitData, {
|
|
"PortXmitData", "opa.pa.getportcounters.portxmitdata",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortRcvData, {
|
|
"PortRcvData", "opa.pa.getportcounters.portrcvdata",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortXmitPkts, {
|
|
"PortXmitPkts", "opa.pa.getportcounters.portxmitpkts",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortRcvPkts, {
|
|
"PortRcvPkts", "opa.pa.getportcounters.portrcvpkts",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortMulticastXmitPkts, {
|
|
"PortMulticastXmitPkts", "opa.pa.getportcounters.portmulticastxmitpkts",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortMulticastRcvPkts, {
|
|
"PortMulticastRcvPkts", "opa.pa.getportcounters.portmulticastrcvpkts",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_LocalLinkIntegrityErrors, {
|
|
"LocalLinkIntegrityErrors", "opa.pa.getportcounters.locallinkintegrityerrors",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_FMConfigErrors, {
|
|
"FMConfigErrors", "opa.pa.getportcounters.fmconfigerrors",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortRcvErrors, {
|
|
"PortRcvErrors", "opa.pa.getportcounters.portrcverrors",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_ExcessiveBufferOverruns, {
|
|
"ExcessiveBufferOverruns", "opa.pa.getportcounters.excessivebufferoverruns",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortRcvConstraintErrors, {
|
|
"PortRcvConstraintErrors", "opa.pa.getportcounters.portrcvconstrainterrors",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortRcvSwitchRelayErrors, {
|
|
"PortRcvSwitchRelayErrors", "opa.pa.getportcounters.portrcvswitchrelayerrors",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortXmitDiscards, {
|
|
"PortXmitDiscards", "opa.pa.getportcounters.portxmitdiscards",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortXmitConstraintErrors, {
|
|
"PortXmitConstraintErrors", "opa.pa.getportcounters.portxmitconstrainterrors",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortRcvRemotePhysicalErrors, {
|
|
"PortRcvRemotePhysicalErrors", "opa.pa.getportcounters.portrcvremotephysicalerrors",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_SwPortCongestion, {
|
|
"SwPortCongestion", "opa.pa.getportcounters.swportcongestion",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortXmitWait, {
|
|
"PortXmitWait", "opa.pa.getportcounters.portxmitwait",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortRcvFECN, {
|
|
"PortRcvFECN", "opa.pa.getportcounters.portrcvfecn",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortRcvBECN, {
|
|
"PortRcvBECN", "opa.pa.getportcounters.portrcvbecn",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortXmitTimeCong, {
|
|
"PortXmitTimeCong", "opa.pa.getportcounters.portxmittimecong",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortXmitWastedBW, {
|
|
"PortXmitWastedBW", "opa.pa.getportcounters.portxmitwastedbw",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortXmitWaitData, {
|
|
"PortXmitWaitData", "opa.pa.getportcounters.portxmitwaitdata",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortRcvBubble, {
|
|
"PortRcvBubble", "opa.pa.getportcounters.portrcvbubble",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_PortMarkFECN, {
|
|
"PortMarkFECN", "opa.pa.getportcounters.portmarkfecn",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_LinkErrorRecovery, {
|
|
"LinkErrorRecovery", "opa.pa.getportcounters.linkerrorrecovery",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_LinkDowned, {
|
|
"LinkDowned", "opa.pa.getportcounters.linkdowned",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_UncorrectableErrors, {
|
|
"UncorrectableErrors", "opa.pa.getportcounters.uncorrectableerrors",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_NumLanesDown, {
|
|
"NumLanesDown", "opa.pa.getportcounters.numlanesdown",
|
|
FT_UINT8, BASE_DEC, NULL, 0xF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_reserved, {
|
|
"Reserved", "opa.pa.getportcounters.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetPortCounters_LinkQualityIndicator, {
|
|
"LinkQualityIndicator", "opa.pa.getportcounters.linkqualityindicator",
|
|
FT_UINT8, BASE_DEC, VALS(LinkQualityIndicator), 0x07, NULL, HFILL }
|
|
},
|
|
|
|
/* ClearPortCounters */
|
|
{ &hf_opa_ClearPortCounters, {
|
|
"Clear User Port Counters", "opa.pa.clearportcounters",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_nodeLID, {
|
|
"nodeLID", "opa.pa.clearportcounters.nodelid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortNumber, {
|
|
"PortNumber", "opa.pa.clearportcounters.portnumber",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_CounterSelectMask, {
|
|
"CounterSelectMask", "opa.pa.clearportcounters.counterselectmask",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortXmitData, {
|
|
"PortXmitData", "opa.pa.clearportcounters.portxmitdata",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x80000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortRcvData, {
|
|
"PortRcvData", "opa.pa.clearportcounters.portrcvdata",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x40000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortXmitPkts, {
|
|
"PortXmitPkts", "opa.pa.clearportcounters.portxmitpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x20000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortRcvPkts, {
|
|
"PortRcvPkts", "opa.pa.clearportcounters.portrcvpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x10000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortMulticastXmitPkts, {
|
|
"PortMulticastXmitPkts", "opa.pa.clearportcounters.portmulticastxmitpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x08000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortMulticastRcvPkts, {
|
|
"PortMulticastRcvPkts", "opa.pa.clearportcounters.portmulticastrcvpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x04000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortXmitWait, {
|
|
"PortXmitWait", "opa.pa.clearportcounters.portxmitwait",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x02000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_SwPortCongestion, {
|
|
"SwPortCongestion", "opa.pa.clearportcounters.swportcongestion",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x01000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortRcvFECN, {
|
|
"PortRcvFECN", "opa.pa.clearportcounters.portrecvfecn",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00800000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortRcvBECN, {
|
|
"PortRcvBECN", "opa.pa.clearportcounters.portrecvbecn",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00400000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortXmitTimeCong, {
|
|
"PortXmitTimeCong", "opa.pa.clearportcounters.portxmittimecong",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00200000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortXmitWastedBW, {
|
|
"PortXmitWastedBW", "opa.pa.clearportcounters.portxmitwastedbw",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00100000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortXmitWaitData, {
|
|
"PortXmitWaitData", "opa.pa.clearportcounters.portxmitwaitdata",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00080000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortRcvBubble, {
|
|
"PortRcvBubble", "opa.pa.clearportcounters.portrcvbubble",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00040000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortMarkFECN, {
|
|
"PortMarkFECN", "opa.pa.clearportcounters.portmarkfecn",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00020000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortRcvConstraintErrors, {
|
|
"PortRcvConstraintErrors", "opa.pa.clearportcounters.portrcvconstrainterrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00010000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortRcvSwitchRelayErrors, {
|
|
"PortRcvSwitchRelayErrors", "opa.pa.clearportcounters.portrcvswitchrelayerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00008000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortXmitDiscards, {
|
|
"PortXmitDiscards", "opa.pa.clearportcounters.portxmitdiscards",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00004000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortXmitConstraintErrors, {
|
|
"PortXmitConstraintErrors", "opa.pa.clearportcounters.portxmitconstrainterrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00002000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortRcvRemotePhysicalErrors, {
|
|
"PortRcvRemotePhysicalErrors", "opa.pa.clearportcounters.portrcvremotephysicalerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00001000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_LocalLinkIntegrityErrors, {
|
|
"LocalLinkIntegrityErrors", "opa.pa.clearportcounters.locallinkintegrityerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000800, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_PortRcvErrors, {
|
|
"PortRcvErrors", "opa.pa.clearportcounters.portrcverrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000400, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_ExcessiveBufferOverruns, {
|
|
"ExcessiveBufferOverruns", "opa.pa.clearportcounters.excessivebufferoverruns",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000200, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_FMConfigErrors, {
|
|
"FMConfigErrors", "opa.pa.clearportcounters.fmconfigerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000100, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_LinkErrorRecovery, {
|
|
"LinkErrorRecovery", "opa.pa.clearportcounters.linkerrorrecovery",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000080, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_LinkDowned, {
|
|
"LinkDowned", "opa.pa.clearportcounters.linkdowned",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000040, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_UncorrectableErrors, {
|
|
"UncorrectableErrors", "opa.pa.clearportcounters.uncorrectableerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000020, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearPortCounters_reserved, {
|
|
"Reserved (5 bits)", "opa.pa.clearportcounters.reserved",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0000001F, NULL, HFILL }
|
|
},
|
|
|
|
/* ClearAllPortCounters */
|
|
{ &hf_opa_ClearAllPortCounters, {
|
|
"Clear All User Port Counters", "opa.pa.clearallportcounters",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_CounterSelectMask, {
|
|
"CounterSelectMask", "opa.pa.clearallportcounters.counterselectmask",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortXmitData, {
|
|
"PortXmitData", "opa.pa.clearallportcounters.portxmitdata",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x80000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortRcvData, {
|
|
"PortRcvData", "opa.pa.clearallportcounters.portrcvdata",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x40000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortXmitPkts, {
|
|
"PortXmitPkts", "opa.pa.clearallportcounters.portxmitpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x20000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortRcvPkts, {
|
|
"PortRcvPkts", "opa.pa.clearallportcounters.portrcvpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x10000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortMulticastXmitPkts, {
|
|
"PortMulticastXmitPkts", "opa.pa.clearallportcounters.portmulticastxmitpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x08000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortMulticastRcvPkts, {
|
|
"PortMulticastRcvPkts", "opa.pa.clearallportcounters.portmulticastrcvpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x04000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortXmitWait, {
|
|
"PortXmitWait", "opa.pa.clearallportcounters.portxmitwait",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x02000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_SwPortCongestion, {
|
|
"SwPortCongestion", "opa.pa.clearallportcounters.swportcongestion",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x01000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortRcvFECN, {
|
|
"PortRcvFECN", "opa.pa.clearallportcounters.portrecvfecn",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00800000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortRcvBECN, {
|
|
"PortRcvBECN", "opa.pa.clearallportcounters.portrecvbecn",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00400000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortXmitTimeCong, {
|
|
"PortXmitTimeCong", "opa.pa.clearallportcounters.portxmittimecong",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00200000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortXmitWastedBW, {
|
|
"PortXmitWastedBW", "opa.pa.clearallportcounters.portxmitwastedbw",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00100000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortXmitWaitData, {
|
|
"PortXmitWaitData", "opa.pa.clearallportcounters.portxmitwaitdata",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00080000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortRcvBubble, {
|
|
"PortRcvBubble", "opa.pa.clearallportcounters.portrcvbubble",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00040000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortMarkFECN, {
|
|
"PortMarkFECN", "opa.pa.clearallportcounters.portmarkfecn",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00020000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortRcvConstraintErrors, {
|
|
"PortRcvConstraintErrors", "opa.pa.clearallportcounters.portrcvconstrainterrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00010000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortRcvSwitchRelayErrors, {
|
|
"PortRcvSwitchRelayErrors", "opa.pa.clearallportcounters.portrcvswitchrelayerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00008000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortXmitDiscards, {
|
|
"PortXmitDiscards", "opa.pa.clearallportcounters.portxmitdiscards",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00004000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortXmitConstraintErrors, {
|
|
"PortXmitConstraintErrors", "opa.pa.clearallportcounters.portxmitconstrainterrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00002000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortRcvRemotePhysicalErrors, {
|
|
"PortRcvRemotePhysicalErrors", "opa.pa.clearallportcounters.portrcvremotephysicalerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00001000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_LocalLinkIntegrityErrors, {
|
|
"LocalLinkIntegrityErrors", "opa.pa.clearallportcounters.locallinkintegrityerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000800, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_PortRcvErrors, {
|
|
"PortRcvErrors", "opa.pa.clearallportcounters.portrcverrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000400, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_ExcessiveBufferOverruns, {
|
|
"ExcessiveBufferOverruns", "opa.pa.clearallportcounters.excessivebufferoverruns",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000200, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_FMConfigErrors, {
|
|
"FMConfigErrors", "opa.pa.clearallportcounters.fmconfigerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000100, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_LinkErrorRecovery, {
|
|
"LinkErrorRecovery", "opa.pa.clearallportcounters.linkerrorrecovery",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000080, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_LinkDowned, {
|
|
"LinkDowned", "opa.pa.clearallportcounters.linkdowned",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000040, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_UncorrectableErrors, {
|
|
"UncorrectableErrors", "opa.pa.clearallportcounters.uncorrectableerrors",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000020, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearAllPortCounters_reserved, {
|
|
"Reserved (5 bits)", "opa.pa.clearallportcounters.reserved",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0000001F, NULL, HFILL }
|
|
},
|
|
|
|
/* PMConfig */
|
|
{ &hf_opa_PMConfig, {
|
|
"PM Config", "opa.pa.pmconfig",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_sweepInterval, {
|
|
"sweepInterval", "opa.pa.pmconfig.sweepinterval",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_maxClients, {
|
|
"maxClients", "opa.pa.pmconfig.maxclients",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_sizeHistory, {
|
|
"sizeHistory", "opa.pa.pmconfig.sizehistory",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_sizeFreeze, {
|
|
"sizeFreeze", "opa.pa.pmconfig.sizefreeze",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_lease, {
|
|
"lease", "opa.pa.pmconfig.lease",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_pmFlags, {
|
|
"pmFlags", "opa.pa.pmconfig.pmflags",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_PortXmitWait, {
|
|
"PortXmitWait", "opa.pa.pmconfig.portxmitwait",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_SwPortCongestion, {
|
|
"SwPortCongestion", "opa.pa.pmconfig.swportcongestion",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_PortRcvFECN, {
|
|
"PortRcvFECN", "opa.pa.pmconfig.portrcvfecn",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_PortRcvBECN, {
|
|
"PortRcvBECN", "opa.pa.pmconfig.portrcvbecn",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_PortXmitTimeCong, {
|
|
"PortXmitTimeCong", "opa.pa.pmconfig.portxmittimecong",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_PortMarkFECN, {
|
|
"PortMarkFECN", "opa.pa.pmconfig.portmarkfecn",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_integrityErrors, {
|
|
"integrityErrors", "opa.pa.pmconfig.integrityerrors",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_congestionErrors, {
|
|
"congestionErrors", "opa.pa.pmconfig.congestionerrors",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_bubbleErrors, {
|
|
"bubbleErrors", "opa.pa.pmconfig.bubbleerrors",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_smaCongestionErrors, {
|
|
"smaCongestionErrors", "opa.pa.pmconfig.smacongestionerrors",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_securityErrors, {
|
|
"securityErrors", "opa.pa.pmconfig.securityerrors",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_routingErrors, {
|
|
"routingErrors", "opa.pa.pmconfig.routingerrors",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_LocalLinkIntegrityErrors, {
|
|
"LocalLinkIntegrityErrors", "opa.pa.pmconfig.locallinkintegrityerrors",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_PortRcvErrors, {
|
|
"PortRcvErrors", "opa.pa.pmconfig.portrcverrors",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_ExcessiveBufferOverrunErrors, {
|
|
"ExcessiveBufferOverrunErrors", "opa.pa.pmconfig.excessivebufferoverrunerrors",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_LinkErrorRecovery, {
|
|
"LinkErrorRecovery", "opa.pa.pmconfig.linkerrorrecovery",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_LinkDowned, {
|
|
"LinkDowned", "opa.pa.pmconfig.linkdowned",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_UncorrectableErrors, {
|
|
"UncorrectableErrors", "opa.pa.pmconfig.uncorrectableerrors",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_FMConfigErrors, {
|
|
"FMConfigErrors", "opa.pa.pmconfig.fmconfigerrors",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_LinkQualityIndicator, {
|
|
"LinkQualityIndicator", "opa.pa.pmconfig.linkqualityindicator",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_LinkWidthDowngrade, {
|
|
"LinkWidthDowngrade", "opa.pa.pmconfig.linkwidthdowngrade",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_memoryFootprint, {
|
|
"memoryFootprint", "opa.pa.pmconfig.memoryfootprint",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_maxAttempts, {
|
|
"maxAttempts", "opa.pa.pmconfig.maxattempts",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_respTimeout, {
|
|
"respTimeout", "opa.pa.pmconfig.resptimeout",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_minRespTimeout, {
|
|
"minRespTimeout", "opa.pa.pmconfig.minresptimeout",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_maxParallelNodes, {
|
|
"maxParallelNodes", "opa.pa.pmconfig.maxparallelnodes",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_pmaBatchSize, {
|
|
"pmaBatchSize", "opa.pa.pmconfig.pmabatchsize",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_PMConfig_errorClear, {
|
|
"errorClear", "opa.pa.pmconfig.errorclear",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* MoveFreezeFrame */
|
|
{ &hf_opa_MoveFreezeFrame_old, {
|
|
"Old Image", "opa.pa.movefreezeframe.old",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_MoveFreezeFrame_new, {
|
|
"New Image", "opa.pa.movefreezeframe.new",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* GetFocusPorts */
|
|
{ &hf_opa_GetFocusPorts, {
|
|
"Focus Ports", "opa.pa.getfocusports",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_groupName, {
|
|
"Group Name", "opa.pa.getfocusports.groupname",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_select, {
|
|
"select", "opa.pa.getfocusports.select",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_start, {
|
|
"start", "opa.pa.getfocusports.start",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_range, {
|
|
"range", "opa.pa.getfocusports.range",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_nodeLID, {
|
|
"nodeLID", "opa.pa.getfocusports.nodelid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_portNumber, {
|
|
"portNumber", "opa.pa.getfocusports.portnumber",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_rate, {
|
|
"rate", "opa.pa.getfocusports.rate",
|
|
FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_mtu, {
|
|
"mtu", "opa.pa.getfocusports.mtu",
|
|
FT_UINT8, BASE_HEX, VALS(MTU), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_localFlags, {
|
|
"localFlags", "opa.pa.getfocusports.localflags",
|
|
FT_UINT8, BASE_DEC, VALS(FocusPortFlags), 0xF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_neighborFlags, {
|
|
"neighborFlags", "opa.pa.getfocusports.neighborflags",
|
|
FT_UINT8, BASE_DEC, VALS(FocusPortFlags), 0x0F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_value, {
|
|
"value", "opa.pa.getfocusports.value",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_nodeGUID, {
|
|
"nodeGUID", "opa.pa.getfocusports.nodeguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_nodeDesc, {
|
|
"nodeDesc", "opa.pa.getfocusports.nodedesc",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_neighborLid, {
|
|
"neighborLid", "opa.pa.getfocusports.neighborlid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_neighborPortNumber, {
|
|
"neighborPortNumber", "opa.pa.getfocusports.neighborportnumber",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_neighborValue, {
|
|
"neighborValue", "opa.pa.getfocusports.neighborvalue",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_neighborGuid, {
|
|
"neighborGuid", "opa.pa.getfocusports.neighborguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetFocusPorts_neighborNodeDesc, {
|
|
"neighborNodeDesc", "opa.pa.getfocusports.neighbornodedesc",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* GetImageInfo */
|
|
{ &hf_opa_GetImageInfo, {
|
|
"Image Info", "opa.pa.getimageinfo",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_sweepStart, {
|
|
"sweepStart", "opa.pa.getimageinfo.sweepstart",
|
|
FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_sweepDuration, {
|
|
"sweepDuration", "opa.pa.getimageinfo.sweepduration",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_numHFIPorts, {
|
|
"numHHIPorts", "opa.pa.getimageinfo.numhfiports",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_numSwitchNodes, {
|
|
"numSwitchNodes", "opa.pa.getimageinfo.numswitchnodes",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_numSwitchPorts, {
|
|
"numSwitchPorts", "opa.pa.getimageinfo.numswitchports",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_numLinks, {
|
|
"numLinks", "opa.pa.getimageinfo.numlinks",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_numSMs, {
|
|
"numSMs", "opa.pa.getimageinfo.numsms",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_numFailedNodes, {
|
|
"numFailedNodes", "opa.pa.getimageinfo.numfailednodes",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_numFailedPorts, {
|
|
"numFailedPorts", "opa.pa.getimageinfo.numfailedports",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_numSkippedNodes, {
|
|
"numSkippedNodes", "opa.pa.getimageinfo.numskippednodes",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_numSkippedPorts, {
|
|
"numSkippedPorts", "opa.pa.getimageinfo.numskippedports",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_numUnexpectedClearPorts, {
|
|
"numUnexpectedClearPorts", "opa.pa.getimageinfo.numunexpectedclearports",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_imageInterval, {
|
|
"imageInterval", "opa.pa.getimageinfo.imageinterval",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_lid, {
|
|
"lid", "opa.pa.getimageinfo.sminfo.lid",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_state, {
|
|
"state", "opa.pa.getimageinfo.sminfo.state",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_priority, {
|
|
"priority", "opa.pa.getimageinfo.sminfo.priority",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_portNumber, {
|
|
"portNumber", "opa.pa.getimageinfo.sminfo.portnumber",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_smPortGuid, {
|
|
"portGUID", "opa.pa.getimageinfo.sminfo.portguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetImageInfo_smNodeDesc, {
|
|
"nodeDesc", "opa.pa.getimageinfo.sminfo.nodedesc",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* GetVFList */
|
|
{ &hf_opa_GetVFList, {
|
|
"Vf List", "opa.pa.getvflist",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFList_vfName, {
|
|
"VF Name", "opa.pa.getvflist.vfname",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* GetVFInfo */
|
|
{ &hf_opa_GetVFInfo, {
|
|
"VF Info", "opa.pa.getvfinfo",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_vfName, {
|
|
"VF Name", "opa.pa.getvfinfo.vfname",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_numPorts, {
|
|
"numPorts", "opa.pa.getvfinfo.numports",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_totalMBps, {
|
|
"totalMBps", "opa.pa.getvfinfo.totalmbps",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_totalKPps, {
|
|
"totalKPps", "opa.pa.getvfinfo.totalkpps",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_avgMBps, {
|
|
"avgMBps", "opa.pa.getvfinfo.avgmbps",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_minMBps, {
|
|
"minMBps", "opa.pa.getvfinfo.minmbps",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_maxMBps, {
|
|
"maxMBps", "opa.pa.getvfinfo.maxmbps",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_numBWBuckets, {
|
|
"numBWBuckets", "opa.pa.getvfinfo.numbwbuckets",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_BWBuckets, {
|
|
"BWBuckets", "opa.pa.getvfinfo.bwbuckets",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_avgKPps, {
|
|
"avgKPps", "opa.pa.getvfinfo.avgkpps",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_minKPps, {
|
|
"minKPps", "opa.pa.getvfinfo.minkpps",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_maxKPps, {
|
|
"maxKPps", "opa.pa.getvfinfo.maxkpps",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_pmaFailedPorts, {
|
|
"pmaFailedPorts", "opa.pa.getvfinfo.pmafailedports",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_topoFailedPorts, {
|
|
"topoFailedPorts", "opa.pa.getvfinfo.topofailedports",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_integrityErrors, {
|
|
"integrityErrors", "opa.pa.getvfinfo.integrityerrors",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_congestionErrors, {
|
|
"congestionErrors", "opa.pa.getvfinfo.congestionerrors",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_smaCongestionErrors, {
|
|
"smaCongestionErrors", "opa.pa.getvfinfo.smacongestionerrors",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_bubbleErrors, {
|
|
"bubbleErrors", "opa.pa.getvfinfo.bubbleerrors",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_securityErrors, {
|
|
"securityErrors", "opa.pa.getvfinfo.securityerrors",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_routingErrors, {
|
|
"routingErrors", "opa.pa.getvfinfo.routingerrors",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_utlizationPct10, {
|
|
"utlizationPct10", "opa.pa.getvfinfo.utlizationpct10",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_computed_pct10), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_discardsPct10, {
|
|
"discardsPct10", "opa.pa.getvfinfo.discardspct10",
|
|
FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_computed_pct10), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_maxInternalRate, {
|
|
"maxInternalRate", "opa.pa.getvfinfo.maxinternalrate",
|
|
FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_minInternalRate, {
|
|
"minInternalRate", "opa.pa.getvfinfo.mininternalrate",
|
|
FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFInfo_maxInternalMBps, {
|
|
"maxInternalMBps", "opa.pa.getvfinfo.maxinternalmbps",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* GetVFConfig */
|
|
{ &hf_opa_GetVFConfig, {
|
|
"VF Config", "opa.pa.getvfconfig",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFConfig_vfName, {
|
|
"VF Name", "opa.pa.getvfconfig.vfname",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFConfig_Port_NodeGUID, {
|
|
"NodeGUID", "opa.pa.getvfconfig.port.nodeguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFConfig_Port_nodeDesc, {
|
|
"nodeDesc", "opa.pa.getvfconfig.port.nodedesc",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFConfig_Port_NodeLID, {
|
|
"NodeLID", "opa.pa.getvfconfig.port.nodelid",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFConfig_Port_PortNumber, {
|
|
"PortNumber", "opa.pa.getvfconfig.port.portnumber",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* GetVFPortCounters */
|
|
{ &hf_opa_GetVFPortCounters, {
|
|
"VF Port Counters", "opa.pa.getvfportcounters",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_vfName, {
|
|
"VF Name", "opa.pa.getvfportcounters.vfname",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_nodeLID, {
|
|
"nodeLID", "opa.pa.getvfportcounters.nodelid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortNumber, {
|
|
"PortNumber", "opa.pa.getvfportcounters.portnumber",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_flags, {
|
|
"flags", "opa.pa.getvfportcounters.flags",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortVFXmitData, {
|
|
"PortVFXmitData", "opa.pa.getvfportcounters.portvfxmitdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortVFRcvData, {
|
|
"PortVFRcvData", "opa.pa.getvfportcounters.portvfrcvdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortVFXmitPkts, {
|
|
"PortVFXmitPkts", "opa.pa.getvfportcounters.portvfxmitpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortVFRcvPkts, {
|
|
"PortVFRcvPkts", "opa.pa.getvfportcounters.portvfrcvpkts",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortVFXmitDiscards, {
|
|
"PortVFXmitDiscards", "opa.pa.getvfportcounters.portvfxmitdiscards",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_SwPortVFCongestion, {
|
|
"SwPortCongestion", "opa.pa.getvfportcounters.swportcongestion",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortVFXmitWait, {
|
|
"PortVFXmitWait", "opa.pa.getvfportcounters.portvfxmitwait",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortVFRcvFECN, {
|
|
"PortVFRcvFECN", "opa.pa.getvfportcounters.portvfrcvfecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortVFRcvBECN, {
|
|
"PortVFRcvBECN", "opa.pa.getvfportcounters.portvfrcvbecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortVFXmitTimeCong, {
|
|
"PortVFXmitTimeCong", "opa.pa.getvfportcounters.portvfxmittimecong",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortVFXmitWastedBW, {
|
|
"PortVFXmitWastedBW", "opa.pa.getvfportcounters.portvfxmitwastedbw",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortVFXmitWaitData, {
|
|
"PortVFXmitWaitData", "opa.pa.getvfportcounters.portvfxmitwaitdata",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortVFRcvBubble, {
|
|
"PortVFRcvBubble", "opa.pa.getvfportcounters.portvfrcvbubble",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFPortCounters_PortVFMarkFECN, {
|
|
"PortVFMarkFECN", "opa.pa.getvfportcounters.portvfmarkfecn",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* ClearVFPortCounters */
|
|
{ &hf_opa_ClearVFPortCounters, {
|
|
"Clear VF Port Counters", "opa.pa.clearvfportcounters",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_vfName, {
|
|
"VF Name", "opa.pa.clearvfportcounters.vfname",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_nodeLID, {
|
|
"nodeLID", "opa.pa.clearvfportcounters.nodelid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortNumber, {
|
|
"PortNumber", "opa.pa.clearvfportcounters.portnumber",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_CounterSelectMask, {
|
|
"CounterSelectMask", "opa.pa.clearvfportcounters.counterselectmask",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortVFXmitData, {
|
|
"PortVFXmitData", "opa.pa.clearvfportcounters.portvfxmitdata",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x80000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortVFRcvData, {
|
|
"PortVFRcvData", "opa.pa.clearvfportcounters.portvfrcvdata",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x40000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortVFXmitPkts, {
|
|
"PortVFXmitPkts", "opa.pa.clearvfportcounters.portvfxmitpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x20000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortVFRcvPkts, {
|
|
"PortVFRcvPkts", "opa.pa.clearvfportcounters.portvfrcvpkts",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x10000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortVFXmitDiscards, {
|
|
"PortVFXmitDiscards", "opa.pa.clearvfportcounters.portvfxmitdiscards",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x08000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_SwPortVFCongestion, {
|
|
"SwPortVFCongestion", "opa.pa.clearvfportcounters.swportvfcongestion",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x04000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortVFXmitWait, {
|
|
"PortVFXmitWait", "opa.pa.clearvfportcounters.portvfxmitwait",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x02000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortVFRcvFECN, {
|
|
"PortVFRcvFECN", "opa.pa.clearvfportcounters.portvfrcvfecn",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x01000000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortVFRcvBECN, {
|
|
"PortVFRcvBECN", "opa.pa.clearvfportcounters.portvfrcvbecn",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00800000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortVFXmitTimeCong, {
|
|
"PortVFXmitTimeCong", "opa.pa.clearvfportcounters.portvfxmittimecong",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00400000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortVFXmitWastedBW, {
|
|
"PortVFXmitWastedBW", "opa.pa.clearvfportcounters.portvfxmitwastedbw",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00200000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortVFXmitWaitData, {
|
|
"PortVFXmitWaitData", "opa.pa.clearvfportcounters.portvfxmitwaitdata",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00100000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortVFRcvBubble, {
|
|
"PortVFRcvBubble", "opa.pa.clearvfportcounters.portvfrcvbubble",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00080000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_PortVFMarkFECN, {
|
|
"PortVFMarkFECN", "opa.pa.clearvfportcounters.portvfmarkfecn",
|
|
FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00040000, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_ClearVFPortCounters_reserved, {
|
|
"Reserved", "opa.pa.clearvfportcounters.reserved",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0003FFFF, NULL, HFILL }
|
|
},
|
|
|
|
/* GetVFFocusPorts */
|
|
{ &hf_opa_GetVFFocusPorts, {
|
|
"VF Focus Ports", "opa.pa.getvffocusports",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_vfName, {
|
|
"VF Name", "opa.pa.getvffocusports.vfname",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_select, {
|
|
"select", "opa.pa.getvffocusports.select",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_start, {
|
|
"start", "opa.pa.getvffocusports.start",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_range, {
|
|
"range", "opa.pa.getvffocusports.range",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_nodeLID, {
|
|
"nodeLID", "opa.pa.getvffocusports.nodelid",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_portNumber, {
|
|
"portNumber", "opa.pa.getvffocusports.portnumber",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_rate, {
|
|
"rate", "opa.pa.getvffocusports.rate",
|
|
FT_UINT8, BASE_HEX, VALS(Rate), 0xF8, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_mtu, {
|
|
"mtu", "opa.pa.getvffocusports.mtu",
|
|
FT_UINT8, BASE_HEX, VALS(MTU), 0x07, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_localFlags, {
|
|
"localFlags", "opa.pa.getvffocusports.localflags",
|
|
FT_UINT8, BASE_DEC, VALS(FocusPortFlags), 0xF0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_neighborFlags, {
|
|
"neighborFlags", "opa.pa.getvffocusports.neighborflags",
|
|
FT_UINT8, BASE_DEC, VALS(FocusPortFlags), 0x0F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_value, {
|
|
"value", "opa.pa.getvffocusports.value",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_nodeGUID, {
|
|
"nodeGUID", "opa.pa.getvffocusports.nodeguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_nodeDesc, {
|
|
"nodeDesc", "opa.pa.getvffocusports.nodedesc",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_neighborLid, {
|
|
"neighborLid", "opa.pa.getvffocusports.neighborlid",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_neighborPortNumber, {
|
|
"neighborPortNumber", "opa.pa.getvffocusports.neighborportnumber",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_neighborValue, {
|
|
"neighborValue", "opa.pa.getvffocusports.neighborvalue",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_neighborGuid, {
|
|
"neighborGuid", "opa.pa.getvffocusports.neighborguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_GetVFFocusPorts_neighborNodeDesc, {
|
|
"neighborNodeDesc", "opa.pa.getvffocusports.neighbornodedesc",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
|
|
/* VFInfoRecord */
|
|
{ &hf_opa_VFInfoRecord, {
|
|
"VF Info Record", "opa.vfinforecorf",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_vfIndex, {
|
|
"VF Index", "opa.vfinforecorf.vfindex",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_pKey, {
|
|
"P Key", "opa.vfinforecord.pkey",
|
|
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_vfName, {
|
|
"VF Name", "opa.vfinforecord.vfname",
|
|
FT_STRING, STR_ASCII, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_MGID, {
|
|
"M GID", "opa.vfinforecord.mgid",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_SelectFlags, {
|
|
"Select Flags", "opa.vfinforecord.selectflags",
|
|
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_reserved, {
|
|
"Reserved (1 bit)", "opa.vfinforecord.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x20, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_SL, {
|
|
"SL", "opa.vfinforecord.sl",
|
|
FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_MTUSpecified, {
|
|
"MTU Specified", "opa.vfinforecord.mtuspecified",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_reserved2, {
|
|
"Reserved (1 bit)", "opa.vfinforecord.reserved2",
|
|
FT_UINT8, BASE_HEX, NULL, 0x40, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_MTU, {
|
|
"MTU", "opa.vfinforecord.mtu",
|
|
FT_UINT8, BASE_HEX, VALS(MTU), 0x3F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_RateSpecified, {
|
|
"Rate Specified", "opa.vfinforecord.ratespecified",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_reserved4, {
|
|
"Reserved (1 bit)", "opa.vfinforecord.reserved4",
|
|
FT_UINT8, BASE_HEX, NULL, 0x40, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_Rate, {
|
|
"Rate", "opa.vfinforecord.rate",
|
|
FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_PktLifeSpecified, {
|
|
"Packet Life Time Specified", "opa.vfinforecord.pktlifespecified",
|
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_reserved5, {
|
|
"Reserved (4 bits)", "opa.vfinforecord.reserved5",
|
|
FT_UINT8, BASE_HEX, NULL, 0x78, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_PktLifeTimeInc, {
|
|
"Packet Life Time", "opa.vfinforecord.pktlifetime",
|
|
FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_OptionFlags, {
|
|
"Option Flags", "opa.vfinforecord.optionflags",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_BandwidthPercent, {
|
|
"Bandwidth Percent", "opa.vfinforecord.bandwidthpercent",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_reserved6, {
|
|
"Reserved (7 bits)", "opa.vfinforecord.reserved6",
|
|
FT_UINT8, BASE_HEX, NULL, 0xFE, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_Priority, {
|
|
"Priority", "opa.vfinforecord.priority",
|
|
FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_RoutingSLs, {
|
|
"Routing SLs", "opa.vfinforecord.routingsls",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_VFInfoRecord_reserved7, {
|
|
"Rezerved (24 Bytes)", "opa.vfinforecord.reserved7",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
/* QuarantinedNodeRecord */
|
|
{ &hf_opa_QuarantinedNodeRecord, {
|
|
"Quarantined Node Record", "opa.quarantinednoderecord",
|
|
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_QuarantinedNodeRecord_TrustedLid, {
|
|
"Trusted LID", "opa.quarantinednoderecord.trustedlid",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_QuarantinedNodeRecord_TrustedNodeGUID, {
|
|
"Trusted Node GUID", "opa.quarantinednoderecord.trustednodeguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_QuarantinedNodeRecord_TrustedPortNum, {
|
|
"Trusted Port Num", "opa.quarantinednoderecord.trustedportnum",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_QuarantinedNodeRecord_TrustedNeighborNodeGUID, {
|
|
"Trusted Neighbor Node GUID", "opa.quarantinednoderecord.trustedneighbornodeguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_QuarantinedNodeRecord_QuarantineReasons, {
|
|
"Quarantine Reasons", "opa.quarantinednoderecord.quarantinereasons",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_QuarantinedNodeRecord_ExpectedNodeDesc, {
|
|
"Expected Node Desc", "opa.quarantinednoderecord.expectednodedesc",
|
|
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_QuarantinedNodeRecord_ExpectedNodeGUID, {
|
|
"Expected Node GUID", "opa.quarantinednoderecord.expectednodeguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
},
|
|
{ &hf_opa_QuarantinedNodeRecord_ExpectedPortGUID, {
|
|
"Expected Port GUID", "opa.quarantinednoderecord.expectedportguid",
|
|
FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
|
|
}
|
|
};
|
|
|
|
static gint *ett[] = {
|
|
&ett_payload,
|
|
&ett_sm_lid,
|
|
&ett_sm_dr,
|
|
&ett_sa,
|
|
&ett_pm,
|
|
&ett_pa,
|
|
&ett_mad,
|
|
&ett_mad_status,
|
|
&ett_mad_attributemod,
|
|
&ett_rmpp,
|
|
&ett_rmpp_fragment,
|
|
&ett_rmpp_fragments,
|
|
&ett_rmpp_sa_record,
|
|
/* Common */
|
|
&ett_noticestraps,
|
|
&ett_datadetails,
|
|
&ett_datadetails_trap259datavalid,
|
|
&ett_informinfo,
|
|
&ett_classportinfo,
|
|
&ett_classportinfo_redirect,
|
|
&ett_classportinfo_trap,
|
|
/* SM */
|
|
&ett_nodedescription,
|
|
&ett_nodeinfo,
|
|
&ett_switchinfo,
|
|
&ett_switchinfo_switchcapabilitymask,
|
|
&ett_portinfo,
|
|
&ett_portinfo_vl,
|
|
&ett_portinfo_link,
|
|
&ett_portinfo_portmode,
|
|
&ett_portinfo_flitcontrol,
|
|
&ett_portinfo_porterroraction,
|
|
&ett_portinfo_neighbormtu,
|
|
&ett_portinfo_xmitq,
|
|
&ett_portinfo_capmask,
|
|
&ett_portinfo_capmask3,
|
|
&ett_portstates,
|
|
&ett_pkeytable,
|
|
&ett_pkeytable_block,
|
|
&ett_sltoscmapping,
|
|
&ett_sltoscmapping_block,
|
|
&ett_sctoscmapping,
|
|
&ett_sctoscmapping_block,
|
|
&ett_sctoslmapping,
|
|
&ett_sctoslmapping_block,
|
|
&ett_sctovlxmappingtable,
|
|
&ett_sctovlxmappingtable_block,
|
|
&ett_vlarbitrationtable,
|
|
&ett_vlarbitrationtable_port,
|
|
&ett_linearforwardingtable,
|
|
&ett_linearforwardingtable_block,
|
|
&ett_multicastforwardingtable,
|
|
&ett_multicastforwardingtable_block,
|
|
&ett_portgroupforwardingtable,
|
|
&ett_portgroupforwardingtable_block,
|
|
&ett_portgrouptable,
|
|
&ett_portgrouptable_block,
|
|
&ett_sminfo,
|
|
&ett_ledinfo,
|
|
&ett_cableinfo,
|
|
&ett_aggregate,
|
|
&ett_buffercontroltable,
|
|
&ett_buffercontroltable_port,
|
|
&ett_fabricinforecord,
|
|
&ett_congestioninfo,
|
|
&ett_switchcongestionlog,
|
|
&ett_switchcongestionlog_entry,
|
|
&ett_switchcongestionsetting,
|
|
&ett_switchportcongestionsetting,
|
|
&ett_switchportcongestionsetting_port,
|
|
&ett_hficongestionlog,
|
|
&ett_hficongestionlog_entry,
|
|
&ett_hficongestionsetting,
|
|
&ett_hficongestioncontroltable,
|
|
&ett_hficongestioncontroltable_block,
|
|
/* SA */
|
|
&ett_portinforecord_linkdownreason,
|
|
&ett_portinforecord_linkdownreason_entry,
|
|
&ett_scmappingrecord,
|
|
&ett_lftrecord,
|
|
&ett_linkrecord,
|
|
&ett_servicerecord,
|
|
&ett_pathrecord,
|
|
&ett_pathrecord_dgid,
|
|
&ett_pathrecord_sgid,
|
|
&ett_mcmemberrecord,
|
|
&ett_tracerecord,
|
|
&ett_multipathrecord_gid,
|
|
&ett_multipathrecord_guid,
|
|
&ett_multipathrecord_lid,
|
|
&ett_cableinforecord,
|
|
&ett_serviceassocrecord,
|
|
&ett_sctoslmappingtablerecord,
|
|
&ett_portgroupforwardingtablerecord,
|
|
&ett_vfinforecord,
|
|
&ett_quarantinednoderecord,
|
|
/* PM */
|
|
&ett_portstatus,
|
|
&ett_portstatus_vl,
|
|
&ett_clearportstatus,
|
|
&ett_clearportstatus_counterselectmask,
|
|
&ett_dataportcounters,
|
|
&ett_dataportcounters_port,
|
|
&ett_dataportcounters_vl,
|
|
&ett_errorportcounters,
|
|
&ett_errorportcounters_port,
|
|
&ett_errorportinfo,
|
|
&ett_errorportinfoport,
|
|
&ett_errorportinfo_portrcverrorinfo,
|
|
&ett_errorportinfo_excessivebufferoverruninfo,
|
|
&ett_errorportinfo_portxmitconstrainterrorinfo,
|
|
&ett_errorportinfo_portrcvconstrainterrorinfo,
|
|
&ett_errorportinfo_portrcvswitchrelayerrorinfo,
|
|
&ett_errorportinfo_uncorrectableerrorinfo,
|
|
&ett_errorportinfo_fmconfigerrorinfo,
|
|
/* PA */
|
|
&ett_getgrouplist,
|
|
&ett_getgroupinfo,
|
|
&ett_getgroupinfoutilstats,
|
|
&ett_getgroupinfoutilbuckets,
|
|
&ett_getgroupinfoerrorsummary,
|
|
&ett_getgroupinfoerrintegritybucket,
|
|
&ett_getgroupinfoerrcongestionbucket,
|
|
&ett_getgroupinfoerrsmacongestionbucket,
|
|
&ett_getgroupinfoerrbubblebucket,
|
|
&ett_getgroupinfoerrsecuritybucket,
|
|
&ett_getgroupinfoerrroutingbucket,
|
|
&ett_getportcounters,
|
|
&ett_clearportcounters,
|
|
&ett_clearportcounters_counterselectmask,
|
|
&ett_clearallportcounters,
|
|
&ett_clearallportcounters_counterselectmask,
|
|
&ett_pmconfig,
|
|
&ett_getgroupconfig,
|
|
&ett_getgroupconfigport,
|
|
&ett_movefreezeframeold,
|
|
&ett_movefreezeframenew,
|
|
&ett_getfocusports,
|
|
&ett_getfocusportsport,
|
|
&ett_getimageinfo,
|
|
&ett_getimageinfosm,
|
|
&ett_getvflist,
|
|
&ett_getvfinfo,
|
|
&ett_getvfinfoutilstats,
|
|
&ett_getvfinfoutilbuckets,
|
|
&ett_getvfinfoerrorsummary,
|
|
&ett_getvfinfoerrintegritybucket,
|
|
&ett_getvfinfoerrcongestionbucket,
|
|
&ett_getvfinfoerrsmacongestionbucket,
|
|
&ett_getvfinfoerrbubblebucket,
|
|
&ett_getvfinfoerrsecuritybucket,
|
|
&ett_getvfinfoerrroutingbucket,
|
|
&ett_getvfconfig,
|
|
&ett_getvfconfigport,
|
|
&ett_getvffocusports,
|
|
&ett_getvffocusportsport,
|
|
&ett_getvfportcounters,
|
|
&ett_clearvfportcounters,
|
|
&ett_clearvfportcounters_counterselectmask
|
|
};
|
|
|
|
static ei_register_info ei[] = {
|
|
{ &ei_opa_mad_error, {
|
|
"opa.mad.error", PI_RESPONSE_CODE, PI_WARN,
|
|
"MAD Status Error", EXPFILL }
|
|
},
|
|
{ &ei_opa_mad_no_attribute_dissector, {
|
|
"opa.mad.noattributedissector", PI_UNDECODED, PI_NOTE,
|
|
"Attribute Dissector Not Implemented", EXPFILL }
|
|
},
|
|
{ &ei_opa_mad_attribute_modifier_error_nonzero, {
|
|
"opa.mad.attributemodifiererrornonzero", PI_PROTOCOL, PI_WARN,
|
|
"Attribute Modifier is unexpectedly Non-zero", EXPFILL }
|
|
},
|
|
{ &ei_opa_rmpp_undecoded, {
|
|
"opa.rmpp.undecoded", PI_UNDECODED, PI_NOTE,
|
|
"RMPP Records Undecoded", EXPFILL }
|
|
},
|
|
{ &ei_opa_aggregate_error, {
|
|
"opa.aggregate.error.exp", PI_RESPONSE_CODE, PI_WARN,
|
|
"Aggregate Error", EXPFILL }
|
|
}
|
|
};
|
|
|
|
proto_opa_mad = proto_register_protocol("Intel Omni-Path MAD", "OPA MAD", "opa.mad");
|
|
opa_mad_handle = register_dissector("opa.mad", dissect_opa_mad, proto_opa_mad);
|
|
|
|
proto_register_field_array(proto_opa_mad, hf, array_length(hf));
|
|
proto_register_subtree_array(ett, array_length(ett));
|
|
|
|
expert_opa_mad = expert_register_protocol(proto_opa_mad);
|
|
expert_register_field_array(expert_opa_mad, ei, array_length(ei));
|
|
|
|
range_convert_str(wmem_epan_scope(), &global_mad_vendor_class, OPA_VENDOR_RANGE_STR, 0xFF);
|
|
range_convert_str(wmem_epan_scope(), &global_mad_vendor_rmpp_class, OPA_VENDOR_RMPP_RANGE_STR, 0xFF);
|
|
range_convert_str(wmem_epan_scope(), &global_mad_application_class, OPA_APPLICATION_RANGE_STR, 0xFF);
|
|
range_convert_str(wmem_epan_scope(), &global_mad_reserved_class, OPA_RESERVED_RANGE_STR, 0xFF);
|
|
range_convert_str(wmem_epan_scope(), &global_mad_opa_class, OPA_MGMTCLASS_RANGE_STR, 0xFF);
|
|
|
|
opa_mad_module = prefs_register_protocol(proto_opa_mad, proto_reg_handoff_opa_mad);
|
|
prefs_register_bool_preference(opa_mad_module, "parse_mad_error",
|
|
"Enable Parsing of Mad Payload on Mad Status Error",
|
|
"Attempt to parse mad payload even when MAD.Status is non-zero",
|
|
&pref_parse_on_mad_status_error);
|
|
prefs_register_bool_preference(opa_mad_module, "reassemble_rmpp",
|
|
"Enable Reassembly of RMPP packets",
|
|
"Attempt to reassemble the mad payload of RMPP segments",
|
|
&pref_attempt_rmpp_defragment);
|
|
|
|
register_init_routine(opa_mad_init);
|
|
register_cleanup_routine(opa_mad_cleanup);
|
|
}
|
|
|
|
void proto_reg_handoff_opa_mad(void)
|
|
{
|
|
eth_handle = find_dissector("eth");
|
|
ethertype_dissector_table = find_dissector_table("ethertype");
|
|
}
|
|
|
|
/*
|
|
* Editor modelines - https://www.wireshark.org/tools/modelines.html
|
|
*
|
|
* Local variables:
|
|
* c-basic-offset: 4
|
|
* tab-width: 8
|
|
* indent-tabs-mode: nil
|
|
* End:
|
|
*
|
|
* vi: set shiftwidth=4 tabstop=8 expandtab:
|
|
* :indentSize=4:tabSize=8:noTabs=true:
|
|
*/
|