From 0364f904eb20d930cdb61d2ab92859d72b60705e Mon Sep 17 00:00:00 2001 From: Maxime Van Hees Date: Wed, 24 May 2023 17:56:25 +0000 Subject: [PATCH] bug fix v11 --- src/router.rs | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/src/router.rs b/src/router.rs index 3a7913f..b4089e2 100644 --- a/src/router.rs +++ b/src/router.rs @@ -411,12 +411,13 @@ impl Router { let mut to_remove = Vec::new(); let mut to_add_to_fallback = Vec::new(); + for r in inner.selected_routing_table.table.iter() { if r.0.plen == plen && r.0.prefix == prefix { if metric < r.1.metric { to_remove.push(r.0.clone()); break; - } else if metric >= r.1.metric { + } else if metric >= r.1.metric && neighbor_ip != r.1.next_hop { to_add_to_fallback.push(route_entry.clone()); } } @@ -430,22 +431,9 @@ impl Router { for mut re in to_add_to_fallback { - // only add to fallback if the route with that prefix, plen, neighbor is not already in the selected routing table - // and if the metric is not u16::MAX - 1 - let mut already_in_selected = false; - for r in inner.selected_routing_table.table.iter() { - if r.0.plen == plen && r.0.prefix == prefix && r.0.neighbor == neighbor_ip && r.1.metric != u16::MAX - 1{ - already_in_selected = true; - break; - } - } - if already_in_selected { - continue; - } - else { re.selected = false; inner.fallback_routing_table.table.insert(route_key.clone(), re); - } + return; } inner.selected_routing_table.table.insert(route_key.clone(), route_entry.clone());