From e04a11a8cae5f4f8d29febdb38b93d236c700def Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Tue, 29 Oct 2019 16:53:59 +0100 Subject: Unified use of make_packet during tests --- src/wireguard/router/device.rs | 39 ++++----------------------------------- 1 file changed, 4 insertions(+), 35 deletions(-) (limited to 'src/wireguard/router/device.rs') diff --git a/src/wireguard/router/device.rs b/src/wireguard/router/device.rs index 254b3de..0818637 100644 --- a/src/wireguard/router/device.rs +++ b/src/wireguard/router/device.rs @@ -1,4 +1,5 @@ use std::collections::HashMap; + use std::net::{Ipv4Addr, Ipv6Addr}; use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering}; use std::sync::mpsc::sync_channel; @@ -14,13 +15,15 @@ use zerocopy::LayoutVerified; use super::anti_replay::AntiReplay; use super::constants::*; -use super::ip::*; + use super::messages::{TransportHeader, TYPE_TRANSPORT}; use super::peer::{new_peer, Peer, PeerInner}; use super::types::{Callbacks, RouterError}; use super::workers::{worker_parallel, JobParallel, Operation}; use super::SIZE_MESSAGE_PREFIX; +use super::route::get_route; + use super::super::{bind, tun, Endpoint, KeyPair}; pub struct DeviceInner> { @@ -84,40 +87,6 @@ impl> Drop for Dev } } -#[inline(always)] -fn get_route>( - device: &Arc>, - packet: &[u8], -) -> Option>> { - match packet.get(0)? >> 4 { - VERSION_IP4 => { - // check length and cast to IPv4 header - let (header, _): (LayoutVerified<&[u8], IPv4Header>, _) = - LayoutVerified::new_from_prefix(packet)?; - - // lookup destination address - device - .ipv4 - .read() - .longest_match(Ipv4Addr::from(header.f_destination)) - .and_then(|(_, _, p)| Some(p.clone())) - } - VERSION_IP6 => { - // check length and cast to IPv6 header - let (header, _): (LayoutVerified<&[u8], IPv6Header>, _) = - LayoutVerified::new_from_prefix(packet)?; - - // lookup destination address - device - .ipv6 - .read() - .longest_match(Ipv6Addr::from(header.f_destination)) - .and_then(|(_, _, p)| Some(p.clone())) - } - _ => None, - } -} - impl> Device { pub fn new(num_workers: usize, tun: T) -> Device { // allocate shared device state -- cgit v1.2.3-59-g8ed1b