diff options
| -rw-r--r-- | data/templates/frr/isis.frr.tmpl | 33 | ||||
| -rw-r--r-- | interface-definitions/include/isis/protocol-common-config.xml.i | 57 | ||||
| -rw-r--r-- | interface-definitions/include/isis/redistribute-ipv6.xml.i | 42 | ||||
| -rwxr-xr-x | src/conf_mode/protocols_isis.py | 2 | 
4 files changed, 123 insertions, 11 deletions
diff --git a/data/templates/frr/isis.frr.tmpl b/data/templates/frr/isis.frr.tmpl index 1e651898b..3b6432a4f 100644 --- a/data/templates/frr/isis.frr.tmpl +++ b/data/templates/frr/isis.frr.tmpl @@ -116,18 +116,33 @@ router isis VyOS {{ 'vrf ' + vrf if vrf is defined and vrf is not none }}  {%     endfor %}  {%   endfor %}  {% endif %} -{% if redistribute is defined and redistribute.ipv4 is defined and redistribute.ipv4 is not none %} -{%   for protocol in redistribute.ipv4 %} -{%     for level, level_config in redistribute.ipv4[protocol].items() %} -{%       if level_config.metric is defined and level_config.metric is not none %} +{% if redistribute is defined %}  +{%   if redistribute.ipv4 is defined and redistribute.ipv4 is not none %} +{%     for protocol, protocol_options in redistribute.ipv4.items() %} +{%       for level, level_config in redistribute.ipv4.protocol.items() %} +{%         if level_config.metric is defined and level_config.metric is not none %}   redistribute ipv4 {{ protocol }} {{ level | replace('_', '-') }} metric {{ level_config.metric }} -{%       elif level_config.route_map is defined and level_config.route_map is not none %} +{%         elif level_config.route_map is defined and level_config.route_map is not none %}   redistribute ipv4 {{ protocol }} {{ level | replace('_', '-') }} route-map {{ level_config.route_map }} -{%       else %} +{%         else %}   redistribute ipv4 {{ protocol }} {{ level | replace('_', '-') }} -{%       endif %} +{%         endif %} +{%       endfor %}  {%     endfor %} -{%   endfor %} +{%   endif %} +{%   if redistribute.ipv6 is defined and redistribute.ipv6 is not none %} +{%     for protocol, protocol_options in redistribute.ipv6.items() %} +{%       for level, level_config in redistribute.ipv6.protocol.items() %} +{%         if level_config.metric is defined and level_config.metric is not none %} + redistribute ipv6 {{ protocol }} {{ level | replace('_', '-') }} metric {{ level_config.metric }} +{%         elif level_config.route_map is defined and level_config.route_map is not none %} + redistribute ipv6 {{ protocol }} {{ level | replace('_', '-') }} route-map {{ level_config.route_map }} +{%         else %} + redistribute ipv6 {{ protocol }} {{ level | replace('_', '-') }} +{%         endif %} +{%       endfor %} +{%     endfor %} +{%   endif %}  {% endif %}  {% if level is defined and level is not none %}  {%   if level == 'level-2'  %} @@ -180,4 +195,4 @@ interface {{ iface }} {{ 'vrf ' + vrf if vrf is defined and vrf is not none }}  {%     endif %}  {%   endfor %}  {% endif %} -! +!
\ No newline at end of file diff --git a/interface-definitions/include/isis/protocol-common-config.xml.i b/interface-definitions/include/isis/protocol-common-config.xml.i index 831d12694..af5a21f49 100644 --- a/interface-definitions/include/isis/protocol-common-config.xml.i +++ b/interface-definitions/include/isis/protocol-common-config.xml.i @@ -492,6 +492,61 @@          </node>        </children>      </node> +    <node name="ipv6"> +      <properties> +        <help>Redistribute IPv6 routes</help> +      </properties> +      <children> +        <node name="bgp"> +          <properties> +            <help>Redistribute BGP routes into IS-IS</help> +          </properties> +          <children> +            #include <include/isis/redistribute-ipv6.xml.i> +          </children> +        </node> +        <node name="connected"> +          <properties> +            <help>Redistribute connected routes into IS-IS</help> +          </properties> +          <children> +            #include <include/isis/redistribute-ipv6.xml.i> +          </children> +        </node> +        <node name="kernel"> +          <properties> +            <help>Redistribute kernel routes into IS-IS</help> +          </properties> +          <children> +            #include <include/isis/redistribute-ipv6.xml.i> +          </children> +        </node> +        <node name="ospf6"> +          <properties> +            <help>Redistribute OSPFv3 routes into IS-IS</help> +          </properties> +          <children> +            #include <include/isis/redistribute-ipv6.xml.i> +          </children> +        </node> +        <node name="ripng"> +          <properties> +            <help>Redistribute RIPng routes into IS-IS</help> +          </properties> +          <children> +            #include <include/isis/redistribute-ipv6.xml.i> +          </children> +        </node> +        <node name="static"> +          <properties> +            <help>Redistribute static routes into IS-IS</help> +          </properties> +          <children> +            #include <include/isis/redistribute-ipv6.xml.i> +          </children> +        </node> +      </children> +    </node>    </children>  </node>  <leafNode name="set-attached-bit"> @@ -711,4 +766,4 @@    </children>  </tagNode>  #include <include/route-map.xml.i> -<!-- include end --> +<!-- include end -->
\ No newline at end of file diff --git a/interface-definitions/include/isis/redistribute-ipv6.xml.i b/interface-definitions/include/isis/redistribute-ipv6.xml.i new file mode 100644 index 000000000..7e679e38a --- /dev/null +++ b/interface-definitions/include/isis/redistribute-ipv6.xml.i @@ -0,0 +1,42 @@ +<!-- include start from isis/redistribute-ipv6.xml.i --> +<node name="level-1"> +  <properties> +    <help>Redistribute into level-1</help> +  </properties> +  <children> +    <leafNode name="metric"> +      <properties> +        <help>Metric for redistributed routes</help> +        <valueHelp> +          <format>u32:0-16777215</format> +          <description>ISIS default metric</description> +        </valueHelp> +        <constraint> +          <validator name="numeric" argument="--range 0-16777215"/> +        </constraint> +      </properties> +    </leafNode> +    #include <include/route-map.xml.i> +  </children> +</node> +<node name="level-2"> +  <properties> +    <help>Redistribute into level-2</help> +  </properties> +  <children> +    <leafNode name="metric"> +      <properties> +        <help>Metric for redistributed routes</help> +        <valueHelp> +          <format>u32:0-16777215</format> +          <description>ISIS default metric</description> +        </valueHelp> +        <constraint> +          <validator name="numeric" argument="--range 0-16777215"/> +        </constraint> +      </properties> +    </leafNode> +    #include <include/route-map.xml.i> +  </children> +</node> +<!-- include end -->
\ No newline at end of file diff --git a/src/conf_mode/protocols_isis.py b/src/conf_mode/protocols_isis.py index 50c48db28..254e62ec0 100755 --- a/src/conf_mode/protocols_isis.py +++ b/src/conf_mode/protocols_isis.py @@ -149,7 +149,7 @@ def verify(isis):      # If Redistribute set, but level don't set      if 'redistribute' in isis:          proc_level = isis.get('level','').replace('-','_') -        for afi in ['ipv4']: +        for afi in ['ipv4', 'ipv6']:              if afi not in isis['redistribute']:                  continue  | 
