summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadRustRuntime
diff options
context:
space:
mode:
Diffstat (limited to 'ios/MullvadRustRuntime')
-rw-r--r--ios/MullvadRustRuntime/TunnelObfuscator.swift40
-rw-r--r--ios/MullvadRustRuntime/include/mullvad_rust_runtime.h31
2 files changed, 42 insertions, 29 deletions
diff --git a/ios/MullvadRustRuntime/TunnelObfuscator.swift b/ios/MullvadRustRuntime/TunnelObfuscator.swift
index 495930b222..6f74089265 100644
--- a/ios/MullvadRustRuntime/TunnelObfuscator.swift
+++ b/ios/MullvadRustRuntime/TunnelObfuscator.swift
@@ -14,7 +14,7 @@ import Network
public enum TunnelObfuscationProtocol {
case udpOverTcp
case shadowsocks
- case quic
+ case quic(hostname: String, token: String)
}
public protocol TunnelObfuscation {
@@ -74,22 +74,34 @@ public final class TunnelObfuscator: TunnelObfuscation {
stateLock.withLock {
guard !isStarted else { return }
- let obfuscationProtocol = switch obfuscationProtocol {
- case .udpOverTcp: TunnelObfuscatorProtocol(0)
- case .shadowsocks: TunnelObfuscatorProtocol(1)
- case .quic: TunnelObfuscatorProtocol(2)
- }
-
let result = withUnsafeMutablePointer(to: &proxyHandle) { proxyHandlePointer in
let addressData = remoteAddress.rawValue
- return start_tunnel_obfuscator_proxy(
- addressData.map { $0 },
- UInt(addressData.count),
- tcpPort,
- obfuscationProtocol,
- proxyHandlePointer
- )
+ return switch obfuscationProtocol {
+ case .udpOverTcp:
+ start_udp2tcp_obfuscator_proxy(
+ addressData.map { $0 },
+ UInt(addressData.count),
+ tcpPort,
+ proxyHandlePointer
+ )
+ case .shadowsocks:
+ start_shadowsocks_obfuscator_proxy(
+ addressData.map { $0 },
+ UInt(addressData.count),
+ tcpPort,
+ proxyHandlePointer
+ )
+ case let .quic(hostname, token):
+ start_quic_obfuscator_proxy(
+ addressData.map { $0 },
+ UInt(addressData.count),
+ tcpPort,
+ hostname,
+ token,
+ proxyHandlePointer
+ )
+ }
}
assert(result == 0)
diff --git a/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h b/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h
index d4c0bf334f..ad15b43d39 100644
--- a/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h
+++ b/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h
@@ -17,16 +17,6 @@ enum SwiftAccessMethodKind {
};
typedef uint8_t SwiftAccessMethodKind;
-/**
- * SAFETY: `TunnelObfuscatorProtocol` values must either be `0` or `1`
- */
-enum TunnelObfuscatorProtocol {
- UdpOverTcp = 0,
- Shadowsocks,
- Quic,
-};
-typedef uint8_t TunnelObfuscatorProtocol;
-
typedef struct ApiContext ApiContext;
/**
@@ -930,10 +920,21 @@ int32_t start_shadowsocks_proxy(const uint8_t *forward_address,
*/
int32_t stop_shadowsocks_proxy(struct ProxyHandle *proxy_config);
-int32_t start_tunnel_obfuscator_proxy(const uint8_t *peer_address,
- uintptr_t peer_address_len,
- uint16_t peer_port,
- TunnelObfuscatorProtocol obfuscation_protocol,
- struct ProxyHandle *proxy_handle);
+int32_t start_udp2tcp_obfuscator_proxy(const uint8_t *peer_address,
+ uintptr_t peer_address_len,
+ uint16_t peer_port,
+ struct ProxyHandle *proxy_handle);
+
+int32_t start_shadowsocks_obfuscator_proxy(const uint8_t *peer_address,
+ uintptr_t peer_address_len,
+ uint16_t peer_port,
+ struct ProxyHandle *proxy_handle);
+
+int32_t start_quic_obfuscator_proxy(const uint8_t *peer_address,
+ uintptr_t peer_address_len,
+ uint16_t peer_port,
+ const char *hostname,
+ const char *token,
+ struct ProxyHandle *proxy_handle);
int32_t stop_tunnel_obfuscator_proxy(struct ProxyHandle *proxy_handle);