diff options
| author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2026-06-23 13:36:44 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-06-23 13:36:44 +0300 |
| commit | d1e320047348d90202a23a598cd771e41cb0be24 (patch) | |
| tree | b64a18c06ed6f94ab04ad8dbe7acb3c4645deedd /src | |
| parent | d935b5a83b0fa81e3fc9d727cedbda7575f60d85 (diff) | |
| parent | d90693fd0da03f8de4ccc4a5a85e2f2c9823e682 (diff) | |
| download | vyos-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-x | src/conf_mode/interfaces_pseudo-ethernet.py | 31 |
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): |
