diff options
Diffstat (limited to 'epan/dissectors')
-rw-r--r-- | epan/dissectors/packet-lldp.c | 59 |
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, |