Skip to content

Commit

Permalink
Merge pull request #3427 from vyos/mergify/bp/sagitta/pr-3422
Browse files Browse the repository at this point in the history
bgp: T6082: Allow the same local-as and remote-as in one peer group (backport #3422)
  • Loading branch information
dmbaturin authored May 8, 2024
2 parents d7907cc + a9700bd commit 1b7a2d1
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 1 deletion.
21 changes: 21 additions & 0 deletions smoketest/scripts/cli/test_protocols_bgp.py
Original file line number Diff line number Diff line change
Expand Up @@ -1330,6 +1330,27 @@ def _common_config_check(conf, include_ras=True):
self.assertIn(f'neighbor {ext_neighbors[1]} remote-as external', conf)
self.assertIn(f'neighbor {ext_neighbors[1]} peer-group {ext_pg_name}', conf)

def test_bgp_29_peer_group_remote_as_equal_local_as(self):
self.cli_set(base_path + ['system-as', ASN])
self.cli_set(base_path + ['peer-group', 'OVERLAY', 'local-as', f'{int(ASN) + 1}'])
self.cli_set(base_path + ['peer-group', 'OVERLAY', 'remote-as', f'{int(ASN) + 1}'])
self.cli_set(base_path + ['peer-group', 'OVERLAY', 'address-family', 'l2vpn-evpn'])

self.cli_set(base_path + ['peer-group', 'UNDERLAY', 'address-family', 'ipv4-unicast'])

self.cli_set(base_path + ['neighbor', '10.177.70.62', 'peer-group', 'UNDERLAY'])
self.cli_set(base_path + ['neighbor', '10.177.70.62', 'remote-as', 'external'])

self.cli_set(base_path + ['neighbor', '10.177.75.1', 'peer-group', 'OVERLAY'])
self.cli_set(base_path + ['neighbor', '10.177.75.2', 'peer-group', 'OVERLAY'])

self.cli_commit()

conf = self.getFRRconfig(f'router bgp {ASN}')

self.assertIn(f'neighbor OVERLAY remote-as {int(ASN) + 1}', conf)
self.assertIn(f'neighbor OVERLAY local-as {int(ASN) + 1}', conf)

def test_bgp_99_bmp(self):
target_name = 'instance-bmp'
target_address = '127.0.0.1'
Expand Down
2 changes: 1 addition & 1 deletion src/conf_mode/protocols_bgp.py
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ def verify(bgp):
raise ConfigError('Cannot have local-as same as system-as number')

# Neighbor AS specified for local-as and remote-as can not be the same
if dict_search('remote_as', peer_config) == asn:
if dict_search('remote_as', peer_config) == asn and neighbor != 'peer_group':
raise ConfigError(f'Neighbor "{peer}" has local-as specified which is '\
'the same as remote-as, this is not allowed!')

Expand Down

0 comments on commit 1b7a2d1

Please sign in to comment.