RoutePeerInfo

This commit is contained in:
Luna Yao
2026-04-17 19:11:31 +02:00
parent b070cff8e2
commit 6001eef736
+20 -19
View File
@@ -3,8 +3,8 @@ use std::{
fmt::Debug, fmt::Debug,
net::{IpAddr, Ipv4Addr, Ipv6Addr}, net::{IpAddr, Ipv4Addr, Ipv6Addr},
sync::{ sync::{
Arc, Weak, atomic::{AtomicBool, AtomicU32, Ordering}, Arc,
atomic::{AtomicBool, AtomicU32, Ordering}, Weak,
}, },
time::{Duration, Instant, SystemTime}, time::{Duration, Instant, SystemTime},
}; };
@@ -14,12 +14,12 @@ use cidr::{IpCidr, Ipv4Cidr, Ipv6Cidr};
use crossbeam::atomic::AtomicCell; use crossbeam::atomic::AtomicCell;
use dashmap::DashMap; use dashmap::DashMap;
use ordered_hash_map::OrderedHashMap; use ordered_hash_map::OrderedHashMap;
use parking_lot::{RwLock, lock_api::RwLockUpgradableReadGuard}; use parking_lot::{lock_api::RwLockUpgradableReadGuard, RwLock};
use petgraph::{ use petgraph::{
Directed,
algo::dijkstra, algo::dijkstra,
graph::{Graph, NodeIndex}, graph::{Graph, NodeIndex},
visit::{EdgeRef, IntoNodeReferences}, visit::{EdgeRef, IntoNodeReferences},
Directed,
}; };
use prefix_trie::PrefixMap; use prefix_trie::PrefixMap;
use prost::Message; use prost::Message;
@@ -34,24 +34,24 @@ use crate::common::config::ConfigLoader;
use crate::proto::utils::TransientDigest; use crate::proto::utils::TransientDigest;
use crate::{ use crate::{
common::{ common::{
PeerId,
config::NetworkIdentity, config::NetworkIdentity,
constants::EASYTIER_VERSION, constants::EASYTIER_VERSION,
global_ctx::{ArcGlobalCtx, GlobalCtxEvent}, global_ctx::{ArcGlobalCtx, GlobalCtxEvent},
shrink_dashmap, shrink_dashmap,
stun::StunInfoCollectorTrait, stun::StunInfoCollectorTrait,
PeerId,
}, },
peers::route_trait::{Route, RouteInterfaceBox}, peers::route_trait::{Route, RouteInterfaceBox},
proto::{ proto::{
acl::GroupIdentity, acl::GroupIdentity,
common::{Ipv4Inet, NatType, StunInfo}, common::{Ipv4Inet, NatType, StunInfo},
peer_rpc::{ peer_rpc::{
ForeignNetworkRouteInfoEntry, ForeignNetworkRouteInfoKey, OspfRouteRpc, route_foreign_network_infos, route_foreign_network_summary, sync_route_info_request::ConnInfo,
OspfRouteRpcClientFactory, OspfRouteRpcServer, PeerGroupInfo, PeerIdVersion, ForeignNetworkRouteInfoEntry, ForeignNetworkRouteInfoKey, OspfRouteRpc, OspfRouteRpcClientFactory,
PeerIdentityType, RouteForeignNetworkInfos, RouteForeignNetworkSummary, RoutePeerInfo, OspfRouteRpcServer, PeerGroupInfo, PeerIdVersion, PeerIdentityType,
RoutePeerInfos, SyncRouteInfoError, SyncRouteInfoRequest, SyncRouteInfoResponse, RouteForeignNetworkInfos, RouteForeignNetworkSummary, RoutePeerInfo, RoutePeerInfos,
TrustedCredentialPubkey, route_foreign_network_infos, route_foreign_network_summary, SyncRouteInfoError, SyncRouteInfoRequest, SyncRouteInfoResponse,
sync_route_info_request::ConnInfo, TrustedCredentialPubkey,
}, },
rpc_types::{ rpc_types::{
self, self,
@@ -62,13 +62,13 @@ use crate::{
}; };
use super::{ use super::{
PeerPacketFilter,
graph_algo::dijkstra_with_first_hop, graph_algo::dijkstra_with_first_hop,
peer_rpc::PeerRpcManager, peer_rpc::PeerRpcManager,
route_trait::{ route_trait::{
DefaultRouteCostCalculator, ForeignNetworkRouteInfoMap, NextHopPolicy, RouteCostCalculator, DefaultRouteCostCalculator, ForeignNetworkRouteInfoMap, NextHopPolicy, RouteCostCalculator,
RouteCostCalculatorInterface, RouteCostCalculatorInterface,
}, },
PeerPacketFilter,
}; };
use atomic_shim::AtomicU64; use atomic_shim::AtomicU64;
@@ -223,12 +223,15 @@ impl RoutePeerInfo {
let dns = cfg_select! { let dns = cfg_select! {
feature = "magic-dns" => {{ feature = "magic-dns" => {{
use crate::dns::config::DnsGlobalCtxExt; use crate::dns::config::DnsGlobalCtxExt;
global_ctx.dns_export_config().digest() global_ctx.dns_export_config().digest().into()
}} }}
_ => Default::default(), _ => Default::default(),
}; };
Self { Self {
#[allow(deprecated)]
quic_port: None,
peer_id: my_peer_id, peer_id: my_peer_id,
inst_id: Some(global_ctx.get_id().into()), inst_id: Some(global_ctx.get_id().into()),
cost: 0, cost: 0,
@@ -260,7 +263,7 @@ impl RoutePeerInfo {
ipv6_addr: global_ctx.get_ipv6().map(|x| x.into()), ipv6_addr: global_ctx.get_ipv6().map(|x| x.into()),
groups: global_ctx.get_acl_groups(my_peer_id), groups: global_ctx.get_acl_groups(my_peer_id),
dns: dns.into(), dns,
noise_static_pubkey, noise_static_pubkey,
@@ -274,8 +277,6 @@ impl RoutePeerInfo {
} else { } else {
Vec::new() Vec::new()
}, },
..Default::default()
} }
} }
@@ -3680,8 +3681,8 @@ mod tests {
use std::{ use std::{
collections::{BTreeSet, HashMap}, collections::{BTreeSet, HashMap},
sync::{ sync::{
Arc,
atomic::{AtomicU32, Ordering}, atomic::{AtomicU32, Ordering},
Arc,
}, },
time::{Duration, SystemTime}, time::{Duration, SystemTime},
}; };
@@ -3689,14 +3690,14 @@ mod tests {
use super::{PeerRoute, REMOVE_DEAD_PEER_INFO_AFTER}; use super::{PeerRoute, REMOVE_DEAD_PEER_INFO_AFTER};
use crate::{ use crate::{
common::{ common::{
global_ctx::{tests::get_mock_global_ctx, GlobalCtxEvent, TrustedKeySource},
PeerId, PeerId,
global_ctx::{GlobalCtxEvent, TrustedKeySource, tests::get_mock_global_ctx},
}, },
connector::udp_hole_punch::tests::replace_stun_info_collector, connector::udp_hole_punch::tests::replace_stun_info_collector,
peers::{ peers::{
create_packet_recv_chan, create_packet_recv_chan,
peer_manager::{PeerManager, RouteAlgoType}, peer_manager::{PeerManager, RouteAlgoType},
peer_ospf_route::{FORCE_USE_CONN_LIST, PeerIdVersion, PeerRouteServiceImpl}, peer_ospf_route::{PeerIdVersion, PeerRouteServiceImpl, FORCE_USE_CONN_LIST},
route_trait::{NextHopPolicy, Route, RouteCostCalculatorInterface, RouteInterface}, route_trait::{NextHopPolicy, Route, RouteCostCalculatorInterface, RouteInterface},
tests::{connect_peer_manager, create_mock_peer_manager, wait_route_appear}, tests::{connect_peer_manager, create_mock_peer_manager, wait_route_appear},
}, },