Make ospf route more effiencient (#1512)

Avoid iterate all peer info and conn list when building sync request.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
KKRainbow
2025-12-08 13:14:47 +08:00
committed by GitHub
parent 056c9da781
commit 838b6101b9
5 changed files with 444 additions and 233 deletions

View File

@@ -160,7 +160,7 @@ jobs:
# The prefix cache key, this can be changed to start a new cache manually.
# default: "v0-rust"
prefix-key: ""
cache-targets: "false"
- name: Setup protoc
uses: arduino/setup-protoc@v3

10
Cargo.lock generated
View File

@@ -2136,6 +2136,7 @@ dependencies = [
"nix 0.29.0",
"once_cell",
"openssl",
"ordered_hash_map",
"parking_lot",
"percent-encoding",
"petgraph 0.8.1",
@@ -5498,6 +5499,15 @@ dependencies = [
"pin-project-lite",
]
[[package]]
name = "ordered_hash_map"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6c699f8a30f345785be969deed7eee4c73a5de58c7faf61d6a3251ef798ff61"
dependencies = [
"hashbrown 0.15.3",
]
[[package]]
name = "os_info"
version = "3.8.2"

View File

@@ -143,6 +143,7 @@ network-interface = "2.0"
# for ospf route
petgraph = "0.8.1"
hashbrown = "0.15.3"
ordered_hash_map = "0.5.0"
# for wireguard
boringtun = { package = "boringtun-easytier", version = "0.6.1", optional = true }

File diff suppressed because it is too large Load Diff

View File

@@ -38,8 +38,7 @@ async fn test_route_peer_info_ipv6() {
global_ctx.set_ipv6(Some(ipv6_cidr));
// Create RoutePeerInfo with IPv6 support
let peer_info = RoutePeerInfo::new();
let updated_info = peer_info.update_self(123, 456, &global_ctx);
let updated_info = RoutePeerInfo::new_updated_self(123, 456, &global_ctx);
// Verify IPv6 address is included
assert!(updated_info.ipv6_addr.is_some());