summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <donaldsharp72@gmail.com>2023-12-10 14:31:40 -0500
committerGitHub <noreply@github.com>2023-12-10 14:31:40 -0500
commitf6864ec67d5e66f7c034de0b10a1a8809cf5e5f4 (patch)
tree1bb735d6b4801fe7eb2a170854917677aaa6f697
parentfff267e4eed05b43d9b2e62b442809cfe5d1af6d (diff)
parent397dbbcae6083a00f30ad8310160650ec7ac7a87 (diff)
Merge pull request #14962 from Orange-OpenSource/ospf-te
ospfd: Correct SID check size
-rw-r--r--ospfd/ospf_ext.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/ospfd/ospf_ext.c b/ospfd/ospf_ext.c
index 75b58035a3..d82c2146c7 100644
--- a/ospfd/ospf_ext.c
+++ b/ospfd/ospf_ext.c
@@ -1734,8 +1734,12 @@ static uint16_t show_vty_ext_link_adj_sid(struct vty *vty,
struct tlv_header *tlvh)
{
struct ext_subtlv_adj_sid *top = (struct ext_subtlv_adj_sid *)tlvh;
+ uint8_t tlv_size;
- check_tlv_size(EXT_SUBTLV_ADJ_SID_SIZE, "Adjacency SID");
+ tlv_size = CHECK_FLAG(top->flags, EXT_SUBTLV_LINK_ADJ_SID_VFLG)
+ ? SID_LABEL_SIZE(EXT_SUBTLV_ADJ_SID_SIZE)
+ : SID_INDEX_SIZE(EXT_SUBTLV_ADJ_SID_SIZE);
+ check_tlv_size(tlv_size, "Adjacency SID");
vty_out(vty,
" Adj-SID Sub-TLV: Length %u\n\tFlags: 0x%x\n\tMT-ID:0x%x\n\tWeight: 0x%x\n\t%s: %u\n",
@@ -1755,8 +1759,12 @@ static uint16_t show_vty_ext_link_lan_adj_sid(struct vty *vty,
{
struct ext_subtlv_lan_adj_sid *top =
(struct ext_subtlv_lan_adj_sid *)tlvh;
+ uint8_t tlv_size;
- check_tlv_size(EXT_SUBTLV_LAN_ADJ_SID_SIZE, "Lan-Adjacency SID");
+ tlv_size = CHECK_FLAG(top->flags, EXT_SUBTLV_LINK_ADJ_SID_VFLG)
+ ? SID_LABEL_SIZE(EXT_SUBTLV_LAN_ADJ_SID_SIZE)
+ : SID_INDEX_SIZE(EXT_SUBTLV_LAN_ADJ_SID_SIZE);
+ check_tlv_size(tlv_size, "LAN-Adjacency SID");
vty_out(vty,
" LAN-Adj-SID Sub-TLV: Length %u\n\tFlags: 0x%x\n\tMT-ID:0x%x\n\tWeight: 0x%x\n\tNeighbor ID: %pI4\n\t%s: %u\n",
@@ -1867,8 +1875,12 @@ static uint16_t show_vty_ext_pref_pref_sid(struct vty *vty,
{
struct ext_subtlv_prefix_sid *top =
(struct ext_subtlv_prefix_sid *)tlvh;
+ uint8_t tlv_size;
- check_tlv_size(EXT_SUBTLV_PREFIX_SID_SIZE, "Prefix SID");
+ tlv_size = CHECK_FLAG(top->flags, EXT_SUBTLV_PREFIX_SID_VFLG)
+ ? SID_LABEL_SIZE(EXT_SUBTLV_PREFIX_SID_SIZE)
+ : SID_INDEX_SIZE(EXT_SUBTLV_PREFIX_SID_SIZE);
+ check_tlv_size(tlv_size, "Prefix SID");
vty_out(vty,
" Prefix SID Sub-TLV: Length %u\n\tAlgorithm: %u\n\tFlags: 0x%x\n\tMT-ID:0x%x\n\t%s: %u\n",