summaryrefslogtreecommitdiffhomepage
path: root/talpid-core/src
diff options
context:
space:
mode:
authorErik Larkö <erik@mullvad.net>2017-09-13 07:33:30 +0200
committerErik Larkö <erik@mullvad.net>2017-09-13 07:33:30 +0200
commitb572d0634b78d3de05ce39e5a49ce893c8065d6b (patch)
tree9e955cb2ab5499eb97a76e9c4d22a384fae9b42b /talpid-core/src
parent2bc13231538133ad452b1b72ac4bbfe67235df02 (diff)
parentc383938bf44bb0b045ec63871a4bb804921fb2db (diff)
downloadmullvadvpn-b572d0634b78d3de05ce39e5a49ce893c8065d6b.tar.xz
mullvadvpn-b572d0634b78d3de05ce39e5a49ce893c8065d6b.zip
Merge branch 'set_custom_relay-endpoint'
Diffstat (limited to 'talpid-core/src')
-rw-r--r--talpid-core/src/firewall/macos.rs22
-rw-r--r--talpid-core/src/firewall/mod.rs2
-rw-r--r--talpid-core/src/lib.rs4
-rw-r--r--talpid-core/src/net.rs29
-rw-r--r--talpid-core/src/process/openvpn.rs6
-rw-r--r--talpid-core/src/tunnel/mod.rs2
6 files changed, 17 insertions, 48 deletions
diff --git a/talpid-core/src/firewall/macos.rs b/talpid-core/src/firewall/macos.rs
index 5be5d4764e..e3bfa9870f 100644
--- a/talpid-core/src/firewall/macos.rs
+++ b/talpid-core/src/firewall/macos.rs
@@ -1,7 +1,7 @@
use super::{Firewall, SecurityPolicy};
-use net;
use pfctl;
use std::net::Ipv4Addr;
+use talpid_types::net;
// alias used to instantiate firewall implementation
pub type ConcreteFirewall = PacketFilter;
@@ -9,15 +9,6 @@ pub use pfctl::{Error, ErrorKind, Result};
const ANCHOR_NAME: &'static str = "talpid_core";
-impl From<net::TransportProtocol> for pfctl::Proto {
- fn from(protocol: net::TransportProtocol) -> Self {
- match protocol {
- net::TransportProtocol::Udp => pfctl::Proto::Udp,
- net::TransportProtocol::Tcp => pfctl::Proto::Tcp,
- }
- }
-}
-
pub struct PacketFilter {
pf: pfctl::PfCtl,
pf_was_enabled: Option<bool>,
@@ -85,11 +76,13 @@ impl PacketFilter {
}
fn get_relay_rule(relay_endpoint: net::Endpoint) -> Result<pfctl::FilterRule> {
+ let pfctl_proto = as_pfctl_proto(relay_endpoint.protocol);
+
pfctl::FilterRuleBuilder::default()
.action(pfctl::FilterRuleAction::Pass)
.direction(pfctl::Direction::Out)
.to(relay_endpoint.address)
- .proto(relay_endpoint.protocol)
+ .proto(pfctl_proto)
.keep_state(pfctl::StatePolicy::Keep)
.tcp_flags(Self::get_tcp_flags())
.quick(true)
@@ -174,3 +167,10 @@ impl PacketFilter {
self.pf.try_remove_anchor(ANCHOR_NAME, pfctl::AnchorKind::Filter)
}
}
+
+fn as_pfctl_proto(protocol: net::TransportProtocol) -> pfctl::Proto {
+ match protocol {
+ net::TransportProtocol::Udp => pfctl::Proto::Udp,
+ net::TransportProtocol::Tcp => pfctl::Proto::Tcp,
+ }
+}
diff --git a/talpid-core/src/firewall/mod.rs b/talpid-core/src/firewall/mod.rs
index 16b8139453..acc0f21792 100644
--- a/talpid-core/src/firewall/mod.rs
+++ b/talpid-core/src/firewall/mod.rs
@@ -1,4 +1,4 @@
-use net::Endpoint;
+use talpid_types::net::Endpoint;
#[cfg(target_os = "macos")]
#[path = "macos.rs"]
diff --git a/talpid-core/src/lib.rs b/talpid-core/src/lib.rs
index 271553c10c..c4cff6ebfc 100644
--- a/talpid-core/src/lib.rs
+++ b/talpid-core/src/lib.rs
@@ -30,6 +30,7 @@ extern crate jsonrpc_macros;
extern crate uuid;
extern crate talpid_ipc;
+extern crate talpid_types;
extern crate openvpn_plugin;
#[cfg(target_os = "macos")]
@@ -38,9 +39,6 @@ extern crate pfctl;
/// Working with processes.
pub mod process;
-/// Network primitives.
-pub mod net;
-
/// Abstracts over different VPN tunnel technologies
pub mod tunnel;
diff --git a/talpid-core/src/net.rs b/talpid-core/src/net.rs
deleted file mode 100644
index ba8a3fe665..0000000000
--- a/talpid-core/src/net.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-use std::net::{IpAddr, SocketAddr};
-
-/// Represents a network layer IP address together with the transport layer protocol and port.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub struct Endpoint {
- /// The address part of this endpoint, contains the IP and port.
- pub address: SocketAddr,
- /// The protocol part of this endpoint.
- pub protocol: TransportProtocol,
-}
-
-impl Endpoint {
- /// Constructs a new `Endpoint` from the given parameters.
- pub fn new<T: Into<IpAddr>>(address: T, port: u16, protocol: TransportProtocol) -> Self {
- Endpoint {
- address: SocketAddr::new(address.into(), port),
- protocol: protocol,
- }
- }
-}
-
-/// Representation of a transport protocol, either UDP or TCP.
-#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
-pub enum TransportProtocol {
- /// Represents the UDP transport protocol.
- Udp,
- /// Represents the TCP transport protocol.
- Tcp,
-}
diff --git a/talpid-core/src/process/openvpn.rs b/talpid-core/src/process/openvpn.rs
index ce663809ce..c756757a75 100644
--- a/talpid-core/src/process/openvpn.rs
+++ b/talpid-core/src/process/openvpn.rs
@@ -1,11 +1,11 @@
use duct;
-use net;
-
use std::ffi::{OsStr, OsString};
use std::fmt;
use std::path::{Path, PathBuf};
+use talpid_types::net;
+
static BASE_ARGUMENTS: &[&[&str]] = &[
&["--client"],
&["--nobind"],
@@ -190,9 +190,9 @@ fn write_argument(fmt: &mut fmt::Formatter, arg: &str) -> fmt::Result {
#[cfg(test)]
mod tests {
use super::OpenVpnCommand;
- use net::{Endpoint, TransportProtocol};
use std::ffi::OsString;
use std::net::Ipv4Addr;
+ use talpid_types::net::{Endpoint, TransportProtocol};
#[test]
fn passes_one_remote() {
diff --git a/talpid-core/src/tunnel/mod.rs b/talpid-core/src/tunnel/mod.rs
index a2ab25a487..83212e6874 100644
--- a/talpid-core/src/tunnel/mod.rs
+++ b/talpid-core/src/tunnel/mod.rs
@@ -1,5 +1,4 @@
use mktemp;
-use net;
use openvpn_plugin::types::OpenVpnPluginEvent;
@@ -11,6 +10,7 @@ use std::ffi::{OsStr, OsString};
use std::fs;
use std::io::{self, Write};
use std::path::{Path, PathBuf};
+use talpid_types::net;
/// A module for all OpenVPN related tunnel management.
pub mod openvpn;