修复--route命令显示异常的问题

This commit is contained in:
lubeilin
2023-07-29 21:14:31 +08:00
parent d336d938a9
commit fbe01d8cbf
2 changed files with 7 additions and 4 deletions
+6 -4
View File
@@ -257,9 +257,11 @@ impl Context {
} }
} }
pub fn route_to_id(&self, route_key: &RouteKey) -> Option<Ipv4Addr> { pub fn route_to_id(&self, route_key: &RouteKey) -> Option<Ipv4Addr> {
for x in self.inner.route_table_time.iter() { for x in self.inner.route_table.iter() {
if &x.key().0 == route_key { for route in x.value() {
return Some(x.key().1); if &route.route_key() == route_key {
return Some(*x.key());
}
} }
} }
None None
@@ -311,8 +313,8 @@ impl Context {
drop(v); drop(v);
routes.retain(|x| x.route_key() != route_key); routes.retain(|x| x.route_key() != route_key);
self.inner.route_table.insert(*id, routes); self.inner.route_table.insert(*id, routes);
self.inner.route_table_time.remove(&(route_key, *id));
} }
self.inner.route_table_time.remove(&(route_key, *id));
drop(guard); drop(guard);
} }
pub fn update_read_time(&self, id: &Ipv4Addr, route_key: &RouteKey) { pub fn update_read_time(&self, id: &Ipv4Addr, route_key: &RouteKey) {
+1
View File
@@ -29,6 +29,7 @@ impl Idle {
for entry in self.context.inner.route_table_time.iter() { for entry in self.context.inner.route_table_time.iter() {
let last_read = entry.value().load().elapsed(); let last_read = entry.value().load().elapsed();
if last_read >= self.read_idle { if last_read >= self.read_idle {
entry.remove();
return Ok((entry.key().1.clone(), entry.key().0.clone())); return Ok((entry.key().1.clone(), entry.key().0.clone()));
} else { } else {
if max < last_read { if max < last_read {