Skip to content

Commit 1686dac

Browse files
committed
babel: T6866: IPv6 distribute-lists in access-list6 format have names not numbers
1 parent 02a3eaf commit 1686dac

File tree

2 files changed

+95
-14
lines changed

2 files changed

+95
-14
lines changed

interface-definitions/include/rip/access-list6.xml.i

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,25 @@
77
<leafNode name="in">
88
<properties>
99
<help>Access list to apply to input packets</help>
10-
<valueHelp>
11-
<format>u32</format>
12-
<description>Access list to apply to input packets</description>
13-
</valueHelp>
1410
<completionHelp>
1511
<path>policy access-list6</path>
1612
</completionHelp>
17-
<constraint>
18-
<validator name="numeric" argument="--range 0-4294967295"/>
19-
</constraint>
13+
<valueHelp>
14+
<format>txt</format>
15+
<description>Name of IPv6 access-list</description>
16+
</valueHelp>
2017
</properties>
2118
</leafNode>
2219
<leafNode name="out">
2320
<properties>
2421
<help>Access list to apply to output packets</help>
25-
<valueHelp>
26-
<format>u32</format>
27-
<description>Access list to apply to output packets</description>
28-
</valueHelp>
2922
<completionHelp>
3023
<path>policy access-list6</path>
3124
</completionHelp>
32-
<constraint>
33-
<validator name="numeric" argument="--range 0-4294967295"/>
34-
</constraint>
25+
<valueHelp>
26+
<format>txt</format>
27+
<description>Name of IPv6 access-list</description>
28+
</valueHelp>
3529
</properties>
3630
</leafNode>
3731
</children>

smoketest/scripts/cli/test_protocols_babel.py

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,15 @@ def setUpClass(cls):
3636
# ensure we can also run this test on a live system - so lets clean
3737
# out the current configuration :)
3838
cls.cli_delete(cls, base_path)
39+
cls.cli_delete(cls, ['policy', 'prefix-list'])
40+
cls.cli_delete(cls, ['policy', 'prefix-list6'])
3941

4042
def tearDown(self):
4143
# always destroy the entire babel configuration to make the processes
4244
# life as hard as possible
4345
self.cli_delete(base_path)
46+
self.cli_delete(['policy', 'prefix-list'])
47+
self.cli_delete(['policy', 'prefix-list6'])
4448
self.cli_commit()
4549

4650
# check process health and continuity
@@ -127,5 +131,88 @@ def test_babel_basic(self):
127131
self.assertIn(f' babel resend-delay {resend_delay}', frrconfig)
128132
self.assertIn(f' babel smoothing-half-life {smoothing_half_life}', frrconfig)
129133

134+
def test_babel_distribute_list(self):
135+
access_list_in4 = '40'
136+
access_list_out4 = '50'
137+
access_list_in4_iface = '44'
138+
access_list_out4_iface = '55'
139+
access_list_in6 = 'AL-foo-in6'
140+
access_list_out6 = 'AL-foo-out6'
141+
142+
prefix_list_in4 = 'PL-foo-in4'
143+
prefix_list_out4 = 'PL-foo-out4'
144+
prefix_list_in6 = 'PL-foo-in6'
145+
prefix_list_out6 = 'PL-foo-out6'
146+
147+
self.cli_set(['policy', 'access-list', access_list_in4])
148+
self.cli_set(['policy', 'access-list', access_list_out4])
149+
self.cli_set(['policy', 'access-list6', access_list_in6])
150+
self.cli_set(['policy', 'access-list6', access_list_out6])
151+
152+
self.cli_set(['policy', 'access-list', f'{access_list_in4_iface}'])
153+
self.cli_set(['policy', 'access-list', f'{access_list_out4_iface}'])
154+
155+
self.cli_set(['policy', 'prefix-list', prefix_list_in4])
156+
self.cli_set(['policy', 'prefix-list', prefix_list_out4])
157+
self.cli_set(['policy', 'prefix-list6', prefix_list_in6])
158+
self.cli_set(['policy', 'prefix-list6', prefix_list_out6])
159+
160+
self.cli_set(base_path + ['distribute-list', 'ipv4', 'access-list', 'in', access_list_in4])
161+
self.cli_set(base_path + ['distribute-list', 'ipv4', 'access-list', 'out', access_list_out4])
162+
self.cli_set(base_path + ['distribute-list', 'ipv6', 'access-list', 'in', access_list_in6])
163+
self.cli_set(base_path + ['distribute-list', 'ipv6', 'access-list', 'out', access_list_out6])
164+
165+
self.cli_set(base_path + ['distribute-list', 'ipv4', 'prefix-list', 'in', prefix_list_in4])
166+
self.cli_set(base_path + ['distribute-list', 'ipv4', 'prefix-list', 'out', prefix_list_out4])
167+
self.cli_set(base_path + ['distribute-list', 'ipv6', 'prefix-list', 'in', prefix_list_in6])
168+
self.cli_set(base_path + ['distribute-list', 'ipv6', 'prefix-list', 'out', prefix_list_out6])
169+
170+
for interface in self._interfaces:
171+
self.cli_set(base_path + ['interface', interface])
172+
173+
self.cli_set(['policy', 'access-list6', f'{access_list_in6}-{interface}'])
174+
self.cli_set(['policy', 'access-list6', f'{access_list_out6}-{interface}'])
175+
176+
self.cli_set(['policy', 'prefix-list', f'{prefix_list_in4}-{interface}'])
177+
self.cli_set(['policy', 'prefix-list', f'{prefix_list_out4}-{interface}'])
178+
self.cli_set(['policy', 'prefix-list6', f'{prefix_list_in6}-{interface}'])
179+
self.cli_set(['policy', 'prefix-list6', f'{prefix_list_out6}-{interface}'])
180+
181+
tmp_path = base_path + ['distribute-list', 'ipv4', 'interface', interface]
182+
self.cli_set(tmp_path + ['access-list', 'in', f'{access_list_in4_iface}'])
183+
self.cli_set(tmp_path + ['access-list', 'out', f'{access_list_out4_iface}'])
184+
self.cli_set(tmp_path + ['prefix-list', 'in', f'{prefix_list_in4}-{interface}'])
185+
self.cli_set(tmp_path + ['prefix-list', 'out', f'{prefix_list_out4}-{interface}'])
186+
187+
tmp_path = base_path + ['distribute-list', 'ipv6', 'interface', interface]
188+
self.cli_set(tmp_path + ['access-list', 'in', f'{access_list_in6}-{interface}'])
189+
self.cli_set(tmp_path + ['access-list', 'out', f'{access_list_out6}-{interface}'])
190+
self.cli_set(tmp_path + ['prefix-list', 'in', f'{prefix_list_in6}-{interface}'])
191+
self.cli_set(tmp_path + ['prefix-list', 'out', f'{prefix_list_out6}-{interface}'])
192+
193+
self.cli_commit()
194+
195+
frrconfig = self.getFRRconfig('router babel', daemon=PROCESS_NAME)
196+
self.assertIn(f' distribute-list {access_list_in4} in', frrconfig)
197+
self.assertIn(f' distribute-list {access_list_out4} out', frrconfig)
198+
self.assertIn(f' ipv6 distribute-list {access_list_in6} in', frrconfig)
199+
self.assertIn(f' ipv6 distribute-list {access_list_out6} out', frrconfig)
200+
201+
self.assertIn(f' distribute-list prefix {prefix_list_in4} in', frrconfig)
202+
self.assertIn(f' distribute-list prefix {prefix_list_out4} out', frrconfig)
203+
self.assertIn(f' ipv6 distribute-list prefix {prefix_list_in6} in', frrconfig)
204+
self.assertIn(f' ipv6 distribute-list prefix {prefix_list_out6} out', frrconfig)
205+
206+
for interface in self._interfaces:
207+
self.assertIn(f' distribute-list {access_list_in4_iface} in {interface}', frrconfig)
208+
self.assertIn(f' distribute-list {access_list_out4_iface} out {interface}', frrconfig)
209+
self.assertIn(f' ipv6 distribute-list {access_list_in6}-{interface} in {interface}', frrconfig)
210+
self.assertIn(f' ipv6 distribute-list {access_list_out6}-{interface} out {interface}', frrconfig)
211+
212+
self.assertIn(f' distribute-list prefix {prefix_list_in4}-{interface} in {interface}', frrconfig)
213+
self.assertIn(f' distribute-list prefix {prefix_list_out4}-{interface} out {interface}', frrconfig)
214+
self.assertIn(f' ipv6 distribute-list prefix {prefix_list_in6}-{interface} in {interface}', frrconfig)
215+
self.assertIn(f' ipv6 distribute-list prefix {prefix_list_out6}-{interface} out {interface}', frrconfig)
216+
130217
if __name__ == '__main__':
131218
unittest.main(verbosity=2)

0 commit comments

Comments
 (0)