aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2012-09-22 17:41:07 +0000
committerMichael Mann <mmann78@netscape.net>2012-09-22 17:41:07 +0000
commit6516edc022d987907561bf25b5bce65c3a82e041 (patch)
treee896f784d0a08eaaf25938176c0f1ca7509428ae
parent29ba21d1e70cf2cc71f9f9cc906f929c92a81712 (diff)
replaced decode_boolean_bitfield calls with itemized filters
svn path=/trunk/; revision=45054
-rw-r--r--epan/dissectors/packet-lldp.c1065
1 files changed, 602 insertions, 463 deletions
diff --git a/epan/dissectors/packet-lldp.c b/epan/dissectors/packet-lldp.c
index 68600cc137..f12baaa210 100644
--- a/epan/dissectors/packet-lldp.c
+++ b/epan/dissectors/packet-lldp.c
@@ -45,6 +45,24 @@ static dissector_table_t oui_unique_code_table;
static int proto_lldp = -1;
static int hf_lldp_tlv_type = -1;
static int hf_lldp_tlv_len = -1;
+static int hf_lldp_tlv_system_cap = -1;
+static int hf_lldp_tlv_system_cap_other = -1;
+static int hf_lldp_tlv_system_cap_repeater = -1;
+static int hf_lldp_tlv_system_cap_bridge = -1;
+static int hf_lldp_tlv_system_cap_wlan_access_pt = -1;
+static int hf_lldp_tlv_system_cap_router = -1;
+static int hf_lldp_tlv_system_cap_telephone = -1;
+static int hf_lldp_tlv_system_cap_docsis_cable_device = -1;
+static int hf_lldp_tlv_system_cap_station_only = -1;
+static int hf_lldp_tlv_enable_system_cap = -1;
+static int hf_lldp_tlv_enable_system_cap_other = -1;
+static int hf_lldp_tlv_enable_system_cap_repeater = -1;
+static int hf_lldp_tlv_enable_system_cap_bridge = -1;
+static int hf_lldp_tlv_enable_system_cap_wlan_access_pt = -1;
+static int hf_lldp_tlv_enable_system_cap_router = -1;
+static int hf_lldp_tlv_enable_system_cap_telephone = -1;
+static int hf_lldp_tlv_enable_system_cap_docsis_cable_device = -1;
+static int hf_lldp_tlv_enable_system_cap_station_only = -1;
static int hf_chassis_id_subtype = -1;
static int hf_chassis_id = -1;
static int hf_chassis_id_mac = -1;
@@ -62,9 +80,77 @@ static int hf_mgn_addr_hex = -1;
static int hf_mgn_obj_id = -1;
static int hf_org_spc_oui = -1;
static int hf_ieee_802_1_subtype = -1;
+static int hf_ieee_802_1_port_and_vlan_id_flag = -1;
+static int hf_ieee_802_1_port_and_vlan_id_flag_supported = -1;
+static int hf_ieee_802_1_port_and_vlan_id_flag_enabled = -1;
static int hf_ieee_802_3_subtype = -1;
+static int hf_ieee_802_3_mac_phy_auto_neg_status = -1;
+static int hf_ieee_802_3_mac_phy_auto_neg_status_supported = -1;
+static int hf_ieee_802_3_mac_phy_auto_neg_status_enabled = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_1000base_tfd = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_1000base_t = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_1000base_xfd = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_1000base_x = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_fdx_bpause = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_fdx_spause = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_fdx_apause = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_fdx_pause = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_t2fd = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_t2 = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_txfd = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_tx = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_t4 = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_10base_tfd = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_10base_t = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_other = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_1000base_tfd = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_1000base_t = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_1000base_xfd = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_1000base_x = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_fdx_bpause = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_fdx_spause = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_fdx_apause = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_fdx_pause = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_t2fd = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_t2 = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_txfd = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_tx = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_t4 = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_10base_tfd = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_10base_t = -1;
+static int hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_other = -1;
+static int hf_ieee_802_3_mdi_power_support = -1;
+static int hf_ieee_802_3_mdi_power_support_port_class = -1;
+static int hf_ieee_802_3_mdi_power_support_pse_power_support = -1;
+static int hf_ieee_802_3_mdi_power_support_pse_power_enabled = -1;
+static int hf_ieee_802_3_mdi_power_support_pse_pairs = -1;
+static int hf_ieee_802_3_aggregation_status = -1;
+static int hf_ieee_802_3_aggregation_status_cap = -1;
+static int hf_ieee_802_3_aggregation_status_enabled = -1;
static int hf_ieee_802_1qbg_subtype = -1;
+static int hf_ieee_802_1qbg_evb_support_caps = -1;
+static int hf_ieee_802_1qbg_evb_support_caps_std = -1;
+static int hf_ieee_802_1qbg_evb_support_caps_rr = -1;
+static int hf_ieee_802_1qbg_evb_support_caps_rte = -1;
+static int hf_ieee_802_1qbg_evb_support_caps_ecp = -1;
+static int hf_ieee_802_1qbg_evb_support_caps_vdp = -1;
+static int hf_ieee_802_1qbg_evb_configure_caps = -1;
+static int hf_ieee_802_1qbg_evb_configure_caps_std = -1;
+static int hf_ieee_802_1qbg_evb_configure_caps_rr = -1;
+static int hf_ieee_802_1qbg_evb_configure_caps_rte = -1;
+static int hf_ieee_802_1qbg_evb_configure_caps_ecp = -1;
+static int hf_ieee_802_1qbg_evb_configure_caps_vdp = -1;
static int hf_media_tlv_subtype = -1;
+static int hf_media_tlv_subtype_caps = -1;
+static int hf_media_tlv_subtype_caps_llpd = -1;
+static int hf_media_tlv_subtype_caps_network_policy = -1;
+static int hf_media_tlv_subtype_caps_location_id = -1;
+static int hf_media_tlv_subtype_caps_mdi_pse = -1;
+static int hf_media_tlv_subtype_caps_mid_pd = -1;
+static int hf_media_tlv_subtype_caps_inventory = -1;
+static int hf_media_policy_flag = -1;
+static int hf_media_tag_flag = -1;
static int hf_profinet_tlv_subtype = -1;
static int hf_profinet_class2_port_status = -1;
static int hf_profinet_class3_port_status = -1;
@@ -88,6 +174,11 @@ static int hf_profinet_orange_period_begin_offset = -1;
static int hf_profinet_green_period_begin_valid = -1;
static int hf_profinet_green_period_begin_offset = -1;
static int hf_cisco_subtype = -1;
+static int hf_cisco_four_wire_power = -1;
+static int hf_cisco_four_wire_power_poe = -1;
+static int hf_cisco_four_wire_power_spare_pair_arch = -1;
+static int hf_cisco_four_wire_power_req_spare_pair_poe = -1;
+static int hf_cisco_four_wire_power_pse_spare_pair_poe = -1;
static int hf_unknown_subtype = -1;
static int hf_unknown_subtype_content = -1;
@@ -244,6 +335,10 @@ static const value_string power_type_802_3[] = {
{ 0, NULL }
};
+static const true_false_string tfs_ieee_802_3_pse_pd = { "PSE", "PD" };
+static const true_false_string tfs_unknown_defined = { "Unknown", "Defined" };
+static const true_false_string tfs_shared_independent = { "Shared", "Independent" };
+
/* Power Type */
static const value_string media_power_type[] = {
{ 0, "PSE Device" },
@@ -558,8 +653,7 @@ dissect_lldp_chassis_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gui
{
tf = proto_tree_add_text(tree, tvb, offset, 2, "Invalid Chassis ID (0x%02X)", tempType);
chassis_tree = proto_item_add_subtree(tf, ett_chassis_id);
- proto_tree_add_text(chassis_tree, tvb, offset, 2, "%s Invalid Chassis ID (%u)",
- decode_boolean_bitfield(tempType, TLV_TYPE_MASK, 16, "", ""), tempType);
+ proto_tree_add_text(chassis_tree, tvb, offset, 2, " Invalid Chassis ID (%u)", tempType);
}
return -1;
@@ -574,8 +668,7 @@ dissect_lldp_chassis_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gui
tf = proto_tree_add_text(tree, tvb, offset, 2, "Invalid Chassis ID Length (%u)", tempLen);
chassis_tree = proto_item_add_subtree(tf, ett_chassis_id);
proto_tree_add_item(chassis_tree, hf_lldp_tlv_type, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(chassis_tree, tvb, offset, 2, "%s Invalid Length: %u",
- decode_boolean_bitfield(tempLen, TLV_INFO_LEN_MASK, 16, "", ""), tempLen);
+ proto_tree_add_text(chassis_tree, tvb, offset, 2, " Invalid Length: %u", tempLen);
}
return -1;
@@ -673,8 +766,7 @@ dissect_lldp_chassis_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gui
tf = proto_tree_add_text(tree, tvb, offset, 2, "Invalid Chassis ID Length (%u)", tempLen);
chassis_tree = proto_item_add_subtree(tf, ett_chassis_id);
proto_tree_add_item(chassis_tree, hf_lldp_tlv_type, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(chassis_tree, tvb, offset, 2, "%s Invalid Length: %u",
- decode_boolean_bitfield(tempLen, TLV_INFO_LEN_MASK, 16, "", ""), tempLen);
+ proto_tree_add_text(chassis_tree, tvb, offset, 2, " Invalid Length: %u", tempLen);
/* Get chassis id subtype */
proto_tree_add_item(chassis_tree, hf_chassis_id_subtype, tvb, (offset+2), 1, ENC_BIG_ENDIAN);
@@ -1017,7 +1109,6 @@ dissect_lldp_system_capabilities(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
{
guint16 tempShort;
guint32 tempLen = 0;
- guint16 tempCapability;
proto_tree *system_capabilities_tree = NULL;
proto_tree *capabilities_summary_tree = NULL;
@@ -1030,9 +1121,6 @@ dissect_lldp_system_capabilities(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
/* Get tlv length */
tempLen = TLV_INFO_LEN(tempShort);
- /* Get system capabilities */
- tempCapability = tvb_get_ntohs(tvb, (offset+2));
-
if (tree)
{
/* Set system capabilities tree */
@@ -1043,81 +1131,32 @@ dissect_lldp_system_capabilities(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
proto_tree_add_item(system_capabilities_tree, hf_lldp_tlv_len, tvb, offset, 2, ENC_BIG_ENDIAN);
/* Display system capability information */
- tf = proto_tree_add_text(system_capabilities_tree, tvb, (offset+2), 2, "Capabilities: 0x%04x", tempCapability);
+ tf = proto_tree_add_item(system_capabilities_tree, hf_lldp_tlv_system_cap, tvb, offset+2, 2, ENC_BIG_ENDIAN);
capabilities_summary_tree = proto_item_add_subtree(tf, ett_system_cap_summary);
+
/* Add capabilities to summary tree */
- if (tempCapability & SYSTEM_CAPABILITY_OTHER)
- proto_tree_add_text(capabilities_summary_tree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempCapability, SYSTEM_CAPABILITY_OTHER,
- 16, "Other", ""));
- if (tempCapability & SYSTEM_CAPABILITY_REPEATER)
- proto_tree_add_text(capabilities_summary_tree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempCapability, SYSTEM_CAPABILITY_REPEATER,
- 16, "Repeater", ""));
- if (tempCapability & SYSTEM_CAPABILITY_BRIDGE)
- proto_tree_add_text(capabilities_summary_tree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempCapability, SYSTEM_CAPABILITY_BRIDGE,
- 16, "Bridge", ""));
- if (tempCapability & SYSTEM_CAPABILITY_WLAN)
- proto_tree_add_text(capabilities_summary_tree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempCapability, SYSTEM_CAPABILITY_WLAN,
- 16, "WLAN access point", ""));
- if (tempCapability & SYSTEM_CAPABILITY_ROUTER)
- proto_tree_add_text(capabilities_summary_tree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempCapability, SYSTEM_CAPABILITY_ROUTER,
- 16, "Router", ""));
- if (tempCapability & SYSTEM_CAPABILITY_TELEPHONE)
- proto_tree_add_text(capabilities_summary_tree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempCapability, SYSTEM_CAPABILITY_TELEPHONE,
- 16, "Telephone", ""));
- if (tempCapability & SYSTEM_CAPABILITY_DOCSIS)
- proto_tree_add_text(capabilities_summary_tree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempCapability, SYSTEM_CAPABILITY_DOCSIS,
- 16, "DOCSIS cable device", ""));
- if (tempCapability & SYSTEM_CAPABILITY_STATION)
- proto_tree_add_text(capabilities_summary_tree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempCapability, SYSTEM_CAPABILITY_STATION,
- 16, "Station only", ""));
+ proto_tree_add_item(capabilities_summary_tree, hf_lldp_tlv_system_cap_other, tvb, offset+2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_summary_tree, hf_lldp_tlv_system_cap_repeater, tvb, offset+2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_summary_tree, hf_lldp_tlv_system_cap_bridge, tvb, offset+2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_summary_tree, hf_lldp_tlv_system_cap_wlan_access_pt, tvb, offset+2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_summary_tree, hf_lldp_tlv_system_cap_router, tvb, offset+2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_summary_tree, hf_lldp_tlv_system_cap_telephone, tvb, offset+2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_summary_tree, hf_lldp_tlv_system_cap_docsis_cable_device, tvb, offset+2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_summary_tree, hf_lldp_tlv_system_cap_station_only, tvb, offset+2, 2, ENC_BIG_ENDIAN);
/* Get enabled summary */
- tempShort = tvb_get_ntohs(tvb, (offset+4));
/* Display system capability information */
- tf = proto_tree_add_text(system_capabilities_tree, tvb, (offset+4), 2, "Enabled Capabilities: 0x%04x", tempShort);
+ tf = proto_tree_add_item(system_capabilities_tree, hf_lldp_tlv_enable_system_cap, tvb, offset+4, 2, ENC_BIG_ENDIAN);
capabilities_enabled_tree = proto_item_add_subtree(tf, ett_system_cap_enabled);
- /* Add capabilities to summary tree */
- if (tempShort & SYSTEM_CAPABILITY_OTHER)
- proto_tree_add_text(capabilities_enabled_tree, tvb, (offset+4), 2, "%s",
- decode_boolean_bitfield(tempShort, SYSTEM_CAPABILITY_OTHER,
- 16, "Other", ""));
- if (tempShort & SYSTEM_CAPABILITY_REPEATER)
- proto_tree_add_text(capabilities_enabled_tree, tvb, (offset+4), 2, "%s",
- decode_boolean_bitfield(tempShort, SYSTEM_CAPABILITY_REPEATER,
- 16, "Repeater", ""));
- if (tempShort & SYSTEM_CAPABILITY_BRIDGE)
- proto_tree_add_text(capabilities_enabled_tree, tvb, (offset+4), 2, "%s",
- decode_boolean_bitfield(tempShort, SYSTEM_CAPABILITY_BRIDGE,
- 16, "Bridge", ""));
- if (tempShort & SYSTEM_CAPABILITY_WLAN)
- proto_tree_add_text(capabilities_enabled_tree, tvb, (offset+4), 2, "%s",
- decode_boolean_bitfield(tempShort, SYSTEM_CAPABILITY_WLAN,
- 16, "WLAN access point", ""));
- if (tempShort & SYSTEM_CAPABILITY_ROUTER)
- proto_tree_add_text(capabilities_enabled_tree, tvb, (offset+4), 2, "%s",
- decode_boolean_bitfield(tempShort, SYSTEM_CAPABILITY_ROUTER,
- 16, "Router", ""));
- if (tempShort & SYSTEM_CAPABILITY_TELEPHONE)
- proto_tree_add_text(capabilities_enabled_tree, tvb, (offset+4), 2, "%s",
- decode_boolean_bitfield(tempShort, SYSTEM_CAPABILITY_TELEPHONE,
- 16, "Telephone", ""));
- if (tempShort & SYSTEM_CAPABILITY_DOCSIS)
- proto_tree_add_text(capabilities_enabled_tree, tvb, (offset+4), 2, "%s",
- decode_boolean_bitfield(tempShort, SYSTEM_CAPABILITY_DOCSIS,
- 16, "DOCSIS cable device", ""));
- if (tempShort & SYSTEM_CAPABILITY_STATION)
- proto_tree_add_text(capabilities_enabled_tree, tvb, (offset+4), 2, "%s",
- decode_boolean_bitfield(tempShort, SYSTEM_CAPABILITY_STATION,
- 16, "Station only", ""));
+ proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_other, tvb, offset+4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_repeater, tvb, offset+4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_bridge, tvb, offset+4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_wlan_access_pt, tvb, offset+4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_router, tvb, offset+4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_telephone, tvb, offset+4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_docsis_cable_device, tvb, offset+4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_station_only, tvb, offset+4, 2, ENC_BIG_ENDIAN);
}
return (tempLen + 2);
@@ -1249,21 +1288,13 @@ dissect_ieee_802_1_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
case 0x02: /* Port and Protocol VLAN ID */
{
/* Get flags */
- tempByte = tvb_get_guint8(tvb, tempOffset);
if (tree)
{
- tf = proto_tree_add_text(tree, tvb, tempOffset, 1, "Flags: 0x%02x", tempByte);
+ tf = proto_tree_add_item(tree, hf_ieee_802_1_port_and_vlan_id_flag, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
vlan_flags = proto_item_add_subtree(tf, ett_port_vlan_flags);
- /* Get supported flag */
- proto_tree_add_text(vlan_flags, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 1 << 1, 8, "Port and Protocol VLAN: Supported",
- "Port and Protocol VLAN: Not Supported"));
-
- /* Get enabled flag */
- proto_tree_add_text(vlan_flags, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 1 << 2, 8, "Port and Protocol VLAN: Enabled",
- "Port and Protocol VLAN: Not Enabled"));
+ proto_tree_add_item(tree, hf_ieee_802_1_port_and_vlan_id_flag_supported, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_ieee_802_1_port_and_vlan_id_flag_enabled, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
}
tempOffset++;
@@ -1354,68 +1385,28 @@ dissect_ieee_802_1qbg_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
switch (subType) {
case 0x00:
/* Get EVB capabilities */
- tempShort = tvb_get_ntohs(tvb, tempOffset);
if (tree) {
- tf = proto_tree_add_text(tree, tvb, tempOffset, 2, "supported capabilities: 0x%04X", tempShort);
+ tf = proto_tree_add_item(tree, hf_ieee_802_1qbg_evb_support_caps, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
evb_capabilities_subtree = proto_item_add_subtree(tf, ett_802_1qbg_capabilities_flags);
- if (tempShort & EVB_CAPA_STD)
- proto_tree_add_text(evb_capabilities_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, EVB_CAPA_STD,
- 16, "standard bridging (STD)", ""));
-
- if (tempShort & EVB_CAPA_RR)
- proto_tree_add_text(evb_capabilities_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, EVB_CAPA_RR,
- 16, "reflective relay (RR)", ""));
-
- if (tempShort & EVB_CAPA_RTE)
- proto_tree_add_text(evb_capabilities_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, EVB_CAPA_RTE,
- 16, "retransmission timer exponent (RTE)", ""));
-
- if (tempShort & EVB_CAPA_ECP)
- proto_tree_add_text(evb_capabilities_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, EVB_CAPA_ECP,
- 16, "edge control protocol (ECP)", ""));
-
- if (tempShort & EVB_CAPA_VDP)
- proto_tree_add_text(evb_capabilities_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, EVB_CAPA_VDP,
- 16, "VSI discovery protocol (VDP)", ""));
+ proto_tree_add_item(evb_capabilities_subtree, hf_ieee_802_1qbg_evb_support_caps_std, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(evb_capabilities_subtree, hf_ieee_802_1qbg_evb_support_caps_rr, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(evb_capabilities_subtree, hf_ieee_802_1qbg_evb_support_caps_rte, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(evb_capabilities_subtree, hf_ieee_802_1qbg_evb_support_caps_ecp, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(evb_capabilities_subtree, hf_ieee_802_1qbg_evb_support_caps_vdp, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
}
tempOffset += 2;
- tempShort = tvb_get_ntohs(tvb, tempOffset);
if (tree) {
- tf = proto_tree_add_text(tree, tvb, tempOffset, 2, "configured capabilities: 0x%04X", tempShort);
+ tf = proto_tree_add_item(tree, hf_ieee_802_1qbg_evb_configure_caps, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
evb_capabilities_subtree = proto_item_add_subtree(tf, ett_802_1qbg_capabilities_flags);
- if (tempShort & EVB_CAPA_STD)
- proto_tree_add_text(evb_capabilities_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, EVB_CAPA_STD,
- 16, "standard bridging (STD)", ""));
-
- if (tempShort & EVB_CAPA_RR)
- proto_tree_add_text(evb_capabilities_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, EVB_CAPA_RR,
- 16, "reflective relay (RR)", ""));
-
- if (tempShort & EVB_CAPA_RTE)
- proto_tree_add_text(evb_capabilities_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, EVB_CAPA_RTE,
- 16, "retransmission timer exponent (RTE)", ""));
-
- if (tempShort & EVB_CAPA_ECP)
- proto_tree_add_text(evb_capabilities_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, EVB_CAPA_ECP,
- 16, "edge control protocol (ECP)", ""));
-
- if (tempShort & EVB_CAPA_VDP)
- proto_tree_add_text(evb_capabilities_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, EVB_CAPA_VDP,
- 16, "VSI discovery protocol (VDP)", ""));
+ proto_tree_add_item(evb_capabilities_subtree, hf_ieee_802_1qbg_evb_configure_caps_std, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(evb_capabilities_subtree, hf_ieee_802_1qbg_evb_configure_caps_rr, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(evb_capabilities_subtree, hf_ieee_802_1qbg_evb_configure_caps_rte, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(evb_capabilities_subtree, hf_ieee_802_1qbg_evb_configure_caps_ecp, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(evb_capabilities_subtree, hf_ieee_802_1qbg_evb_configure_caps_vdp, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
}
tempOffset += 2;
@@ -1478,192 +1469,57 @@ dissect_ieee_802_3_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
tempByte = tvb_get_guint8(tvb, tempOffset);
if (tree)
{
- tf = proto_tree_add_text(tree, tvb, tempOffset, 1, "Auto-Negotiation Support/Status: 0x%02x", tempByte);
+ tf = proto_tree_add_item(tree, hf_ieee_802_3_mac_phy_auto_neg_status, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
mac_phy_flags = proto_item_add_subtree(tf, ett_802_3_flags);
- /* Get supported flag */
- proto_tree_add_text(mac_phy_flags, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 0x01, 8, "Auto-Negotiation: Supported",
- "Auto-Negotiation: Not Supported"));
-
- /* Get enabled flag */
- proto_tree_add_text(mac_phy_flags, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 0x02, 8, "Auto-Negotiation: Enabled",
- "Auto-Negotiation: Not Enabled"));
+ proto_tree_add_item(mac_phy_flags, hf_ieee_802_3_mac_phy_auto_neg_status_supported, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mac_phy_flags, hf_ieee_802_3_mac_phy_auto_neg_status_enabled, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
}
tempOffset++;
/* Get pmd auto-negotiation advertised capability */
- tempShort = tvb_get_ntohs(tvb, tempOffset);
if (tree)
{
- tf = proto_tree_add_text(tree, tvb, tempOffset, 2, "PMD Auto-Negotiation Advertised Capability: 0x%04X", tempShort);
+ tf = proto_tree_add_item(tree, hf_ieee_802_3_pmd_auto_neg_advertised_caps, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
autoneg_advertised_subtree = proto_item_add_subtree(tf, ett_802_3_autoneg_advertised);
- if (tempShort & AUTONEG_1000BASE_TFD)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_1000BASE_TFD,
- 16, "1000BASE-T (full duplex mode)", ""));
-
- if (tempShort & AUTONEG_1000BASE_T)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_1000BASE_T,
- 16, "1000BASE-T (half duplex mode)", ""));
-
- if (tempShort & AUTONEG_1000BASE_XFD)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_1000BASE_XFD,
- 16, "1000BASE-X (-LX, -SX, -CX full duplex mode)", ""));
-
- if (tempShort & AUTONEG_1000BASE_X)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_1000BASE_X,
- 16, "1000BASE-X (-LX, -SX, -CX half duplex mode)", ""));
-
- if (tempShort & AUTONEG_FDX_BPAUSE)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_FDX_BPAUSE,
- 16, "Asymmetric and Symmetric PAUSE (for full-duplex links)", ""));
-
- if (tempShort & AUTONEG_FDX_SPAUSE)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_FDX_SPAUSE,
- 16, "Symmetric PAUSE (for full-duplex links)", ""));
-
- if (tempShort & AUTONEG_FDX_APAUSE)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_FDX_APAUSE,
- 16, "Asymmetric PAUSE (for full-duplex links)", ""));
-
- if (tempShort & AUTONEG_FDX_PAUSE)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_FDX_PAUSE,
- 16, "PAUSE (for full-duplex links)", ""));
-
- if (tempShort & AUTONEG_100BASE_T2FD)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_100BASE_T2FD,
- 16, "100BASE-T2 (full duplex mode)", ""));
-
- if (tempShort & AUTONEG_100BASE_T2)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_100BASE_T2,
- 16, "100BASE-T2 (half duplex mode)", ""));
-
- if (tempShort & AUTONEG_100BASE_TXFD)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_100BASE_TXFD,
- 16, "100BASE-TX (full duplex mode)", ""));
-
- if (tempShort & AUTONEG_100BASE_TX)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_100BASE_TX,
- 16, "100BASE-TX (half duplex mode)", ""));
-
- if (tempShort & AUTONEG_100BASE_T4)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_100BASE_T4,
- 16, "100BASE-T4", ""));
-
- if (tempShort & AUTONEG_10BASET_FD)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_10BASET_FD,
- 16, "10BASE-T (full duplex mode)", ""));
-
- if (tempShort & AUTONEG_10BASE_T)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_10BASE_T,
- 16, "10BASE-T (half duplex mode)", ""));
-
- if (tempShort & AUTONEG_OTHER)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, AUTONEG_OTHER,
- 16, "other or unknown", ""));
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_1000base_tfd, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_1000base_t, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_1000base_xfd, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_1000base_x, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_fdx_bpause, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_fdx_spause, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_fdx_apause, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_fdx_pause, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_t2fd, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_t2, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_txfd, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_tx, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_t4, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_10base_tfd, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_10base_t, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_other, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
tf = proto_tree_add_text(tree, tvb, tempOffset, 2, "Same in inverse (wrong) bitorder");
autoneg_advertised_subtree = proto_item_add_subtree(tf, ett_802_3_autoneg_advertised);
- if (tempShort & INV_AUTONEG_1000BASE_TFD)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_1000BASE_TFD,
- 16, "1000BASE-T (full duplex mode)", ""));
-
- if (tempShort & INV_AUTONEG_1000BASE_T)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_1000BASE_T,
- 16, "1000BASE-T (half duplex mode)", ""));
-
- if (tempShort & INV_AUTONEG_1000BASE_XFD)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_1000BASE_XFD,
- 16, "1000BASE-X (-LX, -SX, -CX full duplex mode)", ""));
-
- if (tempShort & INV_AUTONEG_1000BASE_X)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_1000BASE_X,
- 16, "1000BASE-X (-LX, -SX, -CX half duplex mode)", ""));
-
- if (tempShort & INV_AUTONEG_FDX_BPAUSE)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_FDX_BPAUSE,
- 16, "Asymmetric and Symmetric PAUSE (for full-duplex links)", ""));
-
- if (tempShort & INV_AUTONEG_FDX_SPAUSE)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_FDX_SPAUSE,
- 16, "Symmetric PAUSE (for full-duplex links)", ""));
-
- if (tempShort & INV_AUTONEG_FDX_APAUSE)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_FDX_APAUSE,
- 16, "Asymmetric PAUSE (for full-duplex links)", ""));
-
- if (tempShort & INV_AUTONEG_FDX_PAUSE)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_FDX_PAUSE,
- 16, "PAUSE (for full-duplex links)", ""));
-
- if (tempShort & INV_AUTONEG_100BASE_T2FD)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_100BASE_T2FD,
- 16, "100BASE-T2 (full duplex mode)", ""));
-
- if (tempShort & INV_AUTONEG_100BASE_T2)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_100BASE_T2,
- 16, "100BASE-T2 (half duplex mode)", ""));
-
- if (tempShort & INV_AUTONEG_100BASE_TXFD)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_100BASE_TXFD,
- 16, "100BASE-TX (full duplex mode)", ""));
-
- if (tempShort & INV_AUTONEG_100BASE_TX)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_100BASE_TX,
- 16, "100BASE-TX (half duplex mode)", ""));
-
- if (tempShort & INV_AUTONEG_100BASE_T4)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_100BASE_T4,
- 16, "100BASE-T4", ""));
-
- if (tempShort & INV_AUTONEG_10BASET_FD)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_10BASET_FD,
- 16, "10BASE-T (full duplex mode)", ""));
-
- if (tempShort & INV_AUTONEG_10BASE_T)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_10BASE_T,
- 16, "10BASE-T (half duplex mode)", ""));
-
- if (tempShort & INV_AUTONEG_OTHER)
- proto_tree_add_text(autoneg_advertised_subtree, tvb, (offset+2), 2, "%s",
- decode_boolean_bitfield(tempShort, INV_AUTONEG_OTHER,
- 16, "other or unknown", ""));
-
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_1000base_tfd, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_1000base_t, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_1000base_xfd, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_1000base_x, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_fdx_bpause, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_fdx_spause, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_fdx_apause, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_fdx_pause, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_t2fd, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_t2, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_txfd, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_tx, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_t4, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_10base_tfd, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_10base_t, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(autoneg_advertised_subtree, hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_other, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
}
tempOffset += 2;
@@ -1684,31 +1540,15 @@ dissect_ieee_802_3_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
const char *strPtr;
/* Get MDI power support info */
- tempByte = tvb_get_guint8(tvb, tempOffset);
if (tree)
{
- tf = proto_tree_add_text(tree, tvb, tempOffset, 1, "MDI Power Support: 0x%02x", tempByte);
+ tf = proto_tree_add_item(tree, hf_ieee_802_3_mdi_power_support, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
mac_phy_flags = proto_item_add_subtree(tf, ett_802_3_power);
- /* Get port class */
- proto_tree_add_text(mac_phy_flags, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 0x01, 8, "Port Class: PSE",
- "Port Class: PD"));
-
- /* Get PSE MDI power support */
- proto_tree_add_text(mac_phy_flags, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 0x02, 8, "PSE MDI Power: Supported",
- "PSE MDI Power: Not Supported"));
-
- /* Get PSE MDI power state */
- proto_tree_add_text(mac_phy_flags, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 0x04, 8, "PSE MDI Power Enabled: Yes",
- "PSE MDI Power Enabled: No"));
-
- /* Get PSE pairs control ability */
- proto_tree_add_text(mac_phy_flags, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 0x08, 8, "PSE Pairs Control Ability: Yes",
- "PSE Pairs Control Ability: No"));
+ proto_tree_add_item(mac_phy_flags, hf_ieee_802_3_mdi_power_support_port_class, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mac_phy_flags, hf_ieee_802_3_mdi_power_support_pse_power_support, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mac_phy_flags, hf_ieee_802_3_mdi_power_support_pse_power_enabled, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mac_phy_flags, hf_ieee_802_3_mdi_power_support_pse_pairs, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
}
tempOffset++;
@@ -1736,8 +1576,7 @@ dissect_ieee_802_3_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
/* Determine power type */
subType = ((tempByte & 0xC0) >> 6);
if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 1, "%s %s %s",
- decode_boolean_bitfield(tempByte, 0xC0, 8, "Power Type:", "Power Type:"),
+ proto_tree_add_text(tree, tvb, tempOffset, 1, "Power Type %s %s",
val_to_str_const(subType, power_type_802_3, "Unknown"),
val_to_str_const(subType, media_power_type, "Unknown"));
@@ -1767,15 +1606,12 @@ dissect_ieee_802_3_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
}
}
if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 1, "%s %s",
- decode_boolean_bitfield(tempByte, 0x30, 8, "Power Source:", "Power Source:"),
- strPtr);
+ proto_tree_add_text(tree, tvb, tempOffset, 1, "Power Source %s", strPtr);
/* Determine power priority */
subType = (tempByte & 0x0F);
if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 1, "%s %s",
- decode_boolean_bitfield(tempByte, 0x0F, 8, "Power Priority:", "Power Priority:"),
+ proto_tree_add_text(tree, tvb, tempOffset, 1, "Power Priority %s",
val_to_str_const(subType, media_power_priority, "Reserved"));
tempOffset++;
@@ -1799,21 +1635,12 @@ dissect_ieee_802_3_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
case 0x03: /* Link Aggregation */
{
/* Get aggregation status */
- tempByte = tvb_get_guint8(tvb, tempOffset);
if (tree)
{
- tf = proto_tree_add_text(tree, tvb, tempOffset, 1, "Aggregation Status: 0x%02x", tempByte);
+ tf = proto_tree_add_item(tree, hf_ieee_802_3_aggregation_status, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
mac_phy_flags = proto_item_add_subtree(tf, ett_802_3_aggregation);
-
- /* Get aggregation capability */
- proto_tree_add_text(mac_phy_flags, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 0x01, 8, "Aggregation Capability: Yes",
- "Aggregation Capability: No"));
-
- /* Get aggregation status */
- proto_tree_add_text(mac_phy_flags, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 0x02, 8, "Aggregation Status: Enabled",
- "Aggregation Status: Not Enabled"));
+ proto_tree_add_item(mac_phy_flags, hf_ieee_802_3_aggregation_status_cap, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(mac_phy_flags, hf_ieee_802_3_aggregation_status_enabled, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
}
tempOffset++;
@@ -1877,35 +1704,16 @@ dissect_media_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
proto_tree_add_text(tree, tvb, tempOffset, 0, "TLV too short");
return;
}
- tempShort = tvb_get_ntohs(tvb, tempOffset);
if (tree)
{
- tf = proto_tree_add_text(tree, tvb, tempOffset, 2, "Capabilities: 0x%04x", tempShort);
+ tf = proto_tree_add_item(tree, hf_media_tlv_subtype_caps, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
media_flags = proto_item_add_subtree(tf, ett_media_capabilities);
- if (tempShort & MEDIA_CAPABILITY_LLDP)
- proto_tree_add_text(media_flags, tvb, tempOffset, 2, "%s",
- decode_boolean_bitfield(tempShort, MEDIA_CAPABILITY_LLDP, 16,
- "LLDP-MED Capabilities", ""));
- if (tempShort & MEDIA_CAPABILITY_NETWORK_POLICY)
- proto_tree_add_text(media_flags, tvb, tempOffset, 2, "%s",
- decode_boolean_bitfield(tempShort, MEDIA_CAPABILITY_NETWORK_POLICY, 16,
- "Network Policy", ""));
- if (tempShort & MEDIA_CAPABILITY_LOCATION_ID)
- proto_tree_add_text(media_flags, tvb, tempOffset, 2, "%s",
- decode_boolean_bitfield(tempShort, MEDIA_CAPABILITY_LOCATION_ID, 16,
- "Location Identification", ""));
- if (tempShort & MEDIA_CAPABILITY_MDI_PSE)
- proto_tree_add_text(media_flags, tvb, tempOffset, 2, "%s",
- decode_boolean_bitfield(tempShort, MEDIA_CAPABILITY_MDI_PSE, 16,
- "Extended Power via MDI-PSE", ""));
- if (tempShort & MEDIA_CAPABILITY_MDI_PD)
- proto_tree_add_text(media_flags, tvb, tempOffset, 2, "%s",
- decode_boolean_bitfield(tempShort, MEDIA_CAPABILITY_MDI_PD, 16,
- "Extended Power via MDI-PD", ""));
- if (tempShort & MEDIA_CAPABILITY_INVENTORY)
- proto_tree_add_text(media_flags, tvb, tempOffset, 2, "%s",
- decode_boolean_bitfield(tempShort, MEDIA_CAPABILITY_INVENTORY, 16,
- "Inventory", ""));
+ proto_tree_add_item(media_flags, hf_media_tlv_subtype_caps_llpd, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(media_flags, hf_media_tlv_subtype_caps_network_policy, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(media_flags, hf_media_tlv_subtype_caps_location_id, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(media_flags, hf_media_tlv_subtype_caps_mdi_pse, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(media_flags, hf_media_tlv_subtype_caps_mid_pd, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(media_flags, hf_media_tlv_subtype_caps_inventory, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
}
tempOffset += 2;
tlvLen -= 2;
@@ -1947,21 +1755,16 @@ dissect_media_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
}
tempShort = tvb_get_ntohs(tvb, tempOffset);
- /* Unknown policy flag */
- if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 2, "%s",
- decode_boolean_bitfield(tempShort, 0x8000, 16,"Policy: Unknown", "Policy: Defined"));
-
- /* Tagged flag */
if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 2, "%s",
- decode_boolean_bitfield(tempShort, 0x4000, 16,"Tagged: Yes", "Tagged: No"));
+ {
+ proto_tree_add_item(tree, hf_media_policy_flag, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_media_tag_flag, tvb, tempOffset, 2, ENC_BIG_ENDIAN);
+ }
/* Get vlan id */
tempVLAN = (tempShort & 0x1FFE) >> 1;
if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 2, "%s %u",
- decode_boolean_bitfield(tempShort, 0x1FFE, 16, "VLAN Id:", "VLAN Id:"), tempVLAN);
+ proto_tree_add_text(tree, tvb, tempOffset, 2, "VLAN Id: %u", tempVLAN);
tempOffset++;
tlvLen--;
@@ -1973,8 +1776,7 @@ dissect_media_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
}
tempShort = tvb_get_ntohs(tvb, tempOffset);
if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 2, "%s %u",
- decode_boolean_bitfield(tempShort, 0x01C0, 16, "L2 Priority:", "L2 Priority:"),
+ proto_tree_add_text(tree, tvb, tempOffset, 2, "L2 Priority: %u",
((tempShort & 0x01C0) >> 6));
tempOffset++;
tlvLen--;
@@ -1982,8 +1784,7 @@ dissect_media_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
/* Get DSCP value */
tempByte = tvb_get_guint8(tvb, tempOffset);
if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 1, "%s %u",
- decode_boolean_bitfield(tempByte, 0x3F, 8, "DSCP Value:", "DSCP Value:"),
+ proto_tree_add_text(tree, tvb, tempOffset, 1, "DSCP Value: %u",
(tempByte & 0x3F));
break;
@@ -2021,8 +1822,7 @@ dissect_media_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
/* Get latitude resolution */
tempByte = tvb_get_guint8(tvb, tempOffset);
if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 1, "%s %u",
- decode_boolean_bitfield(tempByte, 0xFC, 8, "Latitude Resolution:", "Latitude Resolution:"),
+ proto_tree_add_text(tree, tvb, tempOffset, 1, "Latitude Resolution: %u",
((tempByte & 0xFC) >> 2));
/* Get latitude */
@@ -2038,8 +1838,7 @@ dissect_media_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
/* Get longitude resolution */
tempByte = tvb_get_guint8(tvb, tempOffset);
if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 1, "%s %u",
- decode_boolean_bitfield(tempByte, 0xFC, 8, "Longitude Resolution:", "Longitude Resolution:"),
+ proto_tree_add_text(tree, tvb, tempOffset, 1, "Longitude Resolution: %u",
((tempByte & 0xFC) >> 2));
/* Get longitude */
@@ -2057,8 +1856,7 @@ dissect_media_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
tempByte = tvb_get_guint8(tvb, tempOffset);
if (tree)
{
- tf = proto_tree_add_text(tree, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 0xF0, 8, "Altitude Type: ", "Altitude Type: "));
+ tf = proto_tree_add_text(tree, tvb, tempOffset, 1, "Altitude Type:");
switch ((tempByte >> 4))
{
@@ -2077,8 +1875,7 @@ dissect_media_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
/* Get Altitude Resolution */
tempShort = tvb_get_ntohs(tvb, tempOffset);
if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 2, "%s %u",
- decode_boolean_bitfield(tempShort, 0x0FC0, 16, "Altitude Resolution: ", "Altitude Type: "),
+ proto_tree_add_text(tree, tvb, tempOffset, 2, "Altitude Resolution: %u",
((tempShort & 0x0FC0) >> 6));
tempOffset++;
@@ -2227,9 +2024,8 @@ dissect_media_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
/* Determine power type */
subType = ((tempByte & 0xC0) >> 6);
if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 1, "%s %s",
- decode_boolean_bitfield(tempByte, 0xC0, 8, "Power Type:", "Power Type:"),
- val_to_str_const(subType, media_power_type, "Unknown"));
+ proto_tree_add_text(tree, tvb, tempOffset, 1, "Power Type %s",
+ val_to_str_const(subType, media_power_type, "Unknown"));
/* Determine power source */
switch (subType)
@@ -2255,16 +2051,13 @@ dissect_media_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
}
}
if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 1, "%s %s",
- decode_boolean_bitfield(tempByte, 0x30, 8, "Power Source:", "Power Source:"),
- strPtr);
+ proto_tree_add_text(tree, tvb, tempOffset, 1, "Power Source: %s", strPtr);
/* Determine power priority */
subType = (tempByte & 0x0F);
if (tree)
- proto_tree_add_text(tree, tvb, tempOffset, 1, "%s %s",
- decode_boolean_bitfield(tempByte, 0x0F, 8, "Power Priority:", "Power Priority:"),
- val_to_str_const(subType, media_power_priority, "Reserved"));
+ proto_tree_add_text(tree, tvb, tempOffset, 1, "Power Priority: %s",
+ val_to_str_const(subType, media_power_priority, "Reserved"));
tempOffset++;
@@ -2523,7 +2316,6 @@ static void
dissect_cisco_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset)
{
guint8 subType;
- guint8 tempByte;
guint32 tempOffset = offset;
proto_tree *fourwire_data = NULL;
@@ -2539,35 +2331,18 @@ dissect_cisco_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
switch (subType)
{
case 0x01: /* Four-Wire Power-via-MDI TLV */
- tempByte = tvb_get_guint8(tvb, tempOffset);
- if (tree) {
- tf = proto_tree_add_text(tree, tvb, tempOffset, 1, "Four-Wire Power-via-MDI: 0x%02x", tempByte);
- fourwire_data = proto_item_add_subtree(tf, ett_cisco_fourwire_tlv);
-
- proto_tree_add_text(fourwire_data, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 0x01, 8,
- "PSE Four-Wire PoE Supported",
- "PSE Four-Wire PoE Not Supported"));
-
- proto_tree_add_text(fourwire_data, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 0x02, 8,
- "PD Spare Pair Architecture Shared",
- "PD Spare Pair Architecture Independent"));
-
- proto_tree_add_text(fourwire_data, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 0x04, 8,
- "PD Request Spare Pair PoE On",
- "PD Request Spare Pair PoE Off"));
-
- proto_tree_add_text(fourwire_data, tvb, tempOffset, 1, "%s",
- decode_boolean_bitfield(tempByte, 0x08, 8,
- "PSE Spare Pair PoE On",
- "PSE Spare Pair PoE Off"));
- }
- break;
+ if (tree) {
+ tf = proto_tree_add_item(tree, hf_cisco_four_wire_power, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
+ fourwire_data = proto_item_add_subtree(tf, ett_cisco_fourwire_tlv);
+ proto_tree_add_item(fourwire_data, hf_cisco_four_wire_power_poe, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fourwire_data, hf_cisco_four_wire_power_spare_pair_arch, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fourwire_data, hf_cisco_four_wire_power_req_spare_pair_poe, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(fourwire_data, hf_cisco_four_wire_power_pse_spare_pair_poe, tvb, tempOffset, 1, ENC_BIG_ENDIAN);
+ }
+ break;
default:
- proto_tree_add_item(tree, hf_unknown_subtype, tvb, offset, 1, ENC_NA);
- break;
+ proto_tree_add_item(tree, hf_unknown_subtype, tvb, offset, 1, ENC_NA);
+ break;
}
}
@@ -2831,6 +2606,78 @@ proto_register_lldp(void)
{ "TLV Length", "lldp.tlv.len", FT_UINT16, BASE_DEC,
NULL, TLV_INFO_LEN_MASK, NULL, HFILL }
},
+ { &hf_lldp_tlv_system_cap,
+ { "Capabilities", "lldp.tlv.system_cap", FT_UINT16, BASE_HEX,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_system_cap_other,
+ { "Other", "lldp.tlv.system_cap.other", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_OTHER, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_system_cap_repeater,
+ { "Repeater", "lldp.tlv.system_cap.repeater", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_REPEATER, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_system_cap_bridge,
+ { "Bridge", "lldp.tlv.system_cap.bridge", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_BRIDGE, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_system_cap_wlan_access_pt,
+ { "WLAN access point", "lldp.tlv.system_cap.wlan_access_pt", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_WLAN, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_system_cap_router,
+ { "Router", "lldp.tlv.system_cap.router", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_ROUTER, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_system_cap_telephone,
+ { "Telephone", "lldp.tlv.system_cap.telephone", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_TELEPHONE, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_system_cap_docsis_cable_device,
+ { "DOCSIS cable device", "lldp.tlv.system_cap.docsis_cable_device", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_DOCSIS, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_system_cap_station_only,
+ { "Station only", "lldp.tlv.system_cap.station_only", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_STATION, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_enable_system_cap,
+ { "Enabled Capabilities", "lldp.tlv.enable_system_cap", FT_UINT16, BASE_HEX,
+ NULL, 0, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_enable_system_cap_other,
+ { "Other", "lldp.tlv.enable_system_cap.other", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_OTHER, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_enable_system_cap_repeater,
+ { "Repeater", "lldp.tlv.enable_system_cap.repeater", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_REPEATER, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_enable_system_cap_bridge,
+ { "Bridge", "lldp.tlv.enable_system_cap.bridge", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_BRIDGE, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_enable_system_cap_wlan_access_pt,
+ { "WLAN access point", "lldp.tlv.enable_system_cap.wlan_access_pt", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_WLAN, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_enable_system_cap_router,
+ { "Router", "lldp.tlv.enable_system_cap.router", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_ROUTER, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_enable_system_cap_telephone,
+ { "Telephone", "lldp.tlv.enable_system_cap.telephone", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_TELEPHONE, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_enable_system_cap_docsis_cable_device,
+ { "DOCSIS cable device", "lldp.tlv.enable_system_cap.docsis_cable_device", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_DOCSIS, NULL, HFILL }
+ },
+ { &hf_lldp_tlv_enable_system_cap_station_only,
+ { "Station only", "lldp.tlv.enable_system_cap.station_only", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), SYSTEM_CAPABILITY_STATION, NULL, HFILL }
+ },
{ &hf_chassis_id_subtype,
{ "Chassis Id Subtype", "lldp.chassis.subtype", FT_UINT8, BASE_DEC,
VALS(chassis_id_subtypes), 0, NULL, HFILL }
@@ -2899,117 +2746,409 @@ proto_register_lldp(void)
{ "IEEE 802.1 Subtype", "lldp.ieee.802_1.subtype", FT_UINT8, BASE_HEX,
VALS(ieee_802_1_subtypes), 0x0, NULL, HFILL }
},
+ { &hf_ieee_802_1_port_and_vlan_id_flag,
+ { "Flags", "lldp.ieee.802_1.port_and_vlan_id_flag", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_ieee_802_1_port_and_vlan_id_flag_supported,
+ { "Port and Protocol VLAN", "lldp.ieee.802_1.port_and_vlan_id_flag.supported", FT_BOOLEAN, 8,
+ TFS(&tfs_supported_not_supported), 0x02, NULL, HFILL }
+ },
+ { &hf_ieee_802_1_port_and_vlan_id_flag_enabled,
+ { "Port and Protocol VLAN", "lldp.ieee.802_1.port_and_vlan_id_flag.enabled", FT_BOOLEAN, 8,
+ TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }
+ },
{ &hf_ieee_802_3_subtype,
{ "IEEE 802.3 Subtype", "lldp.ieee.802_3.subtype", FT_UINT8, BASE_HEX,
VALS(ieee_802_3_subtypes), 0x0, NULL, HFILL }
},
+ { &hf_ieee_802_3_mac_phy_auto_neg_status,
+ { "Auto-Negotiation Support/Status", "lldp.ieee.802_3.mac_phy_auto_neg_status", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_mac_phy_auto_neg_status_supported,
+ { "Auto-Negotiation", "lldp.ieee.802_3.mac_phy_auto_neg_status.supported", FT_BOOLEAN, 8,
+ TFS(&tfs_supported_not_supported), 0x02, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_mac_phy_auto_neg_status_enabled,
+ { "Auto-Negotiation", "lldp.ieee.802_3.mac_phy_auto_neg_status.enabled", FT_BOOLEAN, 8,
+ TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps,
+ { "PMD Auto-Negotiation Advertised Capability", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps", FT_UINT16, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_1000base_tfd,
+ { "1000BASE-T (full duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.1000base_tfd", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_1000BASE_TFD, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_1000base_t,
+ { "1000BASE-T (half duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.1000base_t", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_1000BASE_T, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_1000base_xfd,
+ { "1000BASE-X (-LX, -SX, -CX full duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.1000base_xfd", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_1000BASE_XFD, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_1000base_x,
+ { "1000BASE-X (-LX, -SX, -CX half duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.1000base_x", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_1000BASE_X, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_fdx_bpause,
+ { "Asymmetric and Symmetric PAUSE (for full-duplex links)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.fdx_bpause", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_FDX_BPAUSE, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_fdx_spause,
+ { "Symmetric PAUSE (for full-duplex links)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.fdx_spause", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_FDX_SPAUSE, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_fdx_apause,
+ { "Asymmetric PAUSE (for full-duplex links)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.fdx_apause", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_FDX_APAUSE, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_fdx_pause,
+ { "PAUSE (for full-duplex links)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.fdx_pause", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_FDX_PAUSE, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_t2fd,
+ { "100BASE-T2 (full duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.100base_t2fd", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_100BASE_T2FD, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_t2,
+ { "100BASE-T2 (half duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.100base_t2", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_100BASE_T2, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_txfd,
+ { "100BASE-TX (full duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.100base_txfd", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_100BASE_TXFD, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_tx,
+ { "100BASE-TX (half duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.100base_tx", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_100BASE_TX, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_100base_t4,
+ { "100BASE-T4", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.100base_t4", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_100BASE_T4, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_10base_tfd,
+ { "10BASE-T (full duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.10base_tfd", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_10BASET_FD, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_10base_t,
+ { "10BASE-T (half duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.10base_t", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_10BASE_T, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_other,
+ { "Other or unknown", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps.other", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), AUTONEG_OTHER, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_1000base_tfd,
+ { "1000BASE-T (full duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.1000base_tfd", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_1000BASE_TFD, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_1000base_t,
+ { "1000BASE-T (half duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.1000base_t", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_1000BASE_T, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_1000base_xfd,
+ { "1000BASE-X (-LX, -SX, -CX full duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.1000base_xfd", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_1000BASE_XFD, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_1000base_x,
+ { "1000BASE-X (-LX, -SX, -CX half duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.1000base_x", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_1000BASE_X, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_fdx_bpause,
+ { "Asymmetric and Symmetric PAUSE (for full-duplex links)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.fdx_bpause", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_FDX_BPAUSE, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_fdx_spause,
+ { "Symmetric PAUSE (for full-duplex links)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.fdx_spause", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_FDX_SPAUSE, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_fdx_apause,
+ { "Asymmetric PAUSE (for full-duplex links)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.fdx_apause", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_FDX_APAUSE, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_fdx_pause,
+ { "PAUSE (for full-duplex links)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.fdx_pause", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_FDX_PAUSE, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_t2fd,
+ { "100BASE-T2 (full duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.100base_t2fd", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_100BASE_T2FD, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_t2,
+ { "100BASE-T2 (half duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.100base_t2", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_100BASE_T2, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_txfd,
+ { "100BASE-TX (full duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.100base_txfd", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_100BASE_TXFD, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_tx,
+ { "100BASE-TX (half duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.100base_tx", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_100BASE_TX, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_100base_t4,
+ { "100BASE-T4", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.100base_t4", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_100BASE_T4, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_10base_tfd,
+ { "10BASE-T (full duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.10base_tfd", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_10BASET_FD, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_10base_t,
+ { "10BASE-T (half duplex mode)", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.10base_t", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_10BASE_T, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_pmd_auto_neg_advertised_caps_inv_other,
+ { "Other or unknown", "lldp.ieee.802_3.pmd_auto_neg_advertised_caps_inv.other", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), INV_AUTONEG_OTHER, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_mdi_power_support,
+ { "MDI Power Support", "lldp.ieee.802_3.mdi_power_support", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_mdi_power_support_port_class,
+ { "Port Class", "lldp.ieee.802_3.mdi_power_support.port_class", FT_BOOLEAN, 8,
+ TFS(&tfs_ieee_802_3_pse_pd), 0x01, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_mdi_power_support_pse_power_support,
+ { "PSE MDI Power", "lldp.ieee.802_3.mdi_power_support.supported", FT_BOOLEAN, 8,
+ TFS(&tfs_supported_not_supported), 0x02, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_mdi_power_support_pse_power_enabled,
+ { "PSE MDI Power", "lldp.ieee.802_3.mdi_power_support.enabled", FT_BOOLEAN, 8,
+ TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_mdi_power_support_pse_pairs,
+ { "PSE Pairs Control Ability", "lldp.ieee.802_3.mdi_power_support.pse_pairs", FT_BOOLEAN, 8,
+ TFS(&tfs_yes_no), 0x08, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_aggregation_status,
+ { "Aggregation Status", "lldp.ieee.802_3.aggregation_status", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_aggregation_status_cap,
+ { "Aggregation Capability", "lldp.ieee.802_3.aggregation_status.cap", FT_BOOLEAN, 8,
+ TFS(&tfs_yes_no), 0x01, NULL, HFILL }
+ },
+ { &hf_ieee_802_3_aggregation_status_enabled,
+ { "Aggregation Status", "lldp.ieee.802_3.aggregation_status.enabled", FT_BOOLEAN, 8,
+ TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }
+ },
{ &hf_ieee_802_1qbg_subtype,
{ "IEEE 802.1Qbg Subtype", "lldp.ieee.802_1qbg.subtype", FT_UINT8, BASE_HEX,
VALS(ieee_802_1qbg_subtypes), 0x0, NULL, HFILL }
},
+ { &hf_ieee_802_1qbg_evb_support_caps,
+ { "Supported capabilities", "lldp.ieee.802_1qbg.evb_support_caps", FT_UINT16, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_ieee_802_1qbg_evb_support_caps_std,
+ { "Standard bridging (STD)", "lldp.ieee.802_1qbg.evb_support_caps.std", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), EVB_CAPA_STD, NULL, HFILL }
+ },
+ { &hf_ieee_802_1qbg_evb_support_caps_rr,
+ { "Reflective relay (RR)", "lldp.ieee.802_1qbg.evb_support_caps.rr", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), EVB_CAPA_RR, NULL, HFILL }
+ },
+ { &hf_ieee_802_1qbg_evb_support_caps_rte,
+ { "Retransmission timer exponent (RTE)", "lldp.ieee.802_1qbg.evb_support_caps.rte", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), EVB_CAPA_RTE, NULL, HFILL }
+ },
+ { &hf_ieee_802_1qbg_evb_support_caps_ecp,
+ { "Edge control protocol (ECP)", "lldp.ieee.802_1qbg.evb_support_caps.ecp", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), EVB_CAPA_ECP, NULL, HFILL }
+ },
+ { &hf_ieee_802_1qbg_evb_support_caps_vdp,
+ { "VSI discovery protocol (VDP)", "lldp.ieee.802_1qbg.evb_support_caps.vdp", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), EVB_CAPA_VDP, NULL, HFILL }
+ },
+ { &hf_ieee_802_1qbg_evb_configure_caps,
+ { "Configured capabilities", "lldp.ieee.802_1qbg.evb_configure_caps", FT_UINT16, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_ieee_802_1qbg_evb_configure_caps_std,
+ { "Standard bridging (STD)", "lldp.ieee.802_1qbg.evb_configure_caps.std", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), EVB_CAPA_STD, NULL, HFILL }
+ },
+ { &hf_ieee_802_1qbg_evb_configure_caps_rr,
+ { "Reflective relay (RR)", "lldp.ieee.802_1qbg.evb_configure_caps.rr", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), EVB_CAPA_RR, NULL, HFILL }
+ },
+ { &hf_ieee_802_1qbg_evb_configure_caps_rte,
+ { "Retransmission timer exponent (RTE)", "lldp.ieee.802_1qbg.evb_configure_caps.rte", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), EVB_CAPA_RTE, NULL, HFILL }
+ },
+ { &hf_ieee_802_1qbg_evb_configure_caps_ecp,
+ { "Edge control protocol (ECP)", "lldp.ieee.802_1qbg.evb_configure_caps.ecp", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), EVB_CAPA_ECP, NULL, HFILL }
+ },
+ { &hf_ieee_802_1qbg_evb_configure_caps_vdp,
+ { "VSI discovery protocol (VDP)", "lldp.ieee.802_1qbg.evb_configure_caps.vdp", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), EVB_CAPA_VDP, NULL, HFILL }
+ },
{ &hf_media_tlv_subtype,
{ "Media Subtype", "lldp.media.subtype", FT_UINT8, BASE_HEX,
VALS(media_subtypes), 0x0, NULL, HFILL }
},
+ { &hf_media_tlv_subtype_caps,
+ { "Capabilities", "lldp.media.subtype.caps", FT_UINT16, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_media_tlv_subtype_caps_llpd,
+ { "LLDP-MED Capabilities", "lldp.media.subtype.caps.llpd", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), MEDIA_CAPABILITY_LLDP, NULL, HFILL }
+ },
+ { &hf_media_tlv_subtype_caps_network_policy,
+ { "Network Policy", "lldp.media.subtype.caps.network_policy", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), MEDIA_CAPABILITY_NETWORK_POLICY, NULL, HFILL }
+ },
+ { &hf_media_tlv_subtype_caps_location_id,
+ { "Location Identification", "lldp.media.subtype.caps.location_id", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), MEDIA_CAPABILITY_LOCATION_ID, NULL, HFILL }
+ },
+ { &hf_media_tlv_subtype_caps_mdi_pse,
+ { "Extended Power via MDI-PSE", "lldp.media.subtype.caps.mdi_pse", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), MEDIA_CAPABILITY_MDI_PSE, NULL, HFILL }
+ },
+ { &hf_media_tlv_subtype_caps_mid_pd,
+ { "Extended Power via MDI-PD", "lldp.media.subtype.caps.mid_pd", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), MEDIA_CAPABILITY_MDI_PD, NULL, HFILL }
+ },
+ { &hf_media_tlv_subtype_caps_inventory,
+ { "Inventory", "lldp.media.subtype.caps.inventory", FT_BOOLEAN, 16,
+ TFS(&tfs_capable_not_capable), MEDIA_CAPABILITY_INVENTORY, NULL, HFILL }
+ },
+ { &hf_media_policy_flag,
+ { "Policy", "lldp.media.policy_flag", FT_BOOLEAN, 16,
+ TFS(&tfs_unknown_defined), 0x8000, NULL, HFILL }
+ },
+ { &hf_media_tag_flag,
+ { "Tagged", "lldp.media.tag_flag", FT_BOOLEAN, 16,
+ TFS(&tfs_yes_no), 0x4000, NULL, HFILL }
+ },
{ &hf_profinet_tlv_subtype,
{ "Subtype", "lldp.profinet.subtype", FT_UINT8, BASE_HEX,
- VALS(profinet_subtypes), 0x0, "PROFINET Subtype", HFILL }
+ VALS(profinet_subtypes), 0x0, "PROFINET Subtype", HFILL }
},
{ &hf_profinet_port_rx_delay_local,
{ "Port RX Delay Local", "lldp.profinet.port_rx_delay_local", FT_UINT32, BASE_DEC,
- NULL, 0x0, NULL, HFILL }
+ NULL, 0x0, NULL, HFILL }
},
{ &hf_profinet_port_rx_delay_remote,
{ "Port RX Delay Remote", "lldp.profinet.port_rx_delay_remote", FT_UINT32, BASE_DEC,
- NULL, 0x0, NULL, HFILL }
+ NULL, 0x0, NULL, HFILL }
},
{ &hf_profinet_port_tx_delay_local,
{ "Port TX Delay Local", "lldp.profinet.port_tx_delay_local", FT_UINT32, BASE_DEC,
- NULL, 0x0, NULL, HFILL }
+ NULL, 0x0, NULL, HFILL }
},
{ &hf_profinet_port_tx_delay_remote,
{ "Port TX Delay Remote", "lldp.profinet.port_tx_delay_remote", FT_UINT32, BASE_DEC,
- NULL, 0x0, NULL, HFILL }
+ NULL, 0x0, NULL, HFILL }
},
{ &hf_profinet_cable_delay_local,
{ "Port Cable Delay Local", "lldp.profinet.cable_delay_local", FT_UINT32, BASE_DEC,
- NULL, 0x0, NULL, HFILL }
+ NULL, 0x0, NULL, HFILL }
},
{ &hf_profinet_class2_port_status,
{ "RTClass2 Port Status", "lldp.profinet.rtc2_port_status", FT_UINT16, BASE_HEX,
- VALS(profinet_port2_status_vals), 0x0, NULL, HFILL }
+ VALS(profinet_port2_status_vals), 0x0, NULL, HFILL }
},
{ &hf_profinet_class3_port_status,
{ "RTClass3 Port Status", "lldp.profinet.rtc3_port_status", FT_UINT16, BASE_HEX,
- VALS(profinet_port3_status_vals), 0x0, NULL, HFILL }
+ VALS(profinet_port3_status_vals), 0x0, NULL, HFILL }
},
{ &hf_profinet_mrp_domain_uuid,
{ "MRP DomainUUID", "lldp.profinet.mrp_domain_uuid", FT_GUID, BASE_NONE,
- NULL, 0x0, NULL, HFILL }
+ NULL, 0x0, NULL, HFILL }
},
{ &hf_profinet_mrrt_port_status,
{ "MRRT PortStatus", "lldp.profinet.mrrt_port_status", FT_UINT16, BASE_HEX,
- VALS(profinet_mrrt_port_status_vals), 0x0, NULL, HFILL }
+ VALS(profinet_mrrt_port_status_vals), 0x0, NULL, HFILL }
},
{ &hf_profinet_cm_mac,
{ "CMMacAdd", "lldp.profinet.cm_mac_add", FT_ETHER, BASE_NONE,
- NULL, 0x0, "CMResponderMacAdd or CMInitiatorMacAdd", HFILL }
+ NULL, 0x0, "CMResponderMacAdd or CMInitiatorMacAdd", HFILL }
},
{ &hf_profinet_master_source_address,
{ "MasterSourceAddress", "lldp.profinet.master_source_address", FT_ETHER, BASE_NONE,
- NULL, 0x0, NULL, HFILL }
+ NULL, 0x0, NULL, HFILL }
},
{ &hf_profinet_subdomain_uuid,
{ "SubdomainUUID", "lldp.profinet.subdomain_uuid", FT_GUID, BASE_NONE,
- NULL, 0x0, NULL, HFILL }
+ NULL, 0x0, NULL, HFILL }
},
{ &hf_profinet_ir_data_uuid,
{ "IRDataUUID", "lldp.profinet.ir_data_uuid", FT_GUID, BASE_NONE,
- NULL, 0x0, NULL, HFILL }
+ NULL, 0x0, NULL, HFILL }
},
{ &hf_profinet_length_of_period_valid,
{ "LengthOfPeriod.Valid", "lldp.profinet.length_of_period_valid", FT_UINT32, BASE_DEC,
- NULL, 0x80000000, "Length field is valid/invalid", HFILL }
+ NULL, 0x80000000, "Length field is valid/invalid", HFILL }
},
{ &hf_profinet_length_of_period_length,
{ "LengthOfPeriod.Length", "lldp.profinet.length_of_period_length", FT_UINT32, BASE_DEC,
- NULL, 0x7FFFFFFF, "Duration of a cycle in nanoseconds", HFILL }
+ NULL, 0x7FFFFFFF, "Duration of a cycle in nanoseconds", HFILL }
},
{ &hf_profinet_red_period_begin_valid,
{ "RedPeriodBegin.Valid", "lldp.profinet.red_period_begin_valid", FT_UINT32, BASE_DEC,
- NULL, 0x80000000, "Offset field is valid/invalid", HFILL }
+ NULL, 0x80000000, "Offset field is valid/invalid", HFILL }
},
{ &hf_profinet_red_period_begin_offset,
{ "RedPeriodBegin.Offset", "lldp.profinet.red_period_begin_offset", FT_UINT32, BASE_DEC,
- NULL, 0x7FFFFFFF, "RT_CLASS_3 period, offset to cycle begin in nanoseconds", HFILL }
+ NULL, 0x7FFFFFFF, "RT_CLASS_3 period, offset to cycle begin in nanoseconds", HFILL }
},
{ &hf_profinet_orange_period_begin_valid,
{ "OrangePeriodBegin.Valid", "lldp.profinet.orange_period_begin_valid", FT_UINT32, BASE_DEC,
- NULL, 0x80000000, "Offset field is valid/invalid", HFILL }
+ NULL, 0x80000000, "Offset field is valid/invalid", HFILL }
},
{ &hf_profinet_orange_period_begin_offset,
{ "OrangePeriodBegin.Offset","lldp.profinet.orange_period_begin_offset", FT_UINT32, BASE_DEC,
- NULL, 0x7FFFFFFF, "RT_CLASS_2 period, offset to cycle begin in nanoseconds", HFILL }
+ NULL, 0x7FFFFFFF, "RT_CLASS_2 period, offset to cycle begin in nanoseconds", HFILL }
},
{ &hf_profinet_green_period_begin_valid,
{ "GreenPeriodBegin.Valid", "lldp.profinet.green_period_begin_valid", FT_UINT32, BASE_DEC,
- NULL, 0x80000000, "Offset field is valid/invalid", HFILL }
+ NULL, 0x80000000, "Offset field is valid/invalid", HFILL }
},
{ &hf_profinet_green_period_begin_offset,
{ "GreenPeriodBegin.Offset", "lldp.profinet.green_period_begin_offset", FT_UINT32, BASE_DEC,
- NULL, 0x7FFFFFFF, "Unrestricted period, offset to cycle begin in nanoseconds", HFILL }
+ NULL, 0x7FFFFFFF, "Unrestricted period, offset to cycle begin in nanoseconds", HFILL }
},
{ &hf_cisco_subtype,
{ "Cisco Subtype", "lldp.cisco.subtype", FT_UINT8, BASE_HEX,
- VALS(cisco_subtypes), 0x0, NULL, HFILL }
+ VALS(cisco_subtypes), 0x0, NULL, HFILL }
+ },
+ { &hf_cisco_four_wire_power,
+ { "Four-Wire Power-via-MDI", "lldp.cisco.four_wire_power", FT_UINT8, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_cisco_four_wire_power_poe,
+ { "PSE Four-Wire PoE", "lldp.cisco.four_wire_power.poe", FT_BOOLEAN, 8,
+ TFS(&tfs_supported_not_supported), 0x01, NULL, HFILL }
+ },
+ { &hf_cisco_four_wire_power_spare_pair_arch,
+ { "PD Spare Pair Architecture", "lldp.cisco.four_wire_power.spare_pair_arch", FT_BOOLEAN, 8,
+ TFS(&tfs_shared_independent), 0x02, NULL, HFILL }
+ },
+ { &hf_cisco_four_wire_power_req_spare_pair_poe,
+ { "PD Request Spare Pair PoE", "lldp.cisco.four_wire_power.req_spare_pair_poe", FT_BOOLEAN, 8,
+ TFS(&tfs_on_off), 0x04, NULL, HFILL }
+ },
+ { &hf_cisco_four_wire_power_pse_spare_pair_poe,
+ { "PSE Spare Pair PoE", "lldp.cisco.four_wire_power.pse_spare_pair_poe", FT_BOOLEAN, 8,
+ TFS(&tfs_on_off), 0x08, NULL, HFILL }
},
{ &hf_unknown_subtype,
{ "Unknown Subtype","lldp.unknown_subtype", FT_UINT8, BASE_DEC,
- NULL, 0x0, NULL, HFILL }
+ NULL, 0x0, NULL, HFILL }
},
{ &hf_unknown_subtype_content,
{ "Unknown Subtype Content","lldp.unknown_subtype.content", FT_BYTES, BASE_NONE,
- NULL, 0x0, NULL, HFILL }
+ NULL, 0x0, NULL, HFILL }
},
};