summaryrefslogtreecommitdiff
path: root/interface-definitions
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2023-12-13 13:03:40 +0100
committerGitHub <noreply@github.com>2023-12-13 13:03:40 +0100
commit8434cc7c7a6eaec754d7873e4f61551143cd26b2 (patch)
treeb09832ffe46b5b1d6427f004d8079f11d2ef635e /interface-definitions
parent790c028557230c525045c0d83abb60140aad9a8a (diff)
parentca301cdd4746187f96ff84e411fda6a84e33f237 (diff)
downloadvyos-1x-8434cc7c7a6eaec754d7873e4f61551143cd26b2.tar.gz
vyos-1x-8434cc7c7a6eaec754d7873e4f61551143cd26b2.zip
Merge pull request #2606 from c-po/srv6
SRv6: T591: initial implementation to support locator definition
Diffstat (limited to 'interface-definitions')
-rw-r--r--interface-definitions/include/bgp/protocol-common-config.xml.i60
-rw-r--r--interface-definitions/include/constraint/alpha-numeric-hyphen-underscore.xml.i2
-rw-r--r--interface-definitions/include/constraint/dhcp-client-string-option.xml.i2
-rw-r--r--interface-definitions/protocols-segment-routing.xml.in89
4 files changed, 151 insertions, 2 deletions
diff --git a/interface-definitions/include/bgp/protocol-common-config.xml.i b/interface-definitions/include/bgp/protocol-common-config.xml.i
index 4e43298bc..c379ba95c 100644
--- a/interface-definitions/include/bgp/protocol-common-config.xml.i
+++ b/interface-definitions/include/bgp/protocol-common-config.xml.i
@@ -1639,6 +1639,66 @@
#include <include/port-number.xml.i>
</children>
</tagNode>
+<node name="srv6">
+ <properties>
+ <help>Segment-Routing SRv6 configuration</help>
+ </properties>
+ <children>
+ <leafNode name="locator">
+ <properties>
+ <help>Specify SRv6 locator</help>
+ <valueHelp>
+ <format>txt</format>
+ <description>SRv6 locator name</description>
+ </valueHelp>
+ <constraint>
+ #include <include/constraint/alpha-numeric-hyphen-underscore.xml.i>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+</node>
+<node name="sid">
+ <properties>
+ <help>SID value for VRF</help>
+ </properties>
+ <children>
+ <node name="vpn">
+ <properties>
+ <help>Between current VRF and VPN</help>
+ </properties>
+ <children>
+ <node name="per-vrf">
+ <properties>
+ <help>SID per-VRF (both IPv4 and IPv6 address families)</help>
+ </properties>
+ <children>
+ <leafNode name="export">
+ <properties>
+ <help>For routes leaked from current VRF to VPN</help>
+ <completionHelp>
+ <list>auto</list>
+ </completionHelp>
+ <valueHelp>
+ <format>u32:1-1048575</format>
+ <description>SID allocation index</description>
+ </valueHelp>
+ <valueHelp>
+ <format>auto</format>
+ <description>Automatically assign a label</description>
+ </valueHelp>
+ <constraint>
+ <regex>auto</regex>
+ <validator name="numeric" argument="--range 1-1048575"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ </children>
+</node>
<node name="timers">
<properties>
<help>BGP protocol timers</help>
diff --git a/interface-definitions/include/constraint/alpha-numeric-hyphen-underscore.xml.i b/interface-definitions/include/constraint/alpha-numeric-hyphen-underscore.xml.i
index ba097c6b5..399f2e1da 100644
--- a/interface-definitions/include/constraint/alpha-numeric-hyphen-underscore.xml.i
+++ b/interface-definitions/include/constraint/alpha-numeric-hyphen-underscore.xml.i
@@ -1,3 +1,3 @@
-<!-- include start from include/constraint/alpha-numeric-hyphen-underscore.xml.i -->
+<!-- include start from constraint/alpha-numeric-hyphen-underscore.xml.i -->
<regex>[-_a-zA-Z0-9]+</regex>
<!-- include end -->
diff --git a/interface-definitions/include/constraint/dhcp-client-string-option.xml.i b/interface-definitions/include/constraint/dhcp-client-string-option.xml.i
index 76e0e5466..88257a9bb 100644
--- a/interface-definitions/include/constraint/dhcp-client-string-option.xml.i
+++ b/interface-definitions/include/constraint/dhcp-client-string-option.xml.i
@@ -1,4 +1,4 @@
-<!-- include start from include/constraint/dhcp-client-string-option.xml.i -->
+<!-- include start from constraint/dhcp-client-string-option.xml.i -->
<regex>[-_a-zA-Z0-9\s]+</regex>
<regex>([a-fA-F0-9][a-fA-F0-9]:){2,}[a-fA-F0-9][a-fA-F0-9]</regex>
<!-- include end -->
diff --git a/interface-definitions/protocols-segment-routing.xml.in b/interface-definitions/protocols-segment-routing.xml.in
new file mode 100644
index 000000000..d461e9c5d
--- /dev/null
+++ b/interface-definitions/protocols-segment-routing.xml.in
@@ -0,0 +1,89 @@
+<?xml version="1.0"?>
+<interfaceDefinition>
+ <node name="protocols">
+ <children>
+ <node name="segment-routing" owner="${vyos_conf_scripts_dir}/protocols_segment_routing.py">
+ <properties>
+ <help>Segment Routing</help>
+ <priority>900</priority>
+ </properties>
+ <children>
+ <node name="srv6">
+ <properties>
+ <help>Segment-Routing SRv6 configuration</help>
+ </properties>
+ <children>
+ <tagNode name="locator">
+ <properties>
+ <help>Segment Routing SRv6 locator</help>
+ <constraint>
+ #include <include/constraint/alpha-numeric-hyphen-underscore.xml.i>
+ </constraint>
+ </properties>
+ <children>
+ <leafNode name="behavior-usid">
+ <properties>
+ <help>Set SRv6 behavior uSID</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ <leafNode name="prefix">
+ <properties>
+ <help>SRv6 locator prefix</help>
+ <valueHelp>
+ <format>ipv6net</format>
+ <description>SRv6 locator prefix</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv6-prefix"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="block-len">
+ <properties>
+ <help>Configure SRv6 locator block length in bits</help>
+ <valueHelp>
+ <format>u32:16-64</format>
+ <description>Specify SRv6 locator block length in bits</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 16-64"/>
+ </constraint>
+ </properties>
+ <defaultValue>40</defaultValue>
+ </leafNode>
+ <leafNode name="func-bits">
+ <properties>
+ <help>Configure SRv6 locator function length in bits</help>
+ <valueHelp>
+ <format>u32:0-64</format>
+ <description>Specify SRv6 locator function length in bits</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-64"/>
+ </constraint>
+ </properties>
+ <defaultValue>16</defaultValue>
+ </leafNode>
+ <leafNode name="node-len">
+ <properties>
+ <help>Configure SRv6 locator node length in bits</help>
+ <valueHelp>
+ <format>u32:16-64</format>
+ <description>Configure SRv6 locator node length in bits</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 16-64"/>
+ </constraint>
+ </properties>
+ <defaultValue>24</defaultValue>
+ </leafNode>
+ </children>
+ </tagNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ </children>
+ </node>
+</interfaceDefinition>