NETunnelProviderManager saving multiple configurations

I'm trying to save my VPN configuration to the preferences, which already works (I'm able to connect to my VPN). But for some reason each time i run the code again instead of using the last configuration it creates a new one. So, i end up with a bunch of configurations.


Here is my current code, if anyone could let me know what's going wrong with it that would be awesome. Thanks!


// Initialize Manager
NETunnelProviderManager *manager = [[NETunnelProviderManager alloc] init];


[manager loadFromPreferencesWithCompletionHandler:^(NSError *error) {
    if (error) {
        NSLog(@"Load Error: %@", error.description);
    } else {

        // Create the protocol object
        NETunnelProviderProtocol *protocol = [[NETunnelProviderProtocol alloc] init]; // Create the protocol object

        // Configure the protocol object
        protocol.providerBundleIdentifier = @"com.nfisc.testvpn.ptp";                 // Bundle ID of tunnel provider
        protocol.providerConfiguration = @{};                                         // Currently blank, but will be used later
        protocol.serverAddress = @"0.0.0.0";                                          // Ommited for security reasons
        protocol.username = @"username";                                              // The username for the configuration
        protocol.identityDataPassword = @"password";                                  // The password for the configuration
        protocol.disconnectOnSleep = NO;

        // Configure the manager with the protocol
        manager.protocolConfiguration = protocol;
        manager.enabled = true;

        [manager saveToPreferencesWithCompletionHandler:^(NSError *error) {
            if (error) {
                NSLog(@"Save Error: %@", error.description);
            } else {
                [self start:manager];
            }
        }];
    }
}];

Accepted Reply

You should start with a call to

+[NETunnelProviderManager +loadAllFromPreferencesWithCompletionHandler:]
. That will give you the list of currently existing configurations, at which point you can choose to modify an existing one or add a new one.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

Replies

You should start with a call to

+[NETunnelProviderManager +loadAllFromPreferencesWithCompletionHandler:]
. That will give you the list of currently existing configurations, at which point you can choose to modify an existing one or add a new one.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"