BGP: Add BGP-LS SR Local Block TLV (rfc9085)

- Add BGP-LS Prefix Attribute Flags TLV (rfc9085)
- Add BGP-LS Node/Link MSD (rfc8814)
- Add BGP-LS Link Local/Remote Identifiers TLV (rfc5307)
- Modified from error to warning for unsupported BGP-LS Attribute TLVs
This commit is contained in:
Taisuke Sasaki 2021-09-08 17:53:08 +09:00 committed by Wireshark GitLab Utility
parent 69176a0eff
commit 42372c0dfa
1 changed files with 225 additions and 2 deletions

View File

@ -755,6 +755,8 @@ static dissector_handle_t bgp_handle;
#define BGP_NLRI_TLV_MULTI_TOPOLOGY_ID 263
#define BGP_NLRI_TLV_OSPF_ROUTE_TYPE 264
#define BGP_NLRI_TLV_IP_REACHABILITY_INFORMATION 265
#define BGP_NLRI_TLV_NODE_MSD 266
#define BGP_NLRI_TLV_LINK_MSD 267
#define BGP_NLRI_TLV_AUTONOMOUS_SYSTEM 512
#define BGP_NLRI_TLV_BGP_LS_IDENTIFIER 513
@ -822,6 +824,7 @@ static dissector_handle_t bgp_handle;
/* draft-gredler-idr-bgp-ls-segment-routing-ext-01 */
#define BGP_LS_SR_TLV_SR_CAPABILITY 1034
#define BGP_LS_SR_TLV_SR_ALGORITHM 1035
#define BGP_LS_SR_TLV_SR_LOCAL_BLOCK 1036
#define BGP_LS_SR_TLV_ADJ_SID 1099
#define BGP_LS_SR_TLV_LAN_ADJ_SID 1100
#define BGP_LS_SR_TLV_PREFIX_SID 1158
@ -835,6 +838,7 @@ static dissector_handle_t bgp_handle;
#define BGP_LS_SR_SUBTLV_BINDING_IPV4_BAK_ERO 1166
#define BGP_LS_SR_SUBTLV_BINDING_IPV6_BAK_ERO 1167
#define BGP_LS_SR_SUBTLV_BINDING_UNNUM_IFID_BAK_ERO 1168
#define BGP_LS_SR_TLV_PREFIX_ATTR_FLAGS 1170
/* RFC8571 BGP-LS Advertisement of IGP TE Metric Extensions */
#define BGP_LS_IGP_TE_METRIC_DELAY 1114
@ -902,6 +906,26 @@ static dissector_handle_t bgp_handle;
#define BGP_LS_SR_CAPABILITY_FLAG_V 0x40
#define BGP_LS_SR_CAPABILITY_FLAG_H 0x20
/* Prefix Attribute Flags TLV flags, rfc9085:
0 1 2 3 4 5 6 7
+--+--+--+--+--+--+--+--+
if Protocol-ID is IS-IS |X |R |N |E | | | | | rfc7794,rfc9088
+--+--+--+--+--+--+--+--+
0 1 2 3 4 5 6 7
+--+--+--+--+--+--+--+--+
if Protocol-ID is OSPF |A |N |E | | | | | | rfc7684,rfc9089
+--+--+--+--+--+--+--+--+
*/
#define BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_XI 0x80
#define BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_RI 0x40
#define BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_NI 0x20
#define BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_EI 0x10
#define BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_AO 0x80
#define BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_NO 0x40
#define BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_EO 0x20
/* BGP Prefix-SID TLV type */
#define BGP_PREFIX_SID_TLV_LABEL_INDEX 1 /* Label-Index [RFC8669] */
#define BGP_PREFIX_SID_TLV_2 2 /* Deprecated [RFC8669] */
@ -1711,6 +1735,18 @@ static const value_string link_state_prefix_descriptors_ospf_route_type[] = {
{0, NULL}
};
/* Link state IGP MSD Type: https://www.iana.org/assignments/igp-parameters/igp-parameters.xhtml */
static const value_string igp_msd_types[] = {
{ 0, "Reserved" },
{ 1, "Base MPLS Imposition MSD" },
{ 2, "ERLD-MSD" },
{ 41, "SRH Max SL" },
{ 42, "SRH Max End Pop" },
{ 44, "SRH Max H.Encaps" },
{ 45, "SRH Max End D" },
{ 0, NULL }
};
/* NLRI type value_string as define in BGP flow spec RFC */
static const value_string flowspec_nlri_opvaluepair_type[] = {
@ -2278,6 +2314,11 @@ static int hf_bgp_ls_sr_tlv_capabilities_sid_label = -1;
static int hf_bgp_ls_sr_tlv_capabilities_sid_index = -1;
static int hf_bgp_ls_sr_tlv_algorithm = -1;
static int hf_bgp_ls_sr_tlv_algorithm_value = -1;
static int hf_bgp_ls_sr_tlv_local_block = -1; /* 1036 */
static int hf_bgp_ls_sr_tlv_local_block_flags = -1;
static int hf_bgp_ls_sr_tlv_local_block_range_size = -1;
static int hf_bgp_ls_sr_tlv_local_block_sid_label = -1;
static int hf_bgp_ls_sr_tlv_local_block_sid_index = -1;
static int hf_bgp_ls_sr_tlv_prefix_sid = -1;
static int hf_bgp_ls_sr_tlv_prefix_sid_flags = -1;
static int hf_bgp_ls_sr_tlv_prefix_sid_flags_r = -1;
@ -2305,6 +2346,16 @@ static int hf_bgp_ls_sr_tlv_adjacency_sid_flags_so = -1;
static int hf_bgp_ls_sr_tlv_adjacency_sid_weight = -1;
static int hf_bgp_ls_sr_tlv_adjacency_sid_label = -1;
static int hf_bgp_ls_sr_tlv_adjacency_sid_index = -1;
static int hf_bgp_ls_sr_tlv_prefix_attr_flags = -1; /* 1170 */
static int hf_bgp_ls_sr_tlv_prefix_attr_flags_flags = -1;
static int hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_unknown= -1;
static int hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_ao = -1;
static int hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_no = -1;
static int hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_eo = -1;
static int hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_xi = -1;
static int hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_ri = -1;
static int hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_ni = -1;
static int hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_ei = -1;
/* RFC7752 TLVs */
static int hf_bgp_ls_tlv_local_node_descriptors = -1; /* 256 */
@ -2317,6 +2368,10 @@ static int hf_bgp_ls_tlv_ipv6_neighbor_address = -1; /* 262 */
static int hf_bgp_ls_tlv_multi_topology_id = -1; /* 263 */
static int hf_bgp_ls_tlv_ospf_route_type = -1; /* 264 */
static int hf_bgp_ls_tlv_ip_reachability_information = -1; /* 265 */
static int hf_bgp_ls_tlv_node_msd = -1; /* 266 */
static int hf_bgp_ls_tlv_link_msd = -1; /* 267 */
static int hf_bgp_ls_tlv_igp_msd_type = -1;
static int hf_bgp_ls_tlv_igp_msd_value = -1;
static int hf_bgp_ls_tlv_autonomous_system = -1; /* 512 */
static int hf_bgp_ls_tlv_autonomous_system_id = -1;
@ -4780,6 +4835,7 @@ decode_link_state_attribute_tlv(proto_tree *tree, tvbuff_t *tvb, gint offset, pa
guint32 tmp32;
gfloat tmp_float;
guint32 mask;
gint local_offset, local_length;
int n;
proto_item* tlv_item;
@ -4911,6 +4967,44 @@ decode_link_state_attribute_tlv(proto_tree *tree, tvbuff_t *tvb, gint offset, pa
}
break;
case BGP_LS_SR_TLV_SR_LOCAL_BLOCK:
{
gint offset2;
gint remaining_data;
tlv_item = proto_tree_add_item(tree, hf_bgp_ls_sr_tlv_local_block, tvb, offset, length + 4, ENC_NA);
tlv_tree = proto_item_add_subtree(tlv_item, ett_bgp_link_state);
proto_tree_add_item(tlv_tree, hf_bgp_ls_type, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_tree, hf_bgp_ls_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_tree, hf_bgp_ls_sr_tlv_local_block_flags, tvb, offset + 4, 1, ENC_NA);
/* past flags and reserved byte, we got one or more range + SID/Label Sub-TLV entries */
offset2 = offset + 4 + 2;
remaining_data = length - 2;
while (remaining_data > 0) {
guint16 sid_len = 0;
/* parse and consume the range field */
proto_tree_add_item(tlv_tree, hf_bgp_ls_sr_tlv_local_block_range_size, tvb, offset2, 3, ENC_BIG_ENDIAN);
offset2 += 3;
/* parse and consume type/len fields */
proto_tree_add_item(tlv_tree, hf_bgp_ls_type, tvb, offset2, 2, ENC_BIG_ENDIAN);
offset2 += 2;
proto_tree_add_item(tlv_tree, hf_bgp_ls_length, tvb, offset2, 2, ENC_BIG_ENDIAN);
sid_len = tvb_get_ntohs(tvb, offset2);
offset2 += 2;
if (sid_len == 3) {
/* parse and consume the SID/Label field */
proto_tree_add_item(tlv_tree, hf_bgp_ls_sr_tlv_local_block_sid_label, tvb, offset2, 3, ENC_BIG_ENDIAN);
offset2 += 3;
remaining_data -= 10;
} else {
/* parse and consume the SID/Index field */
proto_tree_add_item(tlv_tree, hf_bgp_ls_sr_tlv_local_block_sid_index, tvb, offset2, 4, ENC_BIG_ENDIAN);
offset2 += 4;
remaining_data -= 11;
}
}
}
break;
case BGP_LS_SR_TLV_SR_ALGORITHM:
{
gint offset2;
@ -4931,6 +5025,25 @@ decode_link_state_attribute_tlv(proto_tree *tree, tvbuff_t *tvb, gint offset, pa
break;
/* NODE & LINK ATTRIBUTE TLVs */
case BGP_NLRI_TLV_NODE_MSD:
case BGP_NLRI_TLV_LINK_MSD:
tlv_item = proto_tree_add_item(tree,
(type == BGP_NLRI_TLV_NODE_MSD ?
hf_bgp_ls_tlv_node_msd : hf_bgp_ls_tlv_link_msd),
tvb, offset, length + 4, ENC_NA);
tlv_tree = proto_item_add_subtree(tlv_item, ett_bgp_mp_reach_nlri);
proto_tree_add_item(tlv_tree, hf_bgp_ls_type, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_tree, hf_bgp_ls_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
local_offset = offset + 4;
local_length = length;
while (local_length >= 2) {
proto_tree_add_item(tlv_tree, hf_bgp_ls_tlv_igp_msd_type, tvb, local_offset, 1, ENC_NA);
proto_tree_add_item(tlv_tree, hf_bgp_ls_tlv_igp_msd_value, tvb, local_offset+1, 1, ENC_NA);
local_length -= 2;
local_offset += 2;
}
break;
case BGP_NLRI_TLV_IPV4_ROUTER_ID_OF_LOCAL_NODE:
tlv_item = proto_tree_add_item(tree, hf_bgp_ls_tlv_ipv4_router_id_of_local_node, tvb, offset, length+4, ENC_NA);
tlv_tree = proto_item_add_subtree(tlv_item, ett_bgp_link_state);
@ -4957,6 +5070,23 @@ decode_link_state_attribute_tlv(proto_tree *tree, tvbuff_t *tvb, gint offset, pa
break;
/* Link Attribute TLVs */
case BGP_NLRI_TLV_LINK_LOCAL_REMOTE_IDENTIFIERS:
if (length != BGP_NLRI_TLV_LEN_LINK_LOCAL_REMOTE_IDENTIFIERS) {
expert_add_info_format(pinfo, tree, &ei_bgp_ls_error,
"Unexpected Link Local/Remote Identifiers TLV's length (%u), it must be %u bytes!",
length, BGP_NLRI_TLV_LEN_LINK_LOCAL_REMOTE_IDENTIFIERS);
break;
}
tlv_item = proto_tree_add_item(tree,
hf_bgp_ls_tlv_link_local_remote_identifiers, tvb, offset,
length + 4, ENC_NA);
tlv_tree = proto_item_add_subtree(tlv_item, ett_bgp_mp_reach_nlri);
proto_tree_add_item(tlv_tree, hf_bgp_ls_type, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_tree, hf_bgp_ls_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_tree, hf_bgp_ls_nlri_link_local_identifier, tvb, offset + 4, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_tree, hf_bgp_ls_nlri_link_remote_identifier, tvb, offset + 8, 4, ENC_BIG_ENDIAN);
break;
case BGP_NLRI_TLV_IPV4_ROUTER_ID_OF_REMOTE_NODE:
tlv_item = proto_tree_add_item(tree, hf_bgp_ls_tlv_ipv4_router_id_of_remote_node, tvb, offset, length+4, ENC_NA);
tlv_tree = proto_item_add_subtree(tlv_item, ett_bgp_link_state);
@ -5412,6 +5542,42 @@ decode_link_state_attribute_tlv(proto_tree *tree, tvbuff_t *tvb, gint offset, pa
case BGP_LS_SR_TLV_BINDING_SID:
break;
case BGP_LS_SR_TLV_PREFIX_ATTR_FLAGS:
tlv_item = proto_tree_add_item(tree, hf_bgp_ls_sr_tlv_prefix_attr_flags, tvb, offset, length+4, ENC_NA);
tlv_tree = proto_item_add_subtree(tlv_item, ett_bgp_link_state);
proto_tree_add_item(tlv_tree, hf_bgp_ls_type, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv_tree, hf_bgp_ls_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
if (protocol_id == BGP_LS_NLRI_PROTO_ID_OSPF) {
/* rfc7684, rfc9089 */
static int * const prefix_attr_ospf_flags[] = {
&hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_ao,
&hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_no,
&hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_eo,
NULL
};
proto_tree_add_bitmask(tlv_tree, tvb, offset + 4, hf_bgp_ls_sr_tlv_prefix_attr_flags_flags,
ett_bgp_link_state, prefix_attr_ospf_flags, ENC_BIG_ENDIAN);
} else if (protocol_id == BGP_LS_NLRI_PROTO_ID_IS_IS_LEVEL_1 ||
protocol_id == BGP_LS_NLRI_PROTO_ID_IS_IS_LEVEL_2) {
/* rfc7794, rfc9088 */
static int * const prefix_attr_isis_flags[] = {
&hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_xi,
&hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_ri,
&hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_ni,
&hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_ei,
NULL
};
proto_tree_add_bitmask(tlv_tree, tvb, offset + 4, hf_bgp_ls_sr_tlv_prefix_attr_flags_flags,
ett_bgp_link_state, prefix_attr_isis_flags, ENC_BIG_ENDIAN);
} else {
proto_tree_add_item(tlv_tree, hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_unknown,
tvb, offset + 4, tvb_get_guint16(tvb, offset + 2, ENC_BIG_ENDIAN), ENC_NA);
expert_add_info_format(pinfo, tlv_tree, &ei_bgp_ls_warn,
"Unknown Protocol-ID (%u) for Prefix Attribute Flags TLV",
protocol_id);
}
break;
case BGP_LS_IGP_TE_METRIC_DELAY:
tlv_item = proto_tree_add_item(tree, hf_bgp_ls_igp_te_metric_delay, tvb, offset, length+4, ENC_NA);
tlv_tree = proto_item_add_subtree(tlv_item, ett_bgp_link_state);
@ -5472,8 +5638,8 @@ decode_link_state_attribute_tlv(proto_tree *tree, tvbuff_t *tvb, gint offset, pa
break;
default:
expert_add_info_format(pinfo, tree, &ei_bgp_ls_error,
"Unknown Prefix Descriptor TLV Code (%u)!", type);
expert_add_info_format(pinfo, tree, &ei_bgp_ls_warn,
"Unknown BGP-LS Attribute TLV Code (%u)!", type);
break;
}
return length + 4;
@ -11803,6 +11969,18 @@ proto_register_bgp(void)
{ &hf_bgp_ls_tlv_ipv6_neighbor_address,
{ "IPv6 neighbor address TLV", "bgp.ls.tlv.ipv6_neighbor_address", FT_NONE,
BASE_NONE, NULL, 0x0, NULL, HFILL}},
{ &hf_bgp_ls_tlv_node_msd,
{ "Node MSD", "bgp.ls.tlv.node_msd", FT_NONE,
BASE_NONE, NULL, 0x0, NULL, HFILL}},
{ &hf_bgp_ls_tlv_link_msd,
{ "Link MSD", "bgp.ls.tlv.link_msd", FT_NONE,
BASE_NONE, NULL, 0x0, NULL, HFILL}},
{ &hf_bgp_ls_tlv_igp_msd_type,
{ "MSD Type", "bgp.ls.tlv.igp_msd_type", FT_UINT8,
BASE_DEC, VALS(igp_msd_types), 0x0, NULL, HFILL }},
{ &hf_bgp_ls_tlv_igp_msd_value,
{ "MSD Value", "bgp.ls.tlv.igp_msd_value", FT_UINT8,
BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_bgp_ls_tlv_multi_topology_id,
{ "Multi Topology ID TLV", "bgp.ls.tlv.multi_topology_id", FT_NONE,
BASE_NONE, NULL, 0x0, NULL, HFILL}},
@ -12118,6 +12296,21 @@ proto_register_bgp(void)
{ &hf_bgp_ls_sr_tlv_algorithm_value,
{ "SR Algorithm", "bgp.ls.sr.tlv.algorithm.value", FT_UINT8,
BASE_DEC, NULL, 0x0, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_local_block,
{ "SR Local Block", "bgp.ls.sr.tlv.local_block", FT_NONE,
BASE_NONE, NULL, 0x0, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_local_block_flags,
{ "Flags", "bgp.ls.sr.tlv.local_block.flags", FT_UINT8,
BASE_HEX, NULL, 0x0, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_local_block_range_size,
{ "Range Size", "bgp.ls.sr.tlv.local_block.range_size", FT_UINT24,
BASE_DEC, NULL, 0x0, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_local_block_sid_label,
{ "From Label", "bgp.ls.sr.tlv.local_block.sid.label", FT_UINT24,
BASE_DEC, NULL, 0x0FFFFF, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_local_block_sid_index,
{ "From Index", "bgp.ls.sr.tlv.local_block.sid.index", FT_UINT32,
BASE_DEC, NULL, 0x0, NULL, HFILL}},
/* Prefix Attribute TLVs */
{ &hf_bgp_ls_sr_tlv_prefix_sid,
{ "Prefix SID TLV", "bgp.ls.sr.tlv.prefix.sid", FT_NONE,
@ -12158,6 +12351,36 @@ proto_register_bgp(void)
{ &hf_bgp_ls_sr_tlv_prefix_sid_index,
{ "SID/Index", "bgp.ls.sr.tlv.prefix.sid.index", FT_UINT32,
BASE_DEC, NULL, 0x0, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_prefix_attr_flags,
{ "Prefix Attribute Flags TLV", "bgp.ls.sr.tlv.prefix.attribute_flags", FT_NONE,
BASE_NONE, NULL, 0x0, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_prefix_attr_flags_flags,
{ "Flags", "bgp.ls.sr.tlv.prefix.attribute_flags.flags", FT_UINT8,
BASE_HEX, NULL, 0x0, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_unknown,
{ "Flags", "bgp.ls.sr.tlv_prefix.attribute_flags.flags.unknown", FT_BYTES,
SEP_SPACE, NULL, 0x0,NULL, HFILL }},
{ &hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_ao,
{ "Attach (A)", "bgp.ls.sr.tlv.prefix.attribute_flags.flags.a", FT_BOOLEAN,
8, TFS(&tfs_set_notset), BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_AO, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_no,
{ "Node (N)", "bgp.ls.sr.tlv.prefix.attribute_flags.flags.n", FT_BOOLEAN,
8, TFS(&tfs_set_notset), BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_NO, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_eo,
{ "ELC (E)", "bgp.ls.sr.tlv.prefix.attribute_flags.flags.e", FT_BOOLEAN,
8, TFS(&tfs_set_notset), BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_EO, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_xi,
{ "External Prefix (X)", "bgp.ls.sr.tlv.prefix.attribute_flags.flags.x", FT_BOOLEAN,
8, TFS(&tfs_set_notset), BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_XI, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_ri,
{ "Re-advertisement (X)", "bgp.ls.sr.tlv.prefix.attribute_flags.flags.r", FT_BOOLEAN,
8, TFS(&tfs_set_notset), BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_RI, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_ni,
{ "Node (N)", "bgp.ls.sr.tlv.prefix.attribute_flags.flags.n", FT_BOOLEAN,
8, TFS(&tfs_set_notset), BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_NI, NULL, HFILL}},
{ &hf_bgp_ls_sr_tlv_prefix_attr_flags_flags_ei,
{ "ELC (E)", "bgp.ls.sr.tlv.prefix.attribute_flags.flags.e", FT_BOOLEAN,
8, TFS(&tfs_set_notset), BGP_LS_SR_PREFIX_ATTR_FLAGS_FLAG_EI, NULL, HFILL}},
/* Adjacency Attribute TLVs */
{ &hf_bgp_ls_sr_tlv_adjacency_sid,
{ "Adjacency SID TLV", "bgp.ls.sr.tlv.adjacency.sid", FT_NONE,