cmmanager/cmmgr/cmmplugins/cmpluginlan/src/cmpluginlan.cpp
branchRCL_3
changeset 58 83ca720e2b9a
parent 57 05bc53fe583b
child 62 bb1f80fb7db2
equal deleted inserted replaced
57:05bc53fe583b 58:83ca720e2b9a
     1 /*
       
     2 * Copyright (c) 2009-2010 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 *      Implementation of Lan Plugin interface implementation
       
    16 *      for Lan Bearer
       
    17 *
       
    18 *
       
    19 */
       
    20 
       
    21 
       
    22 #include "cmpluginlan.h"
       
    23 
       
    24 #include "datamobilitycommsdattypes.h"
       
    25 #include <cmmanagerdef.h>
       
    26 #include <ecom/ecom.h>  // For REComSession
       
    27 #include <featmgr.h>
       
    28 
       
    29 #include "OstTraceDefinitions.h"
       
    30 #ifdef OST_TRACE_COMPILER_IN_USE
       
    31 #include "cmpluginlanTraces.h"
       
    32 #endif
       
    33 
       
    34 
       
    35 using namespace CMManager;
       
    36 using namespace CommsDat;
       
    37 
       
    38 _LIT( KEmpty, "" );
       
    39 
       
    40 _LIT( KLanBearerName, "LANBearer" );
       
    41 _LIT( KLanBearerAgent, "nullagt.agt" );
       
    42 _LIT( KLanBearerNif, "ethint" );
       
    43 
       
    44 _LIT( KLanLDDFileName, "enet" );
       
    45 _LIT( KLanPDDFileName, "ethernet" );
       
    46 
       
    47 _LIT( KLanLDDName, "Ethernet" );
       
    48 _LIT( KLanPDDName, "Ethernet.Wins" );
       
    49 _LIT( KLanPacketDriverName, "EtherPkt.drv" );
       
    50 
       
    51 
       
    52 const TBool KDefIpAddrFromServer = ETrue;
       
    53 const TBool KDefIpDnsAddrFromServer = ETrue;
       
    54 const TBool KDefIp6DnsAddrFromServer = ETrue;
       
    55 
       
    56 const TInt KLanLastSocketActivityTimeout = -1;
       
    57 const TInt KLanLastSocketClosedTimeout = -1;
       
    58 const TInt KLanLastSessionClosedTimeout = -1;
       
    59 
       
    60 
       
    61 // ---------------------------------------------------------
       
    62 // CCmPluginLan::NewOutgoingL()
       
    63 // ---------------------------------------------------------
       
    64 //
       
    65 CCmPluginLan* CCmPluginLan::NewL( TCmPluginInitParam* aInitParam )
       
    66     {
       
    67     OstTraceFunctionEntry0( CCMPLUGINLAN_NEWL_ENTRY );
       
    68 
       
    69     CCmPluginLan* self = new( ELeave ) CCmPluginLan( aInitParam );
       
    70     CleanupStack::PushL( self );
       
    71     self->ConstructL();
       
    72     CleanupStack::Pop( self );
       
    73 
       
    74     OstTraceFunctionExit0( CCMPLUGINLAN_NEWL_EXIT );
       
    75     return self;
       
    76     }
       
    77 
       
    78 // ----------------------------------------------------------------------------
       
    79 // CCmPluginLan::CreateInstanceL
       
    80 // ----------------------------------------------------------------------------
       
    81 //
       
    82 CCmPluginBaseEng* CCmPluginLan::CreateInstanceL( TCmPluginInitParam& aInitParam ) const
       
    83     {
       
    84     OstTraceFunctionEntry0( CCMPLUGINLAN_CREATEINSTANCEL_ENTRY );
       
    85 
       
    86     CCmPluginLan* self = new( ELeave ) CCmPluginLan( &aInitParam );
       
    87     CleanupStack::PushL( self );
       
    88     self->ConstructL();
       
    89     CleanupStack::Pop( self );
       
    90 
       
    91     OstTraceFunctionExit0( CCMPLUGINLAN_CREATEINSTANCEL_EXIT );
       
    92     return self;
       
    93     }
       
    94 
       
    95 // ---------------------------------------------------------
       
    96 // CCmPluginLan::~CCmPluginLan()
       
    97 // ---------------------------------------------------------
       
    98 //
       
    99 CCmPluginLan::~CCmPluginLan()
       
   100     {
       
   101     OstTraceFunctionEntry0( CCMPLUGINLAN_CCMPLUGINLAN_ENTRY );
       
   102 
       
   103     ResetBearerRecords();
       
   104 
       
   105     OstTraceFunctionExit0( CCMPLUGINLAN_CCMPLUGINLAN_EXIT );
       
   106     }
       
   107 
       
   108 // ---------------------------------------------------------
       
   109 // CCmPluginLan::CCmPluginLan()
       
   110 // ---------------------------------------------------------
       
   111 //
       
   112 CCmPluginLan::CCmPluginLan( TCmPluginInitParam* aInitParam )
       
   113         :
       
   114         CCmPluginBaseEng( aInitParam )
       
   115     {
       
   116     OstTraceFunctionEntry0( DUP1_CCMPLUGINLAN_CCMPLUGINLAN_ENTRY );
       
   117 
       
   118     iBearerType = KUidLanBearerType;
       
   119     iBearerRecord = NULL;
       
   120     iBearerPriorityTableId = 0;
       
   121 
       
   122     OstTraceFunctionExit0( DUP1_CCMPLUGINLAN_CCMPLUGINLAN_EXIT );
       
   123     }
       
   124 
       
   125 // ---------------------------------------------------------
       
   126 // CCmPluginLan::ConstructL()
       
   127 // ---------------------------------------------------------
       
   128 //
       
   129 void CCmPluginLan::ConstructL()
       
   130     {
       
   131     OstTraceFunctionEntry0( CCMPLUGINLAN_CONSTRUCTL_ENTRY );
       
   132 
       
   133     // Feature Manager is initialized by the CmmServer, so no need to do it here.
       
   134 
       
   135     CCmPluginBaseEng::ConstructL();
       
   136     
       
   137     // Get bearer priority table ID.
       
   138     TRAP_IGNORE( iBearerPriorityTableId = 
       
   139             CCDGlobalBearerTypePriorizationRecord::TableIdL( iSession ) );
       
   140 
       
   141     if ( !iBearerPriorityTableId )
       
   142         {
       
   143         iBearerPriorityTableId = 
       
   144                 CCDGlobalBearerTypePriorizationRecord::CreateTableL( iSession );
       
   145         }
       
   146 
       
   147     OstTraceFunctionExit0( CCMPLUGINLAN_CONSTRUCTL_EXIT );
       
   148     }
       
   149 
       
   150 // ---------------------------------------------------------
       
   151 // CCmPluginLan::CanHandleIapIdL()
       
   152 // ---------------------------------------------------------
       
   153 //
       
   154 TBool CCmPluginLan::CanHandleIapIdL( TUint32 aIapId ) const
       
   155     {
       
   156     OstTraceFunctionEntryExt( CCMPLUGINLAN_CANHANDLEIAPIDL_ENTRY, this );
       
   157 
       
   158     TBool retVal( EFalse );
       
   159 
       
   160     CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>
       
   161                             ( CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
       
   162 
       
   163     CleanupStack::PushL( iapRecord );
       
   164     iapRecord->SetRecordId( aIapId );
       
   165 
       
   166     TRAPD( err, iapRecord->LoadL( iSession ) );
       
   167 
       
   168     if ( !err )
       
   169         {
       
   170         retVal = CanHandleIapIdL( iapRecord );
       
   171         }
       
   172 
       
   173     CleanupStack::PopAndDestroy( iapRecord );
       
   174 
       
   175     OstTraceFunctionExitExt( CCMPLUGINLAN_CANHANDLEIAPIDL_EXIT, this, retVal );
       
   176 
       
   177     return retVal;
       
   178     }
       
   179 
       
   180 // ---------------------------------------------------------
       
   181 // CCmPluginLan::CanHandleIapIdL()
       
   182 // ---------------------------------------------------------
       
   183 //
       
   184 TBool CCmPluginLan::CanHandleIapIdL( CCDIAPRecord *aIapRecord ) const
       
   185     {
       
   186     OstTraceFunctionEntryExt( DUP1_CCMPLUGINLAN_CANHANDLEIAPIDL_ENTRY, this );
       
   187 
       
   188     TBool retVal( EFalse );
       
   189 
       
   190     if ( (TPtrC( aIapRecord->iServiceType ) == TPtrC( KCDTypeNameLANService ) ) &&
       
   191         TPtrC( aIapRecord->iBearerType ) == TPtrC( KCDTypeNameLANBearer ) )
       
   192         {
       
   193         retVal = ETrue;
       
   194         }
       
   195 
       
   196     OstTraceFunctionExitExt( DUP1_CCMPLUGINLAN_CANHANDLEIAPIDL_EXIT, this, retVal );
       
   197 
       
   198     return retVal;
       
   199     }
       
   200 
       
   201 // ----------------------------------------------------------------------------
       
   202 // CCmPluginLan::PreparePluginToUpdateRecordsL()
       
   203 // ----------------------------------------------------------------------------
       
   204 //
       
   205 void CCmPluginLan::PreparePluginToLoadRecordsL()
       
   206     {
       
   207     OstTraceFunctionEntry0( CCMPLUGINLAN_PREPAREPLUGINTOLOADRECORDSL_ENTRY );
       
   208     OstTraceFunctionExit0( CCMPLUGINLAN_PREPAREPLUGINTOLOADRECORDSL_EXIT );
       
   209     }
       
   210 
       
   211 // ----------------------------------------------------------------------------
       
   212 // CCmPluginLan::PreparePluginToUpdateRecordsL()
       
   213 // ----------------------------------------------------------------------------
       
   214 //
       
   215 void CCmPluginLan::PreparePluginToUpdateRecordsL(
       
   216         RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
       
   217         RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
       
   218     {
       
   219     OstTraceFunctionEntry0( CCMPLUGINLAN_PREPAREPLUGINTOUPDATERECORDSL_ENTRY );
       
   220 
       
   221     CCDIAPRecord* iapRecord =
       
   222                 static_cast<CCDIAPRecord*>( aGenRecordArray[KIapRecordIndex] );
       
   223 
       
   224     CCDLANServiceRecord* serviceRecord =
       
   225             static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
       
   226 
       
   227     CheckIfNameModifiedL( iapRecord, serviceRecord );
       
   228 
       
   229     CheckDNSServerAddressL( ETrue,
       
   230                             serviceRecord->iIp6NameServer1,
       
   231                             serviceRecord->iIp6NameServer2,
       
   232                             serviceRecord->iIp6DnsAddrFromServer );
       
   233 
       
   234     CheckDNSServerAddressL( EFalse,
       
   235                             serviceRecord->iIpNameServer1,
       
   236                             serviceRecord->iIpNameServer2,
       
   237                             serviceRecord->iIpDnsAddrFromServer );
       
   238 
       
   239     SetDaemonNameL( aGenRecordArray, aBearerSpecRecordArray );
       
   240 
       
   241     OstTraceFunctionExit0( CCMPLUGINLAN_PREPAREPLUGINTOUPDATERECORDSL_EXIT );
       
   242     }
       
   243 
       
   244 // --------------------------------------------------------------------------
       
   245 // CCmPluginLan::CreateServiceRecordL
       
   246 // --------------------------------------------------------------------------
       
   247 //
       
   248 void CCmPluginLan::CreateServiceRecordL()
       
   249     {
       
   250     OstTraceFunctionEntry0( CCMPLUGINLAN_CREATESERVICERECORDL_ENTRY );
       
   251 
       
   252     delete iServiceRecord;
       
   253     iServiceRecord = NULL;
       
   254 
       
   255     iServiceRecord = static_cast<CCDLANServiceRecord*>(
       
   256             CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord ) );
       
   257 
       
   258     CCDLANServiceRecord* lanServiceRecord = static_cast<CCDLANServiceRecord*>( iServiceRecord );
       
   259 
       
   260     if ( FeatureManager::FeatureSupported( KFeatureIdIPv6 ) )
       
   261         {
       
   262         lanServiceRecord->iIfNetworks.SetL( KDefIspIfNetworksIPv4IPv6LAN );
       
   263         }
       
   264     else
       
   265         {
       
   266         lanServiceRecord->iIfNetworks.SetL( KDefIspIfNetworksIPv4 );
       
   267         }
       
   268 
       
   269     lanServiceRecord->iIpGateway.SetL( KUnspecifiedIPv4 );
       
   270     lanServiceRecord->iIpAddrFromServer.SetL( KDefIpAddrFromServer );
       
   271 
       
   272     lanServiceRecord->iIpAddr.SetL( KUnspecifiedIPv4 );
       
   273 
       
   274     lanServiceRecord->iIpDnsAddrFromServer.SetL( KDefIpDnsAddrFromServer );
       
   275 
       
   276     lanServiceRecord->iIpNameServer1.SetL( KUnspecifiedIPv4 );
       
   277     lanServiceRecord->iIpNameServer2.SetL( KUnspecifiedIPv4 );
       
   278     lanServiceRecord->iIp6DnsAddrFromServer.SetL( KDefIp6DnsAddrFromServer );
       
   279     lanServiceRecord->iIp6NameServer1.SetL( KDynamicIpv6Address );
       
   280     lanServiceRecord->iIp6NameServer2.SetL( KDynamicIpv6Address );
       
   281 
       
   282     if ( KDefIpAddrFromServer )
       
   283         {
       
   284         lanServiceRecord->iConfigDaemonManagerName.SetL( KDaemonManagerName );
       
   285         lanServiceRecord->iConfigDaemonName.SetL( KConfigDaemonName );
       
   286         }
       
   287     else
       
   288         {
       
   289         lanServiceRecord->iConfigDaemonManagerName.SetL( KEmpty );
       
   290         lanServiceRecord->iConfigDaemonName.SetL( KEmpty );
       
   291         }
       
   292 
       
   293     OstTraceFunctionExit0( CCMPLUGINLAN_CREATESERVICERECORDL_EXIT );
       
   294     }
       
   295 
       
   296 // --------------------------------------------------------------------------
       
   297 // CCmPluginLan::LoadServiceRecordL
       
   298 // --------------------------------------------------------------------------
       
   299 //
       
   300 void CCmPluginLan::LoadServiceRecordL()
       
   301     {
       
   302     OstTraceFunctionEntry0( CCMPLUGINLAN_LOADSERVICERECORDL_ENTRY );
       
   303 
       
   304     if ( TPtrC( KCDTypeNameLANService ) == iIapRecord->iServiceType )
       
   305         {
       
   306         iServiceRecord = static_cast<CCDLANServiceRecord *>(
       
   307                 CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord ) );
       
   308 
       
   309         ServiceRecord().SetRecordId( iIapRecord->iService );
       
   310         ServiceRecord().LoadL( iSession );
       
   311         }
       
   312     else
       
   313         {
       
   314         // This IAP service is not supported by this plugin.
       
   315         User::Leave( KErrNotSupported );
       
   316         }
       
   317 
       
   318     OstTraceFunctionExit0( CCMPLUGINLAN_LOADSERVICERECORDL_EXIT );
       
   319     }
       
   320 
       
   321 // ---------------------------------------------------------------------------
       
   322 // CCmPluginLan::PrepareToCopyDataL
       
   323 // ---------------------------------------------------------------------------
       
   324 //
       
   325 void CCmPluginLan::PrepareToCopyDataL( CCmPluginBaseEng* /*aCopyInstance*/ )
       
   326     {
       
   327     OstTraceFunctionEntry0( CCMPLUGINLAN_PREPARETOCOPYDATAL_ENTRY );
       
   328     OstTraceFunctionExit0( CCMPLUGINLAN_PREPARETOCOPYDATAL_EXIT );
       
   329     }
       
   330 
       
   331 // ---------------------------------------------------------------------------
       
   332 // CCmPluginLan::CopyServiceRecordL
       
   333 // ---------------------------------------------------------------------------
       
   334 //
       
   335 CommsDat::CCDRecordBase* CCmPluginLan::CopyServiceRecordL()
       
   336     {
       
   337     OstTraceFunctionEntry0( CCMPLUGINLAN_COPYSERVICERECORDL_ENTRY );
       
   338 
       
   339     // New service record to be returned.
       
   340     CCDRecordBase* serviceRecord = static_cast<CCDLANServiceRecord*>(
       
   341             CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord ) );
       
   342     CleanupStack::PushL( serviceRecord );
       
   343 
       
   344     CCDLANServiceRecord* tempServiceRecordPtrToNew =
       
   345             static_cast<CCDLANServiceRecord*>( serviceRecord );
       
   346 
       
   347     // CommsDat version of service record.
       
   348     CCDLANServiceRecord* origServiceRecord =
       
   349             static_cast<CCDLANServiceRecord*>( iServiceRecord );
       
   350 
       
   351     if ( !origServiceRecord->iRecordTag.IsNull() )
       
   352         {
       
   353         tempServiceRecordPtrToNew->iRecordTag.SetL(
       
   354                 origServiceRecord->iRecordTag );
       
   355         }
       
   356     if ( !origServiceRecord->iRecordName.IsNull() )
       
   357         {
       
   358         tempServiceRecordPtrToNew->iRecordName.SetL(
       
   359                 origServiceRecord->iRecordName );
       
   360         }
       
   361     if ( !origServiceRecord->iServiceEnableLlmnr.IsNull() )
       
   362         {
       
   363         tempServiceRecordPtrToNew->iServiceEnableLlmnr.SetL(
       
   364                 origServiceRecord->iServiceEnableLlmnr );
       
   365         }
       
   366     if ( !origServiceRecord->iIfNetworks.IsNull() )
       
   367         {
       
   368         tempServiceRecordPtrToNew->iIfNetworks.SetL(
       
   369                 origServiceRecord->iIfNetworks );
       
   370         }
       
   371     if ( !origServiceRecord->iIpNetmask.IsNull() )
       
   372         {
       
   373         tempServiceRecordPtrToNew->iIpNetmask.SetL(
       
   374                 origServiceRecord->iIpNetmask );
       
   375         }
       
   376     if ( !origServiceRecord->iIpGateway.IsNull() )
       
   377         {
       
   378         tempServiceRecordPtrToNew->iIpGateway.SetL(
       
   379                 origServiceRecord->iIpGateway );
       
   380         }
       
   381     if ( !origServiceRecord->iIpAddrFromServer.IsNull() )
       
   382         {
       
   383         tempServiceRecordPtrToNew->iIpAddrFromServer.SetL(
       
   384                 origServiceRecord->iIpAddrFromServer );
       
   385         }
       
   386     if ( !origServiceRecord->iIpAddr.IsNull() )
       
   387         {
       
   388         tempServiceRecordPtrToNew->iIpAddr.SetL(
       
   389                 origServiceRecord->iIpAddr );
       
   390         }
       
   391     if ( !origServiceRecord->iIpDnsAddrFromServer.IsNull() )
       
   392         {
       
   393         tempServiceRecordPtrToNew->iIpDnsAddrFromServer.SetL(
       
   394                 origServiceRecord->iIpDnsAddrFromServer );
       
   395         }
       
   396     if ( !origServiceRecord->iIpNameServer1.IsNull() )
       
   397         {
       
   398         tempServiceRecordPtrToNew->iIpNameServer1.SetL(
       
   399                 origServiceRecord->iIpNameServer1 );
       
   400         }
       
   401     if ( !origServiceRecord->iIpNameServer2.IsNull() )
       
   402         {
       
   403         tempServiceRecordPtrToNew->iIpNameServer2.SetL(
       
   404                 origServiceRecord->iIpNameServer2 );
       
   405         }
       
   406     if ( !origServiceRecord->iIp6DnsAddrFromServer.IsNull() )
       
   407         {
       
   408         tempServiceRecordPtrToNew->iIp6DnsAddrFromServer.SetL(
       
   409                 origServiceRecord->iIp6DnsAddrFromServer );
       
   410         }
       
   411     if ( !origServiceRecord->iIp6NameServer1.IsNull() )
       
   412         {
       
   413         tempServiceRecordPtrToNew->iIp6NameServer1.SetL(
       
   414                 origServiceRecord->iIp6NameServer1 );
       
   415         }
       
   416     if ( !origServiceRecord->iIp6NameServer2.IsNull() )
       
   417         {
       
   418         tempServiceRecordPtrToNew->iIp6NameServer2.SetL(
       
   419                 origServiceRecord->iIp6NameServer2 );
       
   420         }
       
   421     if ( !origServiceRecord->iIpAddrLeaseValidFrom.IsNull() )
       
   422         {
       
   423         tempServiceRecordPtrToNew->iIpAddrLeaseValidFrom.SetL(
       
   424                 origServiceRecord->iIpAddrLeaseValidFrom );
       
   425         }
       
   426     if ( !origServiceRecord->iIpAddrLeaseValidTo.IsNull() )
       
   427         {
       
   428         tempServiceRecordPtrToNew->iIpAddrLeaseValidTo.SetL(
       
   429                 origServiceRecord->iIpAddrLeaseValidTo );
       
   430         }
       
   431     if ( !origServiceRecord->iConfigDaemonManagerName.IsNull() )
       
   432         {
       
   433         tempServiceRecordPtrToNew->iConfigDaemonManagerName.SetL(
       
   434                 origServiceRecord->iConfigDaemonManagerName );
       
   435         }
       
   436     if ( !origServiceRecord->iConfigDaemonName.IsNull() )
       
   437         {
       
   438         tempServiceRecordPtrToNew->iConfigDaemonName.SetL(
       
   439                 origServiceRecord->iConfigDaemonName );
       
   440         }
       
   441     if ( !origServiceRecord->iServiceExtensionTableName.IsNull() )
       
   442         {
       
   443         tempServiceRecordPtrToNew->iServiceExtensionTableName.SetL(
       
   444                 origServiceRecord->iServiceExtensionTableName );
       
   445         }
       
   446     if ( !origServiceRecord->iServiceExtensionTableRecordId.IsNull() )
       
   447         {
       
   448         tempServiceRecordPtrToNew->iServiceExtensionTableRecordId.SetL(
       
   449                 origServiceRecord->iServiceExtensionTableRecordId );
       
   450         }
       
   451 
       
   452     CleanupStack::Pop( serviceRecord );
       
   453 
       
   454     OstTraceFunctionExit0( CCMPLUGINLAN_COPYSERVICERECORDL_EXIT );
       
   455     return serviceRecord;
       
   456     }
       
   457 
       
   458 // ----------------------------------------------------------------------------
       
   459 // CCmPluginLan::UpdateServiceRecordL()
       
   460 // ----------------------------------------------------------------------------
       
   461 //
       
   462 void CCmPluginLan::UpdateServiceRecordL(
       
   463         RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
       
   464         RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
       
   465     {
       
   466     OstTraceFunctionEntry0( CCMPLUGINLAN_UPDATESERVICERECORDL_ENTRY );
       
   467 
       
   468     // Delete the original record and create a copy from the client's copy.
       
   469     delete iServiceRecord;
       
   470     iServiceRecord = NULL;
       
   471 
       
   472     iServiceRecord = static_cast<CCDLANServiceRecord*>(
       
   473             CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord ) );
       
   474 
       
   475     CCDLANServiceRecord* origServiceRecord = static_cast<CCDLANServiceRecord*>( iServiceRecord );
       
   476 
       
   477     // Client's copy of lan service record.
       
   478     CCDLANServiceRecord* clientServiceRecordCopy =
       
   479             static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
       
   480 
       
   481     CopyRecordFieldsL( *clientServiceRecordCopy, *origServiceRecord );
       
   482 
       
   483     origServiceRecord->SetElementId( clientServiceRecordCopy->ElementId() );
       
   484 
       
   485     if ( !origServiceRecord->RecordId() )
       
   486         {
       
   487         origServiceRecord->SetRecordId( KCDNewRecordRequest );
       
   488         origServiceRecord->StoreL( iSession );
       
   489 
       
   490         // Have to be "reloaded" to get possible default values from template records.
       
   491         origServiceRecord->LoadL( iSession );
       
   492 
       
   493         // Update received element ID to client's copy too.
       
   494         clientServiceRecordCopy->SetElementId( origServiceRecord->ElementId() );
       
   495         }
       
   496     else
       
   497         {
       
   498         origServiceRecord->ModifyL( iSession );
       
   499         }
       
   500 
       
   501     CCmPluginBaseEng::CopyRecordFieldsL( *origServiceRecord,
       
   502             *clientServiceRecordCopy );
       
   503 
       
   504     OstTraceFunctionExit0( CCMPLUGINLAN_UPDATESERVICERECORDL_EXIT );
       
   505     }
       
   506 
       
   507 // ---------------------------------------------------------------------------
       
   508 // CCmPluginLan::CreateBearerRecordsL
       
   509 // ---------------------------------------------------------------------------
       
   510 //
       
   511 void CCmPluginLan::CreateBearerRecordsL()
       
   512     {
       
   513     OstTraceFunctionEntry0( CCMPLUGINLAN_CREATEBEARERRECORDSL_ENTRY );
       
   514     OstTraceFunctionExit0( CCMPLUGINLAN_CREATEBEARERRECORDSL_EXIT );
       
   515     }
       
   516 
       
   517 // --------------------------------------------------------------------------
       
   518 // CCmPluginLan::LoadBearerRecordsL
       
   519 // --------------------------------------------------------------------------
       
   520 //
       
   521 void CCmPluginLan::LoadBearerRecordsL()
       
   522     {
       
   523     OstTraceFunctionEntry0( CCMPLUGINLAN_LOADBEARERRECORDSL_ENTRY );
       
   524     OstTraceFunctionExit0( CCMPLUGINLAN_LOADBEARERRECORDSL_EXIT );
       
   525     }
       
   526 
       
   527 // ---------------------------------------------------------------------------
       
   528 // CCmPluginLan::ServiceRecord()
       
   529 // ---------------------------------------------------------------------------
       
   530 //
       
   531 CCDLANServiceRecord& CCmPluginLan::ServiceRecord() const
       
   532     {
       
   533     OstTraceFunctionEntry0( CCMPLUGINLAN_SERVICERECORD_ENTRY );
       
   534 
       
   535     return *static_cast<CCDLANServiceRecord*>( iServiceRecord );
       
   536     }
       
   537 
       
   538 // ---------------------------------------------------------------------------
       
   539 // CCmPluginLan::ServiceRecordIdLC
       
   540 // ---------------------------------------------------------------------------
       
   541 //
       
   542 TUint32 CCmPluginLan::ServiceRecordId() const
       
   543     {
       
   544     OstTraceFunctionEntry0( CCMPLUGINLAN_SERVICERECORDID_ENTRY );
       
   545 
       
   546     return ServiceRecord().RecordId();
       
   547     }
       
   548 
       
   549 // ---------------------------------------------------------------------------
       
   550 // CCmPluginLan::ServiceRecordNameLC
       
   551 // ---------------------------------------------------------------------------
       
   552 //
       
   553 void CCmPluginLan::ServiceRecordNameLC( HBufC* &aName )
       
   554     {
       
   555     OstTraceFunctionEntry0( CCMPLUGINLAN_SERVICERECORDNAMELC_ENTRY );
       
   556 
       
   557     aName = TPtrC( KCDTypeNameLANService ).AllocLC();
       
   558 
       
   559     OstTraceFunctionExit0( CCMPLUGINLAN_SERVICERECORDNAMELC_EXIT );
       
   560     }
       
   561 
       
   562 // ---------------------------------------------------------------------------
       
   563 // CCmPluginLan::BearerRecordIdL()
       
   564 // ---------------------------------------------------------------------------
       
   565 //
       
   566 void CCmPluginLan::BearerRecordIdL( TUint32& aRecordId )
       
   567     {
       
   568     CCDLANBearerRecord* lanBearerRecord = static_cast<CCDLANBearerRecord*>(
       
   569             CCDRecordBase::RecordFactoryL( KCDTIdLANBearerRecord ) );
       
   570     CleanupStack::PushL( lanBearerRecord );
       
   571 
       
   572     lanBearerRecord->iRecordName.SetL( TPtrC( KLanBearerName ) );
       
   573     if ( !lanBearerRecord->FindL( iSession ) )
       
   574         { // Bearer not found -> create dummy values.
       
   575         lanBearerRecord->SetRecordId( KCDNewRecordRequest );
       
   576         lanBearerRecord->iBearerAgent = KLanBearerAgent;
       
   577         lanBearerRecord->iRecordName = KLanBearerName;
       
   578         lanBearerRecord->iLanBearerNifName = KLanBearerNif;
       
   579 
       
   580         lanBearerRecord->iLanBearerLddFilename = KLanLDDFileName;
       
   581         lanBearerRecord->iLanBearerLddName = KLanLDDName;
       
   582         lanBearerRecord->iLanBearerPddFilename = KLanPDDFileName;
       
   583         lanBearerRecord->iLanBearerPddName = KLanPDDName;
       
   584         lanBearerRecord->iLanBearerPacketDriverName = KLanPacketDriverName;
       
   585         lanBearerRecord->iLastSocketActivityTimeout = (TUint32)KLanLastSocketActivityTimeout;
       
   586         lanBearerRecord->iLastSessionClosedTimeout = (TUint32)KLanLastSessionClosedTimeout;
       
   587         lanBearerRecord->iLastSocketClosedTimeout = (TUint32)KLanLastSocketClosedTimeout;
       
   588 
       
   589         lanBearerRecord->StoreL( iSession );
       
   590         }
       
   591 
       
   592     aRecordId = lanBearerRecord->RecordId();
       
   593 
       
   594     CleanupStack::PopAndDestroy( lanBearerRecord );
       
   595     }
       
   596 
       
   597 // ---------------------------------------------------------------------------
       
   598 // CCmPluginLan::BearerRecordNameLC()
       
   599 // ---------------------------------------------------------------------------
       
   600 //
       
   601 void CCmPluginLan::BearerRecordNameLC( HBufC*& aBearerName )
       
   602     {
       
   603     OstTraceFunctionEntry0( CCMPLUGINLAN_BEARERRECORDNAMELC_ENTRY );
       
   604 
       
   605     aBearerName = TPtrC( KCDTypeNameLANBearer ).AllocLC();
       
   606 
       
   607     OstTraceFunctionExit0( CCMPLUGINLAN_BEARERRECORDNAMELC_EXIT );
       
   608     }
       
   609 
       
   610 // ---------------------------------------------------------------------------
       
   611 // CCmPluginLan::GetBearerSpecificRecordsL
       
   612 // ---------------------------------------------------------------------------
       
   613 //
       
   614 void CCmPluginLan::GetBearerSpecificRecordsL(
       
   615         RPointerArray<CommsDat::CCDRecordBase>& /*aRecordArray*/ )
       
   616     {
       
   617     OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERSPECIFICRECORDSL_ENTRY );
       
   618     OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERSPECIFICRECORDSL_EXIT );
       
   619     }
       
   620 
       
   621 // --------------------------------------------------------------------------
       
   622 // CCmPluginLan::DeleteBearerRecordsL
       
   623 // --------------------------------------------------------------------------
       
   624 //
       
   625 void CCmPluginLan::DeleteBearerRecordsL()
       
   626     {
       
   627     OstTraceFunctionEntry0( CCMPLUGINLAN_DELETEBEARERRECORDSL_ENTRY );
       
   628     OstTraceFunctionExit0( CCMPLUGINLAN_DELETEBEARERRECORDSL_EXIT );
       
   629     }
       
   630 
       
   631 // ----------------------------------------------------------------------------
       
   632 // CCmPluginLan::UpdateBearerRecordsL()
       
   633 // ----------------------------------------------------------------------------
       
   634 //
       
   635 void CCmPluginLan::UpdateBearerRecordsL(
       
   636         RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
       
   637         RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
       
   638     {
       
   639     OstTraceFunctionEntry0( CCMPLUGINLAN_UPDATEBEARERRECORDSL_ENTRY );
       
   640     OstTraceFunctionExit0( CCMPLUGINLAN_UPDATEBEARERRECORDSL_EXIT );
       
   641     }
       
   642 
       
   643 // ---------------------------------------------------------
       
   644 // CCmPluginLan::ResetBearerRecords()
       
   645 // ---------------------------------------------------------
       
   646 //
       
   647 void CCmPluginLan::ResetBearerRecords()
       
   648     {
       
   649     OstTraceFunctionEntry0( CCMPLUGINLAN_RESETBEARERRECORDS_ENTRY );
       
   650     OstTraceFunctionExit0( CCMPLUGINLAN_RESETBEARERRECORDS_EXIT );
       
   651     }
       
   652 
       
   653 // ---------------------------------------------------------------------------
       
   654 // CCmPluginLan::SetDaemonNameL
       
   655 // ---------------------------------------------------------------------------
       
   656 //
       
   657 void CCmPluginLan::SetDaemonNameL(
       
   658         RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
       
   659         RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
       
   660     {
       
   661     OstTraceFunctionEntry0( CCMPLUGINLAN_SETDAEMONNAMEL_ENTRY );
       
   662 
       
   663     // We have to check first that these values have not been set (or changed)
       
   664     // by any 3rd party SW to ensure that we don't break their settings.
       
   665     HBufC* daemonName = GetBearerStringAttributeL(
       
   666             ECmConfigDaemonManagerName,
       
   667             aGenRecordArray,
       
   668             aBearerSpecRecordArray );
       
   669     if ( daemonName )
       
   670         {
       
   671         if ( daemonName->Compare( KDaemonManagerName ) != 0 )
       
   672             {
       
   673             delete daemonName;
       
   674             OstTraceFunctionExit1( CCMPLUGINWLAN_SETDAEMONNAMEL_EXIT, this );
       
   675             OstTraceFunctionExit0( CCMPLUGINLAN_SETDAEMONNAMEL_EXIT );
       
   676             return;
       
   677             }
       
   678         delete daemonName;
       
   679         }
       
   680 
       
   681     // Use DHCP if we can.
       
   682     TBool ipfromSrv = GetBearerBoolAttributeL(
       
   683             ECmIPAddFromServer,
       
   684             aGenRecordArray,
       
   685             aBearerSpecRecordArray );
       
   686     if ( ipfromSrv )
       
   687         {
       
   688         SetBearerStringAttributeL(
       
   689                 ECmConfigDaemonManagerName,
       
   690                 KDaemonManagerName,
       
   691                 aGenRecordArray,
       
   692                 aBearerSpecRecordArray );
       
   693         SetBearerStringAttributeL(ECmConfigDaemonName,
       
   694                 KConfigDaemonName,
       
   695                 aGenRecordArray,
       
   696                 aBearerSpecRecordArray );
       
   697         }
       
   698     else
       
   699         {
       
   700         if ( FeatureManager::FeatureSupported( KFeatureIdIPv6 ) )
       
   701             {
       
   702             SetBearerStringAttributeL(
       
   703                     ECmConfigDaemonManagerName,
       
   704                     KDaemonManagerName,
       
   705                     aGenRecordArray,
       
   706                     aBearerSpecRecordArray );
       
   707             SetBearerStringAttributeL(
       
   708                     ECmConfigDaemonName,
       
   709                     KConfigDaemonName,
       
   710                     aGenRecordArray,
       
   711                     aBearerSpecRecordArray );
       
   712             }
       
   713         else
       
   714             {
       
   715             SetBearerStringAttributeL(
       
   716                     ECmConfigDaemonManagerName,
       
   717                     KNullDesC(),
       
   718                     aGenRecordArray,
       
   719                     aBearerSpecRecordArray );
       
   720             SetBearerStringAttributeL(
       
   721                     ECmConfigDaemonName,
       
   722                     KNullDesC(),
       
   723                     aGenRecordArray,
       
   724                     aBearerSpecRecordArray );
       
   725             }
       
   726         }
       
   727 
       
   728     OstTraceFunctionExit0( DUP1_CCMPLUGINLAN_SETDAEMONNAMEL_EXIT );
       
   729     }
       
   730 
       
   731 // --------------------------------------------------------------------------
       
   732 // CCmPluginLan::GetBearerIntAttributeL
       
   733 // --------------------------------------------------------------------------
       
   734 //
       
   735 TUint32 CCmPluginLan::GetBearerIntAttributeL(
       
   736         TUint32 aAttribute,
       
   737         RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
       
   738         RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
       
   739     {
       
   740     OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERINTATTRIBUTEL_ENTRY );
       
   741 
       
   742     TUint32 retVal( 0 );
       
   743 
       
   744     CCDLANServiceRecord* serviceRecord =
       
   745             static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
       
   746 
       
   747     switch ( aAttribute )
       
   748         {
       
   749         case ECmInvalidAttribute:
       
   750             {
       
   751             // This attribute has been deprecated since Symbian^4.
       
   752             User::Leave( KErrNotSupported ); //TODO, update attribute definition comments.
       
   753             }
       
   754             break;
       
   755         case ECmExtensionLevel:
       
   756             {
       
   757             retVal = KExtensionBaseLevel;
       
   758             }
       
   759             break;
       
   760         case ECmCommsDBBearerType:
       
   761             {
       
   762             retVal = KCommDbBearerLAN;
       
   763             }
       
   764             break;
       
   765         case ECmDefaultUiPriority:
       
   766             {
       
   767             retVal = GetDefPriorityL( aAttribute );
       
   768             }
       
   769             break;
       
   770         case ECmDefaultPriority:
       
   771             {
       
   772             retVal = GetDefPriorityL( aAttribute );
       
   773             }
       
   774             break;
       
   775         case ELanServiceExtensionTableRecordId:
       
   776             {
       
   777             if ( !serviceRecord->iServiceExtensionTableRecordId.IsNull() )
       
   778                 {
       
   779                 retVal = serviceRecord->iServiceExtensionTableRecordId.RecordId();
       
   780                 }
       
   781             else
       
   782                 {
       
   783                 retVal = 0;
       
   784                 }
       
   785             }
       
   786             break;
       
   787         default:
       
   788             {
       
   789             User::Leave( KErrNotSupported );
       
   790             }
       
   791             break;
       
   792         }
       
   793 
       
   794     OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERINTATTRIBUTEL_EXIT );
       
   795     return retVal;
       
   796     }
       
   797 
       
   798 // --------------------------------------------------------------------------
       
   799 // CCmPluginLan::GetBearerBoolAttributeL
       
   800 // --------------------------------------------------------------------------
       
   801 //
       
   802 TBool CCmPluginLan::GetBearerBoolAttributeL(
       
   803         TUint32 aAttribute,
       
   804         RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
       
   805         RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
       
   806     {
       
   807     OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERBOOLATTRIBUTEL_ENTRY );
       
   808 
       
   809     TBool retVal( 0 );
       
   810 
       
   811     CCDLANServiceRecord* serviceRecord =
       
   812                 static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
       
   813 
       
   814     switch ( aAttribute )
       
   815         {
       
   816         case ECmCoverage:
       
   817             {
       
   818             retVal = ETrue;
       
   819             }
       
   820             break;
       
   821         case ECmDestination:
       
   822             {
       
   823             retVal = EFalse;
       
   824             }
       
   825             break;
       
   826         case ECmBearerHasUi:
       
   827             {
       
   828             retVal = EFalse;
       
   829             }
       
   830             break;
       
   831         case ECmIPv6Supported:
       
   832             {
       
   833             retVal = FeatureManager::FeatureSupported( KFeatureIdIPv6 );
       
   834             }
       
   835             break;
       
   836         case ECmIPAddFromServer:
       
   837         case ELanIpAddrFromServer:
       
   838             {
       
   839             retVal = serviceRecord->iIpAddrFromServer;
       
   840             }
       
   841             break;
       
   842         case ECmIPDNSAddrFromServer:
       
   843         case ELanIpDNSAddrFromServer:
       
   844             {
       
   845             retVal = serviceRecord->iIpDnsAddrFromServer;
       
   846             }
       
   847             break;
       
   848         case ECmIP6DNSAddrFromServer:
       
   849         case ELanIp6DNSAddrFromServer:
       
   850             {
       
   851             retVal = serviceRecord->iIp6DnsAddrFromServer;
       
   852             }
       
   853             break;
       
   854         default:
       
   855             {
       
   856             User::Leave( KErrNotSupported );
       
   857             }
       
   858             break;
       
   859         }
       
   860 
       
   861     OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERBOOLATTRIBUTEL_EXIT );
       
   862     return retVal;
       
   863     }
       
   864 
       
   865 // --------------------------------------------------------------------------
       
   866 // CCmPluginLan::GetBearerStringAttributeL
       
   867 // --------------------------------------------------------------------------
       
   868 //
       
   869 HBufC* CCmPluginLan::GetBearerStringAttributeL(
       
   870         TUint32 aAttribute,
       
   871         RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
       
   872         RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
       
   873     {
       
   874     OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERSTRINGATTRIBUTEL_ENTRY );
       
   875 
       
   876     HBufC* retVal = NULL;
       
   877 
       
   878     CCDLANServiceRecord* serviceRecord =
       
   879             static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
       
   880 
       
   881     switch ( aAttribute )
       
   882         {
       
   883         case ECmIFNetworks:
       
   884         case ELanIfNetworks:
       
   885             {
       
   886             retVal = TPtrC( serviceRecord->iIfNetworks ).AllocL();
       
   887             }
       
   888             break;
       
   889         case ECmIPNetmask:
       
   890         case ELanIpNetMask:
       
   891             {
       
   892             retVal = TPtrC( serviceRecord->iIpNetmask ).AllocL();
       
   893             }
       
   894             break;
       
   895         case ECmIPGateway:
       
   896         case ELanIpGateway:
       
   897             {
       
   898             retVal = TPtrC( serviceRecord->iIpGateway ).AllocL();
       
   899             }
       
   900             break;
       
   901         case ECmIPAddress:
       
   902         case ELanIpAddr:
       
   903             {
       
   904             retVal = TPtrC( serviceRecord->iIpAddr ).AllocL();
       
   905             }
       
   906             break;
       
   907         case ECmIPNameServer1:
       
   908         case ELanIpNameServer1:
       
   909             {
       
   910             retVal = TPtrC( serviceRecord->iIpNameServer1 ).AllocL();
       
   911             }
       
   912             break;
       
   913         case ECmIPNameServer2:
       
   914         case ELanIpNameServer2:
       
   915             {
       
   916             retVal = TPtrC( serviceRecord->iIpNameServer2 ).AllocL();
       
   917             }
       
   918             break;
       
   919         case ECmIP6NameServer1:
       
   920         case ELanIp6NameServer1:
       
   921             {
       
   922             retVal = TPtrC( serviceRecord->iIp6NameServer1 ).AllocL();
       
   923             }
       
   924             break;
       
   925         case ECmIP6NameServer2:
       
   926         case ELanIp6NameServer2:
       
   927             {
       
   928             retVal = TPtrC( serviceRecord->iIp6NameServer2 ).AllocL();
       
   929             }
       
   930             break;
       
   931         case ECmIPAddrLeaseValidFrom:
       
   932         case ELanIpAddrLeaseValidFrom:
       
   933             {
       
   934             retVal = TPtrC( serviceRecord->iIpAddrLeaseValidFrom ).AllocL();
       
   935             }
       
   936             break;
       
   937         case ECmIPAddrLeaseValidTo:
       
   938         case ELanIpAddrLeaseValidTo:
       
   939             {
       
   940             retVal = TPtrC( serviceRecord->iIpAddrLeaseValidTo ).AllocL();
       
   941             }
       
   942             break;
       
   943         case ECmConfigDaemonManagerName:
       
   944         case ELanConfigDaemonManagerName:
       
   945             {
       
   946             retVal = TPtrC( serviceRecord->iConfigDaemonManagerName ).AllocL();
       
   947             }
       
   948             break;
       
   949         case ECmConfigDaemonName:
       
   950         case ELanConfigDaemonName:
       
   951             {
       
   952             retVal = TPtrC( serviceRecord->iConfigDaemonName ).AllocL();
       
   953             }
       
   954             break;
       
   955         case ELanServiceExtensionTableName:
       
   956             {
       
   957             retVal = TPtrC( serviceRecord->iServiceExtensionTableName ).AllocL();
       
   958             }
       
   959             break;
       
   960         default:
       
   961             {
       
   962             User::Leave( KErrNotSupported );
       
   963             }
       
   964             break;
       
   965         }
       
   966 
       
   967     OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERSTRINGATTRIBUTEL_EXIT );
       
   968     return retVal;
       
   969     }
       
   970 
       
   971 // --------------------------------------------------------------------------
       
   972 // CCmPluginLan::GetBearerString8AttributeL
       
   973 // --------------------------------------------------------------------------
       
   974 //
       
   975 HBufC8* CCmPluginLan::GetBearerString8AttributeL(
       
   976         TUint32 aAttribute,
       
   977         RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
       
   978         RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
       
   979     {
       
   980     OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERSTRING8ATTRIBUTEL_ENTRY );
       
   981 
       
   982     HBufC8* retVal( NULL );
       
   983 
       
   984     switch ( aAttribute )
       
   985         {
       
   986         default:
       
   987             {
       
   988             User::Leave( KErrNotSupported );
       
   989             }
       
   990             break;
       
   991         }
       
   992 
       
   993     OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERSTRING8ATTRIBUTEL_EXIT );
       
   994     return retVal;
       
   995     }
       
   996 
       
   997 // --------------------------------------------------------------------------
       
   998 // CCmPluginLan::SetBearerIntAttributeL
       
   999 // --------------------------------------------------------------------------
       
  1000 //
       
  1001 void CCmPluginLan::SetBearerIntAttributeL(
       
  1002         TUint32 aAttribute,
       
  1003         TUint32 aValue,
       
  1004         RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
       
  1005         RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
       
  1006     {
       
  1007     OstTraceFunctionEntry0( CCMPLUGINLAN_SETBEARERINTATTRIBUTEL_ENTRY );
       
  1008 
       
  1009     CCDLANServiceRecord* serviceRecord =
       
  1010             static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
       
  1011 
       
  1012     switch ( aAttribute )
       
  1013         {
       
  1014         case ECmExtensionLevel:
       
  1015         case ECmCommsDBBearerType:
       
  1016         case ECmDefaultUiPriority:
       
  1017         case ECmDefaultPriority:
       
  1018             {
       
  1019             User::Leave( KErrArgument );
       
  1020             }
       
  1021             break;
       
  1022         case ELanServiceExtensionTableRecordId:
       
  1023             {
       
  1024             serviceRecord->iServiceExtensionTableRecordId = aValue;
       
  1025             }
       
  1026             break;
       
  1027         default:
       
  1028             {
       
  1029             User::Leave( KErrNotSupported );
       
  1030             }
       
  1031             break;
       
  1032         }
       
  1033 
       
  1034     OstTraceFunctionExit0( CCMPLUGINLAN_SETBEARERINTATTRIBUTEL_EXIT );
       
  1035     }
       
  1036 
       
  1037 // --------------------------------------------------------------------------
       
  1038 // CCmPluginLan::SetBearerBoolAttributeL
       
  1039 // --------------------------------------------------------------------------
       
  1040 //
       
  1041 void CCmPluginLan::SetBearerBoolAttributeL(
       
  1042         TUint32 aAttribute,
       
  1043         TBool aValue,
       
  1044         RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
       
  1045         RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
       
  1046     {
       
  1047     OstTraceFunctionEntry0( CCMPLUGINLAN_SETBEARERBOOLATTRIBUTEL_ENTRY );
       
  1048 
       
  1049     CCDLANServiceRecord* serviceRecord =
       
  1050                 static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
       
  1051 
       
  1052     switch ( aAttribute )
       
  1053         {
       
  1054         case ECmIPAddFromServer:
       
  1055         case ELanIpAddrFromServer:
       
  1056             {
       
  1057             serviceRecord->iIpAddrFromServer.SetL( aValue );
       
  1058             }
       
  1059             break;
       
  1060         case ECmIPDNSAddrFromServer:
       
  1061         case ELanIpDNSAddrFromServer:
       
  1062             {
       
  1063             serviceRecord->iIpDnsAddrFromServer.SetL( aValue );
       
  1064             }
       
  1065             break;
       
  1066         case ECmIP6DNSAddrFromServer:
       
  1067         case ELanIp6DNSAddrFromServer:
       
  1068             {
       
  1069             serviceRecord->iIp6DnsAddrFromServer.SetL( aValue );
       
  1070             }
       
  1071             break;
       
  1072         default:
       
  1073             {
       
  1074             User::Leave( KErrNotSupported );
       
  1075             }
       
  1076             break;
       
  1077         }
       
  1078 
       
  1079     OstTraceFunctionExit0( CCMPLUGINLAN_SETBEARERBOOLATTRIBUTEL_EXIT );
       
  1080     }
       
  1081 
       
  1082 // --------------------------------------------------------------------------
       
  1083 // CCmPluginLan::SetBearerStringAttributeL
       
  1084 // --------------------------------------------------------------------------
       
  1085 //
       
  1086 void CCmPluginLan::SetBearerStringAttributeL(
       
  1087         TUint32 aAttribute,
       
  1088         const TDesC16& aValue,
       
  1089         RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
       
  1090         RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
       
  1091     {
       
  1092     OstTraceFunctionEntry0( CCMPLUGINLAN_SETBEARERSTRINGATTRIBUTEL_ENTRY );
       
  1093 
       
  1094     CCDLANServiceRecord* serviceRecord =
       
  1095             static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
       
  1096 
       
  1097     switch ( aAttribute )
       
  1098         {
       
  1099         case ECmIFNetworks:
       
  1100         case ELanIfNetworks:
       
  1101             {
       
  1102             serviceRecord->iIfNetworks.SetL( aValue );
       
  1103             }
       
  1104             break;
       
  1105         case ECmIPNetmask:
       
  1106         case ELanIpNetMask:
       
  1107             {
       
  1108             serviceRecord->iIpNetmask.SetL( aValue );
       
  1109             }
       
  1110             break;
       
  1111         case ECmIPGateway:
       
  1112         case ELanIpGateway:
       
  1113             {
       
  1114             serviceRecord->iIpGateway.SetL( aValue );
       
  1115             }
       
  1116             break;
       
  1117         case ECmIPAddress:
       
  1118         case ELanIpAddr:
       
  1119             {
       
  1120             if ( ( aValue.Compare( KUnspecifiedIPv4 ) == 0 ) ||
       
  1121                     ( aValue.Compare( KNullDesC ) == 0 ) )
       
  1122                 {
       
  1123                 // If unspecified or NULL address is set dynamic
       
  1124                 // IP must be enabled.
       
  1125                 SetBearerBoolAttributeL( ECmIPAddFromServer,
       
  1126                                          ETrue,
       
  1127                                          aGenRecordArray,
       
  1128                                          aBearerSpecRecordArray );
       
  1129                 }
       
  1130             else
       
  1131                 {
       
  1132                 // If valid address is set dynamic IP is disabled.
       
  1133                 SetBearerBoolAttributeL( ECmIPAddFromServer,
       
  1134                                          EFalse,
       
  1135                                          aGenRecordArray,
       
  1136                                          aBearerSpecRecordArray );
       
  1137                 }
       
  1138             serviceRecord->iIpAddr.SetL( aValue );
       
  1139             }
       
  1140             break;
       
  1141         case ECmIPNameServer1:
       
  1142         case ELanIpNameServer1:
       
  1143             {
       
  1144             serviceRecord->iIpNameServer1.SetL( aValue );
       
  1145             }
       
  1146             break;
       
  1147         case ECmIPNameServer2:
       
  1148         case ELanIpNameServer2:
       
  1149             {
       
  1150             serviceRecord->iIpNameServer2.SetL( aValue );
       
  1151             }
       
  1152             break;
       
  1153         case ECmIP6NameServer1:
       
  1154         case ELanIp6NameServer1:
       
  1155             {
       
  1156             serviceRecord->iIp6NameServer1.SetL( aValue );
       
  1157             }
       
  1158             break;
       
  1159         case ECmIP6NameServer2:
       
  1160         case ELanIp6NameServer2:
       
  1161             {
       
  1162             serviceRecord->iIp6NameServer2.SetL( aValue );
       
  1163             }
       
  1164             break;
       
  1165         case ECmIPAddrLeaseValidFrom:
       
  1166         case ELanIpAddrLeaseValidFrom:
       
  1167             {
       
  1168             serviceRecord->iIpAddrLeaseValidFrom.SetL( aValue );
       
  1169             }
       
  1170             break;
       
  1171         case ECmIPAddrLeaseValidTo:
       
  1172         case ELanIpAddrLeaseValidTo:
       
  1173             {
       
  1174             serviceRecord->iIpAddrLeaseValidTo.SetL( aValue );
       
  1175             }
       
  1176             break;
       
  1177         case ECmConfigDaemonManagerName:
       
  1178         case ELanConfigDaemonManagerName:
       
  1179             {
       
  1180             serviceRecord->iConfigDaemonManagerName.SetL( aValue );
       
  1181             }
       
  1182             break;
       
  1183         case ECmConfigDaemonName:
       
  1184         case ELanConfigDaemonName:
       
  1185             {
       
  1186             serviceRecord->iConfigDaemonName.SetL( aValue );
       
  1187             }
       
  1188             break;
       
  1189         case ELanServiceExtensionTableName:
       
  1190             {
       
  1191             serviceRecord->iServiceExtensionTableName.SetL( aValue );
       
  1192             }
       
  1193             break;
       
  1194         default:
       
  1195             {
       
  1196             User::Leave( KErrNotSupported );
       
  1197             }
       
  1198             break;
       
  1199         }
       
  1200 
       
  1201     OstTraceFunctionExit0( CCMPLUGINLAN_SETBEARERSTRINGATTRIBUTEL_EXIT );
       
  1202     }
       
  1203 
       
  1204 // --------------------------------------------------------------------------
       
  1205 // CCmPluginLan::SetBearerString8AttributeL
       
  1206 // --------------------------------------------------------------------------
       
  1207 //
       
  1208 void CCmPluginLan::SetBearerString8AttributeL(
       
  1209         TUint32 aAttribute,
       
  1210         const TDesC8& /*aValue*/,
       
  1211         RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
       
  1212         RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
       
  1213     {
       
  1214     OstTraceFunctionEntry0( CCMPLUGINLAN_SETBEARERSTRING8ATTRIBUTEL_ENTRY );
       
  1215 
       
  1216     switch ( aAttribute )
       
  1217         {
       
  1218         default:
       
  1219             {
       
  1220             User::Leave( KErrNotSupported );
       
  1221             }
       
  1222             break;
       
  1223         }
       
  1224 
       
  1225     OstTraceFunctionExit0( CCMPLUGINLAN_SETBEARERSTRING8ATTRIBUTEL_EXIT );
       
  1226     }
       
  1227 
       
  1228 // ---------------------------------------------------------------------------
       
  1229 // CCmPluginLan::GetBearerInfoIntL
       
  1230 // ---------------------------------------------------------------------------
       
  1231 //
       
  1232 TUint32 CCmPluginLan::GetBearerInfoIntL( TUint32 aAttribute ) const
       
  1233     {
       
  1234     OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERINFOINTL_ENTRY );
       
  1235 
       
  1236     TUint32 retVal( 0 );
       
  1237     switch ( aAttribute )
       
  1238         {
       
  1239         case ECmBearerType:
       
  1240             {
       
  1241             retVal = iBearerType;
       
  1242             }
       
  1243             break;
       
  1244         case ECmCommsDBBearerType:
       
  1245             {
       
  1246             retVal = KCommDbBearerLAN;
       
  1247             }
       
  1248             break;
       
  1249         case ECmDefaultUiPriority:
       
  1250             {
       
  1251             retVal = GetDefPriorityL( aAttribute );
       
  1252             }
       
  1253             break;
       
  1254         case ECmDefaultPriority:
       
  1255             {
       
  1256             retVal = GetDefPriorityL( aAttribute );
       
  1257             }
       
  1258             break;
       
  1259         case ECmExtensionLevel:
       
  1260             {
       
  1261             retVal = KExtensionBaseLevel;
       
  1262             }
       
  1263             break;
       
  1264         case ECmSeamlessnessLevel:
       
  1265             {
       
  1266             retVal = ESeamlessnessShowprogress;
       
  1267             }
       
  1268             break;
       
  1269         default:
       
  1270             {
       
  1271             User::Leave( KErrNotSupported );
       
  1272             }
       
  1273             break;
       
  1274         }
       
  1275 
       
  1276     OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERINFOINTL_EXIT );
       
  1277     return retVal;
       
  1278     }
       
  1279 
       
  1280 // ---------------------------------------------------------------------------
       
  1281 // CCmPluginLan::GetBearerInfoBoolL
       
  1282 // ---------------------------------------------------------------------------
       
  1283 //
       
  1284 TBool CCmPluginLan::GetBearerInfoBoolL( TUint32 aAttribute ) const
       
  1285     {
       
  1286     OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERINFOBOOLL_ENTRY );
       
  1287 
       
  1288     TBool retVal( EFalse );
       
  1289 
       
  1290     switch ( aAttribute )
       
  1291         {
       
  1292         case ECmCoverage:
       
  1293             {
       
  1294 #ifndef __WINS__
       
  1295             retVal = EFalse;
       
  1296 #else
       
  1297             retVal = ETrue;
       
  1298 #endif
       
  1299             }
       
  1300             break;
       
  1301         case ECmDestination:
       
  1302             {
       
  1303             retVal = EFalse;
       
  1304             }
       
  1305             break;
       
  1306         case ECmBearerHasUi:
       
  1307             {
       
  1308             retVal = EFalse;
       
  1309             }
       
  1310             break;
       
  1311         case ECmIPv6Supported:
       
  1312             {
       
  1313             retVal = FeatureManager::FeatureSupported( KFeatureIdIPv6 );
       
  1314             }
       
  1315             break;
       
  1316         case ECmVirtual:
       
  1317             {
       
  1318             retVal = EFalse;
       
  1319             }
       
  1320             break;
       
  1321 
       
  1322         default:
       
  1323             {
       
  1324             User::Leave( KErrNotSupported );
       
  1325             }
       
  1326             break;
       
  1327         }
       
  1328 
       
  1329     OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERINFOBOOLL_EXIT );
       
  1330     return retVal;
       
  1331     }
       
  1332 
       
  1333 
       
  1334 // ---------------------------------------------------------------------------
       
  1335 // CCmPluginLan::GetBearerInfoStringL
       
  1336 // ---------------------------------------------------------------------------
       
  1337 //
       
  1338 HBufC* CCmPluginLan::GetBearerInfoStringL( TUint32 aAttribute ) const
       
  1339     {
       
  1340     OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERINFOSTRINGL_ENTRY );
       
  1341 
       
  1342     HBufC* retVal( NULL );
       
  1343     switch ( aAttribute )
       
  1344         {
       
  1345         default:
       
  1346             {
       
  1347             User::Leave( KErrNotSupported );
       
  1348             }
       
  1349             break;
       
  1350         }
       
  1351 
       
  1352     OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERINFOSTRINGL_EXIT );
       
  1353     return retVal;
       
  1354     }
       
  1355 
       
  1356 // ---------------------------------------------------------------------------
       
  1357 // CCmPluginLan::GetBearerInfoString8L
       
  1358 // ---------------------------------------------------------------------------
       
  1359 //
       
  1360 HBufC8* CCmPluginLan::GetBearerInfoString8L( TUint32 aAttribute ) const
       
  1361     {
       
  1362     OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERINFOSTRING8L_ENTRY );
       
  1363 
       
  1364     HBufC8* retVal( NULL );
       
  1365     switch ( aAttribute )
       
  1366         {
       
  1367         default:
       
  1368             {
       
  1369             User::Leave( KErrNotSupported );
       
  1370             }
       
  1371             break;
       
  1372         }
       
  1373 
       
  1374     OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERINFOSTRING8L_EXIT );
       
  1375     return retVal;
       
  1376     }
       
  1377 
       
  1378 // ---------------------------------------------------------------------------
       
  1379 // CCmPluginPacketData::CopyBearerRecordsL
       
  1380 // ---------------------------------------------------------------------------
       
  1381 //
       
  1382 void CCmPluginLan::CopyBearerRecordsL( CCmPluginBaseEng* /*aCopyInstance*/ )
       
  1383     {
       
  1384     OstTraceFunctionEntry0( CCMPLUGINLAN_COPYBEARERRECORDSL_ENTRY );
       
  1385     OstTraceFunctionExit0( CCMPLUGINLAN_COPYBEARERRECORDSL_EXIT );
       
  1386     }
       
  1387 
       
  1388 // ---------------------------------------------------------------------------
       
  1389 // CCmPluginLan::GetBearerTableIdsToBeObserved
       
  1390 // ---------------------------------------------------------------------------
       
  1391 //
       
  1392 void CCmPluginLan::GetBearerTableIdsToBeObservedL(
       
  1393         RArray<TUint32>& aTableIdArray ) const
       
  1394     {
       
  1395     OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERTABLEIDSTOBEOBSERVED_ENTRY );
       
  1396 
       
  1397     aTableIdArray.AppendL( KCDTIdLANServiceRecord );
       
  1398 
       
  1399     OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERTABLEIDSTOBEOBSERVED_EXIT );
       
  1400     }
       
  1401 
       
  1402 // ---------------------------------------------------------------------------
       
  1403 // CCmPluginLan::GetDefPriorityL
       
  1404 // ---------------------------------------------------------------------------
       
  1405 //
       
  1406 TUint32 CCmPluginLan::GetDefPriorityL( const TUint32 aAttribute ) const
       
  1407     {
       
  1408     OstTraceFunctionEntry0( CCMPLUGINLAN_GETDEFPRIORITYL_ENTRY );
       
  1409 
       
  1410     TUint32 retVal( KDataMobilitySelectionPolicyPriorityWildCard );
       
  1411 
       
  1412     CCDGlobalBearerTypePriorizationRecord* priorityRecord =
       
  1413             new( ELeave ) CCDGlobalBearerTypePriorizationRecord( iBearerPriorityTableId );
       
  1414     CleanupStack::PushL( priorityRecord );
       
  1415 
       
  1416     priorityRecord->iServiceType.SetL( TPtrC( KCDTypeNameLANService ) );
       
  1417 
       
  1418     if ( priorityRecord->FindL( iSession ) )
       
  1419         {
       
  1420         priorityRecord->LoadL( iSession );
       
  1421         switch ( aAttribute )
       
  1422             {
       
  1423             case ECmDefaultPriority:
       
  1424                 {
       
  1425                 retVal = priorityRecord->iPriority;
       
  1426                 }
       
  1427                 break;
       
  1428             case ECmDefaultUiPriority:
       
  1429                 {
       
  1430                 retVal = priorityRecord->iUIPriority;
       
  1431                 }
       
  1432                 break;
       
  1433             default:
       
  1434                 break;
       
  1435             }
       
  1436         }
       
  1437     CleanupStack::PopAndDestroy( priorityRecord );
       
  1438 
       
  1439     OstTraceFunctionExit0( CCMPLUGINLAN_GETDEFPRIORITYL_EXIT );
       
  1440     return retVal;
       
  1441     }
       
  1442 
       
  1443 //  End of File