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