Skip to content

Commit cfebad6

Browse files
authored
[staticroutebfd]double commit for PR 15765 (#17973)
* [staticroutebfd]double commit pr 15765 * fix ut, change to single hop in ut
1 parent 6514cfa commit cfebad6

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed

src/sonic-bgpcfgd/staticroutebfd/main.py

+8
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ def static_route_split_key(key):
6666
:param key: key to split
6767
:return: valid, vrf name extracted from the key, ip prefix extracted from the key
6868
"""
69+
if key is None or len(key) == 0:
70+
return False, "", ""
71+
6972
l = tuple(key.split('|'))
7073

7174
if len(l) == 1:
@@ -376,6 +379,11 @@ def static_route_set_handler(self, key, data):
376379
log_err("invalid ip prefix for static route: '%s'"%(key))
377380
return True
378381

382+
#use lower case if there is letter in IPv6 address string
383+
if 'nexthop' in data:
384+
nh = data['nexthop']
385+
data['nexthop'] = nh.lower()
386+
379387
arg_list = lambda v: [x.strip() for x in v.split(',')] if len(v.strip()) != 0 else None
380388
bfd_field = arg_list(data['bfd']) if 'bfd' in data else ["false"]
381389

src/sonic-bgpcfgd/tests/test_static_rt_bfd.py

+77
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,83 @@ def intf_setup(dut):
9595
{}
9696
)
9797

98+
set_del_test(dut, "intf",
99+
"SET",
100+
("if1|2603:10E2:400:1::1/64",{}
101+
),
102+
{},
103+
{}
104+
)
105+
set_del_test(dut, "intf",
106+
"SET",
107+
("if2|2603:10E2:400:2::1/64",{}
108+
),
109+
{},
110+
{}
111+
)
112+
set_del_test(dut, "intf",
113+
"SET",
114+
("if3|2603:10E2:400:3::1/64",{}
115+
),
116+
{},
117+
{}
118+
)
119+
120+
def test_set_del_ipv6():
121+
dut = constructor()
122+
intf_setup(dut)
123+
124+
set_del_test(dut, "srt",
125+
"SET",
126+
("2603:10e2:400::4/128", {
127+
"bfd": "true",
128+
"ifname": "if1, if2, if3",
129+
"nexthop": "2603:10E2:400:1::2,2603:10E2:400:2::2,2603:10e2:400:3::2"
130+
}),
131+
{
132+
"set_default:default:2603:10e2:400:1::2" : {'multihop': 'false', 'rx_interval': '50', 'tx_interval': '50', 'multiplier': '3', 'local_addr': '2603:10E2:400:1::1'},
133+
"set_default:default:2603:10e2:400:2::2" : {'multihop': 'false', 'rx_interval': '50', 'tx_interval': '50', 'multiplier': '3', 'local_addr': '2603:10E2:400:2::1'},
134+
"set_default:default:2603:10e2:400:3::2" : {'multihop': 'false', 'rx_interval': '50', 'tx_interval': '50', 'multiplier': '3', 'local_addr': '2603:10E2:400:3::1'}
135+
},
136+
{}
137+
)
138+
139+
set_del_test(dut, "bfd",
140+
"SET",
141+
("2603:10e2:400:1::2", {
142+
"state": "Up"
143+
}),
144+
{},
145+
{'set_default:2603:10e2:400::4/128': {'nexthop': '2603:10e2:400:1::2', 'ifname': 'if1', 'nexthop-vrf': 'default', 'expiry': 'false'}}
146+
)
147+
set_del_test(dut, "bfd",
148+
"SET",
149+
("2603:10e2:400:2::2", {
150+
"state": "Up"
151+
}),
152+
{},
153+
{'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'}}
154+
)
155+
set_del_test(dut, "bfd",
156+
"SET",
157+
("2603:10e2:400:3::2", {
158+
"state": "Up"
159+
}),
160+
{},
161+
{'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'}}
162+
)
163+
164+
set_del_test(dut, "srt",
165+
"DEL",
166+
("2603:10e2:400::4/128", { }),
167+
{
168+
"del_default:default:2603:10e2:400:1::2" : {},
169+
"del_default:default:2603:10e2:400:2::2" : {},
170+
"del_default:default:2603:10e2:400:3::2" : {}
171+
},
172+
{'del_default:2603:10e2:400::4/128': { }}
173+
)
174+
98175
@patch('staticroutebfd.main.log_err')
99176
def test_invalid_key(mocked_log_err):
100177
dut = constructor()

0 commit comments

Comments
 (0)