From 0654985a2f82346a8b2a5e5f0127e74fc891ce70 Mon Sep 17 00:00:00 2001 From: asxalex Date: Fri, 29 Mar 2024 23:35:26 +0800 Subject: [PATCH] debuging --- Makefile | 3 +++ src/packet/common.rs | 17 ++++++++++++++++- src/packet/peer_info.rs | 3 ++- src/packet/register_super_ack.rs | 2 +- src/packet/register_super_nak.rs | 1 + 5 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b81f076 --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +test: + RUSTFLAGS="-L ." cargo test --release + diff --git a/src/packet/common.rs b/src/packet/common.rs index 299f6ce..d4669da 100644 --- a/src/packet/common.rs +++ b/src/packet/common.rs @@ -3,6 +3,8 @@ use crate::utils::Result; use super::packet::Packet; use byteorder::{BigEndian, ByteOrder}; +use tracing::{debug, error}; + use serde_repr::*; use crate::utils::*; @@ -263,6 +265,12 @@ pub fn encode_packet(cmn: &Common, pkt: &T) -> Result(cmn: &Common, pkt: &T) -> Result(value: &'a [u8]) -> Result<(Common<'a>, &'a [u8])> { let size_bytes = value[0..2].try_into().expect("never goes here"); let size = u16::from_be_bytes(size_bytes); if value.len() < 2 + size as usize { + error!("decode pkt header error: {}: {}", value.len(), 2 + size); return Err(SDLanError::NormalError("decode pkt header size error")); } let value2 = &value[2..2 + size as usize]; - let (cmn, value2) = Common::from_slice(value2)?; + let Ok((cmn, value2)) = Common::from_slice(value2) else { + error!("failed to decode common"); + return Err(SDLanError::NormalError("failed to deocde common")); + }; Ok((cmn, value2)) } diff --git a/src/packet/peer_info.rs b/src/packet/peer_info.rs index e026cc6..ebe5b4a 100644 --- a/src/packet/peer_info.rs +++ b/src/packet/peer_info.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -use crate::peer::SdlanSock; +use crate::peer::{SdlanSock, V6Info}; #[derive(Serialize, Deserialize)] pub struct PeerInfo { @@ -9,4 +9,5 @@ pub struct PeerInfo { pub src_ip: u32, pub dst_ip: u32, pub sock: SdlanSock, + pub v6_info: Option, } diff --git a/src/packet/register_super_ack.rs b/src/packet/register_super_ack.rs index f65fce9..dabc80b 100644 --- a/src/packet/register_super_ack.rs +++ b/src/packet/register_super_ack.rs @@ -10,7 +10,7 @@ pub struct RegisterSuperACK { pub dev_addr: IpSubnetNonAtomic, // sock info - pub sock: SdlanSock, + pub sock: Option, // 头加密aes,rsa加密之后 pub header_key: Vec, diff --git a/src/packet/register_super_nak.rs b/src/packet/register_super_nak.rs index 3a0100e..5d74e8f 100644 --- a/src/packet/register_super_nak.rs +++ b/src/packet/register_super_nak.rs @@ -3,4 +3,5 @@ use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize)] pub struct RegisterSuperNAK { pub cookie: u32, + pub src_ip: u32, }