aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJake McGinty <me@jake.su>2018-04-25 01:44:38 -0700
committerJake McGinty <me@jake.su>2018-04-25 01:44:38 -0700
commit01c646a7ee975966e7ad5e80ac449f73bbd64d65 (patch)
treeccdf035d9c1e58f234c57557cf4a1e38447fb552 /src
parentudp: use latest nix draft, which uses latest libc (diff)
downloadwireguard-rs-01c646a7ee975966e7ad5e80ac449f73bbd64d65.tar.xz
wireguard-rs-01c646a7ee975966e7ad5e80ac449f73bbd64d65.zip
udp: make Endpoint implement Copy
Diffstat (limited to 'src')
-rw-r--r--src/interface/config.rs2
-rw-r--r--src/interface/peer_server.rs2
-rw-r--r--src/peer.rs8
-rw-r--r--src/udp/frame.rs2
-rw-r--r--src/udp/mod.rs2
5 files changed, 8 insertions, 8 deletions
diff --git a/src/interface/config.rs b/src/interface/config.rs
index d8a7a9d..488b5bb 100644
--- a/src/interface/config.rs
+++ b/src/interface/config.rs
@@ -258,7 +258,7 @@ impl ConfigurationService {
} else {
info.allowed_ips.extend_from_slice(&peer.info.allowed_ips);
}
- info.endpoint = info.endpoint.or(peer.info.endpoint.clone());
+ info.endpoint = info.endpoint.or(peer.info.endpoint);
info.keepalive = info.keepalive.or(peer.info.keepalive);
info.psk = info.psk.or(peer.info.psk);
state.router.add_allowed_ips(&info.allowed_ips, &peer_ref);
diff --git a/src/interface/peer_server.rs b/src/interface/peer_server.rs
index b541caa..4de6eec 100644
--- a/src/interface/peer_server.rs
+++ b/src/interface/peer_server.rs
@@ -146,7 +146,7 @@ impl PeerServer {
.ok_or_else(|| err_msg("unknown peer pubkey"))?.clone();
let index = Self::unused_index(&mut state);
- let (response, dead_index) = peer_ref.borrow_mut().complete_incoming_handshake(addr.clone(), index, handshake)?;
+ let (response, dead_index) = peer_ref.borrow_mut().complete_incoming_handshake(addr, index, handshake)?;
if let Some(index) = dead_index {
let _ = state.index_map.remove(&index);
}
diff --git a/src/peer.rs b/src/peer.rs
index 7115a6f..4899893 100644
--- a/src/peer.rs
+++ b/src/peer.rs
@@ -221,7 +221,7 @@ impl Peer {
pub fn initiate_new_session(&mut self, private_key: &[u8], index: u32) -> Result<(Endpoint, Vec<u8>, Option<u32>), Error> {
let noise = noise::build_initiator(private_key, &self.info.pub_key, &self.info.psk)?;
let mut session = Session::new(noise, index);
- let endpoint = self.info.endpoint.as_ref().ok_or_else(|| err_msg("no known peer endpoint"))?;
+ let endpoint = self.info.endpoint.ok_or_else(|| err_msg("no known peer endpoint"))?;
let mut packet = vec![0; 148];
let tai64n = Tai64n::now();
@@ -242,7 +242,7 @@ impl Peer {
None
};
- Ok((endpoint.clone(), packet, dead_index))
+ Ok((endpoint, packet, dead_index))
}
pub fn process_incoming_handshake(private_key: &[u8], packet: &Initiation) -> Result<IncompleteIncomingHandshake, Error> {
@@ -378,7 +378,7 @@ impl Peer {
pub fn handle_outgoing_transport(&mut self, packet: &[u8]) -> Result<(Endpoint, Vec<u8>), Error> {
let session = self.sessions.current.as_mut().ok_or_else(|| err_msg("no current noise session"))?;
- let endpoint = self.info.endpoint.as_ref().ok_or_else(|| err_msg("no known peer endpoint"))?;
+ let endpoint = self.info.endpoint.ok_or_else(|| err_msg("no known peer endpoint"))?;
let padding = PADDING_MULTIPLE - (packet.len() % PADDING_MULTIPLE);
let padded_len = packet.len() + padding;
let mut out_packet = vec![0u8; padded_len + TRANSPORT_OVERHEAD];
@@ -395,7 +395,7 @@ impl Peer {
self.tx_bytes += len as u64;
session.last_sent = Timestamp::now();
out_packet.truncate(TRANSPORT_HEADER_SIZE + len);
- Ok((endpoint.clone(), out_packet))
+ Ok((endpoint, out_packet))
}
pub fn to_config_string(&self) -> String {
diff --git a/src/udp/frame.rs b/src/udp/frame.rs
index 09418bb..b0f1dd4 100644
--- a/src/udp/frame.rs
+++ b/src/udp/frame.rs
@@ -141,7 +141,7 @@ pub type PeerServerMessage = (Endpoint, Vec<u8>);
pub struct VecUdpCodec;
impl VecUdpCodec {
fn decode(&mut self, src: &Endpoint, buf: &[u8]) -> io::Result<PeerServerMessage> {
- Ok((src.clone(), buf.to_vec()))
+ Ok((*src, buf.to_vec()))
}
fn encode(&mut self, msg: PeerServerMessage, buf: &mut Vec<u8>) -> Endpoint {
diff --git a/src/udp/mod.rs b/src/udp/mod.rs
index 7de1fb1..377092e 100644
--- a/src/udp/mod.rs
+++ b/src/udp/mod.rs
@@ -40,7 +40,7 @@ pub struct UdpSocket {
// but this is for simplicity because nix only offers a to_std() that returns
// `SocketAddr` from its `SockAddr`, so it makes the code cleaner with little
// performance impact.
-#[derive(Clone)]
+#[derive(Clone, Copy)]
pub enum Endpoint {
V4(SocketAddr, Option<in_pktinfo>),
V6(SocketAddr, Option<in6_pktinfo>)