Check for UNSPEC gateway within adapter

This commit is contained in:
Sergey Abramchuk
2017-05-20 11:21:38 +03:00
parent 07c9058554
commit 37cfcbd0b2
2 changed files with 5 additions and 3 deletions

View File

@@ -145,12 +145,14 @@ static void socketCallback(CFSocketRef socket, CFSocketCallBackType type, CFData
return NO;
}
NSString *defaultGateway = [gateway length] == 0 || [gateway isEqualToString:@"UNSPEC"] ? nil : gateway;
if (isIPv6) {
if (!self.tunnelSettingsIPv6.initialized) {
self.tunnelSettingsIPv6.initialized = YES;
}
self.defaultGatewayIPv6 = gateway;
self.defaultGatewayIPv6 = defaultGateway
[self.tunnelSettingsIPv6.localAddresses addObject:address];
[self.tunnelSettingsIPv6.prefixLengths addObject:prefixLength];
@@ -159,7 +161,7 @@ static void socketCallback(CFSocketRef socket, CFSocketCallBackType type, CFData
self.tunnelSettingsIPv4.initialized = YES;
}
self.defaultGatewayIPv4 = gateway;
self.defaultGatewayIPv4 = defaultGateway;
[self.tunnelSettingsIPv4.localAddresses addObject:address];
[self.tunnelSettingsIPv4.prefixLengths addObject:prefixLength];

View File

@@ -26,7 +26,7 @@ bool OpenVPNClient::tun_builder_set_remote_address(const std::string &address, b
bool OpenVPNClient::tun_builder_add_address(const std::string &address, int prefix_length, const std::string &gateway, bool ipv6, bool net30) {
NSString *localAddress = [NSString stringWithUTF8String:address.c_str()];
NSString *gatewayAddress = !gateway.empty() && gateway.compare("UNSPEC") != 0 ? [NSString stringWithUTF8String:gateway.c_str()] : nil;
NSString *gatewayAddress = [NSString stringWithUTF8String:gateway.c_str()];
return [(__bridge OpenVPNAdapter *)adapter addLocalAddress:localAddress prefixLength:@(prefix_length) gateway:gatewayAddress isIPv6:ipv6];
}