[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:
parent
cfebad6a11
commit
630d93e2fd
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user