[staticroutebfd] fix ipv6 letter case issue (#15765)

*use lower case for IPv6 address as internal key and bfd session key. fixes #15764

Why I did it
*staticroutebfd uses the IPv6 address string as a key to create bfd session and cache the bfd sessions using it as a key.
When the IPv6 address string has uppercase letter in the static route nexthop list, the string with uppercase letter key is stored in the cache, but the BFD STATE_DB uses lowercase for IPv6 address, so when the staticroutebfd get the bfd state event, it cannot find the bfd session in its local cache because of the letter case.
This commit is contained in:
Baorong Liu 2023-07-10 10:14:11 -07:00 committed by mssonicbld
parent cfebad6a11
commit 630d93e2fd

View File

@ -94,6 +94,82 @@ def intf_setup(dut):
{},
{}
)
set_del_test(dut, "intf",
"SET",
("if1|2603:10E2:400:1::1/64",{}
),
{},
{}
)
set_del_test(dut, "intf",
"SET",
("if2|2603:10E2:400:2::1/64",{}
),
{},
{}
)
set_del_test(dut, "intf",
"SET",
("if3|2603:10E2:400:3::1/64",{}
),
{},
{}
)
def test_set_del_ipv6():
dut = constructor()
intf_setup(dut)
set_del_test(dut, "srt",
"SET",
("2603:10e2:400::4/128", {
"bfd": "true",
"ifname": "if1, if2, if3",
"nexthop": "2603:10E2:400:1::2,2603:10E2:400:2::2,2603:10e2:400:3::2"
}),
{
"set_default:default:2603:10e2:400:1::2" : {'multihop': 'true', 'rx_interval': '50', 'tx_interval': '50', 'multiplier': '3', 'local_addr': '2603:10E2:400:1::1'},
"set_default:default:2603:10e2:400:2::2" : {'multihop': 'true', 'rx_interval': '50', 'tx_interval': '50', 'multiplier': '3', 'local_addr': '2603:10E2:400:2::1'},
"set_default:default:2603:10e2:400:3::2" : {'multihop': 'true', 'rx_interval': '50', 'tx_interval': '50', 'multiplier': '3', 'local_addr': '2603:10E2:400:3::1'}
},
{}
)
set_del_test(dut, "bfd",
"SET",
("2603:10e2:400:1::2", {
"state": "Up"
}),
{},
{'set_default:2603:10e2:400::4/128': {'nexthop': '2603:10e2:400:1::2', 'ifname': 'if1', 'nexthop-vrf': 'default', 'expiry': 'false'}}
)
set_del_test(dut, "bfd",
"SET",
("2603:10e2:400:2::2", {
"state": "Up"
}),
{},
{'set_default:2603:10e2:400::4/128': {'nexthop': '2603:10e2:400:1::2,2603:10e2:400:2::2', 'ifname': 'if1,if2', 'nexthop-vrf': 'default,default', 'expiry': 'false'}}
)
set_del_test(dut, "bfd",
"SET",
("2603:10e2:400:3::2", {
"state": "Up"
}),
{},
{'set_default:2603:10e2:400::4/128': {'nexthop': '2603:10e2:400:1::2,2603:10e2:400:2::2,2603:10e2:400:3::2', 'ifname': 'if1,if2,if3', 'nexthop-vrf': 'default,default,default', 'expiry': 'false'}}
)
set_del_test(dut, "srt",
"DEL",
("2603:10e2:400::4/128", { }),
{
"del_default:default:2603:10e2:400:1::2" : {},
"del_default:default:2603:10e2:400:2::2" : {},
"del_default:default:2603:10e2:400:3::2" : {}
},
{'del_default:2603:10e2:400::4/128': { }}
)
set_del_test(dut, "intf",
"SET",