fix ospf foreign network info version
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user