fix: filter overlapped proxy cidrs in ProxyCidrsMonitor (#2079)

* feat(route): add async methods to list proxy CIDRs for IPv4 and IPv6
* refactor(ProxyCidrsMonitor): get proxy cidrs from list_proxy_cidrs
This commit is contained in:
Luna Yao
2026-04-12 16:18:54 +02:00
committed by GitHub
parent 6f3e708679
commit ec7ddd3bad
4 changed files with 66 additions and 30 deletions
+20
View File
@@ -3500,6 +3500,26 @@ impl Route for PeerRoute {
routes
}
async fn list_proxy_cidrs(&self) -> BTreeSet<Ipv4Cidr> {
self.service_impl
.route_table
.cidr_peer_id_map
.load()
.iter()
.map(|(cidr, _)| *cidr)
.collect()
}
async fn list_proxy_cidrs_v6(&self) -> BTreeSet<Ipv6Cidr> {
self.service_impl
.route_table
.cidr_v6_peer_id_map
.load()
.iter()
.map(|(cidr, _)| *cidr)
.collect()
}
async fn get_peer_id_by_ipv4(&self, ipv4_addr: &Ipv4Addr) -> Option<PeerId> {
let route_table = &self.service_impl.route_table;
if let Some(p) = route_table.ipv4_peer_id_map.get(ipv4_addr) {