From af623bcee48c6e495dd188417b65c60c37691cf3 Mon Sep 17 00:00:00 2001 From: Simon Jones Date: Tue, 8 Jan 2019 18:14:46 +0800 Subject: [PATCH] code for management vrf --- files/image_config/interfaces/interfaces.j2 | 63 ++++++--------------- 1 file changed, 17 insertions(+), 46 deletions(-) diff --git a/files/image_config/interfaces/interfaces.j2 b/files/image_config/interfaces/interfaces.j2 index 924ff54af308..196c3fae625e 100644 --- a/files/image_config/interfaces/interfaces.j2 +++ b/files/image_config/interfaces/interfaces.j2 @@ -17,6 +17,9 @@ iface lo {{ 'inet' if prefix | ipv4 else 'inet6' }} static # {% endfor %} {% endblock loopback %} +auto mgmt +iface mgmt + vrf-table 1001 {% block mgmt_interface %} # The management network interface @@ -26,63 +29,31 @@ auto eth0 iface eth0 {{ 'inet' if prefix | ipv4 else 'inet6' }} static address {{ prefix | ip }} netmask {{ prefix | netmask if prefix | ipv4 else prefix | prefixlen }} +{% set vrf_table = 'default' %} +{% if MGMT_INTERFACE[(name, prefix)].has_key('vrfname') %} +{% set vrf_table = '1001' %} + vrf mgmt +{% endif %} ########## management network policy routing rules # management port up rules - up ip {{ '-4' if prefix | ipv4 else '-6' }} route add default via {{ MGMT_INTERFACE[(name, prefix)]['gwaddr'] }} dev eth0 table default - up ip {{ '-4' if prefix | ipv4 else '-6' }} route add {{ prefix | network }}/{{ prefix | prefixlen }} dev eth0 table default - up ip {{ '-4' if prefix | ipv4 else '-6' }} rule add from {{ prefix | ip }}/{{ '32' if prefix | ipv4 else '128' }} table default + up ip {{ '-4' if prefix | ipv4 else '-6' }} route add default via {{ MGMT_INTERFACE[(name, prefix)]['gwaddr'] }} dev eth0 table {{ vrf_table }} + up ip {{ '-4' if prefix | ipv4 else '-6' }} route add {{ prefix | network }}/{{ prefix | prefixlen }} dev eth0 table {{ vrf_table }} + up ip {{ '-4' if prefix | ipv4 else '-6' }} rule add from {{ prefix | ip }}/{{ '32' if prefix | ipv4 else '128' }} table {{ vrf_table }} {% for route in MGMT_INTERFACE[(name, prefix)]['forced_mgmt_routes'] %} - up ip rule add to {{ route }} table default + up ip rule add to {{ route }} table {{ vrf_table }} {% endfor %} # management port down rules - down ip {{ '-4' if prefix | ipv4 else '-6' }} route delete default via {{ MGMT_INTERFACE[(name, prefix)]['gwaddr'] }} dev eth0 table default - down ip {{ '-4' if prefix | ipv4 else '-6' }} route delete {{ prefix | network }}/{{ prefix | prefixlen }} dev eth0 table default - down ip {{ '-4' if prefix | ipv4 else '-6' }} rule delete from {{ prefix | ip }}/{{ '32' if prefix | ipv4 else '128' }} table default + down ip {{ '-4' if prefix | ipv4 else '-6' }} route delete default via {{ MGMT_INTERFACE[(name, prefix)]['gwaddr'] }} dev eth0 table {{ vrf_table }} + down ip {{ '-4' if prefix | ipv4 else '-6' }} route delete {{ prefix | network }}/{{ prefix | prefixlen }} dev eth0 table {{ vrf_table }} + down ip {{ '-4' if prefix | ipv4 else '-6' }} rule delete from {{ prefix | ip }}/{{ '32' if prefix | ipv4 else '128' }} table {{ vrf_table }} {% for route in MGMT_INTERFACE[(name, prefix)]['forced_mgmt_routes'] %} - down ip rule delete to {{ route }} table default + down ip rule delete to {{ route }} table {{ vrf_table }} {% endfor %} {# TODO: COPP policy type rules #} {% endfor %} {% else %} iface eth0 inet dhcp + vrf mgmt {% endif %} # {% endblock mgmt_interface %} -{% block front_panel_interfaces %} -# The switch front panel interfaces -{% for (name, prefix) in INTERFACE %} -allow-hotplug {{ name }} -iface {{ name }} {{ 'inet' if prefix | ipv4 else 'inet6' }} static - mtu {{ PORT[name]['mtu'] if PORT[name]['mtu'] else 9100 }} - address {{ prefix | ip }} - netmask {{ prefix | netmask if prefix | ipv4 else prefix | prefixlen }} -# -{% endfor %} -{% if PORTCHANNEL %} -# "|| true" is added to suppress the error when interface is already a member of LAG -# "ip link show | grep -q master" is added to ensure interface is enslaved -{% for pc in PORTCHANNEL.keys()|sort %} -{% for member in PORTCHANNEL[pc]['members'] %} -allow-hotplug {{ member }} -iface {{ member }} inet manual - pre-up teamdctl {{ pc }} port add {{ member }} || true - post-up ip link show {{ member }} | grep -q master && ifconfig {{ member }} up - post-down ifconfig {{ member }} down -# -{% endfor %} -{% endfor %} -{% endif %} -{% endblock front_panel_interfaces %} -{% block pc_interfaces %} -{% if PORTCHANNEL_INTERFACE %} -# Portchannel interfaces -{% for (name, prefix) in PORTCHANNEL_INTERFACE.keys() | sort %} -allow-hotplug {{ name }} -iface {{ name }} {{ 'inet' if prefix | ipv4 else 'inet6' }} static - mtu {{ PORTCHANNEL[name]['mtu'] if PORTCHANNEL[name]['mtu'] else 9100 }} - address {{ prefix | ip }} - netmask {{ prefix | netmask if prefix | ipv4 else prefix | prefixlen }} -# -{% endfor %} -{% endif %} -{% endblock pc_interfaces %}