summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2026-01-09 14:55:52 +0200
committerGitHub <noreply@github.com>2026-01-09 14:55:52 +0200
commit33f1763bf6434497ad0f7904122d5cb943d20138 (patch)
tree8f221183536bdfc2879c74f1c81c82cde730295b /data
parentf80aae18439fe93a32101dfe45ef65812cf91e45 (diff)
parenta4b3cd33ca11aba579510456941f404839135af4 (diff)
downloadvyos-1x-33f1763bf6434497ad0f7904122d5cb943d20138.tar.gz
vyos-1x-33f1763bf6434497ad0f7904122d5cb943d20138.zip
Merge pull request #4912 from hedrok/T8046-add-link-params-cli
T8046: traffic-engineering: support link-params
Diffstat (limited to 'data')
-rw-r--r--data/templates/frr/isisd.frr.j23
-rw-r--r--data/templates/frr/zebra.traffic_engineering.frr.j237
2 files changed, 40 insertions, 0 deletions
diff --git a/data/templates/frr/isisd.frr.j2 b/data/templates/frr/isisd.frr.j2
index 6691517b4..a7e614e3e 100644
--- a/data/templates/frr/isisd.frr.j2
+++ b/data/templates/frr/isisd.frr.j2
@@ -153,6 +153,9 @@ advertise-passive-only
{% endif %}
mpls-te inter-as{{ level }}
{% endif %}
+{% if traffic_engineering.export is vyos_defined %}
+ mpls-te export
+{% endif %}
{% if segment_routing is vyos_defined %}
{% if segment_routing.maximum_label_depth is vyos_defined %}
segment-routing node-msd {{ segment_routing.maximum_label_depth }}
diff --git a/data/templates/frr/zebra.traffic_engineering.frr.j2 b/data/templates/frr/zebra.traffic_engineering.frr.j2
new file mode 100644
index 000000000..fee41a898
--- /dev/null
+++ b/data/templates/frr/zebra.traffic_engineering.frr.j2
@@ -0,0 +1,37 @@
+{% if interface is vyos_defined %}
+!
+{% set ns = namespace(mask_by_admin_group=dict()) %}
+{% if admin_group is vyos_defined %}
+{% for ag in admin_group %}
+{% set _ = ns.mask_by_admin_group.update({ag: 1.__lshift__(admin_group[ag]['bit_position'] | int)}) %}
+{% endfor %}
+{% endif %}
+{% set mbit_per_second_2_byte_per_second = 1024 * 1024 / 8 %}
+{% for ifname, data in interface.items() %}
+interface {{ ifname }}
+ link-params
+{% if data.metric is vyos_defined %}
+ metric {{ data.metric }}
+{% endif %}
+{% if data.admin_group is vyos_defined %}
+{% set val = namespace(x=0) %}
+{% for ag in data.admin_group %}
+{% set val.x = (val.x | int).__or__(ns.mask_by_admin_group[ag]) %}
+{% endfor %}
+ admin-grp {{ '0x{:x}'.format(val.x) }}
+{% endif %}
+{% if data.max_bandwidth is vyos_defined %}
+ max-bw {{ (data.max_bandwidth | int) * mbit_per_second_2_byte_per_second }}
+{% endif %}
+{% if data.max_reservable_bandwidth is vyos_defined %}
+{% set v = (data.max_reservable_bandwidth | int) * mbit_per_second_2_byte_per_second %}
+ max-rsv-bw {{ v }}
+{% for i in range(8) %}
+ unrsv-bw {{ i }} {{ v }}
+{% endfor %}
+{% endif %}
+ exit-link-params
+exit
+!
+{% endfor %}
+{% endif %}