From 488a0e0807dbcc79289a65f47966d019ce9e6216 Mon Sep 17 00:00:00 2001 From: Aram Peres <6775216+aramperes@users.noreply.github.com> Date: Sat, 23 Dec 2023 21:01:00 -0500 Subject: [PATCH] remove AnyIP; fix IPv6 virtual addresses --- src/virtual_iface/tcp.rs | 11 +++++++++-- src/virtual_iface/udp.rs | 11 +++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/virtual_iface/tcp.rs b/src/virtual_iface/tcp.rs index 24957bd..c6c1b83 100644 --- a/src/virtual_iface/tcp.rs +++ b/src/virtual_iface/tcp.rs @@ -10,7 +10,7 @@ use smoltcp::{ iface::{Config, Interface, SocketHandle, SocketSet}, socket::tcp, time::Instant, - wire::{HardwareAddress, IpAddress, IpCidr}, + wire::{HardwareAddress, IpAddress, IpCidr, IpVersion}, }; use std::{ collections::{HashMap, HashSet, VecDeque}, @@ -78,7 +78,7 @@ impl<'a> TcpVirtualInterface<'a> { } addresses .into_iter() - .map(|addr| IpCidr::new(addr, 32)) + .map(|addr| IpCidr::new(addr, addr_length(&addr))) .collect() } } @@ -249,3 +249,10 @@ impl VirtualInterfacePoll for TcpVirtualInterface<'_> { } } } + +const fn addr_length(addr: &IpAddress) -> u8 { + match addr.version() { + IpVersion::Ipv4 => 32, + IpVersion::Ipv6 => 128, + } +} diff --git a/src/virtual_iface/udp.rs b/src/virtual_iface/udp.rs index 8426e4a..9a584b4 100644 --- a/src/virtual_iface/udp.rs +++ b/src/virtual_iface/udp.rs @@ -10,7 +10,7 @@ use smoltcp::{ iface::{Config, Interface, SocketHandle, SocketSet}, socket::udp::{self, UdpMetadata}, time::Instant, - wire::{HardwareAddress, IpAddress, IpCidr}, + wire::{HardwareAddress, IpAddress, IpCidr, IpVersion}, }; use std::{ collections::{HashMap, HashSet, VecDeque}, @@ -90,7 +90,7 @@ impl<'a> UdpVirtualInterface<'a> { } addresses .into_iter() - .map(|addr| IpCidr::new(addr, 32)) + .map(|addr| IpCidr::new(addr, addr_length(&addr))) .collect() } } @@ -219,3 +219,10 @@ impl<'a> VirtualInterfacePoll for UdpVirtualInterface<'a> { } } } + +const fn addr_length(addr: &IpAddress) -> u8 { + match addr.version() { + IpVersion::Ipv4 => 32, + IpVersion::Ipv6 => 128, + } +}