74 lines
1.4 KiB
Django/Jinja
74 lines
1.4 KiB
Django/Jinja
#
|
|
# {{ ansible_managed }}
|
|
#
|
|
|
|
# Variables
|
|
define ffrl_as = {{ as_public_ffrl }};
|
|
define ffrl_nat_address = {{ ffrl_public_ipv4_nat | ipaddr('address') }};
|
|
|
|
# Routing Table
|
|
table ffrl;
|
|
|
|
# Functions
|
|
function is_ffrl_nat() {
|
|
return net ~ [
|
|
{{ ffrl_public_ipv4_nat | ipaddr('host') }}
|
|
];
|
|
}
|
|
|
|
function is_ffrl_tunnel_nets() {
|
|
return net ~ [
|
|
{% for peer_id, peer_value in ffrl_exit_server.iteritems() %}
|
|
{{ peer_value.tunnel_ipv4_network }}{{ "," if not loop.last else "" }}
|
|
{% endfor %}
|
|
];
|
|
}
|
|
|
|
# Filters
|
|
filter ebgp_ffrl_import_filter {
|
|
if is_default() then accept;
|
|
reject;
|
|
}
|
|
|
|
filter ebgp_ffrl_export_filter {
|
|
if is_ffrl_nat() then accept;
|
|
reject;
|
|
}
|
|
|
|
# Protocols
|
|
protocol direct ffrl_nat {
|
|
table ffrl;
|
|
interface "ffrl-nat";
|
|
import where is_ffrl_nat();
|
|
}
|
|
|
|
protocol direct ffrl_tunnels {
|
|
table ffrl;
|
|
interface "ffrl-*";
|
|
import where is_ffrl_tunnel_nets();
|
|
}
|
|
|
|
protocol kernel kernel_ffrl {
|
|
scan time 30;
|
|
import none;
|
|
export filter {
|
|
krt_prefsrc = ffrl_nat_address;
|
|
accept;
|
|
};
|
|
table ffrl;
|
|
kernel table ipt_internet;
|
|
};
|
|
|
|
# Templates
|
|
template bgp ffrl_uplink {
|
|
table ffrl;
|
|
local as mwu_as;
|
|
import keep filtered;
|
|
import filter ebgp_ffrl_import_filter;
|
|
export filter ebgp_ffrl_export_filter;
|
|
next hop self;
|
|
direct;
|
|
};
|
|
|
|
# Include FFRL IPv4 peers
|
|
include "ffrl_ipv4_peers.con?";
|