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