close to finish a tun/smoltcp

This commit is contained in:
2026-03-07 20:17:49 +07:00
parent 4a789dd128
commit b1cc4c14f4
14 changed files with 912 additions and 279 deletions
+33
View File
@@ -0,0 +1,33 @@
use crate::connections::dns::handle_dns_query;
use crate::connections::ip_store::FakeIpStore;
use smoltcp::socket::udp;
pub struct UdpConnection;
impl UdpConnection {
pub fn process_incoming(socket: &mut udp::Socket, store: &mut FakeIpStore) {
// Мы используем peek или recv, чтобы понять, куда идти дальше
while socket.can_recv() {
let (data, metadata) = match socket.recv() {
Ok(res) => res,
Err(_) => break,
};
// Диспетчер: определяем тип трафика по порту
match metadata.endpoint.port {
53 => {
// Это DNS
if let Some(response) = handle_dns_query(&data, store) {
let _ = socket.send_slice(&response, metadata);
}
}
// Тут в будущем можно добавить обработку других протоколов
// 443 => process_quic(...),
_ => {
// Можно логировать неизвестный трафик или просто дропать
// trace!("Received UDP on unknown port: {}", endpoint.port);
}
}
}
}
}