fix ospf foreign network info version

This commit is contained in:
sijie.sun
2024-09-23 12:29:16 +08:00
committed by Sijie.Sun
parent 783ba50c9e
commit d1e2e1db2b
+7 -3
View File
@@ -425,6 +425,10 @@ impl SyncedRouteInfo {
foreign_networks: ForeignNetworkRouteInfoMap, foreign_networks: ForeignNetworkRouteInfoMap,
) -> bool { ) -> bool {
let now = SystemTime::now(); let now = SystemTime::now();
let now_version = now
.duration_since(SystemTime::UNIX_EPOCH)
.unwrap()
.as_secs() as Version;
let mut updated = false; let mut updated = false;
for mut item in self for mut item in self
.foreign_network .foreign_network
@@ -441,7 +445,7 @@ impl SyncedRouteInfo {
.unwrap() .unwrap()
> UPDATE_PEER_INFO_PERIOD; > UPDATE_PEER_INFO_PERIOD;
if need_renew { if need_renew {
new_entry.version = entry.version + 1; new_entry.version = std::cmp::max(new_entry.version + 1, now_version);
*entry = new_entry.clone(); *entry = new_entry.clone();
updated = true; updated = true;
} }
@@ -451,7 +455,7 @@ impl SyncedRouteInfo {
} else if !item.foreign_peer_ids.is_empty() { } else if !item.foreign_peer_ids.is_empty() {
item.foreign_peer_ids.clear(); item.foreign_peer_ids.clear();
item.last_update = Some(SystemTime::now().into()); item.last_update = Some(SystemTime::now().into());
item.version += 1; item.version = std::cmp::max(item.version + 1, now_version);
updated = true; updated = true;
} }
} }
@@ -463,7 +467,7 @@ impl SyncedRouteInfo {
.and_modify(|v| panic!("key should not exist, {:?}", v)) .and_modify(|v| panic!("key should not exist, {:?}", v))
.or_insert_with(|| { .or_insert_with(|| {
let mut v = item.value().clone(); let mut v = item.value().clone();
v.version = 1; v.version = now_version;
v v
}); });
updated = true; updated = true;