summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2021-02-04 00:00:41 +0100
committerChristian Poessinger <christian@poessinger.com>2021-02-05 22:42:29 +0100
commit3dd78cddfe90851cb7a6891add8a0973d23da292 (patch)
treec26dc708d38edf330464f49ccdd4a6e4333f71dc /data
parent830688d0c523d6209091ed2fc9160e6ca70e62b9 (diff)
downloadvyos-1x-3dd78cddfe90851cb7a6891add8a0973d23da292.tar.gz
vyos-1x-3dd78cddfe90851cb7a6891add8a0973d23da292.zip
vrf: T2450: provide full protocol support in XML and Python with new CLI
Diffstat (limited to 'data')
-rw-r--r--data/configd-include.json1
-rw-r--r--data/templates/frr/vrf.frr.tmpl42
2 files changed, 43 insertions, 0 deletions
diff --git a/data/configd-include.json b/data/configd-include.json
index 751d8e012..c0263127a 100644
--- a/data/configd-include.json
+++ b/data/configd-include.json
@@ -40,6 +40,7 @@
"protocols_pim.py",
"protocols_rip.py",
"protocols_static_multicast.py",
+"protocols_vrf.py",
"salt-minion.py",
"service_console-server.py",
"service_ids_fastnetmon.py",
diff --git a/data/templates/frr/vrf.frr.tmpl b/data/templates/frr/vrf.frr.tmpl
new file mode 100644
index 000000000..1cb055962
--- /dev/null
+++ b/data/templates/frr/vrf.frr.tmpl
@@ -0,0 +1,42 @@
+!
+{% if vrf is defined and vrf is not none %}
+{% for vrf_name, vrf_config in vrf.items() %}
+vrf {{ vrf_name }}
+{% if vrf_config.static is defined and vrf_config.static is not none %}
+{# IPv4 routes #}
+{% if vrf_config.static.route is defined and vrf_config.static.route is not none %}
+{% for route, route_config in vrf_config.static.route.items() %}
+{% if route_config.blackhole is defined %}
+ ip route {{ route }} blackhole {{ route_config.blackhole.distance if route_config.blackhole.distance is defined }}
+{% elif route_config.interface is defined and route_config.interface is not none %}
+{% for interface, interface_config in route_config.interface.items() if interface_config.disable is not defined %}
+ ip route {{ route }} {{ interface }} {{ interface_config.distance if interface_config.distance is defined }} {{ 'nexthop-vrf ' + interface_config.vrf if interface_config.vrf is defined }}
+{% endfor %}
+{% elif route_config.next_hop is defined and route_config.next_hop is not none %}
+{% for next_hop, next_hop_config in route_config.next_hop.items() if next_hop_config.disable is not defined %}
+ ip route {{ route }} {{ next_hop }} {{ next_hop_config.interface if next_hop_config.interface is defined }} {{ next_hop_config.distance if next_hop_config.distance is defined }} {{ 'nexthop-vrf ' + next_hop_config.vrf if next_hop_config.vrf is defined }}
+{% endfor %}
+{% endif %}
+{% endfor %}
+{% endif %}
+{# IPv6 routes #}
+{% if vrf_config.static.route6 is defined and vrf_config.static.route6 is not none %}
+{% for route, route_config in vrf_config.static.route6.items() %}
+{% if route_config.blackhole is defined %}
+ ipv6 route {{ route }} blackhole {{ route_config.blackhole.distance if route_config.blackhole.distance is defined }}
+{% elif route_config.interface is defined and route_config.interface is not none %}
+{% for interface, interface_config in route_config.interface.items() if interface_config.disable is not defined %}
+ ipv6 route {{ route }} {{ interface }} {{ interface_config.distance if interface_config.distance is defined }} {{ 'nexthop-vrf ' + interface_config.vrf if interface_config.vrf is defined }}
+{% endfor %}
+{% elif route_config.next_hop is defined and route_config.next_hop is not none %}
+{% for next_hop, next_hop_config in route_config.next_hop.items() if next_hop_config.disable is not defined %}
+ ipv6 route {{ route }} {{ next_hop }} {{ next_hop_config.interface if next_hop_config.interface is defined }} {{ next_hop_config.distance if next_hop_config.distance is defined }} {{ 'nexthop-vrf ' + next_hop_config.vrf if next_hop_config.vrf is defined }}
+{% endfor %}
+{% endif %}
+
+{% endfor %}
+{% endif %}
+{% endif %}
+{% endfor %}
+{% endif %}
+!