From 7124ff7f0c17e6875451fb346bbe4b8a20f5936e Mon Sep 17 00:00:00 2001 From: John Tishey Date: Tue, 13 Sep 2022 11:28:47 -0500 Subject: [PATCH 1/2] Check for existing VRF + Neighbor in get_bgp_neighbors() --- napalm/ios/ios.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/napalm/ios/ios.py b/napalm/ios/ios.py index 19cbbc2f3..bf22cab77 100644 --- a/napalm/ios/ios.py +++ b/napalm/ios/ios.py @@ -1931,12 +1931,14 @@ def get_bgp_neighbors(self): # get neighbor_entry out of neighbor data neighbor_entry = None for neighbor in neighbor_data: - if ( - neighbor["afi"].lower() == afi - and napalm.base.helpers.ip(neighbor["remote_addr"]) == remote_addr - ): - neighbor_entry = neighbor - break + current_neighbor = napalm.base.helpers.ip(neighbor["remote_addr"]) + if neighbor["afi"].lower() == afi and current_neighbor == remote_addr: + # Neighbor IPs in VRFs can overlap, so make sure + # we haven't covered this VRF + IP already + vrf = neighbor["vrf"] or "global" + if current_neighbor not in bgp_neighbor_data[vrf]["peers"]: + neighbor_entry = neighbor + break # check for proper session data for the afi if neighbor_entry is None: continue From c583cdf6d39980d034a76297cb609ebdd1e7c57d Mon Sep 17 00:00:00 2001 From: John Tishey Date: Wed, 14 Sep 2022 04:37:40 -0500 Subject: [PATCH 2/2] Skip existing check for non-VRF neighbors (multiple AFIs) --- napalm/ios/ios.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/napalm/ios/ios.py b/napalm/ios/ios.py index bf22cab77..8de99c195 100644 --- a/napalm/ios/ios.py +++ b/napalm/ios/ios.py @@ -1936,7 +1936,10 @@ def get_bgp_neighbors(self): # Neighbor IPs in VRFs can overlap, so make sure # we haven't covered this VRF + IP already vrf = neighbor["vrf"] or "global" - if current_neighbor not in bgp_neighbor_data[vrf]["peers"]: + if ( + vrf == "global" + or current_neighbor not in bgp_neighbor_data[vrf]["peers"] + ): neighbor_entry = neighbor break # check for proper session data for the afi