summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2026-06-23 13:36:44 +0300
committerGitHub <noreply@github.com>2026-06-23 13:36:44 +0300
commitd1e320047348d90202a23a598cd771e41cb0be24 (patch)
treeb64a18c06ed6f94ab04ad8dbe7acb3c4645deedd /src
parentd935b5a83b0fa81e3fc9d727cedbda7575f60d85 (diff)
parentd90693fd0da03f8de4ccc4a5a85e2f2c9823e682 (diff)
downloadvyos-1x-d1e320047348d90202a23a598cd771e41cb0be24.tar.gz
vyos-1x-d1e320047348d90202a23a598cd771e41cb0be24.zip
Merge pull request #5156 from alexandr-san4ez/T8540-current
pseudo-ethernet: T8540: Add anycast-gateway support for EVPN
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/interfaces_pseudo-ethernet.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/conf_mode/interfaces_pseudo-ethernet.py b/src/conf_mode/interfaces_pseudo-ethernet.py
index 6a4219343..12019d3e6 100755
--- a/src/conf_mode/interfaces_pseudo-ethernet.py
+++ b/src/conf_mode/interfaces_pseudo-ethernet.py
@@ -68,6 +68,35 @@ def get_config(config=None):
return peth
+def _verify_anycast_gateway(peth: dict):
+ """Validate anycast-gateway requirements."""
+
+ if 'anycast_gateway' not in peth:
+ return
+
+ ifname = peth['ifname']
+
+ # Requirement 1: MAC address must be explicitly configured
+ if 'mac' not in peth:
+ raise ConfigError(
+ f'Anycast-gateway requires an explicit MAC address to be set on interface {ifname}. '
+ f'Use: set interfaces pseudo-ethernet {ifname} mac <mac>'
+ )
+
+ # Requirement 2: source-interface must be a bridge or bridge sub-interface
+ source_iface = peth.get('source_interface')
+ if not source_iface:
+ raise ConfigError(
+ f'Anycast-gateway requires source-interface to be set on interface {ifname}'
+ )
+
+ if not source_iface.startswith('br'):
+ raise ConfigError(
+ 'Anycast-gateway requires source-interface to be a bridge '
+ 'or a bridge vlan interface (e.g. br0 or br0.100), but '
+ f'"{source_iface}" is neither of these two.'
+ )
+
def verify(peth):
if 'deleted' in peth:
verify_bridge_delete(peth)
@@ -82,6 +111,8 @@ def verify(peth):
# use common function to verify VLAN configuration
verify_vlan_config(peth)
+ _verify_anycast_gateway(peth)
+
return None
def generate(peth):