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
+4 -2
View File
@@ -145,12 +145,14 @@ static void socketCallback(CFSocketRef socket, CFSocketCallBackType type, CFData
return NO; return NO;
} }
NSString *defaultGateway = [gateway length] == 0 || [gateway isEqualToString:@"UNSPEC"] ? nil : gateway;
if (isIPv6) { if (isIPv6) {
if (!self.tunnelSettingsIPv6.initialized) { if (!self.tunnelSettingsIPv6.initialized) {
self.tunnelSettingsIPv6.initialized = YES; self.tunnelSettingsIPv6.initialized = YES;
} }
self.defaultGatewayIPv6 = gateway; self.defaultGatewayIPv6 = defaultGateway
[self.tunnelSettingsIPv6.localAddresses addObject:address]; [self.tunnelSettingsIPv6.localAddresses addObject:address];
[self.tunnelSettingsIPv6.prefixLengths addObject:prefixLength]; [self.tunnelSettingsIPv6.prefixLengths addObject:prefixLength];
@@ -159,7 +161,7 @@ static void socketCallback(CFSocketRef socket, CFSocketCallBackType type, CFData
self.tunnelSettingsIPv4.initialized = YES; self.tunnelSettingsIPv4.initialized = YES;
} }
self.defaultGatewayIPv4 = gateway; self.defaultGatewayIPv4 = defaultGateway;
[self.tunnelSettingsIPv4.localAddresses addObject:address]; [self.tunnelSettingsIPv4.localAddresses addObject:address];
[self.tunnelSettingsIPv4.prefixLengths addObject:prefixLength]; [self.tunnelSettingsIPv4.prefixLengths addObject:prefixLength];
+1 -1
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) { 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 *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]; return [(__bridge OpenVPNAdapter *)adapter addLocalAddress:localAddress prefixLength:@(prefix_length) gateway:gatewayAddress isIPv6:ipv6];
} }