{#- Declare Lo0.0 and all common protocols for a Core router Lo0.0 must be declared and created before protocols can be applied Protocols for the Lo0.0 are automatically handled by the common packages #} {%- for loopback, unit in interfaces["loopback-interface"]["lo0"]["units"].items() %} set services infra-crt {{device}} interface loopback-interface lo0 {{unit["name"]}} skip-loopback-check true {%- if unit["description"] is not none %} set services infra-crt {{device}} interface loopback-interface lo0 {{unit["name"]}} description {{unit["description"]}} {%- else %} ERROR: Missing Description for Lo0 unit {{unit["name"]}}!!! set services infra-crt {{device}} interface loopback-interface lo0 {{unit["name"]}} description "FIX_ME" {%- endif %} {%- if unit["inet4"] is not none %} set services infra-crt {{device}} interface loopback-interface lo0 {{unit["name"]}} ipv4 {{unit["inet4"]}} {%- endif %} {%- if unit["inet6"] is not none %} set services infra-crt {{device}} interface loopback-interface lo0 {{unit["name"]}} ipv6 {{unit["inet6"]}} {%- endif %} {%- if unit["inet4"] == none and unit["inet6"] == none %} ERROR: ERROR: IP Addressing Missing for Lo0 unit {{unit["name"]}}!!! set services infra-crt {{device}} interface loopback-interface lo0 {{unit["name"]}} [ipv4|ipv6] FIX_ME {%- endif %} {%- endfor %} set services infra-crt {{device}} isis set services infra-crt {{device}} ldp set services infra-crt {{device}} rsvp set services infra-crt {{device}} mpls-te set services infra-crt {{device}} service-policy {# Aggregate-interface declaration - protocol declaration for AEs is same as standard core-interfaces #} {%- for key,aggregate_interface in interfaces["aggregate-interface"].items() %} {%- if aggregate_interface["disabled"] == False %} {%- set ae_num = key | replace('ae', '') %} {%- for key,aggregate_unit in aggregate_interface["units"].items() %} {%- if aggregate_unit["disabled"] == False %} {%- if aggregate_interface["mtu"] is not none %} set services infra-crt {{device}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} mtu {{aggregate_interface["mtu"]}} {%- endif %} {%- if aggregate_unit["inet4"] is not none %} set services infra-crt {{device}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} ipv4 {{aggregate_unit["inet4"]}} {%- else %} ERROR: IP Addressing Missing for {{aggregate_interface["name"]}} unit {{aggregate_unit["name"]}}!!! set services infra-crt {{device}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} ipv4 FIX_ME {%- endif %} {%- if aggregate_interface["description"] is not none %} set services infra-crt {{device}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} description {{aggregate_interface["description"]}} {%- else %} ERROR: Missing Description for {{aggregate_interface["name"]}} unit {{aggregate_unit["name"]}}!!! set services infra-crt {{device}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} description FIX_ME {%- endif %} {#- Find Protocols for AE #} {#- ISIS#} {%- if aggregate_unit["isis-passive"] == True %} set services infra-crt {{device}} isis passive-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} {%- else %} set services infra-crt {{device}} isis core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} metric {{aggregate_unit["isis-l2-metric"]}} {%- if aggregate_unit["isis-inet-enable-bfd"] == True %} set services infra-crt {{device}} isis core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} enable-bfd true set services infra-crt {{device}} isis core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} bfd-min-interval {{aggregate_unit["isis-inet-bfd-interval"]}} set services infra-crt {{device}} isis core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} bfd-multiplier {{aggregate_unit["isis-inet-bfd-multiplier"]}} {%- else %} set services infra-crt {{device}} isis core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} enable-bfd false {%- endif %} {%- endif %} {#- LDP #} {%- if aggregate_unit["ldp"] == True %} set services infra-crt {{device}} ldp core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} {%- endif %} {#- MPLS-TE #} {%- if aggregate_unit["mpls"] == True %} {%- if aggregate_unit["mpls-te-att-names"] is not none %} set services infra-crt {{device}} mpls-te core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} mpls-te-att-names {{aggregate_unit["mpls-te-att-names"]}} {%- else %} set services infra-crt {{device}} mpls-te core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} {%- endif %} {%- endif %} {#- MPLS-TE-FRR #} {%- if aggregate_unit["mpls-te-frr-backup-bandwidth"] is not none %} set services infra-crt {{device}} mpls-te-frr junos-core-interface {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} backup-bandwidth {{aggregate_unit["mpls-te-frr-backup-bandwidth"]}} {%- endif %} {#- RSVP #} {%- if aggregate_unit["rsvp"] == True %} set services infra-crt {{device}} rsvp core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} core-intf-bandwidth {{aggregate_unit["rsvp-bandwidth"]}} set services infra-crt {{device}} rsvp core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} core-intf-subscription {{aggregate_unit["rsvp-subscription"]}} {%- endif %} {#- Service-Policy #} {%- if aggregate_unit["service-policy"] == True %} set services infra-crt {{device}} service-policy core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} {%- if aggregate_interface["service-map"] is not none %} set services infra-crt {{device}} service-policy core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} service-map {{aggregate_interface["service-map"]}} {%- endif %} {%- if aggregate_interface["shaper-rate"] is not none %} set services infra-crt {{device}} service-policy core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} shaper-rate {{aggregate_interface["shaper-rate"]}} {%- endif %} {%- else %} ERROR: Missing Service-Policy for {{aggregate_interface["name"]}} unit {{aggregate_unit["name"]}}!!! set services infra-crt {{device}} service-policy core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} {%- endif %} {%- endif %} {%- endfor %} {%- for key,member_interface in aggregate_interface["member-interface"].items() %} {%- if member_interface["description"] is not none %} set services infra-crt {{device}} interface aggregate-interface {{ae_num}} 0 core-interface {{member_interface["name"]}} description {{member_interface["description"]}} {%- else %} ERROR: Missing Description for {{aggregate_interface["name"]}} Member-interface {{member_interface["name"]}}!!! set services infra-crt {{device}} interface aggregate-interface {{ae_num}} 0 core-interface {{member_interface["name"]}} description FIX_ME {%- endif %} {%- endfor %} {%- endif %} {%- endfor %} {#- Standard core-interface declaration #} {%- for key,core_interface in interfaces["core-interface"].items() %} {%- if core_interface["disabled"] == False %} {% for key,core_unit in core_interface["units"].items() %} {%- if core_unit["disabled"] == False %} {%- if core_interface["description"] is not none %} set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} description {{core_interface["description"]}} {%- endif %} {%- if core_interface["description"] is none %} set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} description FIX_ME {%- endif %} {%- if core_interface["mtu"] is not none%} set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} mtu {{core_interface["mtu"]}} {%- endif %} {%- if core_unit["inet4"] is not none%} set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} ipv4 {{core_unit["inet4"]}} {%- endif %} {%- if core_unit["inet4"] is none%} set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} ipv4 FIX_ME {%- endif %} {#- Find Protocols for AE #} {#- ISIS#} {%- if core_unit["isis"] == True %} {%- if core_unit["isis-passive"] == True %} set services infra-crt {{device}} isis passive-interface name {{core_interface["name"]}} {{core_unit["name"]}} {%- else %} set services infra-crt {{device}} isis core-interface name {{core_interface["name"]}} {{core_unit["name"]}} metric {{core_unit["isis-l2-metric"]}} {%- if core_unit["isis-inet-enable-bfd"] == True %} set services infra-crt {{device}} isis core-interface name {{core_interface["name"]}} {{core_unit["name"]}} enable-bfd true set services infra-crt {{device}} isis core-interface name {{core_interface["name"]}} {{core_unit["name"]}} bfd-min-interval {{core_unit["isis-inet-bfd-interval"]}} set services infra-crt {{device}} isis core-interface name {{core_interface["name"]}} {{core_unit["name"]}} bfd-multiplier {{core_unit["isis-inet-bfd-multiplier"]}} {%- else %} set services infra-crt {{device}} isis core-interface name {{core_interface["name"]}} {{core_unit["name"]}} enable-bfd false {%- endif %} {%- endif %} {%- endif %} {#- LDP #} {%- if core_unit["ldp"] == True %} set services infra-crt {{device}} ldp core-interface name {{core_interface["name"]}} {{core_unit["name"]}} {%- endif %} {#- MPLS-TE #} {%- if core_unit["mpls"] == True %} {%- if none not in core_unit["mpls-te-att-names"] %} set services infra-crt {{device}} mpls-te core-interface name {{core_interface["name"]}} {{core_unit["name"]}} mpls-te-att-names {{core_unit["mpls-te-att-names"]}} {%- else %} set services infra-crt {{device}} mpls-te core-interface name {{core_interface["name"]}} {{core_unit["name"]}} {%- endif %} {%- endif %} {#- MPLS-TE-FRR #} {%- if core_unit["mpls-te-frr-backup-bandwidth"] is not none %} set services infra-crt {{device}} mpls-te-frr junos-core-interface {{core_interface["name"]}} {{core_unit["name"]}} backup-bandwidth {{core_unit["mpls-te-frr-backup-bandwidth"]}} {%- endif %} {#- RSVP #} {%- if core_unit["rsvp"] == True %} set services infra-crt {{device}} rsvp core-interface name {{core_interface["name"]}} {{core_unit["name"]}} core-intf-bandwidth {{core_unit["rsvp-bandwidth"]}} set services infra-crt {{device}} rsvp core-interface name {{core_interface["name"]}} {{core_unit["name"]}} core-intf-subscription {{core_unit["rsvp-subscription"]}} {%- endif %} {#- Service-Policy #} {%- if core_unit["service-policy"] == True %} set services infra-crt {{device}} service-policy core-interface name {{core_interface["name"]}} {{core_unit["name"]}} {%- if core_interface["service-map"] is not none %} set services infra-crt {{device}} service-policy core-interface name {{core_interface["name"]}} {{core_unit["name"]}} service-map {{core_interface["service-map"]}} {%- endif %} {%- if core_interface["shaper-rate"] is not none %} set services infra-crt {{device}} service-policy core-interface name {{core_interface["name"]}} {{core_unit["name"]}} shaper-rate {{core_interface["shaper-rate"]}} {%- endif %} {%- else %} ERROR: Missing Service-Policy for {{core_interface["name"]}} unit {{core_unit["name"]}}!!! set services infra-crt {{device}} service-policy core-interface name {{core_interface["name"]}} {{core_unit["name"]}} {%- endif %} {%- endif %} {%- endfor %} {%- endif %} {%- endfor %}