cmmanager/cmmgr/Framework/Src/cmpluginlanbase.cpp
branchRCL_3
changeset 58 83ca720e2b9a
parent 0 5a93021fdf25
equal deleted inserted replaced
57:05bc53fe583b 58:83ca720e2b9a
       
     1 /*
       
     2 * Copyright (c) 2006 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:  Implementation of base for Lan Plugin interface 
       
    15 *                for Lan Bearer.
       
    16 *
       
    17 */
       
    18 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
       
    19 #include <commsdat_partner.h>
       
    20 #endif
       
    21 #include <cmpluginlanbase.h>
       
    22 #include "cmlogger.h"
       
    23 #include <ecom/ecom.h>        // For REComSession
       
    24 #include <mcmdexec.h>
       
    25 #include <cmpbasesettingsdlg.h>
       
    26 #include "cmmanagerimpl.h"
       
    27 #include <cmmanager.rsg>
       
    28 #include <cmpsettingsconsts.h>
       
    29 
       
    30 using namespace CMManager;
       
    31 using namespace CommsDat;
       
    32 
       
    33 // default values for fields...
       
    34 // CONSTANTS
       
    35 _LIT( KEmpty, "");
       
    36 
       
    37 _LIT( KLanBearerName, "LANBearer" );
       
    38 _LIT( KLanBearerAgent, "lanagt.agt" );
       
    39 _LIT( KLanBearerNif, "lannif" );
       
    40 
       
    41 _LIT( KLanLDDName, "not used" );
       
    42 _LIT( KLanPDDName, "not used" );
       
    43 
       
    44 const TInt KLanLastSocketActivityTimeout = -1;
       
    45 const TInt KLanLastSocketClosedTimeout = -1;
       
    46 
       
    47 const TBool KDefIpAddrFromServer = ETrue;
       
    48 const TBool KDefIpDnsAddrFromServer = ETrue;
       
    49 const TBool KDefIp6DnsAddrFromServer = ETrue;
       
    50 
       
    51 static const TCmAttribConvTable SLanConvTbl[] = 
       
    52     {
       
    53     { ELanBaseIfNetworks, ELanBaseRangeMax, NULL },
       
    54     { ELanBaseIfNetworks, KCDTIdLANIfNetworks, NULL },        
       
    55     { ELanBaseIpNetMask, KCDTIdLANIpNetMask, &CheckIPv4ValidityL,
       
    56       R_QTN_NETW_SETT_SUBNET_MASK,
       
    57       KIpAddressWidth, EConvCompulsory | EConvIPv4, R_QTN_SELEC_SETTING_COMPULSORY, 0, NULL, NULL },
       
    58     { ELanBaseIpGateway, KCDTIdLANIpGateway, &CheckIPv4ValidityL,
       
    59       R_QTN_NETW_SETT_DEFAULT_GATEWAY,
       
    60       KIpAddressWidth, EConvCompulsory | EConvIPv4, R_QTN_SELEC_SETTING_COMPULSORY, 0, NULL, NULL },
       
    61     { ELanBaseIpAddrFromServer, KCDTIdLANIpAddrFromServer, NULL },
       
    62     { ELanBaseIpAddr, KCDTIdLANIpAddr, &CheckIPv4ValidityL,
       
    63       R_QTN_SET_IP_ADDRESS,
       
    64       KIpAddressWidth, EConvIPv4, R_QTN_SET_IP_ADDRESS_DYNAMIC, 0, NULL, NULL },
       
    65     { ELanBaseIpDNSAddrFromServer, KCDTIdLANIpDNSAddrFromServer, NULL,
       
    66       R_QTN_SET_DNS_SERVERS_IP,
       
    67       0, 0, 0, 0, NULL, NULL },
       
    68     { ELanBaseIpNameServer1, KCDTIdLANIpNameServer1, &CheckIPv4ValidityL,
       
    69       R_QTN_SET_PRIMARY_DNS,
       
    70       KMaxIPv4NameServerLength, EConvIPv4, R_QTN_SET_DNS_SERVERS_AUTOMATIC, 0, NULL, NULL },
       
    71     { ELanBaseIpNameServer2, KCDTIdLANIpNameServer2, &CheckIPv4ValidityL,
       
    72       R_QTN_SET_SECONDARY_DNS,
       
    73       KMaxIPv4NameServerLength, EConvIPv4, R_QTN_SET_DNS_SERVERS_AUTOMATIC, 0, NULL, NULL },    
       
    74     { ELanBaseIp6DNSAddrFromServer, KCDTIdLANIp6DNSAddrFromServer, NULL,
       
    75       R_QTN_SET_DNS_SERVERS_IP,
       
    76       0, 0, 0, 0, NULL, NULL },
       
    77     { ELanBaseIp6NameServer1, KCDTIdLANIp6NameServer1, &CheckIPv6ValidityL },
       
    78     { ELanBaseIp6NameServer2, KCDTIdLANIp6NameServer2, &CheckIPv6ValidityL },
       
    79     { ELanBaseIpAddrLeaseValidFrom, KCDTIdLANIpAddrLeaseValidFrom, NULL },
       
    80     { ELanBaseIpAddrLeaseValidTo, KCDTIdLANIpAddrLeaseValidTo, NULL },
       
    81     { ELanBaseConfigDaemonManagerName, KCDTIdLANConfigDaemonManagerName, NULL },
       
    82     { ELanBaseConfigDaemonName, KCDTIdLANConfigDaemonName, NULL },
       
    83     { ELanBaseServiceExtensionTableName, KCDTIdLANServiceExtensionTableName, NULL },
       
    84     { ELanBaseServiceExtensionTableRecordId, KCDTIdLANServiceExtensionTableRecordId, &CheckRecordIdValidityL },
       
    85     { 0,0, NULL }
       
    86     };
       
    87 
       
    88 static const TCmCommonAttrConvArrayItem SCommonConvTbl[] =
       
    89 {
       
    90     { ELanBaseIfNetworks, ECmIFNetworks },
       
    91     { ELanBaseIpNetMask, ECmIPNetmask },
       
    92     { ELanBaseIpGateway, ECmIPGateway },
       
    93     { ELanBaseIpAddrFromServer, ECmIPAddFromServer },
       
    94     { ELanBaseIpAddr, ECmIPAddress },
       
    95     { ELanBaseIpDNSAddrFromServer, ECmIPDNSAddrFromServer },
       
    96     { ELanBaseIpNameServer1, ECmIPNameServer1 },
       
    97     { ELanBaseIpNameServer2, ECmIPNameServer2 },
       
    98     { ELanBaseIp6DNSAddrFromServer, ECmIP6DNSAddrFromServer },
       
    99     { ELanBaseIp6NameServer1, ECmIP6NameServer1 },
       
   100     { ELanBaseIp6NameServer2, ECmIP6NameServer2 },
       
   101     { ELanBaseIpAddrLeaseValidFrom, ECmIPAddrLeaseValidFrom },
       
   102     { ELanBaseIpAddrLeaseValidTo, ECmIPAddrLeaseValidTo },
       
   103     { ELanBaseConfigDaemonManagerName, ECmConfigDaemonManagerName },
       
   104     { ELanBaseConfigDaemonName, ECmConfigDaemonName },
       
   105     { 0, 0 }
       
   106     };
       
   107 
       
   108 // ---------------------------------------------------------------------------
       
   109 // CCmPluginLanBase::CCmPluginLanBase()
       
   110 // ---------------------------------------------------------------------------
       
   111 //
       
   112 EXPORT_C CCmPluginLanBase::CCmPluginLanBase( TCmPluginInitParam* aInitParam )
       
   113     : CCmPluginBaseEng( aInitParam )
       
   114     {
       
   115     CLOG_CREATE;
       
   116 
       
   117 
       
   118     }
       
   119 
       
   120 EXPORT_C CCmPluginLanBase::~CCmPluginLanBase()
       
   121     {
       
   122     CLOG_CLOSE;
       
   123     }
       
   124 
       
   125 // ---------------------------------------------------------------------------
       
   126 // CCmPluginLanBase::ConstructL()
       
   127 // ---------------------------------------------------------------------------
       
   128 //
       
   129 EXPORT_C void CCmPluginLanBase::ConstructL()
       
   130     {
       
   131     LOGGER_ENTERFN( "CCmPluginLanBase::ConstructL" );
       
   132     
       
   133     CCmPluginBaseEng::ConstructL();
       
   134     
       
   135     AddConverstionTableL( (CCDRecordBase**)&iServiceRecord, NULL, SLanConvTbl );
       
   136 	AddCommonConversionTableL( SCommonConvTbl );
       
   137     }
       
   138 
       
   139 // ---------------------------------------------------------------------------
       
   140 // CCmPluginLanBase::RunSettingsL()
       
   141 // ---------------------------------------------------------------------------
       
   142 //        
       
   143 EXPORT_C TInt CCmPluginLanBase::RunSettingsL()
       
   144     {
       
   145     User::Leave( KErrNotSupported );
       
   146     return 0;
       
   147     }
       
   148         
       
   149 // ---------------------------------------------------------------------------
       
   150 // CCmPluginLanBase::InitializeWithUiL()
       
   151 // ---------------------------------------------------------------------------
       
   152 //        
       
   153 EXPORT_C TBool CCmPluginLanBase::InitializeWithUiL( 
       
   154                                             TBool /*aManuallyConfigure*/ )
       
   155     {
       
   156     User::Leave(KErrNotSupported);
       
   157     return ETrue;
       
   158     }
       
   159 
       
   160 // ---------------------------------------------------------------------------
       
   161 // CCmPluginLanBase::LoadServiceSettingL()
       
   162 // ---------------------------------------------------------------------------
       
   163 //        
       
   164 EXPORT_C void CCmPluginLanBase::LoadServiceSettingL()
       
   165     {
       
   166     LOGGER_ENTERFN( "CCmPluginLanBase::LoadServiceSettingL" );
       
   167     
       
   168     if( TPtrC(KCDTypeNameLANService) == iIapRecord->iServiceType  )
       
   169         {
       
   170         iServiceRecord = static_cast<CCDLANServiceRecord *>
       
   171                     (CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord));
       
   172         }
       
   173     else
       
   174         // this IAP service is not supported by this plugin.
       
   175         {
       
   176         User::Leave( KErrNotSupported );
       
   177         }
       
   178 
       
   179     CCmPluginBaseEng::LoadServiceSettingL();
       
   180     }
       
   181     
       
   182 // ---------------------------------------------------------------------------
       
   183 // CCmPluginLanBase::ServiceRecord()
       
   184 // ---------------------------------------------------------------------------
       
   185 //        
       
   186 EXPORT_C CCDLANServiceRecord& CCmPluginLanBase::ServiceRecord()const
       
   187     {
       
   188     LOGGER_ENTERFN( "CCmPluginLanBase::ServiceRecord" );
       
   189     return *static_cast<CCDLANServiceRecord*>(iServiceRecord);
       
   190     }
       
   191 
       
   192 // ---------------------------------------------------------------------------
       
   193 // CCmPluginLanBase::ServiceRecordIdLC
       
   194 // ---------------------------------------------------------------------------
       
   195 //
       
   196 EXPORT_C void CCmPluginLanBase::ServiceRecordIdLC( HBufC* &aName, 
       
   197                                                    TUint32& aRecordId )
       
   198     {
       
   199     LOGGER_ENTERFN( "CCmPluginLanBase::ServiceRecordIdLC" );
       
   200 
       
   201     aName = TPtrC( KCDTypeNameLANService ).AllocLC();    
       
   202     aRecordId = iServiceRecord->RecordId();
       
   203     }
       
   204 
       
   205 // ---------------------------------------------------------------------------
       
   206 // CCmPluginLanBase::BearerRecordIdLC()
       
   207 // ---------------------------------------------------------------------------
       
   208 //        
       
   209 EXPORT_C void CCmPluginLanBase::BearerRecordIdLC( HBufC* &aBearerName, 
       
   210                                                   TUint32& aRecordId )
       
   211     {
       
   212     LOGGER_ENTERFN( "CCmPluginLanBase::BearerRecordIdLC" );
       
   213                 
       
   214     CCDLANBearerRecord* tmprec = static_cast<CCDLANBearerRecord*>
       
   215                         (CCDRecordBase::RecordFactoryL( KCDTIdLANBearerRecord ));
       
   216     CleanupStack::PushL( tmprec );
       
   217 
       
   218     tmprec->iRecordName.SetL( TPtrC(iBearerRecName) );
       
   219     if ( !tmprec->FindL( Session() ) )
       
   220         { // bearer not found -> create dummy values
       
   221         CLOG_WRITE( "No bearer found" );
       
   222 
       
   223         tmprec->SetRecordId( KCDNewRecordRequest );
       
   224         tmprec->iBearerAgent = KLanBearerAgent;
       
   225         tmprec->iRecordName = KLanBearerName;
       
   226         tmprec->iLanBearerNifName = KLanBearerNif;
       
   227         tmprec->iLanBearerLddName = KLanLDDName;
       
   228         tmprec->iLanBearerPddName = KLanPDDName;
       
   229         tmprec->iLastSocketActivityTimeout = 
       
   230                                         (TUint32)KLanLastSocketActivityTimeout;
       
   231         tmprec->iLastSocketClosedTimeout = 
       
   232                                         (TUint32)KLanLastSocketClosedTimeout;
       
   233 
       
   234         tmprec->StoreL( Session() );
       
   235         }
       
   236 
       
   237     aRecordId = tmprec->RecordId();
       
   238     
       
   239     CLOG_WRITE_2( "Name: [%S], id: [%d]", 
       
   240                   &tmprec->iRecordName.GetL(), 
       
   241                   aRecordId );
       
   242 
       
   243     CleanupStack::PopAndDestroy( tmprec );
       
   244 
       
   245     aBearerName = TPtrC(KCDTypeNameLANBearer).AllocLC();    
       
   246     }
       
   247 
       
   248 // ---------------------------------------------------------------------------
       
   249 // CCmPluginLanBase::CreateNewServiceRecordL()
       
   250 // ---------------------------------------------------------------------------
       
   251 //        
       
   252 EXPORT_C void CCmPluginLanBase::CreateNewServiceRecordL()
       
   253     {
       
   254     LOGGER_ENTERFN( "CCmPluginLanBase::CreateNewServiceRecordL" );
       
   255 
       
   256     delete iServiceRecord; 
       
   257     iServiceRecord = NULL;
       
   258     
       
   259     iServiceRecord = static_cast<CCDServiceRecordBase *>
       
   260                 (CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord));
       
   261 
       
   262     // I do not think that we have to use the default record,
       
   263     // but for compatibility with ApEngine, we write all fields 
       
   264 
       
   265     CCDLANServiceRecord* record = 
       
   266                             static_cast<CCDLANServiceRecord *>(iServiceRecord);
       
   267 
       
   268 
       
   269     if( FeatureSupported( KFeatureIdIPv6 ) )
       
   270         {
       
   271         record->iIfNetworks.SetL( KDefIspIfNetworksIPv4IPv6LAN );
       
   272         }
       
   273     else
       
   274         {
       
   275         record->iIfNetworks.SetL( KDefIspIfNetworksIPv4 );
       
   276         }
       
   277 
       
   278 //    record->iIpNetmask.SetL();
       
   279     
       
   280     record->iIpGateway.SetL( KUnspecifiedIPv4 );        
       
   281     record->iIpAddrFromServer.SetL( KDefIpAddrFromServer );
       
   282     
       
   283     record->iIpAddr.SetL( KUnspecifiedIPv4 );
       
   284     
       
   285     record->iIpDnsAddrFromServer.SetL( KDefIpDnsAddrFromServer );
       
   286     
       
   287     record->iIpNameServer1.SetL( KUnspecifiedIPv4 );
       
   288     record->iIpNameServer2.SetL( KUnspecifiedIPv4 );
       
   289     record->iIp6DnsAddrFromServer.SetL( KDefIp6DnsAddrFromServer );
       
   290     record->iIp6NameServer1.SetL( KDynamicIpv6Address );
       
   291     record->iIp6NameServer2.SetL( KDynamicIpv6Address );
       
   292         
       
   293 //        record->iIpAddrLeaseValidFrom.SetL();
       
   294 //        record->iIpAddrLeaseValidTo.SetL();
       
   295         
       
   296     if ( KDefIpAddrFromServer )
       
   297         {
       
   298         record->iConfigDaemonManagerName.SetL( KDaemonManagerName );
       
   299         record->iConfigDaemonName.SetL( KConfigDaemonName );
       
   300         }
       
   301     else
       
   302         {
       
   303         record->iConfigDaemonManagerName.SetL( KEmpty );
       
   304         record->iConfigDaemonName.SetL( KEmpty );
       
   305         }
       
   306 
       
   307 //        record->iServiceExtensionTableName.SetL();
       
   308 //        record->iServiceExtensionTableRecordId.SetL();
       
   309     }
       
   310 
       
   311 // --------------------------------------------------------------------------
       
   312 // CCmPluginLanBase::PrepareToUpdateRecordsL()
       
   313 // --------------------------------------------------------------------------
       
   314 //        
       
   315 EXPORT_C void CCmPluginLanBase::PrepareToUpdateRecordsL()
       
   316     {
       
   317     LOGGER_ENTERFN( "CCmPluginLanBase::PrepareToUpdateRecordsL" );
       
   318     
       
   319     CheckDNSServerAddressL( ETrue, 
       
   320                             ServiceRecord().iIp6NameServer1,
       
   321                             ServiceRecord().iIp6NameServer2,
       
   322                             ServiceRecord().iIp6DnsAddrFromServer );
       
   323                             
       
   324     CheckDNSServerAddressL( EFalse,
       
   325                             ServiceRecord().iIpNameServer1,
       
   326                             ServiceRecord().iIpNameServer2,
       
   327                             ServiceRecord().iIpDnsAddrFromServer );
       
   328     }