@@ -36,11 +36,15 @@ def setUpClass(cls):
36
36
# ensure we can also run this test on a live system - so lets clean
37
37
# out the current configuration :)
38
38
cls .cli_delete (cls , base_path )
39
+ cls .cli_delete (cls , ['policy' , 'prefix-list' ])
40
+ cls .cli_delete (cls , ['policy' , 'prefix-list6' ])
39
41
40
42
def tearDown (self ):
41
43
# always destroy the entire babel configuration to make the processes
42
44
# life as hard as possible
43
45
self .cli_delete (base_path )
46
+ self .cli_delete (['policy' , 'prefix-list' ])
47
+ self .cli_delete (['policy' , 'prefix-list6' ])
44
48
self .cli_commit ()
45
49
46
50
# check process health and continuity
@@ -127,5 +131,88 @@ def test_babel_basic(self):
127
131
self .assertIn (f' babel resend-delay { resend_delay } ' , frrconfig )
128
132
self .assertIn (f' babel smoothing-half-life { smoothing_half_life } ' , frrconfig )
129
133
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
+
130
217
if __name__ == '__main__' :
131
218
unittest .main (verbosity = 2 )
0 commit comments