summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2020-01-31 15:16:55 +0100
committerDavid Lönnhager <david.l@mullvad.net>2020-03-16 09:47:52 +0100
commita5b166aec776686159ece28c1f901c81a9839548 (patch)
tree50ed6457634297280623de8c6108888815084e0e
parent7610fcbfd8df8ecac6bd45ee8da54a7cd002b469 (diff)
downloadmullvadvpn-a5b166aec776686159ece28c1f901c81a9839548.tar.xz
mullvadvpn-a5b166aec776686159ece28c1f901c81a9839548.zip
Permit broadcasts to the local network with "Allow LAN" enabled
-rw-r--r--talpid-core/src/firewall/mod.rs4
-rw-r--r--windows/winfw/src/winfw/rules/baseline/permitlan.cpp3
2 files changed, 6 insertions, 1 deletions
diff --git a/talpid-core/src/firewall/mod.rs b/talpid-core/src/firewall/mod.rs
index 9a02321031..75f5a12041 100644
--- a/talpid-core/src/firewall/mod.rs
+++ b/talpid-core/src/firewall/mod.rs
@@ -40,7 +40,9 @@ lazy_static! {
IpNetwork::V6(Ipv6Network::new(Ipv6Addr::new(0xfd00, 0, 0, 0, 0, 0, 0, 0), 8).unwrap()),
];
/// When "allow local network" is enabled the app will allow traffic to these networks.
- pub(crate) static ref ALLOWED_LAN_MULTICAST_NETS: [IpNetwork; 5] = [
+ pub(crate) static ref ALLOWED_LAN_MULTICAST_NETS: [IpNetwork; 6] = [
+ // Local network broadcast. Not routable
+ IpNetwork::V4(Ipv4Network::new(Ipv4Addr::new(255, 255, 255, 255), 32).unwrap()),
// Local subnetwork multicast. Not routable
IpNetwork::V4(Ipv4Network::new(Ipv4Addr::new(224, 0, 0, 0), 24).unwrap()),
// Simple Service Discovery Protocol (SSDP) address
diff --git a/windows/winfw/src/winfw/rules/baseline/permitlan.cpp b/windows/winfw/src/winfw/rules/baseline/permitlan.cpp
index f0038f2421..d5cbef5b29 100644
--- a/windows/winfw/src/winfw/rules/baseline/permitlan.cpp
+++ b/windows/winfw/src/winfw/rules/baseline/permitlan.cpp
@@ -57,6 +57,9 @@ bool PermitLan::applyIpv4(IObjectInstaller &objectInstaller) const
conditionBuilder.reset();
+ // Local network broadcast.
+ conditionBuilder.add_condition(ConditionIp::Remote(wfp::IpNetwork(wfp::IpAddress::Literal({ 255, 255, 255, 255 }), 32)));
+
// Local subnet multicast.
conditionBuilder.add_condition(ConditionIp::Remote(wfp::IpNetwork(wfp::IpAddress::Literal({ 224, 0, 0, 0 }), 24)));