diff -r 086aae6fc07e -r f7816ffc66ed cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpluginvpn.cpp --- 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 #include +#include +#include + #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( + 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