Here is how I config the network settings, I am not doing any matches based on my own understanding:
Objective-C
NWHostEndpoint* hostEndpoint = [NWHostEndpoint endpointWithHostname:address port:port];
NSMutableArrayNSString ipv4Addresses = [[NSMutableArray alloc] init];
NSMutableArrayNSString ipv4Masks = [[NSMutableArray alloc] init];
NSMutableArrayNSString ipv6Addresses = [[NSMutableArray alloc] init];
NSMutableArrayNSNumber ipv6PrefixLengths = [[NSMutableArray alloc] init];
for (...) {
if (ip == IPV4) {
[ipv4Addresses addObject:[NSString stringWithUTF8String: ip]];
[ipv4Masks addObject: mask];
}
if (ip == IPV6) {
[ipv6Addresses addObject:[NSString stringWithUTF8String:ip]];
[ipv6PrefixLengths addObject:@(prefix())];
}
}
NEIPv4Settings* ipv4Settings = [[NEIPv4Settings alloc] initWithAddresses:ipv4Addresses
subnetMasks:ipv4Masks];
ipv4Settings.includedRoutes = @[ [NEIPv4Route defaultRoute] ];
NEIPv6Settings* ipv6Settings = [[NEIPv6Settings alloc] initWithAddresses:ipv6Addresses
networkPrefixLengths:ipv6PrefixLengths];
ipv6Settings.includedRoutes = @[ [NEIPv6Route defaultRoute] ];
NSMutableArrayNSString** dns = [[NSMutableArray alloc] init];
for (...) {
[dns addObject:[NSString stringWithUTF8String: dns]];
}
NEDNSSettings* dnsSettings = [[NEDNSSettings alloc] initWithServers:dns];
NEPacketTunnelNetworkSettings* networkSettings =
[[NEPacketTunnelNetworkSettings alloc] initWithTunnelRemoteAddress:address];
networkSettings.DNSSettings = dnsSettings;
networkSettings.IPv4Settings = ipv4Settings;
networkSettings.IPv6Settings = ipv6Settings;
[self setTunnelNetworkSettings:settings
completionHandler:^(NSError *_Nullable error) {
id session = [self createUDPSessionToEndpoint:hostEndpoint fromEndpoint:nil];
...
}];
Topic:
App & System Services
SubTopic:
Networking
Tags: