summaryrefslogtreecommitdiff
path: root/interface-definitions/include
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2026-09-15 13:51:30 -0500
committerJohn Estabrook <jestabro@vyos.io>2026-10-08 07:41:04 -0500
commitdf7c3fc0017fb27d2945ac2818ac2d5fc343ca37 (patch)
treef21d7c3ece96d8377a99b53d47a99cd576548787 /interface-definitions/include
parentec64edcb5b014125dfd5574f40704423b0c0831b (diff)
downloadvyos-1x-df7c3fc0017fb27d2945ac2818ac2d5fc343ca37.tar.gz
vyos-1x-df7c3fc0017fb27d2945ac2818ac2d5fc343ca37.zip
T7886: add basic cases of reverse interface dependency verification
Add cases for which a config mode script calls verify_interface_exists, excluding those of dynamic_interface_pattern, to be handled separately. The dependency verification raises error, resp., gives a warning, when verify_interface_exists is called with warning_only=False, resp., True. These are the critical cases that motivated the original design, for if a removal of an interface is allowed, a subsequent reboot will raise ConfigError on config load and invalidate the config subtree for that component.
Diffstat (limited to 'interface-definitions/include')
-rw-r--r--interface-definitions/include/constraint/dependent-error-interface-name.xml.i7
-rw-r--r--interface-definitions/include/constraint/dependent-warning-interface-name.xml.i7
-rw-r--r--interface-definitions/include/dependent-error-generic-interface-multi.xml.i19
-rw-r--r--interface-definitions/include/dependent-error-generic-interface.xml.i18
-rw-r--r--interface-definitions/include/dependent-error-source-interface.xml.i18
-rw-r--r--interface-definitions/include/dependent-warning-generic-interface-multi-broadcast.xml.i19
-rw-r--r--interface-definitions/include/dependent-warning-generic-interface-multi.xml.i19
-rw-r--r--interface-definitions/include/dependent-warning-source-interface.xml.i18
-rw-r--r--interface-definitions/include/interface/dependent-error-inbound-interface.xml.i11
-rw-r--r--interface-definitions/include/isis/protocol-common-config.xml.i1
-rw-r--r--interface-definitions/include/ospf/protocol-common-config.xml.i4
-rw-r--r--interface-definitions/include/ospfv3/protocol-common-config.xml.i4
12 files changed, 139 insertions, 6 deletions
diff --git a/interface-definitions/include/constraint/dependent-error-interface-name.xml.i b/interface-definitions/include/constraint/dependent-error-interface-name.xml.i
new file mode 100644
index 000000000..ec4d524f4
--- /dev/null
+++ b/interface-definitions/include/constraint/dependent-error-interface-name.xml.i
@@ -0,0 +1,7 @@
+<!-- include start from constraint/dependent-error-interface-name.xml.i -->
+<constraint>
+ <regex>(bond|br|dum|en|ersp|eth|gnv|ifb|ipoe|lan|l2tp|l2tpeth|macsec|peth|ppp|pppoe|pptp|sstp|sstpc|tun|veth|vpptap|vpptun|vti|vtun|vxlan|wg|wlan|wwan)[0-9]+(.\d+)?|pod-[-_a-zA-Z0-9]{1,11}|lo</regex>
+ <validator name="interface-exists"/>
+</constraint>
+<dependency kind="interface" alert="error"/>
+<!-- include end -->
diff --git a/interface-definitions/include/constraint/dependent-warning-interface-name.xml.i b/interface-definitions/include/constraint/dependent-warning-interface-name.xml.i
new file mode 100644
index 000000000..bc646c3c9
--- /dev/null
+++ b/interface-definitions/include/constraint/dependent-warning-interface-name.xml.i
@@ -0,0 +1,7 @@
+<!-- include start from constraint/dependent-warning-interface-name.xml.i -->
+<constraint>
+ <regex>(bond|br|dum|en|ersp|eth|gnv|ifb|ipoe|lan|l2tp|l2tpeth|macsec|peth|ppp|pppoe|pptp|sstp|sstpc|tun|veth|vpptap|vpptun|vti|vtun|vxlan|wg|wlan|wwan)[0-9]+(.\d+)?|pod-[-_a-zA-Z0-9]{1,11}|lo</regex>
+ <validator name="interface-exists"/>
+</constraint>
+<dependency kind="interface" alert="warning"/>
+<!-- include end -->
diff --git a/interface-definitions/include/dependent-error-generic-interface-multi.xml.i b/interface-definitions/include/dependent-error-generic-interface-multi.xml.i
new file mode 100644
index 000000000..c5dd26267
--- /dev/null
+++ b/interface-definitions/include/dependent-error-generic-interface-multi.xml.i
@@ -0,0 +1,19 @@
+<!-- include start from dependent-error-generic-interface-multi.xml.i -->
+<leafNode name="interface">
+ <properties>
+ <help>Interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ <valueHelp>
+ <format>txt</format>
+ <description>Interface name</description>
+ </valueHelp>
+ <constraint>
+ #include <include/constraint/interface-name.xml.i>
+ </constraint>
+ <multi/>
+ <dependency kind="interface" alert="error"/>
+ </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/dependent-error-generic-interface.xml.i b/interface-definitions/include/dependent-error-generic-interface.xml.i
new file mode 100644
index 000000000..c48e728c8
--- /dev/null
+++ b/interface-definitions/include/dependent-error-generic-interface.xml.i
@@ -0,0 +1,18 @@
+<!-- include start from dependent-error-generic-interface.xml.i -->
+<leafNode name="interface">
+ <properties>
+ <help>Interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ <valueHelp>
+ <format>txt</format>
+ <description>Interface name</description>
+ </valueHelp>
+ <constraint>
+ #include <include/constraint/interface-name.xml.i>
+ </constraint>
+ <dependency kind="interface" alert="error"/>
+ </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/dependent-error-source-interface.xml.i b/interface-definitions/include/dependent-error-source-interface.xml.i
new file mode 100644
index 000000000..b3c23f64e
--- /dev/null
+++ b/interface-definitions/include/dependent-error-source-interface.xml.i
@@ -0,0 +1,18 @@
+<!-- include start from dependent-error-source-interface.xml.i -->
+<leafNode name="source-interface">
+ <properties>
+ <help>Interface used to establish connection</help>
+ <valueHelp>
+ <format>interface</format>
+ <description>Interface name</description>
+ </valueHelp>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ <constraint>
+ #include <include/constraint/interface-name.xml.i>
+ </constraint>
+ <dependency kind="interface" alert="error"/>
+ </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/dependent-warning-generic-interface-multi-broadcast.xml.i b/interface-definitions/include/dependent-warning-generic-interface-multi-broadcast.xml.i
new file mode 100644
index 000000000..22f6b6552
--- /dev/null
+++ b/interface-definitions/include/dependent-warning-generic-interface-multi-broadcast.xml.i
@@ -0,0 +1,19 @@
+<!-- include start from dependent-warning-generic-interface-multi-broadcast.xml.i -->
+<leafNode name="interface">
+ <properties>
+ <help>Interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces --broadcast</script>
+ </completionHelp>
+ <valueHelp>
+ <format>txt</format>
+ <description>Interface name</description>
+ </valueHelp>
+ <constraint>
+ #include <include/constraint/interface-name.xml.i>
+ </constraint>
+ <multi/>
+ <dependency kind="interface" alert="warning"/>
+ </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/dependent-warning-generic-interface-multi.xml.i b/interface-definitions/include/dependent-warning-generic-interface-multi.xml.i
new file mode 100644
index 000000000..bd4b9ea93
--- /dev/null
+++ b/interface-definitions/include/dependent-warning-generic-interface-multi.xml.i
@@ -0,0 +1,19 @@
+<!-- include start from dependent-warning-generic-interface-multi.xml.i -->
+<leafNode name="interface">
+ <properties>
+ <help>Interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ <valueHelp>
+ <format>txt</format>
+ <description>Interface name</description>
+ </valueHelp>
+ <constraint>
+ #include <include/constraint/interface-name.xml.i>
+ </constraint>
+ <multi/>
+ <dependency kind="interface" alert="warning"/>
+ </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/dependent-warning-source-interface.xml.i b/interface-definitions/include/dependent-warning-source-interface.xml.i
new file mode 100644
index 000000000..164135f2f
--- /dev/null
+++ b/interface-definitions/include/dependent-warning-source-interface.xml.i
@@ -0,0 +1,18 @@
+<!-- include start from dependent-warning-source-interface.xml.i -->
+<leafNode name="source-interface">
+ <properties>
+ <help>Interface used to establish connection</help>
+ <valueHelp>
+ <format>interface</format>
+ <description>Interface name</description>
+ </valueHelp>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ <constraint>
+ #include <include/constraint/interface-name.xml.i>
+ </constraint>
+ <dependency kind="interface" alert="warning"/>
+ </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/interface/dependent-error-inbound-interface.xml.i b/interface-definitions/include/interface/dependent-error-inbound-interface.xml.i
new file mode 100644
index 000000000..e1c79feb0
--- /dev/null
+++ b/interface-definitions/include/interface/dependent-error-inbound-interface.xml.i
@@ -0,0 +1,11 @@
+<!-- include start from interface/dependent-error-inbound-interface.xml.i -->
+<leafNode name="inbound-interface">
+ <properties>
+ <help>Inbound Interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ <dependency kind="interface" alert="error"/>
+ </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/isis/protocol-common-config.xml.i b/interface-definitions/include/isis/protocol-common-config.xml.i
index 6a7388c99..d0424ea4f 100644
--- a/interface-definitions/include/isis/protocol-common-config.xml.i
+++ b/interface-definitions/include/isis/protocol-common-config.xml.i
@@ -719,6 +719,7 @@
<completionHelp>
<script>${vyos_completion_dir}/list_interfaces</script>
</completionHelp>
+ <dependency kind="interface" alert="error"/>
</properties>
<children>
#include <include/bfd/bfd.xml.i>
diff --git a/interface-definitions/include/ospf/protocol-common-config.xml.i b/interface-definitions/include/ospf/protocol-common-config.xml.i
index 93d718ed4..caef8abb4 100644
--- a/interface-definitions/include/ospf/protocol-common-config.xml.i
+++ b/interface-definitions/include/ospf/protocol-common-config.xml.i
@@ -406,9 +406,7 @@
<format>txt</format>
<description>Interface name</description>
</valueHelp>
- <constraint>
- #include <include/constraint/interface-name.xml.i>
- </constraint>
+ #include <include/constraint/dependent-error-interface-name.xml.i>
</properties>
<children>
<leafNode name="area">
diff --git a/interface-definitions/include/ospfv3/protocol-common-config.xml.i b/interface-definitions/include/ospfv3/protocol-common-config.xml.i
index 72fb86d3d..e6d3b23b8 100644
--- a/interface-definitions/include/ospfv3/protocol-common-config.xml.i
+++ b/interface-definitions/include/ospfv3/protocol-common-config.xml.i
@@ -132,9 +132,7 @@
<format>txt</format>
<description>Interface used for routing information exchange</description>
</valueHelp>
- <constraint>
- #include <include/constraint/interface-name.xml.i>
- </constraint>
+ #include <include/constraint/dependent-error-interface-name.xml.i>
</properties>
<children>
<leafNode name="area">