Skip to content

Commit b8c7dba

Browse files
committed
Implement 'circuit-type' on Junos, NX-OS, SR OS, SR Linux and VyOS
1 parent 4db4101 commit b8c7dba

File tree

11 files changed

+47
-27
lines changed

11 files changed

+47
-27
lines changed

docs/module/isis.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ The following table describes per-platform support of individual IS-IS features:
3434
| Cisco ASAv |||||
3535
| Cisco IOS/XE[^18v] |||||
3636
| Cisco IOS XRv |||||
37-
| Cisco Nexus OS || |||
37+
| Cisco Nexus OS || |||
3838
| FRR |||||
39-
| Junos[^Junos] || |||
40-
| Nokia SR Linux || |||
41-
| Nokia SR OS || |||
42-
| VyOS || |||
39+
| Junos[^Junos] || |||
40+
| Nokia SR Linux || |||
41+
| Nokia SR OS || |||
42+
| VyOS || |||
4343

4444
These platforms support additional IS-IS features:
4545

netsim/ansible/templates/isis/junos.j2

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
{% macro disable_level(l_type) %}
2+
{% for level in ['1','2'] if level not in l_type|default('1-2') %}
3+
level {{ level }} disable;
4+
{% endfor %}
5+
{% endmacro %}
6+
17
protocols {
28
delete: isis;
39
}
@@ -8,9 +14,7 @@ protocols {
814
ipv6-unicast;
915
}
1016
{% endif %}
11-
{% for level in ['1','2'] if level not in isis.type|default('1-2') %}
12-
level {{ level }} disable;
13-
{% endfor %}
17+
{{ disable_level(isis.type) }}
1418
level 1 wide-metrics-only;
1519
level 2 wide-metrics-only;
1620
interface lo0.0;
@@ -19,6 +23,7 @@ protocols {
1923
{% if l.isis.network_type is defined %}
2024
{{ l.isis.network_type }};
2125
{% endif %}
26+
{{ disable_level(l.isis.type)|indent(2,first=True) }}
2227
{% if l.isis.passive %}
2328
passive;
2429
{% endif %}

netsim/ansible/templates/isis/nxos.j2

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ interface {{ l.ifname }}
3636
{% if l.isis.network_type is defined %}
3737
isis network {{ l.isis.network_type }}
3838
{% endif %}
39+
{% if l.isis.type is defined %}
40+
isis circuit-type {{ l.isis.type }}
41+
{% endif %}
3942
{% if l.isis.cost is defined or l.isis.metric is defined %}
4043
isis metric {{ l.isis.metric|default(l.isis.cost) }} level-1
4144
isis metric {{ l.isis.metric|default(l.isis.cost) }} level-2

netsim/ansible/templates/isis/srlinux.macro.j2

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
{% endif %}
1414
{% if isis.af.ipv6 is defined %}
1515
ipv6-unicast:
16-
admin-state: enable
16+
admin-state: enable
1717
{% if clab.type in ['ixr6','ixr10','ixr6e','ixr10e'] %}
18-
multi-topology: {{ 'sr' not in module|default([]) }}
19-
_annotate_multi-topology: "Not supported in combination with SR"
18+
multi-topology: {{ 'sr' not in module|default([]) }}
19+
_annotate_multi-topology: "Not supported in combination with SR"
2020
{% else %}
21-
multi-topology: True
21+
multi-topology: True
2222
{% endif %}
2323
{% endif %}
2424
{% if ldp is defined and ldp.igp_sync|default(True) %}
@@ -31,9 +31,9 @@
3131
- interface-name: system0.0
3232
passive: True
3333
ipv4-unicast:
34-
admin-state: {{ 'enable' if 'ipv4' in loopback and 'ipv4' in isis.af else 'disable' }}
34+
admin-state: {{ 'enable' if 'ipv4' in loopback and 'ipv4' in isis.af else 'disable' }}
3535
ipv6-unicast:
36-
admin-state: {{ 'enable' if 'ipv6' in loopback and 'ipv6' in isis.af else 'disable' }}
36+
admin-state: {{ 'enable' if 'ipv6' in loopback and 'ipv6' in isis.af else 'disable' }}
3737
{% endif %}
3838
{% for l in interfaces if (l.vlan is not defined or l.vlan.mode|default('irb')!='bridge') and l.subif_index is not defined %}
3939
{% set ifname = l.ifname if '.' in l.ifname else l.ifname|replace('vlan','irb0.') if l.type=='svi' else (l.ifname+'.0') %}
@@ -44,23 +44,24 @@
4444
circuit-type: {{ l.isis.network_type|default("broadcast") }}
4545
passive: {{ l.isis.passive }}
4646
ipv4-unicast:
47-
admin-state: {{ 'enable' if 'ipv4' in l and 'ipv4' in isis.af else 'disable' }}
48-
enable-bfd: {{ l.isis.bfd.ipv4|default(False) }}
47+
admin-state: {{ 'enable' if 'ipv4' in l and 'ipv4' in isis.af else 'disable' }}
48+
enable-bfd: {{ l.isis.bfd.ipv4|default(False) }}
4949
{% if 'ipv6' in l and 'ipv6' in isis.af %}
5050
ipv6-unicast:
51-
admin-state: enable
52-
enable-bfd: {{ l.isis.bfd.ipv6|default(False) }}
51+
admin-state: enable
52+
enable-bfd: {{ l.isis.bfd.ipv6|default(False) }}
5353
{% endif %}
54-
{% if l.isis.metric is defined or l.isis.cost is defined %}
54+
{% if l.isis.metric is defined or l.isis.cost is defined or l.isis.type is defined %}
5555
level:
56-
{% if isis.type!='level-2' %}
57-
- level-number: 1
56+
{% for level in ['1','2'] %}
57+
{% if level not in l.isis.type|default('level-1-2') %}
58+
- level-number: {{ level }}
59+
disable: True
60+
{% elif l.isis.metric is defined or l.isis.cost is defined %}
61+
- level-number: {{ level }}
5862
metric: {{ l.isis.metric|default(l.isis.cost) }}
59-
{% endif %}
60-
{% if isis.type!='level-1' %}
61-
- level-number: 2
62-
metric: {{ l.isis.metric|default(l.isis.cost) }}
63-
{% endif %}
63+
{% endif %}
64+
{% endfor %}
6465
{% endif %}
6566
{% endif %}
6667
{% endfor %}

netsim/ansible/templates/isis/sros.j2

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@
4545
- interface-name: {{ if_name(l,l.ifname) }}
4646
interface-type: {{ l.isis.network_type|default('broadcast') }}
4747
passive: {{ l.isis.passive }}
48+
{% if l.isis.type is defined %}
49+
level-capability: "{{ kw_level[l.isis.type] }}"
50+
{% endif %}
4851
{% if l.isis.bfd is defined %}
4952
bfd-liveness:
5053
{% if l.isis.bfd.ipv4|default(False) %}

netsim/ansible/templates/isis/vyos.j2

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ set protocols isis interface {{ l.ifname }}
2626
{% if l.isis.network_type is defined and l.isis.network_type == 'point-to-point' %}
2727
set protocols isis interface {{ l.ifname }} network point-to-point
2828
{% endif %}
29+
{% if l.isis.type is defined %}
30+
set protocols isis interface {{ l.ifname }} circuit-type {{ l.isis.type }}
31+
{% endif %}
2932
{% if l.isis.cost is defined or l.isis.metric is defined %}
3033
set protocols isis interface {{ l.ifname }} metric {{ l.isis.metric|default(l.isis.cost) }}
3134
{% endif %}

netsim/devices/junos.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ features:
2929
gateway:
3030
protocol: [ anycast, vrrp ]
3131
isis:
32+
circuit_type: true
3233
unnumbered:
3334
ipv4: true
3435
ipv6: true

netsim/devices/nxos.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ features:
4242
gateway:
4343
protocol: [ vrrp ]
4444
isis:
45+
circuit_type: true
4546
unnumbered:
4647
ipv4: true
4748
ipv6: true

netsim/devices/srlinux.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ features:
5858
gateway:
5959
protocol: [ anycast ]
6060
isis:
61+
circuit_type: true
6162
unnumbered:
6263
ipv4: True
6364
ipv6: True

netsim/devices/sros.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ features:
4343
irb: True
4444
asymmetrical_irb: True
4545
isis:
46+
circuit_type: true
4647
unnumbered:
4748
ipv4: True
4849
ipv6: True

0 commit comments

Comments
 (0)