summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2023-10-12 14:43:20 +0200
committerAndrej Mihajlov <and@mullvad.net>2023-10-13 10:51:02 +0200
commit1503b2a26953eb01b070c347721922729b6828d6 (patch)
tree588558914b15ed38350ac039c23783605c7d00f7
parent0e00f4056fbcf6b047fe1da7b4e4b4f24f9c9efc (diff)
downloadmullvadvpn-1503b2a26953eb01b070c347721922729b6828d6.tar.xz
mullvadvpn-1503b2a26953eb01b070c347721922729b6828d6.zip
Log same-ip on each connection attempt
-rw-r--r--ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift31
-rw-r--r--ios/PacketTunnel/WireGuardAdapter/WgAdapter.swift21
2 files changed, 19 insertions, 33 deletions
diff --git a/ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift b/ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift
index 3f4598da36..1c155ca7bc 100644
--- a/ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift
+++ b/ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift
@@ -24,7 +24,6 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
private var appMessageHandler: AppMessageHandler!
private var stateObserverTask: AnyTask?
private var deviceChecker: DeviceChecker!
- private var isLoggedSameIP = false
override init() {
Self.configureLogging()
@@ -128,36 +127,6 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
}
extension PacketTunnelProvider {
- override func setTunnelNetworkSettings(
- _ tunnelNetworkSettings: NETunnelNetworkSettings?,
- completionHandler: ((Error?) -> Void)? = nil
- ) {
- if let networkSettings = tunnelNetworkSettings as? NEPacketTunnelNetworkSettings {
- let ipv4Addresses = networkSettings.ipv4Settings?.addresses.compactMap { IPv4Address($0) } ?? []
- let ipv6Addresses = networkSettings.ipv6Settings?.addresses.compactMap { IPv6Address($0) } ?? []
- let allIPAddresses: [IPAddress] = ipv4Addresses + ipv6Addresses
-
- if !allIPAddresses.isEmpty, !isLoggedSameIP {
- isLoggedSameIP = true
- logIfDeviceHasSameIP(than: allIPAddresses)
- }
- }
-
- super.setTunnelNetworkSettings(tunnelNetworkSettings, completionHandler: completionHandler)
- }
-
- private func logIfDeviceHasSameIP(than addresses: [IPAddress]) {
- let hasIPv4SameAddress = addresses.compactMap { $0 as? IPv4Address }
- .contains { $0 == ApplicationConfiguration.sameIPv4 }
- let hasIPv6SameAddress = addresses.compactMap { $0 as? IPv6Address }
- .contains { $0 == ApplicationConfiguration.sameIPv6 }
-
- let isUsingSameIP = (hasIPv4SameAddress || hasIPv6SameAddress) ? "" : "NOT "
- providerLogger.debug("Same IP is \(isUsingSameIP)being used")
- }
-}
-
-extension PacketTunnelProvider {
private static func configureLogging() {
var loggerBuilder = LoggerBuilder()
let pid = ProcessInfo.processInfo.processIdentifier
diff --git a/ios/PacketTunnel/WireGuardAdapter/WgAdapter.swift b/ios/PacketTunnel/WireGuardAdapter/WgAdapter.swift
index e373b0e573..ae815f3692 100644
--- a/ios/PacketTunnel/WireGuardAdapter/WgAdapter.swift
+++ b/ios/PacketTunnel/WireGuardAdapter/WgAdapter.swift
@@ -14,16 +14,17 @@ import PacketTunnelCore
import WireGuardKit
struct WgAdapter: TunnelAdapterProtocol {
+ let logger = Logger(label: "WgAdapter")
let adapter: WireGuardAdapter
init(packetTunnelProvider: NEPacketTunnelProvider) {
- let logger = Logger(label: "WireGuard")
+ let wgGoLogger = Logger(label: "WireGuard")
adapter = WireGuardAdapter(
with: packetTunnelProvider,
shouldHandleReasserting: false,
logHandler: { logLevel, string in
- logger.log(level: logLevel.loggerLevel, "\(string)")
+ wgGoLogger.log(level: logLevel.loggerLevel, "\(string)")
}
)
}
@@ -35,11 +36,27 @@ struct WgAdapter: TunnelAdapterProtocol {
} catch WireGuardAdapterError.invalidState {
try await adapter.start(tunnelConfiguration: wgConfig)
}
+
+ let tunAddresses = wgConfig.interface.addresses.map { $0.address }
+ // TUN addresses can be empty when adapter is configured for blocked state.
+ if !tunAddresses.isEmpty {
+ logIfDeviceHasSameIP(than: tunAddresses)
+ }
}
func stop() async throws {
try await adapter.stop()
}
+
+ private func logIfDeviceHasSameIP(than addresses: [IPAddress]) {
+ let hasIPv4SameAddress = addresses.compactMap { $0 as? IPv4Address }
+ .contains { $0 == ApplicationConfiguration.sameIPv4 }
+ let hasIPv6SameAddress = addresses.compactMap { $0 as? IPv6Address }
+ .contains { $0 == ApplicationConfiguration.sameIPv6 }
+
+ let isUsingSameIP = (hasIPv4SameAddress || hasIPv6SameAddress) ? "" : "NOT "
+ logger.debug("Same IP is \(isUsingSameIP)being used")
+ }
}
extension WgAdapter: TunnelDeviceInfoProtocol {