diff options
author | Christian Poessinger <christian@poessinger.com> | 2022-05-06 18:30:33 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2022-05-06 18:32:08 +0200 |
commit | fced75e125c87add45c9fbd1ef92dae687f7e536 (patch) | |
tree | 452d68fbffacd517c5c57ddf91659a2e55315797 /src/conf_mode | |
parent | fb48da5f61daae9427b912275151369bad9be8d4 (diff) | |
download | vyos-1x-fced75e125c87add45c9fbd1ef92dae687f7e536.tar.gz vyos-1x-fced75e125c87add45c9fbd1ef92dae687f7e536.zip |
bgp: T4385: verify() peer-group in interface based neighbors
Diffstat (limited to 'src/conf_mode')
-rwxr-xr-x | src/conf_mode/protocols_bgp.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/conf_mode/protocols_bgp.py b/src/conf_mode/protocols_bgp.py index a9173ab87..cd46cbcb4 100755 --- a/src/conf_mode/protocols_bgp.py +++ b/src/conf_mode/protocols_bgp.py @@ -169,6 +169,16 @@ def verify(bgp): peer_group = peer_config['peer_group'] if 'remote_as' in peer_config and 'remote_as' in bgp['peer_group'][peer_group]: raise ConfigError(f'Peer-group member "{peer}" cannot override remote-as of peer-group "{peer_group}"!') + if 'interface' in peer_config: + if 'peer_group' in peer_config['interface']: + peer_group = peer_config['interface']['peer_group'] + if 'remote_as' in peer_config['interface'] and 'remote_as' in bgp['peer_group'][peer_group]: + raise ConfigError(f'Peer-group member "{peer}" cannot override remote-as of peer-group "{peer_group}"!') + if 'v6only' in peer_config['interface']: + if 'peer_group' in peer_config['interface']['v6only']: + peer_group = peer_config['interface']['v6only']['peer_group'] + if 'remote_as' in peer_config['interface']['v6only'] and 'remote_as' in bgp['peer_group'][peer_group]: + raise ConfigError(f'Peer-group member "{peer}" cannot override remote-as of peer-group "{peer_group}"!') # Only checks for ipv4 and ipv6 neighbors # Check if neighbor address is assigned as system interface address |