summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2017-12-20 14:31:43 +0100
committerLinus Färnstrand <linus@mullvad.net>2017-12-20 15:19:24 +0100
commit256ad3cf7a591891004383e1ea7f61fbdcd8547e (patch)
tree6b3ae7b0a251573a272f54e56274982d71ae6e5a
parent0da2c81e0e6708a36bd288ba1cfc4455803bf548 (diff)
downloadmullvadvpn-256ad3cf7a591891004383e1ea7f61fbdcd8547e.tar.xz
mullvadvpn-256ad3cf7a591891004383e1ea7f61fbdcd8547e.zip
Allow LAN multicast
-rw-r--r--talpid-core/src/firewall/macos/mod.rs13
1 files changed, 10 insertions, 3 deletions
diff --git a/talpid-core/src/firewall/macos/mod.rs b/talpid-core/src/firewall/macos/mod.rs
index f9f45338fa..a763f1c4d8 100644
--- a/talpid-core/src/firewall/macos/mod.rs
+++ b/talpid-core/src/firewall/macos/mod.rs
@@ -188,17 +188,24 @@ impl PacketFilter {
Ipv4Network::new(Ipv4Addr::new(172, 16, 0, 0), 12).unwrap(),
Ipv4Network::new(Ipv4Addr::new(192, 168, 0, 0), 16).unwrap(),
];
+ let multicast_net = Ipv4Network::new(Ipv4Addr::new(224, 0, 0, 0), 24).unwrap();
let mut rules = vec![];
for net in &private_nets {
- let rule = pfctl::FilterRuleBuilder::default()
+ let mut rule_builder = pfctl::FilterRuleBuilder::default();
+ rule_builder
.action(pfctl::FilterRuleAction::Pass)
.keep_state(pfctl::StatePolicy::Keep)
.quick(true)
.af(pfctl::AddrFamily::Ipv4)
- .from(pfctl::Ip::from(IpNetwork::V4(*net)))
+ .from(pfctl::Ip::from(IpNetwork::V4(*net)));
+ let allow_net = rule_builder
.to(pfctl::Ip::from(IpNetwork::V4(*net)))
.build()?;
- rules.push(rule);
+ let allow_multicast = rule_builder
+ .to(pfctl::Ip::from(IpNetwork::V4(multicast_net)))
+ .build()?;
+ rules.push(allow_net);
+ rules.push(allow_multicast);
}
Ok(rules)
}