Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b46569b

Browse files
committed
fix: remove only duplicate proxy cidr from map
1 parent d5c4700 commit b46569b

1 file changed

Lines changed: 5 additions & 9 deletions

File tree

easytier/src/peers/peer_ospf_route.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1529,7 +1529,7 @@ impl RouteTable {
15291529
.into_iter()
15301530
.flat_map(|info| &info.proxy_cidrs)
15311531
.filter_map(|cidr| cidr.parse::<IpCidr>().ok())
1532-
.collect::<Vec<_>>();
1532+
.collect::<HashSet<_>>();
15331533

15341534
// build next hop map
15351535
let (graph, start_node) =
@@ -1636,11 +1636,7 @@ impl RouteTable {
16361636
continue;
16371637
};
16381638

1639-
if *peer_id != my_peer_id
1640-
&& local_proxy_cidrs
1641-
.iter()
1642-
.any(|local_cidr| cidr_is_subset(&cidr, local_cidr))
1643-
{
1639+
if *peer_id != my_peer_id && local_proxy_cidrs.contains(&cidr) {
16441640
tracing::debug!(
16451641
?peer_id,
16461642
?my_peer_id,
@@ -6509,7 +6505,7 @@ mod tests {
65096505
}
65106506

65116507
#[tokio::test]
6512-
async fn sync_route_info_prioritizes_local_over_remote_for_overlapped_proxy_cidrs() {
6508+
async fn sync_route_info_uses_lpm_for_overlapped_proxy_cidrs() {
65136509
let peer_mgr = create_mock_pmgr().await;
65146510
let route = create_mock_route(peer_mgr.clone()).await;
65156511
let from_peer_id: PeerId = 11001;
@@ -6577,13 +6573,13 @@ mod tests {
65776573
assert_eq!(stored.proxy_cidrs, sender_info.proxy_cidrs);
65786574
drop(guard);
65796575

6580-
// Route-table filtering: local announced /16 should dominate remote equal/subset.
6576+
// Data plane uses LPM: remote /24 should win over local /16 for 10.10.1.1.
65816577
assert_eq!(
65826578
route
65836579
.service_impl
65846580
.route_table
65856581
.get_peer_id_for_proxy(&"10.10.1.1".parse::<IpAddr>().unwrap()),
6586-
Some(peer_mgr.my_peer_id())
6582+
Some(from_peer_id)
65876583
);
65886584
// Non-overlapped remote prefix should still route to remote.
65896585
assert_eq!(

0 commit comments

Comments
 (0)