diff --git a/includes/junos-macros.j2 b/includes/junos-macros.j2 deleted file mode 100644 index cb2619e..0000000 --- a/includes/junos-macros.j2 +++ /dev/null @@ -1,51 +0,0 @@ -{%- macro interface_description(interface, interface_context) %} - description "{% if interface.label %}{{ interface.label|replace('"','\\"') or "-" }}: {% endif %}{{ interface.description|replace('"','\\"') or "-" }}{% if interface.connected_endpoint %} ({{ interface.connected_endpoint.name|replace('"','\\"')|replace('.voneus.net','') }}{% if interface.connected_endpoint.device.name %} @ {{ interface.connected_endpoint.device.name|replace('.voneus.net','')|replace('"','\\"') }}{% endif %}){% endif %}{% if interface.cable %} via [{{ interface.cable.label.split("/")[-1] }}]{% endif %}{% if interface.link_peer %} to [{{ interface.link_peer.label or interface.link_peer.name }}{% if interface.link_peer.device %} @ {{ interface.link_peer.device.name.split("/")[-1]|replace('"','\\"')|replace('.voneus.net','') }}]{% endif %}{% endif %}" -{%- endmacro %} - -{%- macro interface_common(interface, interface_context, mtu=True) %} - {%- if mtu and interface.mtu %} - mtu {{ interface.mtu }}; - {%- endif %} -{%- endmacro %} - -{%- macro interface_addresses(device, interface, interface_context, interface_tags, mtu=False) %} - family inet { - {%- if mtu and interface.mtu %} - mtu {{ interface.mtu }}; - {%- endif %} - {%- for address in interface|get_addresses %}{% if address|ipv4 %} - address {{ address.address }}{% if address.address == device.primary_ip4.address %}{ - primary; - preferred; - }{% else %};{% endif %} - {%- endif %}{%- endfor %} - - filter { - input control-plane-protection-IPv4; - } - } - family inet6 { - {%- if mtu and interface.mtu %} - mtu {{ interface.mtu }}; - {%- endif %} - {%- for address in interface|get_addresses %}{% if address|ipv6 %} - address {{ address.address }}{% if address.address == device.primary_ip6.address %}{ - primary; - preferred; - }{% else %};{% endif %} - {%- endif %}{%- endfor %} - - filter { - input control-plane-protection-IPv6; - } - } - {%- set tags = interface.tags|tags_to_map %} - {%- if 'core-isis-link' in tags %} - family iso; - family mpls; - {%- elif 'isis-loopback' in tags %} - family iso { - address {{ device.primary_ip4.address|ipv4_to_iso }}; - } - {%- endif %} -{%- endmacro %} diff --git a/includes/junos-v21-core-router/interfaces.j2 b/includes/junos-v21-core-router/interfaces.j2 index d9f5e77..90a163f 100644 --- a/includes/junos-v21-core-router/interfaces.j2 +++ b/includes/junos-v21-core-router/interfaces.j2 @@ -1,3 +1,55 @@ +{%- macro interface_description(interface, interface_context) %} + description "{% if interface.label %}{{ interface.label|replace('"','\\"') or "-" }}: {% endif %}{{ interface.description|replace('"','\\"') or "-" }}{% if interface.connected_endpoint %} ({{ interface.connected_endpoint.name|replace('"','\\"')|replace('.voneus.net','') }}{% if interface.connected_endpoint.device.name %} @ {{ interface.connected_endpoint.device.name|replace('.voneus.net','')|replace('"','\\"') }}{% endif %}){% endif %}{% if interface.cable %} via [{{ interface.cable.label.split("/")[-1] }}]{% endif %}{% if interface.link_peer %} to [{{ interface.link_peer.label or interface.link_peer.name }}{% if interface.link_peer.device %} @ {{ interface.link_peer.device.name.split("/")[-1]|replace('"','\\"')|replace('.voneus.net','') }}]{% endif %}{% endif %}" +{%- endmacro %} + +{%- macro interface_common(interface, interface_context, mtu=True) %} + {%- if mtu and interface.mtu %} + mtu {{ interface.mtu }}; + {%- endif %} +{%- endmacro %} + +{%- macro interface_addresses(device, interface, interface_context, interface_tags, mtu=False) %} + family inet { + {%- if mtu and interface.mtu %} + mtu {{ interface.mtu }}; + {%- endif %} + {%- for address in interface|get_addresses %}{% if address|ipv4 %} + address {{ address.address }}{% if address.address == device.primary_ip4.address %}{ + primary; + preferred; + }{% else %};{% endif %} + {%- endif %}{%- endfor %} + + filter { + input control-plane-protection-IPv4; + } + } + family inet6 { + {%- if mtu and interface.mtu %} + mtu {{ interface.mtu }}; + {%- endif %} + {%- for address in interface|get_addresses %}{% if address|ipv6 %} + address {{ address.address }}{% if address.address == device.primary_ip6.address %}{ + primary; + preferred; + }{% else %};{% endif %} + {%- endif %}{%- endfor %} + + filter { + input control-plane-protection-IPv6; + } + } + {%- set tags = interface.tags|tags_to_map %} + {%- if 'core-isis-link' in tags %} + family iso; + family mpls; + {%- elif 'isis-loopback' in tags %} + family iso { + address {{ device.primary_ip4.address|ipv4_to_iso }}; + } + {%- endif %} +{%- endmacro %} + {{ "interfaces"|progress }} { {%- for interface, subinterfaces in device_interfaces|subinterfaces(".") %} @@ -19,16 +71,16 @@ {% elif interface.lag %} {{ interface.name }} { - {{ macros.interface_description(interface, interface_context) }} - {{ macros.interface_common(interface, interface_context, mtu=False) }} + {{ interface_description(interface, interface_context) }} + {{ interface_common(interface, interface_context, mtu=False) }} gigether-options { 802.3ad {{ interface.lag.name }}; } {%- elif interface.name.startswith( 'lo' ) %} {{ interface.name }} { - {{ macros.interface_description(interface, interface_context) }} - {{ macros.interface_common(interface, interface_context) }} + {{ interface_description(interface, interface_context) }} + {{ interface_common(interface, interface_context) }} {%- for unit, subinterface in subinterfaces %} {%- set subinterface_tags = [] %} @@ -42,9 +94,9 @@ vlan-id {{ unit }}; {%- endif %} {%- set subinterface_context = subinterface.tags|get_netbox_tags_contexts|contexts_merge_last %} - {{ macros.interface_description(subinterface, subinterface_context) }} - {{ macros.interface_common(subinterface, subinterface_context, mtu=False) }} - {{ macros.interface_addresses(device, subinterface, subinterface_context, subinterface_tags, mtu=False) }} + {{ interface_description(subinterface, subinterface_context) }} + {{ interface_common(subinterface, subinterface_context, mtu=False) }} + {{ interface_addresses(device, subinterface, subinterface_context, subinterface_tags, mtu=False) }} } {%- endfor %} @@ -55,18 +107,18 @@ minimum-links 1; link-speed 100g; } - {{ macros.interface_description(interface, interface_context) }} - {{ macros.interface_common(interface, interface_context, mtu=True) }} + {{ interface_description(interface, interface_context) }} + {{ interface_common(interface, interface_context, mtu=True) }} {%- elif interface.type.value != 'virtual' %} {{ interface.name }} { - {{ macros.interface_description(interface) }} + {{ interface_description(interface) }} {%- if not interface.mode or ( interface.mode.value == 'access' ) %} unit 0 { - {{ macros.interface_description(interface, interface_context) }} - {{ macros.interface_common(interface, interface_context, mtu=False) }} - {{ macros.interface_addresses(device, interface, interface_context, interface_tags, mtu=True) }} + {{ interface_description(interface, interface_context) }} + {{ interface_common(interface, interface_context, mtu=False) }} + {{ interface_addresses(device, interface, interface_context, interface_tags, mtu=True) }} } {%- elif interface.mode.value == 'tagged' %} vlan-tagging; @@ -91,9 +143,9 @@ vlan-id {{ unit }}; {%- endif %} {%- set subinterface_context = subinterface.tags|get_netbox_tags_contexts|contexts_merge_last %} - {{ macros.interface_description(subinterface, subinterface_context) }} - {{ macros.interface_common(subinterface, subinterface_context, mtu=False) }} - {{ macros.interface_addresses(device, subinterface, subinterface_context, subinterface_tags, mtu=True) }} + {{ interface_description(subinterface, subinterface_context) }} + {{ interface_common(subinterface, subinterface_context, mtu=False) }} + {{ interface_addresses(device, subinterface, subinterface_context, subinterface_tags, mtu=True) }} } {%- endfor %} {%- endif %} diff --git a/junos-v21-core-router.j2 b/junos-v21-core-router.j2 index 6a94ea6..7002773 100644 --- a/junos-v21-core-router.j2 +++ b/junos-v21-core-router.j2 @@ -1,7 +1,5 @@ /* generated by bgprtrmgr using junos-v21-core-router.j2 at XXX */ -{% import "includes/junos-macros.j2" as macros %} - version 21.3R1.9; {% set asns_requiring_prefixes = [] %}