summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ios/MullvadVPN/TunnelSettings.swift5
-rw-r--r--ios/PacketTunnel/PacketTunnelProvider.swift25
2 files changed, 20 insertions, 10 deletions
diff --git a/ios/MullvadVPN/TunnelSettings.swift b/ios/MullvadVPN/TunnelSettings.swift
index 9f3b47162d..fcbdebbe81 100644
--- a/ios/MullvadVPN/TunnelSettings.swift
+++ b/ios/MullvadVPN/TunnelSettings.swift
@@ -73,6 +73,11 @@ struct DNSSettings: Codable, Equatable {
/// Custom DNS domains.
var customDNSDomains: [AnyIPAddress] = []
+ /// Effective state of the custom DNS setting.
+ var effectiveEnableCustomDNS: Bool {
+ return !blockAdvertising && !blockTracking && enableCustomDNS && !customDNSDomains.isEmpty
+ }
+
private enum CodingKeys: String, CodingKey {
case blockAdvertising, blockTracking, enableCustomDNS, customDNSDomains
}
diff --git a/ios/PacketTunnel/PacketTunnelProvider.swift b/ios/PacketTunnel/PacketTunnelProvider.swift
index 8bd55358b8..cff2438130 100644
--- a/ios/PacketTunnel/PacketTunnelProvider.swift
+++ b/ios/PacketTunnel/PacketTunnelProvider.swift
@@ -292,7 +292,6 @@ struct PacketTunnelConfiguration {
}
extension PacketTunnelConfiguration {
-
var wgTunnelConfig: TunnelConfiguration {
let mullvadEndpoint = selectorResult.endpoint
var peers = [mullvadEndpoint.ipv4RelayEndpoint]
@@ -323,15 +322,21 @@ extension PacketTunnelConfiguration {
let mullvadEndpoint = selectorResult.endpoint
let dnsSettings = tunnelSettings.interface.dnsSettings
- switch (dnsSettings.blockAdvertising, dnsSettings.blockTracking) {
- case (true, false):
- return [IPv4Address("100.64.0.1")!]
- case (false, true):
- return [IPv4Address("100.64.0.2")!]
- case (true, true):
- return [IPv4Address("100.64.0.3")!]
- case (false, false):
- return [mullvadEndpoint.ipv4Gateway, mullvadEndpoint.ipv6Gateway]
+ if dnsSettings.effectiveEnableCustomDNS {
+ let dnsServers = dnsSettings.customDNSDomains
+ .prefix(DNSSettings.maxAllowedCustomDNSDomains)
+ return Array(dnsServers)
+ } else {
+ switch (dnsSettings.blockAdvertising, dnsSettings.blockTracking) {
+ case (true, false):
+ return [IPv4Address("100.64.0.1")!]
+ case (false, true):
+ return [IPv4Address("100.64.0.2")!]
+ case (true, true):
+ return [IPv4Address("100.64.0.3")!]
+ case (false, false):
+ return [mullvadEndpoint.ipv4Gateway, mullvadEndpoint.ipv6Gateway]
+ }
}
}
}