From 256a2adc3e36cc43552dfee483185fec688a3b3b Mon Sep 17 00:00:00 2001 From: lubeilin <1791778603@qq.com> Date: Sun, 7 Apr 2024 21:38:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=89=E5=8D=93=E4=B8=8D=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vnt/src/handle/recv_data/server.rs | 91 ++++++++++++++++-------------- 1 file changed, 49 insertions(+), 42 deletions(-) diff --git a/vnt/src/handle/recv_data/server.rs b/vnt/src/handle/recv_data/server.rs index 41b75c0..b9ea13d 100644 --- a/vnt/src/handle/recv_data/server.rs +++ b/vnt/src/handle/recv_data/server.rs @@ -267,57 +267,64 @@ impl ServerPacketHandler { if old.virtual_ip != Ipv4Addr::UNSPECIFIED { log::info!("ip发生变化,old:{:?},response={:?}", old, response); } - if let Err(e) = self.device.set_ip(virtual_ip, virtual_netmask) { - log::error!("LocalIpExists {:?}", e); - self.callback.error(ErrorInfo::new_msg( - ErrorType::LocalIpExists, - format!("set_ip {:?}", e), - )); - return Ok(()); - } - let mut guard = self.route_record.lock(); - for (dest, mask) in guard.drain(..) { - if let Err(e) = self.device.delete_route(dest, mask) { - log::warn!("删除路由失败 ={:?}", e); - } - } - if let Err(e) = self.device.add_route(virtual_network, virtual_netmask, 1) { - log::warn!("添加默认路由失败 ={:?}", e); - } else { - guard.push((virtual_network, virtual_netmask)); - } - if let Err(e) = - self.device - .add_route(Ipv4Addr::BROADCAST, Ipv4Addr::BROADCAST, 1) + #[cfg(not(target_os = "android"))] { - log::warn!("添加广播路由失败 ={:?}", e); - } else { - guard.push((Ipv4Addr::BROADCAST, Ipv4Addr::BROADCAST)); - } + if let Err(e) = self.device.set_ip(virtual_ip, virtual_netmask) { + log::error!("LocalIpExists {:?}", e); + self.callback.error(ErrorInfo::new_msg( + ErrorType::LocalIpExists, + format!("set_ip {:?}", e), + )); + return Ok(()); + } + let mut guard = self.route_record.lock(); + for (dest, mask) in guard.drain(..) { + if let Err(e) = self.device.delete_route(dest, mask) { + log::warn!("删除路由失败 ={:?}", e); + } + } + if let Err(e) = + self.device.add_route(virtual_network, virtual_netmask, 1) + { + log::warn!("添加默认路由失败 ={:?}", e); + } else { + guard.push((virtual_network, virtual_netmask)); + } + if let Err(e) = + self.device + .add_route(Ipv4Addr::BROADCAST, Ipv4Addr::BROADCAST, 1) + { + log::warn!("添加广播路由失败 ={:?}", e); + } else { + guard.push((Ipv4Addr::BROADCAST, Ipv4Addr::BROADCAST)); + } - if let Err(e) = self.device.add_route( - Ipv4Addr::from([224, 0, 0, 0]), - Ipv4Addr::from([240, 0, 0, 0]), - 1, - ) { - log::warn!("添加组播路由失败 ={:?}", e); - } else { - guard.push(( + if let Err(e) = self.device.add_route( Ipv4Addr::from([224, 0, 0, 0]), Ipv4Addr::from([240, 0, 0, 0]), - )); - } - - for (dest, mask) in self.external_route.to_route() { - if let Err(e) = self.device.add_route(dest, mask, 1) { - log::warn!("添加路由失败 ={:?}", e); + 1, + ) { + log::warn!("添加组播路由失败 ={:?}", e); } else { - guard.push((dest, mask)); + guard.push(( + Ipv4Addr::from([224, 0, 0, 0]), + Ipv4Addr::from([240, 0, 0, 0]), + )); + } + + for (dest, mask) in self.external_route.to_route() { + if let Err(e) = self.device.add_route(dest, mask, 1) { + log::warn!("添加路由失败 ={:?}", e); + } else { + guard.push((dest, mask)); + } } } - self.callback.success(); } self.set_device_info_list(response.device_info_list, response.epoch as _); + if old.status.offline() { + self.callback.success(); + } } } service_packet::Protocol::PushDeviceList => {