aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2018-04-03 16:52:33 +0200
committerJake McGinty <me@jake.su>2018-06-03 11:56:44 -0500
commit4324ecd046c849f48afab39fc971bd9144075518 (patch)
treea52b56c4aa35182c975dd4c2948e746b042812c4
parentbuild: make Cargo.toml compile for people who aren't me ;) (diff)
downloadwireguard-rs-4324ecd046c849f48afab39fc971bd9144075518.tar.xz
wireguard-rs-4324ecd046c849f48afab39fc971bd9144075518.zip
deps: Replace pnet_packet with rips-packets
Closes #11
-rw-r--r--Cargo.toml2
-rw-r--r--benches/criterion.rs9
-rw-r--r--src/interface/mod.rs2
-rw-r--r--src/ip_packet.rs26
-rw-r--r--src/lib.rs2
5 files changed, 19 insertions, 22 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 1e35080..4bdba9c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -46,7 +46,7 @@ notify = "^4.0"
rand = "0.5.0-pre.2"
nix = { git = "https://github.com/mcginty/nix", branch = "ipv6-pktinfo" }
mio = "^0.6"
-pnet_packet = "^0.21"
+rips-packets = "0.1"
snow = { git = "https://github.com/mcginty/snow", branch = "wireguard" }
socket2 = "^0.3"
subtle = "^0.6"
diff --git a/benches/criterion.rs b/benches/criterion.rs
index 5d9249d..eac927d 100644
--- a/benches/criterion.rs
+++ b/benches/criterion.rs
@@ -5,8 +5,8 @@ extern crate criterion;
extern crate wireguard;
extern crate x25519_dalek;
extern crate rand;
+extern crate rips_packets;
extern crate snow;
-extern crate pnet_packet;
extern crate socket2;
use criterion::{Benchmark, Criterion, Throughput};
@@ -16,7 +16,7 @@ use wireguard::timestamp::Timestamp;
use x25519_dalek::{generate_secret, generate_public};
use rand::OsRng;
use std::{convert::TryInto, net::SocketAddr, time::Duration};
-use pnet_packet::{Packet, ipv4::MutableIpv4Packet};
+use rips_packets::ipv4::MutIpv4Packet;
//use std::io::Write;
//use socket2::{Socket, Domain, Type, Protocol};
@@ -103,10 +103,11 @@ fn benchmarks(c: &mut Criterion) {
c.bench("transport", Benchmark::new("incoming", |b| {
let (mut peer_init, _, mut peer_resp, _) = connected_peers();
- let mut packet = MutableIpv4Packet::owned(vec![0u8; 1420]).unwrap();
+ let mut packet_data = vec![0u8; 1420];
+ let mut packet = MutIpv4Packet::new(&mut packet_data[..]).unwrap();
packet.set_version(4);
b.iter_with_setup(move || {
- let (addr, packet) = peer_init.handle_outgoing_transport(packet.packet()).expect("SETUP handle_outgoing_transport");
+ let (addr, packet) = peer_init.handle_outgoing_transport(packet.data()).expect("SETUP handle_outgoing_transport");
let packet = packet.try_into().unwrap();
(addr, packet)
}, move |(addr, packet)| {
diff --git a/src/interface/mod.rs b/src/interface/mod.rs
index c45e70f..7036a09 100644
--- a/src/interface/mod.rs
+++ b/src/interface/mod.rs
@@ -14,7 +14,7 @@ use std::cell::RefCell;
use std::collections::HashMap;
use types::{InterfaceInfo};
-use pnet_packet::ipv4::Ipv4Packet;
+use rips_packets::ipv4::Ipv4Packet;
use futures::{Future, Stream, Sink, unsync};
use tokio_core::reactor::Core;
diff --git a/src/ip_packet.rs b/src/ip_packet.rs
index 3de6a60..9150f5b 100644
--- a/src/ip_packet.rs
+++ b/src/ip_packet.rs
@@ -1,5 +1,5 @@
-use pnet_packet::ipv4::Ipv4Packet;
-use pnet_packet::ipv6::Ipv6Packet;
+use rips_packets::ipv4::Ipv4Packet;
+use rips_packets::ipv6::Ipv6Packet;
use std::net::IpAddr;
pub enum IpPacket<'a> {
@@ -9,35 +9,31 @@ pub enum IpPacket<'a> {
impl<'a> IpPacket<'a> {
pub fn new(packet: &'a [u8]) -> Option<Self> {
- if packet.is_empty() {
- return None;
- }
-
- match packet[0] >> 4 {
- 4 => Ipv4Packet::new(packet).map(IpPacket::V4),
- 6 => Ipv6Packet::new(packet).map(IpPacket::V6),
+ match packet.get(0).map(|byte| *byte >> 4) {
+ Some(4) => Ipv4Packet::new(packet).map(IpPacket::V4),
+ Some(6) => Ipv6Packet::new(packet).map(IpPacket::V6),
_ => None
}
}
pub fn source(&self) -> IpAddr {
match *self {
- IpPacket::V4(ref packet) => packet.get_source().into(),
- IpPacket::V6(ref packet) => packet.get_source().into(),
+ IpPacket::V4(ref packet) => packet.source().into(),
+ IpPacket::V6(ref packet) => packet.source().into(),
}
}
pub fn destination(&self) -> IpAddr {
match *self {
- IpPacket::V4(ref packet) => packet.get_destination().into(),
- IpPacket::V6(ref packet) => packet.get_destination().into(),
+ IpPacket::V4(ref packet) => packet.destination().into(),
+ IpPacket::V6(ref packet) => packet.destination().into(),
}
}
pub fn length(&self) -> u16 {
match *self {
- IpPacket::V4(ref packet) => packet.get_total_length(),
- IpPacket::V6(ref packet) => 40 + packet.get_payload_length(),
+ IpPacket::V4(ref packet) => packet.total_length(),
+ IpPacket::V6(ref packet) => 40 + packet.payload_length(),
}
}
diff --git a/src/lib.rs b/src/lib.rs
index 22b8fb3..5b41b8f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -26,8 +26,8 @@ extern crate libc;
extern crate mio;
extern crate nix;
extern crate notify;
-extern crate pnet_packet;
extern crate rand;
+extern crate rips_packets;
extern crate snow;
extern crate socket2;
extern crate subtle;