clean comments
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
use bytes::Bytes;
|
||||
use std::net::Ipv4Addr;
|
||||
// Добавили импорт логгеров для детального трейсинга
|
||||
|
||||
use netrunner_logger::{debug, trace};
|
||||
|
||||
use crate::{
|
||||
@@ -11,16 +11,11 @@ use crate::{
|
||||
pub struct RawCastAdapter;
|
||||
|
||||
impl RawCastAdapter {
|
||||
/// Перевод из RawCast (от локального TUN/smoltcp) в NRXP (в ядро/сеть)
|
||||
pub(crate) fn to_nrxp(raw: RawCastFrame) -> Result<Frame, String> {
|
||||
// Кастим ID сокета
|
||||
let stream_id = raw.socket_id as u32;
|
||||
|
||||
let (frame_type, payload) = match (raw.protocol, raw.event) {
|
||||
// Открытие TCP соединения
|
||||
(LocalProtocol::Tcp, RawCastEvent::Connect) => {
|
||||
// Если payload не пустой (ConnectionManager положил туда домен) - используем его.
|
||||
// Иначе фоллбэк: собираем из сырого IP и порта.
|
||||
let final_payload = if !raw.payload.is_empty() {
|
||||
raw.payload
|
||||
} else {
|
||||
@@ -35,9 +30,8 @@ impl RawCastAdapter {
|
||||
|
||||
(FrameType::Connect, final_payload)
|
||||
}
|
||||
// Открытие UDP сессии
|
||||
|
||||
(LocalProtocol::Udp, RawCastEvent::Connect) => {
|
||||
// Аналогичная логика защиты переданного таргета для UDP
|
||||
let final_payload = if !raw.payload.is_empty() {
|
||||
raw.payload
|
||||
} else {
|
||||
@@ -53,31 +47,23 @@ impl RawCastAdapter {
|
||||
(FrameType::UdpConnect, final_payload)
|
||||
}
|
||||
|
||||
// Передача данных (TCP)
|
||||
(LocalProtocol::Tcp, RawCastEvent::Data) => (FrameType::Data, raw.payload),
|
||||
// Передача данных (UDP)
|
||||
|
||||
(LocalProtocol::Udp, RawCastEvent::Data) => (FrameType::UdpData, raw.payload),
|
||||
|
||||
// Закрытие соединения (одинаково для TCP и UDP)
|
||||
(_, RawCastEvent::Close) => {
|
||||
trace!("🧩 [Adapter] Stream {}: Packing Close frame", stream_id);
|
||||
(FrameType::Close, Bytes::new())
|
||||
}
|
||||
|
||||
// ICMP пока не поддерживается в NRXP, отбрасываем
|
||||
(LocalProtocol::Icmp, _) => {
|
||||
return Err("ICMP protocol is not supported by NRXP core".into());
|
||||
}
|
||||
};
|
||||
|
||||
// Используем твой новый удобный конструктор Frame!
|
||||
Ok(Frame::new(stream_id, frame_type, payload))
|
||||
}
|
||||
|
||||
/// Перевод из NRXP (от сервера) обратно в RawCast (в smoltcp)
|
||||
///
|
||||
/// ВАЖНО: Так как NRXP Frame не содержит IP и Port (только stream_id),
|
||||
/// локальный клиент должен помнить, какому stream_id какой IP/Port принадлежит.
|
||||
pub(crate) fn from_nrxp(
|
||||
nrxp_frame: Frame,
|
||||
dst_ip: Ipv4Addr,
|
||||
@@ -92,7 +78,6 @@ impl RawCastAdapter {
|
||||
};
|
||||
|
||||
let event = match nrxp_frame.header.frame_type {
|
||||
// Сервер прислал успешный коннект
|
||||
FrameType::Connect | FrameType::UdpConnect => {
|
||||
trace!(
|
||||
"🧩 [Adapter] Stream {}: Unpacked Connect Ack from server",
|
||||
@@ -101,10 +86,8 @@ impl RawCastAdapter {
|
||||
RawCastEvent::Connect
|
||||
}
|
||||
|
||||
// Сервер прислал данные
|
||||
FrameType::Data | FrameType::UdpData => RawCastEvent::Data,
|
||||
|
||||
// Сервер закрыл соединение
|
||||
FrameType::Close => {
|
||||
trace!(
|
||||
"🧩 [Adapter] Stream {}: Unpacked Close signal from server",
|
||||
|
||||
@@ -93,7 +93,6 @@ impl Parser for RawCastFrame {
|
||||
return false;
|
||||
}
|
||||
|
||||
// читаем длину payload без сдвига буфера
|
||||
let payload_len_pos = LOCAL_HEADER_SIZE;
|
||||
let payload_len =
|
||||
u16::from_be_bytes([bytes[payload_len_pos], bytes[payload_len_pos + 1]]) as usize;
|
||||
|
||||
Reference in New Issue
Block a user