diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a8e4ca..a94e6be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ This project follows [semantic versioning](http://semver.org). ### Unreleased +- [added] Added feature to disable special NAT support - [changed] Improved port forwarding on quirky routers - [changed] Reduced peer timeout to 5min to work better with NAT diff --git a/Cargo.toml b/Cargo.toml index dbd57df..6a30f4f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ rand = "0.7" fnv = "1" net2 = "0.2" yaml-rust = "0.4" -igd = "0.9" +igd = { version = "0.9", optional = true } siphasher = "0.3" daemonize = "0.4" ring = "0.16" @@ -38,8 +38,9 @@ pkg-config = "0.3" tempfile = "3" [features] -default = [] +default = ["nat"] bench = [] +nat = ["igd"] [profile.release] lto = true diff --git a/src/port_forwarding.rs b/src/port_forwarding.rs index 14c1971..590d31b 100644 --- a/src/port_forwarding.rs +++ b/src/port_forwarding.rs @@ -2,152 +2,174 @@ // Copyright (C) 2015-2019 Dennis Schwerdel // This software is licensed under GPL-3 or newer (see LICENSE.md) -use std::{io, net::SocketAddrV4}; +#[cfg(feature = "nat")] +mod internal { -use igd::{search_gateway, AddAnyPortError, AddPortError, Gateway, PortMappingProtocol, SearchError}; + use std::{io, net::SocketAddrV4}; -use super::util::{get_internal_ip, SystemTimeSource, Time, TimeSource}; + use igd::{search_gateway, AddAnyPortError, AddPortError, Gateway, PortMappingProtocol, SearchError}; -const LEASE_TIME: u32 = 1800; -const DESCRIPTION: &str = "VpnCloud"; + use crate::util::{get_internal_ip, SystemTimeSource, Time, TimeSource}; + const LEASE_TIME: u32 = 1800; -pub struct PortForwarding { - pub internal_addr: SocketAddrV4, - pub external_addr: SocketAddrV4, - pub gateway: Gateway, - pub next_extension: Option