diff -r 000000000000 -r 1bce908db942 natfw/natfwsettings/src/cnatfwsettingsimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/natfw/natfwsettings/src/cnatfwsettingsimpl.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,383 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + + + +#include +#include +#include +#include "cnatfwsettingsimpl.h" +#include "natsettingslogs.h" +#include "natfwdefaultsettingsvalues.h" +#include "cnatfwcenrephandler.h" +#include "tnatfwsettingsparser.h" +#include "cnatfwicesettings.h" +#include "cnatfwstunsettings.h" +#include "cnatfwturnsettings.h" + +const TUint KDefaultGranularity = 1; + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::CNATFWNatSettingsImpl +// --------------------------------------------------------------------------- +// +CNATFWNatSettingsImpl::CNATFWNatSettingsImpl() + { + iRefreshIntervalUdp = KNATFWDefaultRefreshIntervalUdp; + iRefreshIntervalTcp = KNATFWDefaultRefreshIntervalTcp; + iUseSharedSecret = KNATFWDefaultUseSharedSecret; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::ConstructL +// --------------------------------------------------------------------------- +// +void CNATFWNatSettingsImpl::ConstructL( const TDesC8& aDomain ) + { + __NATSETTINGS( "CNATFWNatSettingsImpl::ConstructL - start" ) + + __ASSERT_ALWAYS( TUint( &aDomain ), User::Leave( KErrArgument ) ); + __ASSERT_ALWAYS( aDomain.Length(), User::Leave( KErrArgument ) ); + + iRepHandler = CNATFWCenRepHandler::NewL( KCRUidUNSAFProtocols ); + + iEcomPlugInPriorityOrderArray = + new ( ELeave ) CDesC8ArrayFlat( KDefaultGranularity ); + + iIceSettings = CNATFWIceSettings::NewL(); + iStunSettings = CNATFWStunSettings::NewL(); + iTurnSettings = CNATFWTurnSettings::NewL(); + + TInt err = iRepHandler->ReadDomainSettingsKey( aDomain, iDomainKey ); + + if ( KErrNotFound == err ) + { + __NATSETTINGS( "specific domain not found in the CR" ) + iDomainKey = iRepHandler->CreateNewKeyL( KUNSAFProtocolsDomainMask, + KUNSAFProtocolsFieldTypeMask ); + } + + if ( KErrNone != err && KErrNotFound != err ) + { + User::Leave( err ); + } + + ReadGeneralSettingsL(); + iDomain = aDomain.AllocL(); + + __NATSETTINGS( "CNATFWNatSettingsImpl::ConstructL - end" ) + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::NewL +// --------------------------------------------------------------------------- +// +CNATFWNatSettingsImpl* CNATFWNatSettingsImpl::NewL( + const TDesC8& aDomain ) + { + __NATSETTINGS( "CNATFWNatSettingsImpl::NewL" ) + + CNATFWNatSettingsImpl* self = CNATFWNatSettingsImpl::NewLC( + aDomain ); + CleanupStack::Pop( self ); + return self; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::NewLC +// --------------------------------------------------------------------------- +// +CNATFWNatSettingsImpl* CNATFWNatSettingsImpl::NewLC( + const TDesC8& aDomain ) + { + __NATSETTINGS( "CNATFWNatSettingsImpl::NewLC" ) + + CNATFWNatSettingsImpl* self = + new( ELeave ) CNATFWNatSettingsImpl(); + CleanupStack::PushL( self ); + self->ConstructL( aDomain ); + return self; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::~CNATFWNatSettingsImpl +//---------------------------------------------------------------------------- +// +CNATFWNatSettingsImpl::~CNATFWNatSettingsImpl() + { + __NATSETTINGS( "CNATFWNatSettingsImpl::~CNATFWNatSettingsImpl" ) + + delete iDomain; + delete iEcomPlugInPriorityOrderArray; + delete iRepHandler; + delete iIceSettings; + delete iStunSettings; + delete iTurnSettings; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::RetrieveIapSettings +// --------------------------------------------------------------------------- +// +void CNATFWNatSettingsImpl::RetrieveIapSettingsL( const TUint aIapId ) + { + __NATSETTINGS( "CNATFWNatSettingsImpl::RetrieveIapSettingsL" ) + + ReadIapSettingsL( aIapId ); + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::Domain +// --------------------------------------------------------------------------- +// +const TDesC8& CNATFWNatSettingsImpl::Domain() const + { + return *iDomain; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::RefreshIntervalUdp +// --------------------------------------------------------------------------- +// +TInt CNATFWNatSettingsImpl::RefreshIntervalUdp() const + { + return iRefreshIntervalUdp; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::RefreshIntervalTcp +// --------------------------------------------------------------------------- +// +TInt CNATFWNatSettingsImpl::RefreshIntervalTcp() const + { + return iRefreshIntervalTcp; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::CrlfRefreshEnabled +// --------------------------------------------------------------------------- +// +TBool CNATFWNatSettingsImpl::CrlfRefreshEnabled() const + { + return iCrlfRefreshEnabled; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::SharedSecret +// --------------------------------------------------------------------------- +// +TBool CNATFWNatSettingsImpl::UseSharedSecret() const + { + return iUseSharedSecret; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::IceSettingsL +// --------------------------------------------------------------------------- +// +MNATFWIceSettings& CNATFWNatSettingsImpl::IceSettingsL() + { + iIceSettings->ReadSettingsL( iDomainKey, *iRepHandler ); + return *iIceSettings; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::StunSettingsL +// --------------------------------------------------------------------------- +// +MNATFWStunSettings& CNATFWNatSettingsImpl::StunSettingsL() + { + iStunSettings->ReadSettingsL( iDomainKey, *iRepHandler ); + return *iStunSettings; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::TurnSettingsL +// --------------------------------------------------------------------------- +// +MNATFWTurnSettings& CNATFWNatSettingsImpl::TurnSettingsL() + { + iTurnSettings->ReadSettingsL( iDomainKey, *iRepHandler ); + return *iTurnSettings; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::AvailableNatProtocols +// --------------------------------------------------------------------------- +// +const CDesC8Array& CNATFWNatSettingsImpl::AvailableNatProtocols() const + { + return *iEcomPlugInPriorityOrderArray; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::GetPortAreaL +// --------------------------------------------------------------------------- +// +void CNATFWNatSettingsImpl::GetPortArea( TUint& aStartPort, + TUint& aEndPort ) const + { + aStartPort = iPortPoolStartPort; + aEndPort = iPortPoolEndPort; + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::ReadGeneralSettingsL +// --------------------------------------------------------------------------- +// +void CNATFWNatSettingsImpl::ReadGeneralSettingsL( ) + { + __NATSETTINGS( "CNATFWNatSettingsImpl::ReadGeneralSettingsL - start" ) + + //Protocol priority order + delete iEcomPlugInPriorityOrderArray; + iEcomPlugInPriorityOrderArray = NULL; + HBufC8* tempBuffer = iRepHandler->ReadL( + KUNSAFProtocolsUsedNATProtocolMask | iDomainKey ); + if ( tempBuffer ) + { + CleanupStack::PushL( tempBuffer ); + iEcomPlugInPriorityOrderArray = + TNATFWSettingsParser::ParseDataToArrayL( *tempBuffer ); + CleanupStack::PopAndDestroy( tempBuffer ); + } + else + { + iEcomPlugInPriorityOrderArray = + TNATFWSettingsParser::ParseDataToArrayL( KNATFWDefaultPriorityOrder ); + } + + // Use Shared secret + if ( KErrNone != iRepHandler->ReadBoolValue( + KUNSAFProtocolsDomainSharedSecretNotSupported | iDomainKey, + iUseSharedSecret ) ) + { + iUseSharedSecret = KNATFWDefaultUseSharedSecret; + } + else + { + if ( iUseSharedSecret ) + { + iUseSharedSecret = EFalse; + } + else + { + iUseSharedSecret = ETrue; + } + } + + // Read refresh interval UDP + if ( KErrNone != iRepHandler->Read( KUNSAFProtocolsDomainIntervalUDPMask | + iDomainKey, iRefreshIntervalUdp ) ) + { + iRefreshIntervalUdp = KNATFWDefaultRefreshIntervalUdp; + } + + // Read refresh interval TCP + if ( KErrNone != iRepHandler->Read( KUNSAFProtocolsDomainIntervalTCPMask | + iDomainKey, iRefreshIntervalTcp ) ) + { + iRefreshIntervalTcp = KNATFWDefaultRefreshIntervalTcp; + } + + // Start port of the port range + if ( KErrNone != iRepHandler->Read ( KUNSAFProtocolsPortPoolStartPortMask | + iDomainKey, iPortPoolStartPort ) ) + { + iPortPoolStartPort = KNATFWDefaultPortPoolStartPort; + } + + // Start port of the port range + if ( KErrNone != iRepHandler->Read( KUNSAFProtocolsPortPoolEndPortMask | + iDomainKey, iPortPoolEndPort ) ) + { + iPortPoolEndPort = KNATFWDefaultPortPoolEndPort; + } + + // Enable CRLF- based Refresh + if ( KErrNone != iRepHandler->Read( KUNSAFProtocolsDomainEnableCRLFRefresh | + iDomainKey, iCrlfRefreshEnabled ) ) + { + iCrlfRefreshEnabled = KNATFWDefaultCRLFRefreshEnabled; + } + + __NATSETTINGS( "CNATFWNatSettingsImpl::ReadGeneralSettingsL - end" ) + } + + +// --------------------------------------------------------------------------- +// CNATFWNatSettingsImpl::ReadIapSettingsL +// --------------------------------------------------------------------------- +// +void CNATFWNatSettingsImpl::ReadIapSettingsL( TUint32 aIapId ) + { + __NATSETTINGS_INT1( + "CNATFWNatSettingsImpl::ReadIapSettingsL IAPId: - start", aIapId ) + + TUint32 iapKey; + TInt err = iRepHandler->ReadIapSettingsKey( aIapId, iapKey ); + + if ( KErrNone == err ) + { + TUint stunRetransmitTimer( 0 ); + // read UDP refresh interval + iRepHandler->Read( KUNSAFProtocolsIntervalUDPMask | iapKey, + iRefreshIntervalUdp ); + // read TCP refresh interval + iRepHandler->Read( KUNSAFProtocolsIntervalTCPMask | iapKey, + iRefreshIntervalTcp ); + // read Retransmit interval + if ( KErrNone == iRepHandler->Read( KUNSAFProtocolsSTUNRetransmitTimerMask | iapKey, + stunRetransmitTimer ) ) + { + iStunSettings->SetRetransmissionTimeout( stunRetransmitTimer ); + iTurnSettings->SetRetransmissionTimeout( stunRetransmitTimer ); + } + } + else if ( KErrNotFound == err ) + { + __NATSETTINGS( + "Specific IAP settings not found, Use default or current values" ); + } + else + { + User::Leave( err ); + } + __NATSETTINGS( "CNATFWNatSettingsImpl::ReadIapSettingsL - end" ) + } + +//End of file