summaryrefslogtreecommitdiff
path: root/interface-definitions
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2025-10-08 17:04:19 +0100
committerGitHub <noreply@github.com>2025-10-08 17:04:19 +0100
commit1c181499a3af4b6c170d3fea2b96af58bb0a34a7 (patch)
tree44498595ab266f4e569b50db786fc42e90a6b72b /interface-definitions
parentfc178aaf00f7a9dc4589567ae3e17cb9718d9ad3 (diff)
parent931e5b5712b4fa8b13027291eb21881c40b8a051 (diff)
downloadvyos-1x-1c181499a3af4b6c170d3fea2b96af58bb0a34a7.tar.gz
vyos-1x-1c181499a3af4b6c170d3fea2b96af58bb0a34a7.zip
Merge pull request #4749 from hedrok/T7803-failover-vrf
T7803: Make failover route vrf-aware
Diffstat (limited to 'interface-definitions')
-rw-r--r--interface-definitions/include/failover/protocol-common-config.xml.i131
-rw-r--r--interface-definitions/protocols_failover.xml.in127
-rw-r--r--interface-definitions/vrf.xml.in9
3 files changed, 141 insertions, 126 deletions
diff --git a/interface-definitions/include/failover/protocol-common-config.xml.i b/interface-definitions/include/failover/protocol-common-config.xml.i
new file mode 100644
index 000000000..a106fdc74
--- /dev/null
+++ b/interface-definitions/include/failover/protocol-common-config.xml.i
@@ -0,0 +1,131 @@
+<!-- include start from failover/protocol-common-config.xml.i -->
+<tagNode name="route">
+ <properties>
+ <help>Failover IPv4 route</help>
+ <valueHelp>
+ <format>ipv4net</format>
+ <description>IPv4 failover route</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-prefix"/>
+ </constraint>
+ </properties>
+ <children>
+ <tagNode name="next-hop">
+ <properties>
+ <help>Next-hop IPv4 router address</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>Next-hop router address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ </properties>
+ <children>
+ <node name="check">
+ <properties>
+ <help>Check target options</help>
+ </properties>
+ <children>
+ <leafNode name="policy">
+ <properties>
+ <help>Policy for check targets</help>
+ <completionHelp>
+ <list>any-available all-available</list>
+ </completionHelp>
+ <valueHelp>
+ <format>all-available</format>
+ <description>All targets must be alive</description>
+ </valueHelp>
+ <valueHelp>
+ <format>any-available</format>
+ <description>Any target must be alive</description>
+ </valueHelp>
+ <constraint>
+ <regex>(all-available|any-available)</regex>
+ </constraint>
+ </properties>
+ <defaultValue>any-available</defaultValue>
+ </leafNode>
+ #include <include/port-number.xml.i>
+ <tagNode name="target">
+ <properties>
+ <help>Check target address</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>Address to check</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ </properties>
+ <children>
+ #include <include/interface/vrf.xml.i>
+ #include <include/generic-interface.xml.i>
+ </children>
+ </tagNode>
+ <leafNode name="timeout">
+ <properties>
+ <help>Timeout between checks</help>
+ <valueHelp>
+ <format>u32:1-300</format>
+ <description>Timeout in seconds between checks</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-255"/>
+ </constraint>
+ </properties>
+ <defaultValue>10</defaultValue>
+ </leafNode>
+ <leafNode name="type">
+ <properties>
+ <help>Check type</help>
+ <completionHelp>
+ <list>arp icmp tcp</list>
+ </completionHelp>
+ <valueHelp>
+ <format>arp</format>
+ <description>Check target by ARP</description>
+ </valueHelp>
+ <valueHelp>
+ <format>icmp</format>
+ <description>Check target by ICMP</description>
+ </valueHelp>
+ <valueHelp>
+ <format>tcp</format>
+ <description>Check target by TCP</description>
+ </valueHelp>
+ <constraint>
+ <regex>(arp|icmp|tcp)</regex>
+ </constraint>
+ </properties>
+ <defaultValue>icmp</defaultValue>
+ </leafNode>
+ </children>
+ </node>
+ #include <include/generic-interface.xml.i>
+ <leafNode name="metric">
+ <properties>
+ <help>Route metric for this gateway</help>
+ <valueHelp>
+ <format>u32:1-255</format>
+ <description>Route metric</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-255"/>
+ </constraint>
+ </properties>
+ <defaultValue>1</defaultValue>
+ </leafNode>
+ <leafNode name="onlink">
+ <properties>
+ <help>The next hop is directly connected to the interface, even if it does not match interface prefix</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ </children>
+ </tagNode>
+ </children>
+</tagNode>
+<!-- include end -->
diff --git a/interface-definitions/protocols_failover.xml.in b/interface-definitions/protocols_failover.xml.in
index fae9be76a..0f8a3b2ad 100644
--- a/interface-definitions/protocols_failover.xml.in
+++ b/interface-definitions/protocols_failover.xml.in
@@ -8,132 +8,7 @@
<priority>490</priority>
</properties>
<children>
- <tagNode name="route">
- <properties>
- <help>Failover IPv4 route</help>
- <valueHelp>
- <format>ipv4net</format>
- <description>IPv4 failover route</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-prefix"/>
- </constraint>
- </properties>
- <children>
- <tagNode name="next-hop">
- <properties>
- <help>Next-hop IPv4 router address</help>
- <valueHelp>
- <format>ipv4</format>
- <description>Next-hop router address</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- </constraint>
- </properties>
- <children>
- <node name="check">
- <properties>
- <help>Check target options</help>
- </properties>
- <children>
- <leafNode name="policy">
- <properties>
- <help>Policy for check targets</help>
- <completionHelp>
- <list>any-available all-available</list>
- </completionHelp>
- <valueHelp>
- <format>all-available</format>
- <description>All targets must be alive</description>
- </valueHelp>
- <valueHelp>
- <format>any-available</format>
- <description>Any target must be alive</description>
- </valueHelp>
- <constraint>
- <regex>(all-available|any-available)</regex>
- </constraint>
- </properties>
- <defaultValue>any-available</defaultValue>
- </leafNode>
- #include <include/port-number.xml.i>
- <leafNode name="target">
- <properties>
- <help>Check target address</help>
- <valueHelp>
- <format>ipv4</format>
- <description>Address to check</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- </constraint>
- <multi/>
- </properties>
- </leafNode>
- <leafNode name="timeout">
- <properties>
- <help>Timeout between checks</help>
- <valueHelp>
- <format>u32:1-300</format>
- <description>Timeout in seconds between checks</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 1-255"/>
- </constraint>
- </properties>
- <defaultValue>10</defaultValue>
- </leafNode>
- <leafNode name="type">
- <properties>
- <help>Check type</help>
- <completionHelp>
- <list>arp icmp tcp</list>
- </completionHelp>
- <valueHelp>
- <format>arp</format>
- <description>Check target by ARP</description>
- </valueHelp>
- <valueHelp>
- <format>icmp</format>
- <description>Check target by ICMP</description>
- </valueHelp>
- <valueHelp>
- <format>tcp</format>
- <description>Check target by TCP</description>
- </valueHelp>
- <constraint>
- <regex>(arp|icmp|tcp)</regex>
- </constraint>
- </properties>
- <defaultValue>icmp</defaultValue>
- </leafNode>
- </children>
- </node>
- #include <include/generic-interface.xml.i>
- <leafNode name="metric">
- <properties>
- <help>Route metric for this gateway</help>
- <valueHelp>
- <format>u32:1-255</format>
- <description>Route metric</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 1-255"/>
- </constraint>
- </properties>
- <defaultValue>1</defaultValue>
- </leafNode>
- <leafNode name="onlink">
- <properties>
- <help>The next hop is directly connected to the interface, even if it does not match interface prefix</help>
- <valueless/>
- </properties>
- </leafNode>
- </children>
- </tagNode>
- </children>
- </tagNode>
+ #include <include/failover/protocol-common-config.xml.i>
</children>
</node>
</children>
diff --git a/interface-definitions/vrf.xml.in b/interface-definitions/vrf.xml.in
index 3fa95076e..0adbeadd9 100644
--- a/interface-definitions/vrf.xml.in
+++ b/interface-definitions/vrf.xml.in
@@ -114,6 +114,15 @@
#include <include/static/static-route6.xml.i>
</children>
</node>
+ <node name="failover" owner="${vyos_conf_scripts_dir}/protocols_failover.py $VAR(../../@)">
+ <properties>
+ <help>Failover Routing</help>
+ <priority>491</priority>
+ </properties>
+ <children>
+ #include <include/failover/protocol-common-config.xml.i>
+ </children>
+ </node>
</children>
</node>
<node name="service">