diff options
author | Jake McGinty <me@jake.su> | 2018-04-16 18:43:52 -0700 |
---|---|---|
committer | Jake McGinty <me@jake.su> | 2018-04-22 14:08:41 -0700 |
commit | 0cc9ecc94a31ecca99c334c1b06df70f650ec82b (patch) | |
tree | 1f429f220a5888b79596f82dc3a63f45454eed13 /src/interface | |
parent | udp: return back "magic" endpoint in recv_from (diff) | |
download | wireguard-rs-0cc9ecc94a31ecca99c334c1b06df70f650ec82b.tar.xz wireguard-rs-0cc9ecc94a31ecca99c334c1b06df70f650ec82b.zip |
global: SocketAddr -> Endpoint
Diffstat (limited to 'src/interface')
-rw-r--r-- | src/interface/config.rs | 4 | ||||
-rw-r--r-- | src/interface/peer_server.rs | 14 |
2 files changed, 10 insertions, 8 deletions
diff --git a/src/interface/config.rs b/src/interface/config.rs index c40be20..574876d 100644 --- a/src/interface/config.rs +++ b/src/interface/config.rs @@ -12,10 +12,12 @@ use hex; use interface::{SharedState, State}; use interface::grim_reaper::GrimReaper; use peer::Peer; +use std::net::SocketAddr; use std::{cell::RefCell, iter::Iterator, rc::Rc, mem, str}; use std::fs::{create_dir, remove_file}; use std::path::{Path, PathBuf}; use tokio_core::reactor::Handle; +use udp::Endpoint; use types::PeerInfo; use hex::FromHex; use x25519_dalek as x25519; @@ -56,7 +58,7 @@ impl UpdateEvent { "replace_peers" => { events.push(UpdateEvent::RemoveAllPeers); }, "preshared_key" => { info.psk = Some(<[u8; 32]>::from_hex(&value)?); }, "persistent_keepalive_interval" => { info.keepalive = Some(value.parse()?); }, - "endpoint" => { info.endpoint = Some(value.parse()?); }, + "endpoint" => { info.endpoint = Some(value.parse::<SocketAddr>()?.into()); }, "replace_allowed_ips" => { replace_allowed_ips = true; }, "remove" => { remove_pending_peer = true; }, "public_key" => { diff --git a/src/interface/peer_server.rs b/src/interface/peer_server.rs index 2b05b94..9f680fd 100644 --- a/src/interface/peer_server.rs +++ b/src/interface/peer_server.rs @@ -15,7 +15,7 @@ use byteorder::{ByteOrder, LittleEndian}; use failure::{Error, err_msg}; use futures::{Async, Future, Stream, Sink, Poll, unsync::mpsc}; use rand::{self, Rng}; -use udp::{UdpSocket, PeerServerMessage, UdpChannel}; +use udp::{Endpoint, UdpSocket, PeerServerMessage, UdpChannel}; use tokio_core::reactor::Handle; struct Channel<T> { @@ -110,7 +110,7 @@ impl PeerServer { } } - fn handle_ingress_packet(&mut self, addr: SocketAddr, packet: Vec<u8>) -> Result<(), Error> { + fn handle_ingress_packet(&mut self, addr: Endpoint, packet: Vec<u8>) -> Result<(), Error> { trace!("got a UDP packet from {:?} of length {}, packet type {}", &addr, packet.len(), packet[0]); match packet.try_into()? { @@ -121,7 +121,7 @@ impl PeerServer { } } - fn handle_ingress_handshake_init(&mut self, addr: SocketAddr, packet: &Initiation) -> Result<(), Error> { + fn handle_ingress_handshake_init(&mut self, addr: Endpoint, packet: &Initiation) -> Result<(), Error> { ensure!(packet.len() == 148, "handshake init packet length is incorrect"); let mut state = self.shared_state.borrow_mut(); { @@ -139,7 +139,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, index, handshake)?; + let (response, dead_index) = peer_ref.borrow_mut().complete_incoming_handshake(addr.clone(), index, handshake)?; if let Some(index) = dead_index { let _ = state.index_map.remove(&index); } @@ -152,7 +152,7 @@ impl PeerServer { } // TODO use the address to update endpoint if it changes i suppose - fn handle_ingress_handshake_resp(&mut self, addr: SocketAddr, packet: &Response) -> Result<(), Error> { + fn handle_ingress_handshake_resp(&mut self, addr: Endpoint, packet: &Response) -> Result<(), Error> { ensure!(packet.len() == 92, "handshake resp packet length is incorrect"); let mut state = self.shared_state.borrow_mut(); { @@ -200,7 +200,7 @@ impl PeerServer { Ok(()) } - fn handle_ingress_cookie_reply(&mut self, _addr: SocketAddr, packet: &CookieReply) -> Result<(), Error> { + fn handle_ingress_cookie_reply(&mut self, _addr: Endpoint, packet: &CookieReply) -> Result<(), Error> { let state = self.shared_state.borrow_mut(); let peer_ref = state.index_map.get(&packet.our_index()).ok_or_else(|| err_msg("unknown our_index"))?.clone(); let mut peer = peer_ref.borrow_mut(); @@ -208,7 +208,7 @@ impl PeerServer { peer.consume_cookie_reply(packet) } - fn handle_ingress_transport(&mut self, addr: SocketAddr, packet: &Transport) -> Result<(), Error> { + fn handle_ingress_transport(&mut self, addr: Endpoint, packet: &Transport) -> Result<(), Error> { let peer_ref = self.shared_state.borrow().index_map.get(&packet.our_index()) .ok_or_else(|| err_msg("unknown our_index"))?.clone(); |