--- /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 <e32def.h>
+#include <badesca.h>
+#include <unsafprotocolscrkeys.h>
+#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