natfw/natfwsettings/src/cnatfwsettingsimpl.cpp
changeset 0 1bce908db942
equal deleted inserted replaced
-1:000000000000 0:1bce908db942
       
     1 /*
       
     2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:    
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 #include <e32def.h>
       
    22 #include <badesca.h>
       
    23 #include <unsafprotocolscrkeys.h>
       
    24 #include "cnatfwsettingsimpl.h"
       
    25 #include "natsettingslogs.h"
       
    26 #include "natfwdefaultsettingsvalues.h"
       
    27 #include "cnatfwcenrephandler.h"
       
    28 #include "tnatfwsettingsparser.h"
       
    29 #include "cnatfwicesettings.h"
       
    30 #include "cnatfwstunsettings.h"
       
    31 #include "cnatfwturnsettings.h"
       
    32 
       
    33 const TUint KDefaultGranularity = 1;
       
    34 
       
    35 
       
    36 // ======== MEMBER FUNCTIONS ========
       
    37 
       
    38 // ---------------------------------------------------------------------------
       
    39 // CNATFWNatSettingsImpl::CNATFWNatSettingsImpl
       
    40 // ---------------------------------------------------------------------------
       
    41 //
       
    42 CNATFWNatSettingsImpl::CNATFWNatSettingsImpl()
       
    43     {
       
    44     iRefreshIntervalUdp = KNATFWDefaultRefreshIntervalUdp;
       
    45     iRefreshIntervalTcp = KNATFWDefaultRefreshIntervalTcp;
       
    46     iUseSharedSecret = KNATFWDefaultUseSharedSecret;
       
    47     }
       
    48 
       
    49 
       
    50 // ---------------------------------------------------------------------------
       
    51 // CNATFWNatSettingsImpl::ConstructL
       
    52 // ---------------------------------------------------------------------------
       
    53 //
       
    54 void CNATFWNatSettingsImpl::ConstructL( const TDesC8& aDomain )
       
    55     {
       
    56     __NATSETTINGS( "CNATFWNatSettingsImpl::ConstructL - start" )
       
    57     
       
    58     __ASSERT_ALWAYS( TUint( &aDomain ), User::Leave( KErrArgument ) );
       
    59     __ASSERT_ALWAYS( aDomain.Length(), User::Leave( KErrArgument ) );
       
    60     
       
    61     iRepHandler = CNATFWCenRepHandler::NewL( KCRUidUNSAFProtocols );
       
    62    
       
    63     iEcomPlugInPriorityOrderArray =
       
    64         new ( ELeave ) CDesC8ArrayFlat( KDefaultGranularity );
       
    65     
       
    66     iIceSettings = CNATFWIceSettings::NewL();
       
    67     iStunSettings = CNATFWStunSettings::NewL();
       
    68     iTurnSettings = CNATFWTurnSettings::NewL();
       
    69     
       
    70     TInt err = iRepHandler->ReadDomainSettingsKey( aDomain, iDomainKey );
       
    71     
       
    72     if ( KErrNotFound == err  )
       
    73         {
       
    74         __NATSETTINGS( "specific domain not found in the CR" )
       
    75         iDomainKey = iRepHandler->CreateNewKeyL( KUNSAFProtocolsDomainMask,
       
    76             KUNSAFProtocolsFieldTypeMask );
       
    77         }
       
    78 
       
    79     if ( KErrNone != err && KErrNotFound != err )
       
    80         {
       
    81         User::Leave( err );
       
    82         }
       
    83         
       
    84     ReadGeneralSettingsL(); 
       
    85     iDomain = aDomain.AllocL();
       
    86     
       
    87     __NATSETTINGS( "CNATFWNatSettingsImpl::ConstructL - end" )
       
    88     }
       
    89 
       
    90 
       
    91 // ---------------------------------------------------------------------------
       
    92 // CNATFWNatSettingsImpl::NewL
       
    93 // ---------------------------------------------------------------------------
       
    94 //
       
    95 CNATFWNatSettingsImpl* CNATFWNatSettingsImpl::NewL(
       
    96     const TDesC8& aDomain )
       
    97     {
       
    98     __NATSETTINGS( "CNATFWNatSettingsImpl::NewL" )
       
    99     
       
   100     CNATFWNatSettingsImpl* self = CNATFWNatSettingsImpl::NewLC(
       
   101         aDomain );
       
   102     CleanupStack::Pop( self );
       
   103     return self;
       
   104     }
       
   105 
       
   106 
       
   107 // ---------------------------------------------------------------------------
       
   108 // CNATFWNatSettingsImpl::NewLC
       
   109 // ---------------------------------------------------------------------------
       
   110 //
       
   111 CNATFWNatSettingsImpl* CNATFWNatSettingsImpl::NewLC(
       
   112     const TDesC8& aDomain )
       
   113     {
       
   114     __NATSETTINGS( "CNATFWNatSettingsImpl::NewLC" )
       
   115     
       
   116     CNATFWNatSettingsImpl* self =
       
   117         new( ELeave ) CNATFWNatSettingsImpl();
       
   118     CleanupStack::PushL( self );
       
   119     self->ConstructL( aDomain );
       
   120     return self;    
       
   121     }
       
   122 
       
   123 
       
   124 // ---------------------------------------------------------------------------
       
   125 // CNATFWNatSettingsImpl::~CNATFWNatSettingsImpl
       
   126 //----------------------------------------------------------------------------
       
   127 //
       
   128 CNATFWNatSettingsImpl::~CNATFWNatSettingsImpl()
       
   129     {
       
   130     __NATSETTINGS( "CNATFWNatSettingsImpl::~CNATFWNatSettingsImpl" )    
       
   131     
       
   132     delete iDomain;
       
   133     delete iEcomPlugInPriorityOrderArray;
       
   134     delete iRepHandler;
       
   135     delete iIceSettings;
       
   136     delete iStunSettings;
       
   137     delete iTurnSettings;
       
   138     }
       
   139 
       
   140 
       
   141 // --------------------------------------------------------------------------- 
       
   142 // CNATFWNatSettingsImpl::RetrieveIapSettings
       
   143 // ---------------------------------------------------------------------------
       
   144 //
       
   145 void CNATFWNatSettingsImpl::RetrieveIapSettingsL( const TUint aIapId )
       
   146     {
       
   147     __NATSETTINGS( "CNATFWNatSettingsImpl::RetrieveIapSettingsL" )
       
   148     
       
   149     ReadIapSettingsL( aIapId );
       
   150     }
       
   151 
       
   152 
       
   153 // ---------------------------------------------------------------------------
       
   154 // CNATFWNatSettingsImpl::Domain
       
   155 // ---------------------------------------------------------------------------
       
   156 //    
       
   157 const TDesC8& CNATFWNatSettingsImpl::Domain() const
       
   158     {
       
   159     return *iDomain;
       
   160     }
       
   161 
       
   162 
       
   163 // ---------------------------------------------------------------------------
       
   164 // CNATFWNatSettingsImpl::RefreshIntervalUdp
       
   165 // ---------------------------------------------------------------------------
       
   166 //    
       
   167 TInt CNATFWNatSettingsImpl::RefreshIntervalUdp() const
       
   168     {
       
   169     return iRefreshIntervalUdp;
       
   170     }
       
   171 
       
   172 
       
   173 // ---------------------------------------------------------------------------
       
   174 // CNATFWNatSettingsImpl::RefreshIntervalTcp
       
   175 // ---------------------------------------------------------------------------
       
   176 //    
       
   177 TInt CNATFWNatSettingsImpl::RefreshIntervalTcp() const
       
   178     {
       
   179     return iRefreshIntervalTcp;
       
   180     }
       
   181 
       
   182 
       
   183 // ---------------------------------------------------------------------------
       
   184 // CNATFWNatSettingsImpl::CrlfRefreshEnabled
       
   185 // ---------------------------------------------------------------------------
       
   186 //
       
   187 TBool CNATFWNatSettingsImpl::CrlfRefreshEnabled() const
       
   188     {
       
   189     return iCrlfRefreshEnabled;
       
   190     }
       
   191 
       
   192 
       
   193 // ---------------------------------------------------------------------------
       
   194 // CNATFWNatSettingsImpl::SharedSecret
       
   195 // ---------------------------------------------------------------------------
       
   196 //
       
   197 TBool CNATFWNatSettingsImpl::UseSharedSecret() const
       
   198     {
       
   199     return iUseSharedSecret;
       
   200     }
       
   201 
       
   202 
       
   203 // ---------------------------------------------------------------------------
       
   204 // CNATFWNatSettingsImpl::IceSettingsL
       
   205 // ---------------------------------------------------------------------------
       
   206 // 
       
   207 MNATFWIceSettings& CNATFWNatSettingsImpl::IceSettingsL()
       
   208     {
       
   209     iIceSettings->ReadSettingsL( iDomainKey, *iRepHandler );
       
   210     return *iIceSettings;
       
   211     }
       
   212 
       
   213 
       
   214 // ---------------------------------------------------------------------------
       
   215 // CNATFWNatSettingsImpl::StunSettingsL
       
   216 // ---------------------------------------------------------------------------
       
   217 // 
       
   218 MNATFWStunSettings& CNATFWNatSettingsImpl::StunSettingsL()
       
   219     {
       
   220     iStunSettings->ReadSettingsL( iDomainKey, *iRepHandler );
       
   221     return *iStunSettings;
       
   222     }
       
   223 
       
   224 
       
   225 // ---------------------------------------------------------------------------
       
   226 // CNATFWNatSettingsImpl::TurnSettingsL
       
   227 // ---------------------------------------------------------------------------
       
   228 // 
       
   229 MNATFWTurnSettings& CNATFWNatSettingsImpl::TurnSettingsL()
       
   230     {
       
   231     iTurnSettings->ReadSettingsL( iDomainKey, *iRepHandler );
       
   232     return *iTurnSettings;
       
   233     }
       
   234 
       
   235 
       
   236 // ---------------------------------------------------------------------------
       
   237 // CNATFWNatSettingsImpl::AvailableNatProtocols
       
   238 // ---------------------------------------------------------------------------
       
   239 //
       
   240 const CDesC8Array& CNATFWNatSettingsImpl::AvailableNatProtocols() const
       
   241     {
       
   242     return *iEcomPlugInPriorityOrderArray;
       
   243     }
       
   244 
       
   245 
       
   246 // ---------------------------------------------------------------------------
       
   247 // CNATFWNatSettingsImpl::GetPortAreaL
       
   248 // ---------------------------------------------------------------------------
       
   249 //
       
   250 void CNATFWNatSettingsImpl::GetPortArea( TUint& aStartPort,
       
   251     TUint& aEndPort ) const
       
   252     {
       
   253     aStartPort = iPortPoolStartPort;
       
   254     aEndPort = iPortPoolEndPort;
       
   255     }
       
   256 
       
   257 
       
   258 // ---------------------------------------------------------------------------
       
   259 // CNATFWNatSettingsImpl::ReadGeneralSettingsL
       
   260 // ---------------------------------------------------------------------------
       
   261 //
       
   262 void CNATFWNatSettingsImpl::ReadGeneralSettingsL( )
       
   263     {
       
   264     __NATSETTINGS( "CNATFWNatSettingsImpl::ReadGeneralSettingsL - start" )
       
   265     
       
   266     //Protocol priority order
       
   267     delete iEcomPlugInPriorityOrderArray;
       
   268     iEcomPlugInPriorityOrderArray = NULL;
       
   269     HBufC8* tempBuffer = iRepHandler->ReadL(
       
   270         KUNSAFProtocolsUsedNATProtocolMask | iDomainKey );
       
   271     if ( tempBuffer )
       
   272         {
       
   273         CleanupStack::PushL( tempBuffer );
       
   274         iEcomPlugInPriorityOrderArray =
       
   275             TNATFWSettingsParser::ParseDataToArrayL( *tempBuffer );
       
   276         CleanupStack::PopAndDestroy( tempBuffer );
       
   277         }
       
   278     else
       
   279         {
       
   280         iEcomPlugInPriorityOrderArray =
       
   281             TNATFWSettingsParser::ParseDataToArrayL( KNATFWDefaultPriorityOrder );
       
   282         }
       
   283     
       
   284     // Use Shared secret
       
   285     if ( KErrNone != iRepHandler->ReadBoolValue(
       
   286         KUNSAFProtocolsDomainSharedSecretNotSupported | iDomainKey,
       
   287         iUseSharedSecret ) )
       
   288         {
       
   289         iUseSharedSecret = KNATFWDefaultUseSharedSecret;
       
   290         }
       
   291     else
       
   292         {
       
   293         if ( iUseSharedSecret )
       
   294             {
       
   295             iUseSharedSecret = EFalse;
       
   296             }
       
   297         else
       
   298             {
       
   299             iUseSharedSecret = ETrue;
       
   300             }
       
   301         }
       
   302     
       
   303     // Read refresh interval UDP
       
   304     if ( KErrNone != iRepHandler->Read( KUNSAFProtocolsDomainIntervalUDPMask |
       
   305         iDomainKey, iRefreshIntervalUdp ) )
       
   306         {
       
   307         iRefreshIntervalUdp = KNATFWDefaultRefreshIntervalUdp;
       
   308         }
       
   309     
       
   310     // Read refresh interval TCP
       
   311     if ( KErrNone != iRepHandler->Read( KUNSAFProtocolsDomainIntervalTCPMask |
       
   312         iDomainKey, iRefreshIntervalTcp ) )
       
   313         {
       
   314         iRefreshIntervalTcp = KNATFWDefaultRefreshIntervalTcp;
       
   315         }
       
   316     
       
   317     // Start port of the port range
       
   318     if ( KErrNone != iRepHandler->Read ( KUNSAFProtocolsPortPoolStartPortMask |
       
   319         iDomainKey, iPortPoolStartPort ) )
       
   320         {
       
   321         iPortPoolStartPort = KNATFWDefaultPortPoolStartPort;
       
   322         }
       
   323     
       
   324     // Start port of the port range
       
   325     if ( KErrNone != iRepHandler->Read( KUNSAFProtocolsPortPoolEndPortMask |
       
   326         iDomainKey, iPortPoolEndPort ) )
       
   327         {
       
   328         iPortPoolEndPort = KNATFWDefaultPortPoolEndPort;
       
   329         }
       
   330     
       
   331     // Enable CRLF- based Refresh
       
   332     if ( KErrNone != iRepHandler->Read( KUNSAFProtocolsDomainEnableCRLFRefresh |
       
   333             iDomainKey, iCrlfRefreshEnabled ) )
       
   334         {
       
   335         iCrlfRefreshEnabled = KNATFWDefaultCRLFRefreshEnabled;
       
   336         }
       
   337     
       
   338     __NATSETTINGS( "CNATFWNatSettingsImpl::ReadGeneralSettingsL - end" )
       
   339     }
       
   340 
       
   341 
       
   342 // ---------------------------------------------------------------------------
       
   343 // CNATFWNatSettingsImpl::ReadIapSettingsL
       
   344 // ---------------------------------------------------------------------------
       
   345 //    
       
   346 void CNATFWNatSettingsImpl::ReadIapSettingsL( TUint32 aIapId )
       
   347     {
       
   348     __NATSETTINGS_INT1(
       
   349         "CNATFWNatSettingsImpl::ReadIapSettingsL IAPId: - start", aIapId )
       
   350     
       
   351     TUint32 iapKey;
       
   352     TInt err = iRepHandler->ReadIapSettingsKey( aIapId, iapKey );
       
   353     
       
   354     if ( KErrNone == err )
       
   355         {
       
   356         TUint stunRetransmitTimer( 0 );
       
   357         // read UDP refresh interval
       
   358         iRepHandler->Read( KUNSAFProtocolsIntervalUDPMask | iapKey,
       
   359             iRefreshIntervalUdp );
       
   360         // read TCP refresh interval
       
   361         iRepHandler->Read( KUNSAFProtocolsIntervalTCPMask | iapKey,
       
   362             iRefreshIntervalTcp );
       
   363         // read Retransmit interval
       
   364         if ( KErrNone == iRepHandler->Read( KUNSAFProtocolsSTUNRetransmitTimerMask | iapKey,
       
   365             stunRetransmitTimer ) )
       
   366             {
       
   367             iStunSettings->SetRetransmissionTimeout( stunRetransmitTimer );
       
   368             iTurnSettings->SetRetransmissionTimeout( stunRetransmitTimer );
       
   369             }
       
   370         }
       
   371     else if ( KErrNotFound == err )
       
   372         {
       
   373         __NATSETTINGS(
       
   374             "Specific IAP settings not found, Use default or current values" );
       
   375         }
       
   376     else
       
   377         {
       
   378         User::Leave( err );
       
   379         }
       
   380     __NATSETTINGS( "CNATFWNatSettingsImpl::ReadIapSettingsL - end" )
       
   381     }
       
   382 
       
   383 //End of file