cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpluginvpn.cpp
changeset 3 f7816ffc66ed
parent 0 5a93021fdf25
child 4 77415202bfc8
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpluginvpn.cpp	Mon Jan 18 20:33:49 2010 +0200
+++ b/cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpluginvpn.cpp	Tue Jan 26 12:12:48 2010 +0200
@@ -36,6 +36,9 @@
 #include <ConeResLoader.h>
 #include <bautils.h>
 
+#include <commsdattypesv1_1_partner.h>
+#include <commsdattypeinfov1_1_internal.h>
+
 #include "cmlogger.h"
 #include "cmmanagerimpl.h"
 #include "cmdestinationimpl.h"
@@ -463,6 +466,7 @@
             
             ServiceRecord().iServiceIAP = aValue;
             ServiceRecord().iServiceNetwork = 0;
+            ServiceRecord().iServiceSNAP = 0;
             iVirtualRecord->iNextLayerIAP = aValue;
             iVirtualRecord->iNextLayerSNAP = 0;            
             }
@@ -481,11 +485,13 @@
 
             TInt destinationId( 0 );
             destinationId = CheckValidityAndConvertDestinationIdL( aValue );
+            TMDBElementId defaultAP = DefaultAPRecordL();
             
-            ServiceRecord().iServiceIAP = 0;          
-            ServiceRecord().iServiceNetwork = destinationId - KCmDefaultDestinationAPTagId;
+            ServiceRecord().iServiceIAP = 0;
+            ServiceRecord().iServiceNetwork = 0;
+            ServiceRecord().iServiceSNAP = defaultAP;
             iVirtualRecord->iNextLayerIAP = 0;
-            iVirtualRecord->iNextLayerSNAP = destinationId;       
+            iVirtualRecord->iNextLayerSNAP = destinationId;
             }
             break;
 
@@ -898,6 +904,7 @@
     ServiceRecord().iServicePolicy.SetL( KNullDesC );
     ServiceRecord().iServiceIAP = 0;
     ServiceRecord().iServiceNetwork = 0;
+    ServiceRecord().iServiceSNAP = 0;
 
     
     iProxyRecord->iPortNumber = KVpnProxyPortNumberDefault;
@@ -2047,4 +2054,37 @@
     return id;
     }
 
+// --------------------------------------------------------------------------
+// CCmPluginVpn::DefaultAPRecordL
+// --------------------------------------------------------------------------
+//
+const TMDBElementId CCmPluginVpn::DefaultAPRecordL( const TInt aTierIdentifier )
+    {
+    LOGGER_ENTERFN( "CCmPluginVpn::DefaultAPRecordL" );
+    // Resolve the Default SNAP AP elementid 
+    //
+    CCDTierRecord* tierRecord = static_cast<CCDTierRecord *>(
+            CCDRecordBase::RecordFactoryL( KCDTIdTierRecord ) );
+    
+    CleanupStack::PushL( tierRecord );
+
+    // Find the correct tier table based on given identifier.
+    //
+    tierRecord->iRecordTag = aTierIdentifier;
+    if ( !tierRecord->FindL( Session() ) )
+        {
+        User::Leave( KErrCorrupt );
+        }
+    
+    // Find out the default AP for IP connections.
+    //
+    TMDBElementId defaultAP = tierRecord->iDefaultAccessPoint;
+
+    // Cleanup tier record.
+    //
+    CleanupStack::PopAndDestroy( tierRecord );
+        
+    return defaultAP;
+    }
+
 // eof