macOS: remove mobile network tweeks

This commit is contained in:
Jason A. Donenfeld 2019-01-22 13:09:38 +01:00
parent b3d9d582bf
commit d3db8519b0
4 changed files with 22 additions and 2 deletions

View File

@ -107,6 +107,7 @@ class DNSResolver {
extension Endpoint {
func withReresolvedIP() -> Endpoint {
#if os(iOS)
var ret = self
let hostname: String
switch host {
@ -148,5 +149,10 @@ extension Endpoint {
wg_log(.debug, message: "DNS64: mapped \(host) to itself.")
}
return ret
#elseif os(macOS)
return self
#else
#error("Unimplemented")
#endif
}
}

View File

@ -30,6 +30,9 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
}
configureLogger()
#if os(macOS)
wgEnableRoaming(true)
#endif
wg_log(.info, message: "Starting tunnel from the " + (activationAttemptId == nil ? "OS directly, rather than the app" : "app"))
@ -114,9 +117,13 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
}
private func pathUpdate(path: Network.NWPath) {
guard let handle = handle, let packetTunnelSettingsGenerator = packetTunnelSettingsGenerator else { return }
guard let handle = handle else { return }
wg_log(.debug, message: "Network change detected with \(path.status) route and interface order \(path.availableInterfaces)")
_ = packetTunnelSettingsGenerator.endpointUapiConfiguration().withGoString { return wgSetConfig(handle, $0) }
#if os(iOS)
if let packetTunnelSettingsGenerator = packetTunnelSettingsGenerator {
_ = packetTunnelSettingsGenerator.endpointUapiConfiguration().withGoString { return wgSetConfig(handle, $0) }
}
#endif
var interfaces = path.availableInterfaces
if let ifname = ifname {
interfaces = interfaces.filter { $0.name != ifname }

View File

@ -68,6 +68,11 @@ func init() {
}()
}
//export wgEnableRoaming
func wgEnableRoaming(enabled bool) {
roamingDisabled = !enabled
}
//export wgSetLogger
func wgSetLogger(loggerFn uintptr) {
loggerFunc = unsafe.Pointer(loggerFn)

View File

@ -8,9 +8,11 @@
#include <sys/types.h>
#include <stdint.h>
#include <stdbool.h>
typedef struct { const char *p; size_t n; } gostring_t;
typedef void(*logger_fn_t)(int level, const char *msg);
extern void wgEnableRoaming(bool enabled);
extern void wgSetLogger(logger_fn_t logger_fn);
extern int wgTurnOn(gostring_t settings, int32_t tun_fd);
extern void wgTurnOff(int handle);