26
26
}
27
27
}
28
28
29
+ global_constants_with_prefix_match_tag = {
30
+ "bgp" : {
31
+ "allow_list" : {
32
+ "enabled" : True ,
33
+ "default_pl_rules" : {
34
+ "v4" : [ "deny 0.0.0.0/0 le 17" ],
35
+ "v6" : [
36
+ "deny 0::/0 le 59" ,
37
+ "deny 0::/0 ge 65"
38
+ ]
39
+ },
40
+ "default_action" : "permit" ,
41
+ "drop_community" : "123:123" ,
42
+ "prefix_match_tag" : "1001"
43
+ }
44
+ }
45
+ }
46
+
29
47
@patch .dict ("sys.modules" , swsscommon = swsscommon_module_mock )
30
- def set_del_test (op , args , currect_config , expected_config , update_global_default_action = None ):
48
+ def set_del_test (op , args , currect_config , expected_config , update_global_default_action = None , update_constant_prefix_match_tag = False ):
31
49
from bgpcfgd .managers_allow_list import BGPAllowListMgr
32
50
set_del_test .push_list_called = False
33
51
def push_list (args ):
@@ -45,7 +63,7 @@ def push_list(args):
45
63
'directory' : Directory (),
46
64
'cfg_mgr' : cfg_mgr ,
47
65
'tf' : TemplateFabric (),
48
- 'constants' : deepcopy (global_constants ),
66
+ 'constants' : deepcopy (global_constants ) if not update_constant_prefix_match_tag else deepcopy ( global_constants_with_prefix_match_tag )
49
67
}
50
68
51
69
mgr = BGPAllowListMgr (common_objs , "CONFIG_DB" , "BGP_ALLOWED_PREFIXES" )
@@ -92,6 +110,39 @@ def test_set_handler_with_community():
92
110
' match community COMMUNITY_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_1010:2020' ,
93
111
]
94
112
)
113
+
114
+ def test_set_handler_with_community_and_prefix_match_tag ():
115
+ set_del_test (
116
+ "SET" ,
117
+ ("DEPLOYMENT_ID|5|1010:2020" , {
118
+ "prefixes_v4" : "10.20.30.0/24,30.50.0.0/16" ,
119
+ "prefixes_v6" : "fc00:20::/64,fc00:30::/64" ,
120
+ }),
121
+ [
122
+ 'route-map ALLOW_LIST_DEPLOYMENT_ID_5_V4 permit 65535' ,
123
+ ' set community 123:123 additive' ,
124
+ 'route-map ALLOW_LIST_DEPLOYMENT_ID_5_V6 permit 65535' ,
125
+ ' set community 123:123 additive'
126
+ ],
127
+ [
128
+ 'ip prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_1010:2020_V4 seq 10 deny 0.0.0.0/0 le 17' ,
129
+ 'ip prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_1010:2020_V4 seq 20 permit 10.20.30.0/24 le 32' ,
130
+ 'ip prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_1010:2020_V4 seq 30 permit 30.50.0.0/16 le 32' ,
131
+ 'ipv6 prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_1010:2020_V6 seq 10 deny ::/0 le 59' ,
132
+ 'ipv6 prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_1010:2020_V6 seq 20 deny ::/0 ge 65' ,
133
+ 'ipv6 prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_1010:2020_V6 seq 30 permit fc00:20::/64 le 128' ,
134
+ 'ipv6 prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_1010:2020_V6 seq 40 permit fc00:30::/64 le 128' ,
135
+ 'bgp community-list standard COMMUNITY_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_1010:2020 permit 1010:2020' ,
136
+ 'route-map ALLOW_LIST_DEPLOYMENT_ID_5_V4 permit 10' ,
137
+ ' match ip address prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_1010:2020_V4' ,
138
+ ' match community COMMUNITY_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_1010:2020' ,
139
+ 'route-map ALLOW_LIST_DEPLOYMENT_ID_5_V6 permit 10' ,
140
+ ' match ipv6 address prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_1010:2020_V6' ,
141
+ ' match community COMMUNITY_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_1010:2020' ,
142
+ ],
143
+ None , True
144
+ )
145
+
95
146
def test_set_handler_with_community_and_permit_action ():
96
147
set_del_test (
97
148
"SET" ,
@@ -188,6 +239,38 @@ def test_set_handler_no_community():
188
239
' match ipv6 address prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_empty_V6' ,
189
240
]
190
241
)
242
+
243
+ def test_set_handler_no_community_and_prefix_match_tag ():
244
+ set_del_test (
245
+ "SET" ,
246
+ ("DEPLOYMENT_ID|5" , {
247
+ "prefixes_v4" : "20.20.30.0/24,40.50.0.0/16" ,
248
+ "prefixes_v6" : "fc01:20::/64,fc01:30::/64" ,
249
+ }),
250
+ [
251
+ 'route-map ALLOW_LIST_DEPLOYMENT_ID_5_V4 permit 65535' ,
252
+ ' set community 123:123 additive' ,
253
+ 'route-map ALLOW_LIST_DEPLOYMENT_ID_5_V6 permit 65535' ,
254
+ ' set community 123:123 additive' ,
255
+ ],
256
+ [
257
+ 'ip prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_empty_V4 seq 10 deny 0.0.0.0/0 le 17' ,
258
+ 'ip prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_empty_V4 seq 20 permit 20.20.30.0/24 le 32' ,
259
+ 'ip prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_empty_V4 seq 30 permit 40.50.0.0/16 le 32' ,
260
+ 'ipv6 prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_empty_V6 seq 10 deny ::/0 le 59' ,
261
+ 'ipv6 prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_empty_V6 seq 20 deny ::/0 ge 65' ,
262
+ 'ipv6 prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_empty_V6 seq 30 permit fc01:20::/64 le 128' ,
263
+ 'ipv6 prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_empty_V6 seq 40 permit fc01:30::/64 le 128' ,
264
+ 'route-map ALLOW_LIST_DEPLOYMENT_ID_5_V4 permit 30000' ,
265
+ ' match ip address prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_empty_V4' ,
266
+ ' set tag 1001' ,
267
+ 'route-map ALLOW_LIST_DEPLOYMENT_ID_5_V6 permit 30000' ,
268
+ ' match ipv6 address prefix-list PL_ALLOW_LIST_DEPLOYMENT_ID_5_COMMUNITY_empty_V6' ,
269
+ ' set tag 1001' ,
270
+ ],
271
+ None ,True
272
+ )
273
+
191
274
def test_set_handler_no_community_with_permit_action ():
192
275
set_del_test (
193
276
"SET" ,
0 commit comments