Skip to content

Commit be3c391

Browse files
authored
Fix SR-OS IS-IS configuration template (#2308)
* Set area and system ID * Configure wide metrics * Use lookup table for IS-IS levels * Configure the routing protocol only once * Include interfaces in the routing protocol configuration
1 parent df43c6f commit be3c391

1 file changed

Lines changed: 42 additions & 31 deletions

File tree

  • netsim/ansible/templates/isis
Lines changed: 42 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,58 @@
11
{% from "templates/initial/sros.j2" import if_name, declare_router with context %}
22

3-
{% macro isis_config(l) %}
4-
{{ declare_router(l) }}
3+
{% macro isis_router(vrf_data,isis,intf_list) %}
4+
{% set kw_level = {'level-1': '1', 'level-2': '2', 'level-1-2': '1/2'} %}
5+
{{ declare_router(vrf_data) }}
56
val:
6-
isis:
7-
- isis-instance: 0
8-
admin-state: enable
9-
area-address: ["{{ isis.net | default( "%s.0000.0000.%04d.00" % (isis.area,id) ) }}"]
10-
level-capability: "{{ '2' if isis.type=='level-2' else ('1' if isis.type=='level-1' else '1/2') }}"
7+
isis:
8+
- isis-instance: 0
9+
system-id: "{{ isis.system_id }}"
10+
admin-state: enable
11+
area-address: ["{{ isis.area }}"]
12+
level:
13+
- level-number: "1"
14+
wide-metrics-only: True
15+
- level-number: "2"
16+
wide-metrics-only: True
17+
{% if isis.type is defined %}
18+
level-capability: "{{ kw_level[isis.type] }}"
19+
{% endif %}
1120
{% if isis.af.ipv6 is defined %}
12-
multi-topology:
13-
ipv6-unicast: True
21+
multi-topology:
22+
ipv6-unicast: True
1423
{% endif %}
15-
interface:
16-
- interface-name: {{ if_name(l,l.ifname) }}
17-
interface-type: {{ l.isis.network_type|default('broadcast') }}
18-
passive: {{ l.isis.passive }}
24+
{% for l in intf_list if 'isis' in l %}
25+
{% if loop.first %}
26+
interface:
27+
{% endif %}
28+
- interface-name: {{ if_name(l,l.ifname) }}
29+
interface-type: {{ l.isis.network_type|default('broadcast') }}
30+
passive: {{ l.isis.passive }}
1931
{% if l.isis.bfd is defined %}
20-
bfd-liveness:
32+
bfd-liveness:
2133
{% if l.isis.bfd.ipv4|default(False) %}
22-
ipv4:
23-
include-bfd-tlv: True
34+
ipv4:
35+
include-bfd-tlv: True
2436
{% endif %}
2537
{% if l.isis.bfd.ipv6|default(False) %}
26-
ipv6:
27-
include-bfd-tlv: True
38+
ipv6:
39+
include-bfd-tlv: True
2840
{% endif %}
2941
{% endif %}
3042
{% if (l.isis.metric is defined or l.isis.cost is defined) %}
31-
level:
32-
{% for level in ['1','2'] %}
33-
- level-number: "{{ level }}"
34-
metric: {{ l.isis.metric|default(l.isis.cost) }}
35-
{% if 'ipv6' in isis.af and 'ipv6' in l %}
36-
ipv6-unicast-metric: {{ l.isis.metric|default(l.isis.cost) }}
37-
{% endif %}
38-
{% endfor %}
43+
level:
44+
{% for level in ['1','2'] %}
45+
- level-number: "{{ level }}"
46+
metric: {{ l.isis.metric|default(l.isis.cost) }}
47+
{% if 'ipv6' in isis.af and 'ipv6' in l %}
48+
ipv6-unicast-metric: {{ l.isis.metric|default(l.isis.cost) }}
49+
{% endif %}
50+
{% endfor %}
3951
{% endif %}
52+
{% endfor %}
4053
{% endmacro %}
4154

4255
updates:
43-
{{ isis_config( { 'ifname': 'system', 'isis': { 'passive' : True } } ) }}
44-
45-
{% for l in interfaces|default([]) if 'isis' in l %}
46-
{{ isis_config(l) }}
47-
{% endfor %}
56+
{% if isis is defined %}
57+
{{ isis_router({},isis,netlab_interfaces) }}
58+
{% endif %}

0 commit comments

Comments
 (0)