diff --git a/roles/access/templates/config-d-link.j2 b/roles/access/templates/config-d-link.j2 index 9d0281d..1a4b3b5 100644 --- a/roles/access/templates/config-d-link.j2 +++ b/roles/access/templates/config-d-link.j2 @@ -1,3 +1,5 @@ +{% set mgmt_iface = interfaces | selectattr('mgmt_only') | first -%} + terminal length default 0 no ip http server line console @@ -19,7 +21,6 @@ interface {{ iface.name }} {% endfor %} {# access interfaces #} -{%- set mgmt = namespace(ip=false, gw=false) %} {%- for iface in interfaces | rejectattr('lag') %} interface {{ iface.name }} {# common setup for user-facing interfaces #} @@ -73,16 +74,6 @@ interface {{ iface.name }} {% endif %} -{# store management address and gateway for later #} -{%- if iface.mgmt_only and iface.ip_addresses %} -{% set mgmt.ip = iface.ip_addresses[0].address %} -{% set subnet = mgmt.ip | ipaddr('subnet') %} -{% set prefix = prefixes | selectattr('prefix', '==', subnet) | first %} -{% if prefix.custom_fields.gateway %} -{% set mgmt.gw = prefix.custom_fields.gateway.address %} -{% endif %} -{% endif %} - {% if iface.name in ifaces_dhcp | default([]) %} ip dhcp snooping trust {% else %} @@ -91,10 +82,14 @@ interface {{ iface.name }} {% endfor %} {# management VLAN #} -{%- if mgmt.ip %} interface Vlan1 - ip address {{ mgmt.ip | ipaddr('address') }} {{ mgmt.ip | ipaddr('netmask') }} +{% for address in mgmt_iface.ip_addresses %} +{% if address.family.value == 4 %} + ip address {{ address.address | ipaddr('address') }} {{ address.address | ipaddr('netmask') }} +{% else %} + ipv6 address {{ address.address | upper }} {% endif %} +{% endfor %} voice vlan mac-address 2C-3E-CF-00-00-00 FF-FF-FF-00-00-00 description Cisco voice vlan mac-address 3C-0E-23-00-00-00 FF-FF-FF-00-00-00 description Cisco @@ -127,8 +122,18 @@ ip dhcp snooping no ip dhcp snooping {% endif %} -{% if mgmt.gw %} -ip route 0.0.0.0 0.0.0.0 {{ mgmt.gw | ipaddr('address') }} primary +{% for address in mgmt_iface.ip_addresses %} +{% set subnet = address.address | ipaddr('subnet') %} +{% set prefix = prefixes | selectattr('prefix', '==', subnet) | first %} +{% if prefix.custom_fields.gateway %} +{% set gateway = prefix.custom_fields.gateway %} +{% if gateway.family.value == 4 %} +ip route 0.0.0.0 0.0.0.0 {{ gateway.address | ipaddr('address') }} primary +{% else %} +ipv6 route default vlan1 {{ gateway.address | ipaddr('address') | upper }} primary {% endif %} +{% endif %} +{% endfor %} + no ddp