From ebf0ea3a0460a61dd13b13c9a58b4c6875369b15 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 30 Jun 2026 09:25:38 +0800 Subject: [PATCH] upgrade to ipv6 if available --- src/network/packet.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/network/packet.rs b/src/network/packet.rs index b811c08..ce3ecc9 100755 --- a/src/network/packet.rs +++ b/src/network/packet.rs @@ -550,7 +550,7 @@ pub async fn check_peer_registration_needed( _v6_info: &Option, peer_sock: &SdlanSock, ) { - let p = eee.known_peers.peers.get(&src_mac); + let mut p = eee.known_peers.peers.get_mut(&src_mac); let last_seen; let now; match p { @@ -561,7 +561,7 @@ pub async fn check_peer_registration_needed( return; // unimplemented!(); } - Some(k) => { + Some(ref mut k) => { // let mut ipv4_to_ipv6 = false; now = get_current_timestamp(); if !from_sn { @@ -569,7 +569,13 @@ pub async fn check_peer_registration_needed( } let origin_family = k.sock.family; if origin_family != peer_sock.family { - return; + if peer_sock.family == AF_INET6 && origin_family == AF_INET { + info!("Upgrading peer {} from IPv4 to IPv6 P2P", mac_to_string(&src_mac)); + k.sock = peer_sock.deepcopy(); + k.last_seen.store(now, Ordering::Relaxed); + } else { + return; + } } /* if peer_sock.family == AF_INET6 && k.sock.read().unwrap().family == AF_INET {