diff options
author | Jake McGinty <me@jake.su> | 2018-02-09 14:21:10 +0000 |
---|---|---|
committer | Jake McGinty <me@jake.su> | 2018-02-09 14:21:10 +0000 |
commit | 1ef81bf07f9bfbfd57c8c4d408f037eb20ce7367 (patch) | |
tree | eef7a5fbebeb4353f5e19b50a95ebf1dced1c24d /src/interface/mod.rs | |
parent | router.rs (diff) | |
download | wireguard-rs-1ef81bf07f9bfbfd57c8c4d408f037eb20ce7367.tar.xz wireguard-rs-1ef81bf07f9bfbfd57c8c4d408f037eb20ce7367.zip |
router refactoring
Diffstat (limited to 'src/interface/mod.rs')
-rw-r--r-- | src/interface/mod.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/interface/mod.rs b/src/interface/mod.rs index 73530fe..6d51902 100644 --- a/src/interface/mod.rs +++ b/src/interface/mod.rs @@ -8,6 +8,7 @@ use router::Router; use base64; use hex; use byteorder::{ByteOrder, BigEndian, LittleEndian}; +use failure::Error; use snow::NoiseBuilder; use protocol::Peer; use std::io; @@ -63,6 +64,14 @@ impl UtunPacket { &UtunPacket::Inet6(ref payload) => &payload, } } + + pub fn from(raw_packet: Vec<u8>) -> Result<UtunPacket, Error> { + match raw_packet[0] >> 4 { + 4 => Ok(UtunPacket::Inet4(raw_packet)), + 6 => Ok(UtunPacket::Inet6(raw_packet)), + _ => bail!("unrecognized IP version") + } + } } impl UtunCodec for VecUtunCodec { |