BGP: MPLS label for EVPN Extented community

Dissect MPLS label fields for EVPN Extented Community.
RFC7432 section-8.2.1 defines only a SHOULD for ESI label set to a MPLS
label when Single-Active redundancy mode is desired.
Therefore and not break current implemntation we only add the additional
dissection of the MPLS label bits.

Bug: 16313
Change-Id: Iad2561b90aeace212f79a874efb59af917aca3f1
Reviewed-on: https://code.wireshark.org/review/35692
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
This commit is contained in:
Uli Heilmeier 2020-01-07 23:03:17 +01:00 committed by Alexis La Goutte
parent ad2584f437
commit 1fa51cfc0c
1 changed files with 19 additions and 1 deletions

View File

@ -1936,6 +1936,8 @@ static int hf_bgp_aigp_accu_igp_metric = -1;
static int hf_bgp_update_mpls_label = -1;
static int hf_bgp_update_mpls_label_value = -1;
static int hf_bgp_update_mpls_label_value_20bits = -1;
static int hf_bgp_update_mpls_traffic_class = -1;
static int hf_bgp_update_mpls_bottom_stack = -1;
/* BGP update path attribute SSA SAFI Specific attribute (deprecated should we keep it ?) */
@ -7067,13 +7069,23 @@ dissect_bgp_update_ext_com(proto_tree *parent_tree, tvbuff_t *tvb, guint16 tlen,
break;
case BGP_EXT_COM_STYPE_EVPN_LABEL:
{
proto_item *ti;
proto_tree_add_item(community_tree, hf_bgp_ext_com_l2_esi_label_flag, tvb, offset+2, 1, ENC_BIG_ENDIAN);
/* Octets at offsets 3 and 4 are reserved perf RFC 7432 Section 7.5 */
proto_tree_add_item(community_tree, hf_bgp_update_mpls_label_value, tvb, offset+5, 3, ENC_BIG_ENDIAN);
ti = proto_tree_add_item(community_tree, hf_bgp_update_mpls_label_value_20bits, tvb, offset+5, 3, ENC_BIG_ENDIAN);
proto_item_set_generated(ti);
ti = proto_tree_add_item(community_tree, hf_bgp_update_mpls_traffic_class, tvb, offset+5, 3, ENC_BIG_ENDIAN);
proto_item_set_generated(ti);
ti = proto_tree_add_item(community_tree, hf_bgp_update_mpls_bottom_stack, tvb, offset+5, 3, ENC_BIG_ENDIAN);
proto_item_set_generated(ti);
proto_item_append_text(community_item, " %s, Label: %u",
(tvb_get_guint8(tvb, offset+2) & BGP_EXT_COM_ESI_LABEL_FLAGS) ? tfs_esi_label_flag.true_string : tfs_esi_label_flag.false_string,
tvb_get_ntoh24(tvb,offset+5));
tvb_get_ntoh24(tvb,offset+5) >> 4);
}
break;
case BGP_EXT_COM_STYPE_EVPN_IMP:
@ -9730,6 +9742,12 @@ proto_register_bgp(void)
{ &hf_bgp_update_mpls_label_value,
{ "MPLS Label", "bgp.update.path_attribute.mpls_label_value", FT_UINT24,
BASE_DEC, NULL, 0x0, NULL, HFILL}},
{ &hf_bgp_update_mpls_traffic_class,
{ "Traffic Class", "bgp.update.path_attribute.mpls_traffic_class", FT_UINT24,
BASE_HEX, NULL, BGP_MPLS_TRAFFIC_CLASS, NULL, HFILL}},
{ &hf_bgp_update_mpls_bottom_stack,
{ "Bottom-of-Stack", "bgp.update.path_attribute.mpls_bottom_stack", FT_BOOLEAN,
24, NULL, BGP_MPLS_BOTTOM_L_STACK, NULL, HFILL}},
{ &hf_bgp_pmsi_tunnel_rsvp_p2mp_id, /* RFC4875 section 19 */
{ "RSVP P2MP id", "bgp.update.path_attribute.pmsi.rsvp.id", FT_IPv4, BASE_NONE,
NULL, 0x0, NULL, HFILL}},