From 51fdb57668073d16f5f4795ab9ebdee5b3b853c2 Mon Sep 17 00:00:00 2001
From: sever-sever <v.gletenko@vyos.io>
Date: Fri, 23 Oct 2020 15:26:41 +0000
Subject: isis: T1316: October steps

---
 data/templates/frr/isis.frr.tmpl | 158 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 158 insertions(+)
 create mode 100644 data/templates/frr/isis.frr.tmpl

(limited to 'data')

diff --git a/data/templates/frr/isis.frr.tmpl b/data/templates/frr/isis.frr.tmpl
new file mode 100644
index 000000000..70444d0c3
--- /dev/null
+++ b/data/templates/frr/isis.frr.tmpl
@@ -0,0 +1,158 @@
+{%   for dname in isis -%}
+!
+router isis {{dname}}
+{% if isis[dname]['net'] is string -%}
+ net {{ isis[dname]['net'] }}
+{% else -%}
+{%   for net_iso in isis[dname]['net'] -%}
+ net {{ net_iso }}
+{%   endfor -%}
+{% endif -%}
+{#- end isis net -#}
+{% if 'dynamic_hostname' in isis[dname] -%}
+ hostname dynamic
+{% endif -%}
+{% if 'purge_originator' in isis[dname] -%}
+ purge-originator
+{% endif -%}
+{% if 'set_attached_bit' in isis[dname] -%}
+ set-attached-bit
+{% endif -%}
+{% if 'set_overload_bit' in isis[dname] -%}
+ set-overload-bit
+{% endif -%}
+{% if isis[dname].domain_password is defined -%}
+{%   if isis[dname].domain_password.plaintext_password is defined -%}
+ domain-password clear {{ isis[dname].domain_password.plaintext_password }}
+{%   endif -%}
+{% endif -%}
+{#- end isis domain-password -#}
+{% if isis[dname]['lsp_gen_interval'] -%}
+ lsp-gen-interval {{ isis[dname]['lsp_gen_interval'] }}
+{% endif -%}
+{% if isis[dname]['lsp_mtu'] -%}
+ lsp-mtu {{ isis[dname]['lsp_mtu'] }}
+{% endif -%}
+{% if isis[dname]['lsp_refresh_interval'] -%}
+ lsp-mtu {{ isis[dname]['lsp_refresh_interval'] }}
+{% endif -%}
+{% if isis[dname]['max_lsp_lifetime'] -%}
+ lsp-mtu {{ isis[dname]['max_lsp_lifetime'] }}
+{% endif -%}
+{% if isis[dname]['spf_interval'] -%}
+ spf-interval {{ isis[dname]['spf_interval'] }}
+{% endif -%}
+{% for t in isis[dname]['spf_delay_ietf'] -%}
+{% if t == "holddown" -%}
+ spf-delay-ietf holddown {{ isis[dname]['spf_delay_ietf'][t] }}
+{% endif -%}
+{% endfor -%}
+{#- end lsp timers and intervals -#}
+{% if isis[dname]['area_password'] is defined -%}
+{% for password in isis[dname]['area_password'] -%}
+{%   if password == "md5" -%}
+ area-password md5 {{ isis[dname]['area_password'][password] }}
+{%   endif -%}
+{%   if password == "plaintext_password" -%}
+ area-password clear {{ isis[dname]['area_password'][password] }}
+{%   endif -%}
+{% endfor -%}
+{% endif -%}
+{#- end isis area-password -#}
+{% if 'originate' in isis[dname]['default_information'] -%}
+{% for ipv in isis[dname]['default_information']['originate'] -%}
+{%   for lvl in isis[dname]['default_information']['originate'][ipv] -%}
+{%     if ipv == 'ipv4' -%}
+    default-information originate {{ ipv }} {{ lvl | replace('_', '-') }}
+{%     elif ipv == 'ipv6' -%}
+    default-information originate {{ ipv }} {{ lvl | replace('_', '-') }} always
+{%     endif -%}
+{%   endfor -%}
+{% endfor -%}
+{% endif -%}
+{#- end isis default-information originate -#}
+{% if isis[dname]['redistribute'] is defined -%}
+{% for protocol in isis[dname]['redistribute']['ipv4']  -%}
+{%   for lvl in isis[dname]['redistribute']['ipv4'][protocol] -%}
+{%     if isis[dname]['redistribute']['ipv4'][protocol][lvl]['metric'] is defined -%}
+ redistribute ipv4 {{ protocol }} {{ lvl | replace('_', '-') }} metric {{ isis[dname]['redistribute']['ipv4'][protocol][lvl]['metric'] }}
+{%     elif isis[dname]['redistribute']['ipv4'][protocol][lvl]['route_map'] is defined -%}
+ redistribute ipv4 {{ protocol }} {{ lvl | replace('_', '-') }} route-map {{ isis[dname]['redistribute']['ipv4'][protocol][lvl]['route_map'] }}
+{%     else -%}
+ redistribute ipv4 {{ protocol }} {{ lvl | replace('_', '-') }}
+{%     endif -%}
+{%   endfor -%}
+{% endfor -%}
+{% endif -%}
+{#- end isis redistribute -#}
+{% if isis[dname]['level'] -%}
+{%   if isis[dname]['level'] == 'level-1' -%}
+ is-type level-1
+{%   elif isis[dname]['level'] == 'level-2'  -%}
+ is-type level-2-only
+{%   elif isis[dname]['level'] == 'level-1-2'  -%}
+ is-type level-1-2
+{%   endif -%}
+{% endif -%}
+{#- end isis level -#}
+{% if isis[dname]['spf_delay_ietf'] is defined -%}
+{%   if isis[dname]['spf_delay_ietf']['init_delay'] or isis[dname]['spf_delay_ietf']['short_delay'] or isis[dname]['spf_delay_ietf']['long_delay'] or isis[dname]['spf_delay_ietf']['holddown'] or isis[dname]['spf_delay_ietf']['time_to_learn'] -%}
+ init-delay {{ isis[dname]['spf_delay_ietf']['init_delay'] }} short-delay {{ isis[dname]['spf_delay_ietf']['short_delay'] }} long-delay {{ isis[dname]['spf_delay_ietf']['long_delay'] }} holddown {{ isis[dname]['spf_delay_ietf']['holddown'] }} time-to-learn {{ isis[dname]['spf_delay_ietf']['time_to_learn'] }}
+{%   endif -%}
+{% endif -%}
+!
+{% set isis_iface = isis[dname]['interface'] -%}
+{% if isis_iface is string -%}
+interface {{ isis_iface }} 
+ip router isis {{ dname }}
+{% else -%}
+{% for value in isis_iface -%}
+interface {{ value }} 
+ip router isis {{ dname }}
+{%   if 'bfd' in isis_iface[value] -%}
+  isis bfd
+{%   endif -%}
+{%   if 'point_to_point' in isis_iface[value]['network'] -%}
+  isis network point-to-point
+{%   endif -%}
+{%   if isis_iface[value]['circuit_type'] == 'level-1' -%}
+ isis circuit-type level-1
+{%   elif isis_iface[value]['circuit_type'] == 'level-2-only' -%}
+ isis circuit-type level-2-only
+{%   elif isis_iface[value]['circuit_type'] == 'level-1-2' -%}
+ isis circuit-type level-1-2 
+{%   endif -%}
+{%   if isis_iface[value]['hello_interval'] -%}
+ isis hello-interval {{ isis_iface[value]['hello_interval'] }}
+{%   endif -%}
+{%   if isis_iface[value]['hello_multiplier'] -%}
+ isis hello-multiplier {{ isis_iface[value]['hello_multiplier'] }}
+{%   endif -%}
+{%   if 'hello_padding' in isis_iface[value] -%}
+ isis hello padding
+{%   endif -%}
+{%   if isis_iface[value]['metric'] -%}
+ isis metric {{ isis_iface[value]['metric'] }}
+{%   endif -%}
+{%   if 'passive' in isis_iface[value] -%}
+ isis passive
+{%   endif -%}
+{%   if isis_iface[value]['password'] is defined -%}
+{%     if isis_iface[value]['password']['plaintext_password'] is defined -%}
+ isis password clear {{ isis_iface[value]['password']['plaintext_password'] }}
+{%     endif -%}
+{%   endif -%}
+{%   if isis_iface[value]['priority'] -%}
+ isis priority {{ isis_iface[value]['priority'] }}
+{%   endif -%}
+{%   if isis_iface[value]['psnp_interval'] -%}
+ isis psnp-interval {{ isis_iface[value]['psnp_interval'] }}
+{%   endif -%}
+{%   if 'three_way_handshake' in isis_iface[value] -%}
+ isis three-way-handshake
+{%   endif -%}
+{% endfor -%}
+{% endif -%}
+{#- end isis interface -#}
+!
+{%   endfor -%}
-- 
cgit v1.2.3