summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorKyrylo Yatsenko <hedrok@gmail.com>2025-11-17 10:07:05 +0200
committerKyrylo Yatsenko <hedrok@gmail.com>2026-01-09 11:01:34 +0200
commita4b3cd33ca11aba579510456941f404839135af4 (patch)
tree282ee8efa47199e2d1c9b5f3441ff79e78cb0514 /data
parentdffe642fee356b9063a269eb2d244f14d4cc2036 (diff)
downloadvyos-1x-a4b3cd33ca11aba579510456941f404839135af4.tar.gz
vyos-1x-a4b3cd33ca11aba579510456941f404839135af4.zip
T8046: traffic-engineering: support link-params
Add 'traffic-engineering' commands under 'protocols'. set protocols traffic-engineering admin-group ADMINGROUP bit-position 1 set protocols traffic-engineering interface INTERFACE admin-group ADMINGROUP set protocols traffic-engineering interface INTERFACE max-bandwidth 1280 set protocols traffic-engineering interface INTERFACE max-reservable-bandwidth 1280 Also add set protocols isis traffic-engineering export
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 %}