aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-lldp.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/epan/dissectors/packet-lldp.c b/epan/dissectors/packet-lldp.c
index f8575f0a70..0ee9b1b56f 100644
--- a/epan/dissectors/packet-lldp.c
+++ b/epan/dissectors/packet-lldp.c
@@ -280,6 +280,12 @@ static int hf_ieee_802_1qbg_evb_configure_caps_vdp = -1;
static int hf_ieee_802_1qbg_evb_supported_vsi = -1;
static int hf_ieee_802_1qbg_evb_configured_vsi = -1;
static int hf_ieee_802_1qbg_evb_retrans_timer = -1;
+static int hf_ieee_802_1br_aec = -1;
+static int hf_ieee_802_1br_aec_support = -1;
+static int hf_ieee_802_1br_aec_enable = -1;
+static int hf_ieee_802_1br_aec_active = -1;
+static int hf_ieee_802_1br_aec_addfragsize = -1;
+static int hf_ieee_802_1br_aec_reserved = -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;
@@ -434,6 +440,7 @@ static gint ett_org_spc_ieee_802_3_2 = -1;
static gint ett_org_spc_ieee_802_3_3 = -1;
static gint ett_org_spc_ieee_802_3_4 = -1;
static gint ett_org_spc_ieee_802_3_5 = -1;
+static gint ett_org_spc_ieee_802_3_7 = -1;
static gint ett_org_spc_media_1 = -1;
static gint ett_org_spc_media_2 = -1;
@@ -461,6 +468,7 @@ static gint ett_802_3_power = -1;
static gint ett_802_3_aggregation = -1;
static gint ett_802_1_aggregation = -1;
static gint ett_802_1qbg_capabilities_flags = -1;
+static gint ett_802_1br_capabilities_flags = -1;
static gint ett_media_capabilities = -1;
static gint ett_profinet_period = -1;
static gint ett_cisco_fourwire_tlv = -1;
@@ -615,6 +623,7 @@ static const value_string ieee_802_3_subtypes[] = {
{ 0x03, "Link Aggregation" },
{ 0x04, "Maximum Frame Size" },
{ 0x05, "EEE (Energy-Efficient Ethernet)" },
+ { 0x07, "IEEE 802.1br Additional Ethernet capabilities" },
{ 0, NULL }
};
@@ -1052,6 +1061,13 @@ static const value_string hytec_mc[] = {
#define EVB_CAPA_ECP 0x0002
#define EVB_CAPA_VDP 0x0001
+/* IEEE 802.1br Additional Ethernet Capabilities flags */
+#define IEEE_802_1BR_AEC_SUPPORT 0x0001
+#define IEEE_802_1BR_AEC_ENABLE 0x0002
+#define IEEE_802_1BR_AEC_ACTIVE 0x0004
+#define IEEE_802_1BR_AEC_ADDFRAGSIZE 0x0018
+#define IEEE_802_1BR_AEC_RESERVED 0xFFE0
+
#define MAX_MAC_LEN 6
@@ -2632,6 +2648,21 @@ dissect_ieee_802_3_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
break;
}
+ case 0x07: /* IEEE 802.1br Frame Preemption Protocol */
+ {
+ static const int * preemption_capabilities[] = {
+ &hf_ieee_802_1br_aec_support,
+ &hf_ieee_802_1br_aec_enable,
+ &hf_ieee_802_1br_aec_active,
+ &hf_ieee_802_1br_aec_addfragsize,
+ &hf_ieee_802_1br_aec_reserved,
+ NULL
+ };
+
+ /* Get Additional Ethernet Capabilities */
+ proto_tree_add_bitmask(tree, tvb, offset, hf_ieee_802_1br_aec, ett_802_1br_capabilities_flags, preemption_capabilities, ENC_BIG_ENDIAN);
+ break;
+ }
}
return offset;
@@ -3739,6 +3770,8 @@ dissect_organizational_specific_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tre
break;
case 5: tempTree = ett_org_spc_ieee_802_3_5;
break;
+ case 7: tempTree = ett_org_spc_ieee_802_3_7;
+ break;
}
break;
case OUI_MEDIA_ENDPOINT:
@@ -4879,6 +4912,30 @@ proto_register_lldp(void)
{ "Retransmission timer exponent", "lldp.ieee.802_1qbg.evb_retrans_timer", FT_UINT8, BASE_DEC,
NULL, 0x0, NULL, HFILL }
},
+ { &hf_ieee_802_1br_aec,
+ { "Additional Ethernet Capabilities", "lldp.ieee.802_1br.eac", FT_UINT16, BASE_HEX,
+ NULL, 0x0, NULL, HFILL }
+ },
+ { &hf_ieee_802_1br_aec_support,
+ { "Preemption capabilities support", "lldp.ieee.802_1br.aec.support", FT_BOOLEAN, 16,
+ TFS(&tfs_supported_not_supported), IEEE_802_1BR_AEC_SUPPORT, NULL, HFILL }
+ },
+ { &hf_ieee_802_1br_aec_enable,
+ { "Preemption capabilities enable", "lldp.ieee.802_1br.aec.enable", FT_BOOLEAN, 16,
+ TFS(&tfs_enabled_disabled), IEEE_802_1BR_AEC_ENABLE, NULL, HFILL }
+ },
+ { &hf_ieee_802_1br_aec_active,
+ { "Preemption capabilities active", "lldp.ieee.802_1br.aec.active", FT_BOOLEAN, 16,
+ TFS(&tfs_active_inactive), IEEE_802_1BR_AEC_ACTIVE, NULL, HFILL }
+ },
+ { &hf_ieee_802_1br_aec_addfragsize,
+ { "Additional Fragment Size", "lldp.ieee.802_1br.aec.addfragsize", FT_UINT16, BASE_DEC,
+ NULL, IEEE_802_1BR_AEC_ADDFRAGSIZE, NULL, HFILL }
+ },
+ { &hf_ieee_802_1br_aec_reserved,
+ { "Reserved", "lldp.ieee.802_1br.aec.reserved", FT_UINT16, BASE_HEX,
+ NULL, IEEE_802_1BR_AEC_RESERVED, NULL, HFILL }
+ },
{ &hf_media_tlv_subtype,
{ "Media Subtype", "lldp.media.subtype", FT_UINT8, BASE_HEX,
VALS(media_subtypes), 0x0, NULL, HFILL }
@@ -5378,6 +5435,7 @@ proto_register_lldp(void)
&ett_org_spc_ieee_802_3_3,
&ett_org_spc_ieee_802_3_4,
&ett_org_spc_ieee_802_3_5,
+ &ett_org_spc_ieee_802_3_7,
&ett_org_spc_media_1,
&ett_org_spc_media_2,
&ett_org_spc_media_3,
@@ -5402,6 +5460,7 @@ proto_register_lldp(void)
&ett_802_3_aggregation,
&ett_802_1_aggregation,
&ett_802_1qbg_capabilities_flags,
+ &ett_802_1br_capabilities_flags,
&ett_media_capabilities,
&ett_profinet_period,
&ett_cisco_fourwire_tlv,