omacpadapters/accesspointadapter/Src/CWPAPPhysicalProxy.cpp
author hgs
Fri, 17 Sep 2010 19:58:05 +0530
changeset 62 03849bd79877
parent 56 a9afc3a8dbfa
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     1
/*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     2
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     3
* All rights reserved.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     8
*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     9
* Initial Contributors:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    11
*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    12
* Contributors:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    13
*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    14
* Description:    Defines a class, which holds physical proxy information.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    15
*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    16
*/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    17
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    18
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    19
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    20
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    21
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    22
// INCLUDE FILES
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    23
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    24
#include "CWPAPPhysicalProxy.h"				// Own header
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    25
#include <CWPCharacteristic.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    26
#include <CWPParameter.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    27
#include <WPAdapterUtil.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    28
#include <featmgr.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    29
#include "CWPAPLogicalProxy.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    30
#include "CWPAPPort.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    31
#include "CWPAPNapdef.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    32
#include "WPAPAdapter.pan"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    33
#include "CWPLog.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    34
#include "WPAPDefs.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    35
#include <cmconnectionmethodext.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    36
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    37
// ============================ MEMBER FUNCTIONS ===============================
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    38
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    39
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    40
// CWPAPPhysicalProxy::NewL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    41
// Two-phased constructor.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    42
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    43
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    44
CWPAPPhysicalProxy* CWPAPPhysicalProxy::NewLC( 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    45
                                            const TDesC& aDefaultName, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    46
                                            CWPCharacteristic& aCharacteristic, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    47
    CWPCharacteristic& aLogicalCharacteristic,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    48
    CWPAPPort*& aPort )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    49
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    50
	CWPAPPhysicalProxy* self = new(ELeave) CWPAPPhysicalProxy( 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    51
	                                                    aDefaultName, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    52
                                                        aLogicalCharacteristic,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    53
                                                        aPort ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    54
	CleanupStack::PushL( self );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    55
	self->ConstructL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    56
    aCharacteristic.AcceptL( *self );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    57
	return self;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    58
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    59
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    60
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    61
// Destructor
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    62
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    63
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    64
CWPAPPhysicalProxy::~CWPAPPhysicalProxy()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    65
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    66
	delete iPort;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    67
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    68
    iNapdefs.ResetAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    69
    iNapdefs.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    70
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    71
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    72
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    73
// CWPAPPhysicalProxy::ValidateL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    74
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    75
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    76
TBool CWPAPPhysicalProxy::ValidateL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    77
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    78
	TBool isValid( EFalse );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    79
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    80
	// We must have proxy address otherwise this proxy isn't valid.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    81
	if ( iProxyAddr )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    82
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    83
		switch ( iPxAddrType )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    84
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    85
			case EPxAddrTypeIPv4:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    86
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    87
				isValid = WPAdapterUtil::CheckIPv4( iProxyAddr->Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    88
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    89
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    90
            case EPxAddrTypeIPv6:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    91
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    92
                isValid = FeatureManager::FeatureSupported( KFeatureIdIPv6 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    93
                    && WPAdapterUtil::CheckIPv6( iProxyAddr->Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    94
                break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    95
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    96
			case EPxAddrTypeUnsupported:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    97
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    98
				isValid = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    99
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   100
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   101
			default: // default value is assumed to be EPxAddrTypeIPv4
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   102
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   103
				isValid = WPAdapterUtil::CheckIPv4( iProxyAddr->Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   104
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   105
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   106
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   107
	return isValid;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   108
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   109
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   110
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   111
// CWPAPPhysicalProxy::AddDataL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   112
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   113
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   114
void CWPAPPhysicalProxy::AddDataL( RCmConnectionMethodExt& aCmItem )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   115
	{  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   116
	LOG("--CWPAP CWPAPPhysicalProxy::AddDataL begin--");	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   117
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   118
	// CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   119
	aCmItem.SetStringAttributeL( CMManager::ECmWapIPGatewayAddress, iProxyAddr->Value());
56
hgs
parents: 47
diff changeset
   120
	LOG1("CWPAP EApWapStartPage, value: %S ", &iProxyAddr->Value());
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   121
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   122
	//CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   123
	aCmItem.SetStringAttributeL( CMManager::ECmIPGateway, iProxyAddr->Value());
56
hgs
parents: 47
diff changeset
   124
	LOG1("CWPAP EApIspIPGateway, value: %S ", &iProxyAddr->Value());
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   125
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   126
	//CMManager 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   127
	aCmItem.SetStringAttributeL( CMManager::ECmProxyServerName, iProxyAddr->Value() );
56
hgs
parents: 47
diff changeset
   128
	LOG1("CWPAP EApProxyServerAddress, value: %S ", &iProxyAddr->Value());
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   129
	                                               
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   130
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   131
	// Store port data
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   132
	if ( iPort )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   133
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   134
        iPort->AddDataL( aCmItem );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   135
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   136
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   137
    if ( iLogicalPort)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   138
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   139
        iLogicalPort->AddDataL( aCmItem );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   140
        }
56
hgs
parents: 47
diff changeset
   141
  
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   142
	LOG("--CWPAP CWPAPPhysicalProxy::AddDataL end--");	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   143
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   144
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   145
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   146
// CWPAPPhysicalProxy::AddItemsL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   147
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   148
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   149
TInt CWPAPPhysicalProxy::AddItemsL( RPointerArray<CWPAPAccesspointItem>& aItems,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   150
                                    CWPAPItemBase* iLogicalProxy, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   151
                                    CWPAPItemBase* /*iPhysicalProxy*/ ) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   152
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   153
    TInt count( 0 );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   154
    for( TInt i( 0 ); i < iNapdefs.Count(); i++ )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   155
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   156
        CWPAPNapdef* pp = iNapdefs[ i ];
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   157
        if( pp->ValidateL() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   158
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   159
            count += pp->AddItemsL( aItems, iLogicalProxy, this );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   160
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   161
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   162
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   163
    return count;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   164
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   165
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   166
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   167
// CWPAPPhysicalProxy::Name
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   168
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   169
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   170
const TDesC& CWPAPPhysicalProxy::Name()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   171
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   172
    if( iName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   173
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   174
        return iName->Value();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   175
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   176
    else 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   177
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   178
        return KNullDesC;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   179
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   180
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   181
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   182
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   183
// CWPAPPhysicalProxy::VisitL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   184
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   185
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   186
void CWPAPPhysicalProxy::VisitL( CWPCharacteristic& aCharacteristic )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   187
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   188
	TInt type = aCharacteristic.Type();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   189
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   190
	// Accept only KWPPort characteristics
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   191
	// One valid port is enough for us
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   192
	if ( type == KWPPort && !iPort )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   193
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   194
        CWPAPPort* port = CWPAPPort::NewLC( aCharacteristic );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   195
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   196
		if ( port->ValidateL() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   197
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   198
			iPort = port;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   199
			CleanupStack::Pop( port );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   200
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   201
		else // Data not valid.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   202
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   203
			CleanupStack::PopAndDestroy( port );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   204
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   205
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   206
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   207
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   208
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   209
// CWPAPPhysicalProxy::VisitL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   210
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   211
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   212
void CWPAPPhysicalProxy::VisitL( CWPParameter& aParameter)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   213
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   214
	TInt id = aParameter.ID();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   215
	const TDesC& value = aParameter.Value();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   216
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   217
	if ( value.Length() == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   218
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   219
		// No use to store zero length value.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   220
		return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   221
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   222
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   223
	switch ( id )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   224
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   225
		case EWPParameterPxAddrFQDN: // iGatewayIPAddress
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   226
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   227
			// Implementation comments:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   228
			// The value of this field is a domain name but we can't 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   229
			// at the moment resolve this to IP address 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   230
			// (at least from this adapter).
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   231
			// Therefore this field can't be used. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   232
			// EWPParameterPxAddr is supported
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   233
			// and should be used.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   234
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   235
			/// Validate the domain name
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   236
			/// Resolve to IP address
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   237
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   238
			/* // Uncomment if domain name can be validated and IP address resolved
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   239
			// Add only if we haven't already received this field
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   240
			if ( !IsReceived( EWPParameterPxAddrFQDN_id ))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   241
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   242
				iGatewayIPAddress = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   243
				MarkReceived( EWPParameterPxAddrFQDN_id );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   244
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   245
			*/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   246
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   247
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   248
		case EWPParameterPxAddr: // iGatewayIPAddress
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   249
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   250
			// Accept only first occurrence of either PxAddr or PxAddrFQDN
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   251
			if ( IsReceived( EWPParameterPxAddrFQDN_id ) ||
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   252
				IsReceived( EWPParameterPxAddr_id ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   253
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   254
				return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   255
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   256
			else 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   257
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   258
				// The max allowed lenght for proxy address is 45 bytes. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   259
				// Nothing is stored if max lenght is exceeded
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   260
				if ( aParameter.Value().Length() < 46 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   261
					{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   262
					iProxyAddr = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   263
					MarkReceived( EWPParameterPxAddr_id );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   264
					}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   265
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   266
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   267
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   268
		case EWPParameterPxAddrType:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   269
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   270
			if ( !IsReceived( EWPParameterPxAddrType_id ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   271
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   272
				// Only IPv4 addresses are supported.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   273
				if ( value == KIPV4 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   274
					{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   275
					iPxAddrType = EPxAddrTypeIPv4;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   276
					}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   277
                else if( value == KIPV6 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   278
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   279
                    iPxAddrType = EPxAddrTypeIPv6;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   280
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   281
				else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   282
					{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   283
					iPxAddrType = EPxAddrTypeUnsupported;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   284
					}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   285
				MarkReceived( EWPParameterPxAddrType_id );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   286
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   287
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   288
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   289
        case EWPParameterName:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   290
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   291
            if( !iName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   292
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   293
                iName = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   294
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   295
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   296
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   297
		default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   298
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   299
			// Just let through
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   300
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   301
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   302
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   303
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   304
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   305
// CWPAPPhysicalProxy::VisitL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   306
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   307
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   308
void CWPAPPhysicalProxy::VisitLinkL( CWPCharacteristic& aLink )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   309
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   310
    CWPAPNapdef* item = CWPAPNapdef::NewLC( ETrue,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   311
                                            iDefaultName,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   312
                                            iLogicalCharacteristic,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   313
                                            aLink );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   314
    User::LeaveIfError( iNapdefs.Append( item ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   315
    CleanupStack::Pop( item ); // item
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   316
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   317
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   318
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   319
// CWPAPPhysicalProxy::CWPAPPhysicalProxy
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   320
// C++ default constructor can NOT contain any code, that
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   321
// might leave.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   322
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   323
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   324
CWPAPPhysicalProxy::CWPAPPhysicalProxy( 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   325
                               const TDesC& aDefaultName, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   326
                               CWPCharacteristic& aLogicalCharacteristic,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   327
                               CWPAPPort*& aPort ) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   328
	                         : CWPAPItemBase( aDefaultName ), 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   329
                               iLogicalPort( aPort ),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   330
                               iNapdefs( KInitialArraySize ),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   331
                               iLogicalCharacteristic( aLogicalCharacteristic )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   332
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   333
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   334
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   335
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   336
// CWPAPPhysicalProxy::ConstructL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   337
// Symbian 2nd phase constructor can leave.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   338
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   339
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   340
void CWPAPPhysicalProxy::ConstructL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   341
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   342
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   343
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   344
// End of File