Wrap IPv6 preference

This commit is contained in:
Sergey Abramchuk
2017-04-23 13:35:34 +03:00
parent 874773b14c
commit 092c6a525c
2 changed files with 50 additions and 0 deletions

View File

@@ -10,6 +10,19 @@
// TODO: Wrap ClientAPI::Config into Objective-C class
/**
IPv6 preference options
- IPv6PreferenceEnabled: request combined IPv4/IPv6 tunnel
- IPv6PreferenceDisabled: disable IPv6, so tunnel will be IPv4-only
- IPv6PreferenceDefault: leave decision to server
*/
typedef NS_ENUM(NSInteger, IPv6Preference) {
IPv6PreferenceEnabled,
IPv6PreferenceDisabled,
IPv6PreferenceDefault
};
@interface OpenVPNConfiguration : NSObject
/**
@@ -42,4 +55,9 @@
*/
@property (nullable, nonatomic) NSString *protoOverride;
/**
IPv6 preference
*/
@property (nonatomic) IPv6Preference ipv6;
@end

View File

@@ -89,4 +89,36 @@ using namespace openvpn;
_config.protoOverride = protoOverride ? std::string([protoOverride UTF8String]) : "";
}
- (IPv6Preference)ipv6 {
NSDictionary *options = @{
@"yes": @(IPv6PreferenceEnabled),
@"no": @(IPv6PreferenceDisabled),
@"default": @(IPv6PreferenceDefault),
@"": @(IPv6PreferenceDefault)
};
NSString *currentValue = [NSString stringWithUTF8String:_config.ipv6.c_str()];
NSNumber *preference = options[currentValue];
NSAssert(preference != nil, @"Incorrect ipv6 value");
return (IPv6Preference)[preference integerValue];
}
- (void)setIpv6:(IPv6Preference)ipv6 {
switch (ipv6) {
case IPv6PreferenceEnabled:
_config.ipv6 = "yes";
break;
case IPv6PreferenceDisabled:
_config.ipv6 = "no";
break;
case IPv6PreferenceDefault:
_config.ipv6 = "default";
break;
}
}
@end