|
|
@ -1362,79 +1362,78 @@ policy {
|
|
|
|
|
|
|
|
|
|
|
|
{% if 'community_affects_route_maps' in pillar and 'site_codes' in pillar and 'community_affects_prepend_asn' in pillar %}
|
|
|
|
{% if 'community_affects_route_maps' in pillar and 'site_codes' in pillar and 'community_affects_prepend_asn' in pillar %}
|
|
|
|
{% for route_map_prefix,community_suffixes in pillar.get('community_affects',{}).items() %}
|
|
|
|
{% for route_map_prefix,community_suffixes in pillar.get('community_affects',{}).items() %}
|
|
|
|
{% for community_suffix in community_suffixes %}
|
|
|
|
{% for digit in "01239" %}
|
|
|
|
{% for digit in "01239" %}
|
|
|
|
community-list community_affects_65XX{{ digit }}_{{ route_map_prefix }} {
|
|
|
|
community-list community_affects_65XX{{ digit }}_{{ community_suffix }} {
|
|
|
|
{% for community_suffix in ["0"] + community_suffixes %}
|
|
|
|
|
|
|
|
{% set loop_parent = loop %}
|
|
|
|
{% for site_code in ['00'] + pillar['site_codes'] %}
|
|
|
|
{% for site_code in ['00'] + pillar['site_codes'] %}
|
|
|
|
rule {{ loop.index }} {
|
|
|
|
rule {{ loop_parent.index0 * 10 + loop.index }} {
|
|
|
|
action 'permit'
|
|
|
|
action 'permit'
|
|
|
|
regex 65{{ site_code }}{{ digit }}:{{ community_suffix }}
|
|
|
|
regex 65{{ site_code }}{{ digit }}:{{ community_suffix }}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{% endfor %}
|
|
|
|
{% endfor %}
|
|
|
|
}
|
|
|
|
{% endfor %}
|
|
|
|
{% endfor %}
|
|
|
|
}
|
|
|
|
{% endfor %}
|
|
|
|
{% endfor %}
|
|
|
|
{% for af in ['IPv4','IPv6'] %}
|
|
|
|
{% for af in ['IPv4','IPv6'] %}
|
|
|
|
{% for rm in pillar['community_affects_route_maps'] %}
|
|
|
|
{% for rm in pillar['community_affects_route_maps'] %}
|
|
|
|
route-map {{ route_map_prefix }}-{{ rm }}-{{ af }} {
|
|
|
|
route-map {{ route_map_prefix }}-{{ rm }}-{{ af }} {
|
|
|
|
{% for community_suffix in community_suffixes %}
|
|
|
|
rule {{ loop.index*10 }} {
|
|
|
|
rule {{ loop.index*10 }} {
|
|
|
|
match {
|
|
|
|
match {
|
|
|
|
community {
|
|
|
|
community {
|
|
|
|
community-list community_affects_65XX0_{{ route_map_prefix }}
|
|
|
|
community-list community_affects_65XX0_{{ community_suffix }}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
action deny
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
rule {{ loop.index*10 + 1 }} {
|
|
|
|
action deny
|
|
|
|
match {
|
|
|
|
}
|
|
|
|
community {
|
|
|
|
rule {{ loop.index*10 + 1 }} {
|
|
|
|
community-list community_affects_65XX1_{{ community_suffix }}
|
|
|
|
match {
|
|
|
|
}
|
|
|
|
community {
|
|
|
|
}
|
|
|
|
community-list community_affects_65XX1_{{ route_map_prefix }}
|
|
|
|
set {
|
|
|
|
|
|
|
|
as-path-prepend "{{ pillar['community_affects_prepend_asn'] }}"
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
call {{ rm }}-{{ af }}
|
|
|
|
|
|
|
|
action permit
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
rule {{ loop.index*10 + 2 }} {
|
|
|
|
set {
|
|
|
|
match {
|
|
|
|
as-path-prepend "{{ pillar['community_affects_prepend_asn'] }}"
|
|
|
|
community {
|
|
|
|
|
|
|
|
community-list community_affects_65XX2_{{ community_suffix }}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
set {
|
|
|
|
|
|
|
|
as-path-prepend "{{ pillar['community_affects_prepend_asn'] }} {{ pillar['community_affects_prepend_asn'] }}"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
call {{ rm }}-{{ af }}
|
|
|
|
|
|
|
|
action permit
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
rule {{ loop.index*10 + 3 }} {
|
|
|
|
call {{ rm }}-{{ af }}
|
|
|
|
match {
|
|
|
|
action permit
|
|
|
|
community {
|
|
|
|
}
|
|
|
|
community-list community_affects_65XX3_{{ community_suffix }}
|
|
|
|
rule {{ loop.index*10 + 2 }} {
|
|
|
|
}
|
|
|
|
match {
|
|
|
|
}
|
|
|
|
community {
|
|
|
|
set {
|
|
|
|
community-list community_affects_65XX2_{{ route_map_prefix }}
|
|
|
|
as-path-prepend "{{ pillar['community_affects_prepend_asn'] }} {{ pillar['community_affects_prepend_asn'] }} {{ pillar['community_affects_prepend_asn'] }}"
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
call {{ rm }}-{{ af }}
|
|
|
|
|
|
|
|
action permit
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
rule {{ loop.index*10 + 9 }} {
|
|
|
|
set {
|
|
|
|
match {
|
|
|
|
as-path-prepend "{{ pillar['community_affects_prepend_asn'] }} {{ pillar['community_affects_prepend_asn'] }}"
|
|
|
|
community {
|
|
|
|
}
|
|
|
|
community-list community_affects_65XX9_{{ community_suffix }}
|
|
|
|
call {{ rm }}-{{ af }}
|
|
|
|
}
|
|
|
|
action permit
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
rule {{ loop.index*10 + 3 }} {
|
|
|
|
|
|
|
|
match {
|
|
|
|
|
|
|
|
community {
|
|
|
|
|
|
|
|
community-list community_affects_65XX3_{{ route_map_prefix }}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
set {
|
|
|
|
}
|
|
|
|
community "additive no-export"
|
|
|
|
set {
|
|
|
|
|
|
|
|
as-path-prepend "{{ pillar['community_affects_prepend_asn'] }} {{ pillar['community_affects_prepend_asn'] }} {{ pillar['community_affects_prepend_asn'] }}"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
call {{ rm }}-{{ af }}
|
|
|
|
|
|
|
|
action permit
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
rule {{ loop.index*10 + 9 }} {
|
|
|
|
|
|
|
|
match {
|
|
|
|
|
|
|
|
community {
|
|
|
|
|
|
|
|
community-list community_affects_65XX9_{{ route_map_prefix }}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
call {{ rm }}-{{ af }}
|
|
|
|
|
|
|
|
action permit
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{% endfor %}
|
|
|
|
set {
|
|
|
|
|
|
|
|
community "additive no-export"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
call {{ rm }}-{{ af }}
|
|
|
|
|
|
|
|
action permit
|
|
|
|
|
|
|
|
}
|
|
|
|
rule 65535 {
|
|
|
|
rule 65535 {
|
|
|
|
match {
|
|
|
|
match {
|
|
|
|
{% if af == "IPv4" %}
|
|
|
|
{% if af == "IPv4" %}
|
|
|
|