--- a/esockapiextensions/internetsockets/inc/in6_if.h Mon Mar 08 21:44:54 2010 +0000
+++ b/esockapiextensions/internetsockets/inc/in6_if.h Sun Mar 14 13:15:53 2010 +0000
@@ -28,7 +28,7 @@
#define __IN6_IF_H__
#include <e32std.h>
-#include "in_iface.h" // TSoIfInfo
+#include <in_sock.h>
// CNifIfBase::Control(aLevel, aName, aOption, ..)
// aLevel is KSOLInterface defined in in_iface.h in standard EPOC
@@ -83,6 +83,38 @@
*/
const TUint KIfNeedsND = 0x00000100;
+const TUint KMaxInterfaceName=32;
+
+/**
+ * Holds the name of a network interface.
+ *
+ * This is used in TSoIfInfo.
+ *
+ */
+typedef TBuf<KMaxInterfaceName> TInterfaceName;
+
+class TSoIfInfo
+// Socket option structure for KSoIfInfo
+/**
+ * Current network interface operation parameters.
+ *
+ * It is returned by RSocket::GetOpt(), when that function is called with anOptionLevel
+ * set to KSOLInterface and anOptionName set to KSoIfInfo.
+ *
+ */
+ {
+public:
+ /** Feature flags. Possible values are defined in in_iface.h. */
+ TUint iFeatures; // Feature flags
+ /** Maximum transmission unit. */
+ TInt iMtu; // Max frame size
+ /** An approximation of the interface speed in Kbps. */
+ TInt iSpeedMetric; // Indication of performance, approx to Kbps
+ /** Interface protocol name, ipcp::\<port\>. */
+ TInterfaceName iName;
+ };
+
+
class TSoIfInfo6 : public TSoIfInfo // aOption when aName == KSoIfInfo
/**
* Extends the TSoIfInfo for the receive MTU.
@@ -112,6 +144,19 @@
TInt iRMtu;
};
+class TSoIfConfigBase
+/**
+ * Base class for TSoInetIfConfig, which simply identifies the protocol family
+ * using the interface.
+ *
+ * @internalComponent
+ */
+ {
+public:
+ /** The protocol family, e.g. KAfInet. */
+ TUint iFamily;
+ };
+
class TSoInet6IfConfig : public TSoIfConfigBase
/**
* IPv6 interface configuration.
--- a/esockapiextensions/internetsockets/inc/in_iface.h Mon Mar 08 21:44:54 2010 +0000
+++ b/esockapiextensions/internetsockets/inc/in_iface.h Sun Mar 14 13:15:53 2010 +0000
@@ -31,7 +31,7 @@
#if !defined(__NIFVAR_H__)
#include <nifvar.h>
#endif
-
+#include <in6_if.h>
// Feature Flags
/**
@@ -149,20 +149,6 @@
*/
const TUint KSoIfGetConnectionInfo = 0xf001; // Retrieve IAP and NID information
-/**
-@internalComponent
-*/
-const TUint KMaxInterfaceName=32;
-
-/**
- * Holds the name of a network interface.
- *
- * This is used in TSoIfInfo.
- *
- * @internalTechnology
- */
-typedef TBuf<KMaxInterfaceName> TInterfaceName;
-
class TInetIfConfig
// Information which allows IP to enter route table entries
/**
@@ -188,28 +174,6 @@
TInetAddr iNameSer2;
};
-class TSoIfInfo
-// Socket option structure for KSoIfInfo
-/**
- * Current network interface operation parameters.
- *
- * It is returned by RSocket::GetOpt(), when that function is called with anOptionLevel
- * set to KSOLInterface and anOptionName set to KSoIfInfo.
- *
- * @internalTechnology
- */
- {
-public:
- /** Feature flags. Possible values are defined in in_iface.h. */
- TUint iFeatures; // Feature flags
- /** Maximum transmission unit. */
- TInt iMtu; // Max frame size
- /** An approximation of the interface speed in Kbps. */
- TInt iSpeedMetric; // Indication of performance, approx to Kbps
- /** Interface protocol name, ipcp::\<port\>. */
- TInterfaceName iName;
- };
-
class TSoIfHardwareAddr
// Socket option structure for KSoIfHardwareAddr
/**
@@ -225,19 +189,6 @@
TSockAddr iHardwareAddr;
};
-class TSoIfConfigBase
-/**
- * Base class for TSoInetIfConfig, which simply identifies the protocol family
- * using the interface.
- *
- * @internalComponent
- */
- {
-public:
- /** The protocol family, e.g. KAfInet. */
- TUint iFamily;
- };
-
class TSoInetIfConfig : public TSoIfConfigBase
/**
* Describes the current interface routing configuration.
--- a/linklayercontrol/networkinterfacemgr/inc/NIFIF.H Mon Mar 08 21:44:54 2010 +0000
+++ b/linklayercontrol/networkinterfacemgr/inc/NIFIF.H Sun Mar 14 13:15:53 2010 +0000
@@ -28,11 +28,13 @@
#define SYMBIAN_NETWORKING_UPS
#include <nifman.h>
+#include <e32property.h>
#include <comms-infras/nifprvar.h>
#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
#include <comms-infras/nifif_internal.h>
#endif
+class RMBufChain;
/**
The direction of data transfer
--- a/linklayercontrol/networkinterfacemgr/inc/NIFMAN.H Mon Mar 08 21:44:54 2010 +0000
+++ b/linklayercontrol/networkinterfacemgr/inc/NIFMAN.H Sun Mar 14 13:15:53 2010 +0000
@@ -23,9 +23,7 @@
#if !defined(__NIFMAN_H__)
#define __NIFMAN_H__
-#include <es_prot.h>
#include <nifvar.h>
-#include <cdbover.h>
#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
#include <nifman_internal.h>
--- a/linklayercontrol/networkinterfacemgr/netcfgext/src/netcfgextnbase.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/linklayercontrol/networkinterfacemgr/netcfgext/src/netcfgextnbase.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -25,6 +25,7 @@
#include <comms-infras/ca_startserver.h>
#include <cdbcols.h>
#include <comms-infras/commsdebugutility.h>
+#include <cdblen.h>
#ifdef _DEBUG
--- a/linklayercontrol/networkinterfacemgr/netcfgext/src/nifconfigurationcontrol.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/linklayercontrol/networkinterfacemgr/netcfgext/src/nifconfigurationcontrol.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -22,6 +22,7 @@
#include <comms-infras/ss_log.h>
#include "nifnullconfiguration.h"
#include <comms-infras/nifif.h>
+#include <metadatabase.h>
#include <commsdattypeinfov1_1.h>
#include <cdbcols.h>
#include <cdblen.h>
--- a/linklayerprotocols/ethernetnif/EthInt/CLanIp4Bearer.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/linklayerprotocols/ethernetnif/EthInt/CLanIp4Bearer.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -36,6 +36,7 @@
#include "ProtocolHeaders.h"
#include <comms-infras/es_protbinder.h>
#include "EthProvision.h"
+#include <nifmbuf.h>
using namespace ESock;
--- a/linklayerprotocols/ethernetnif/EthInt/CLanIp6Bearer.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/linklayerprotocols/ethernetnif/EthInt/CLanIp6Bearer.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -30,6 +30,7 @@
#include "EthProto.h"
#include <comms-infras/es_protbinder.h>
#include "EthProvision.h"
+#include <nifmbuf.h>
using namespace ESock;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/linklayerprotocols/ethernetnif/EtherPkt/CardCtl.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -0,0 +1,452 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Control engine for ethernet packet driver
+//
+//
+
+/**
+ @file
+*/
+
+#include <nifman.h>
+#include <nifvar.h>
+#include <nifutl.h>
+#include <es_mbuf.h>
+#include <es_ini.h>
+#include <ir_sock.h>
+#include "PKTDRV.H"
+#include "ETHINTER.H"
+#include "Cardctl.h"
+#include <f32file.h>
+#include <e32svr.h>
+
+//#define __DebugCardCtl__ 1
+
+
+
+/**
+Create a new CPcCardControlEngine object.
+@param aPktDrv Pointer to PC Card Packet Driver.
+@return A pointer to CPcCardControlEngine object.
+*/
+CPcCardControlEngine *CPcCardControlEngine::NewL(CPcCardPktDrv* aPktDrv)
+{
+ CPcCardControlEngine *cc=new (ELeave) CPcCardControlEngine(aPktDrv);
+ CleanupStack::PushL(cc);
+ cc->ConstructL();
+ CleanupStack::Pop();
+ return cc;
+}
+
+/**
+Physical device driver settings
+@internalComponent
+*/
+_LIT(KPddSection,"pdd_settings");
+
+/**
+PCMCIA Socket Number
+@internalComponent
+*/
+_LIT(KSocketNumber,"PCMCIA_socket");
+
+/**
+Create the CPcCardControlEngine object.
+*/
+void CPcCardControlEngine::ConstructL()
+{
+ iSender = CPcCardSender::NewL(this);
+ iReceiver = CPcCardReceiver::NewL(this);
+ iEventHandler = CPcCardEventHandler::NewL(this);
+
+ LoadDeviceDriversL();
+
+ CESockIniData* ini = CESockIniData::NewL(ETHER802_CONFIG_FILENAME);
+ CleanupStack::PushL(ini);
+
+ TInt socket;
+ if(!ini->FindVar(KPddSection,KSocketNumber,socket))
+ {
+ User::Leave(KErrNotFound);
+ }
+
+ CleanupStack::PopAndDestroy(ini);
+
+ TInt error = iCard.Open(socket);
+ User::LeaveIfError(error);
+}
+
+/**
+Open the Card LDD
+*/
+void CPcCardControlEngine::StartL()
+{
+ iCardOpen = ETrue;
+ iReceiver->QueueRead();
+ LinkLayerUp();
+}
+
+/**
+Find and loads the LDD and the PDD if the logical device driver loaded OK.
+The driver names are read from the LAN bearer table in commdb.
+*/
+void CPcCardControlEngine::LoadDeviceDriversL()
+{
+ TInt err;
+
+ //
+ // Get the device driver filenames for loading
+ //
+ TBuf<KCommsDbSvrDefaultTextFieldLength> pddOrLddFileName;
+
+ // LDD first...
+ TBuf<KCommsDbSvrMaxColumnNameLength> columnName=TPtrC(LAN_BEARER);
+ columnName.Append(TChar(KSlashChar));
+ columnName.Append(TPtrC(LAN_BEARER_LDD_FILENAME));
+
+ err = iNotify->NifNotify()->ReadDes(columnName, pddOrLddFileName); // Get the LDD name from commdb
+
+ if(err!=KErrNone)
+ {
+ __FLOG_STATIC(KEther802LogTag1,KEthLogTag3, _L("Could not find LDD filename in commdb - is .cfg file up-to-date? See ether802.ini for information on required fields in commdb."));
+ User::Leave(err);
+ }
+
+ err=User::LoadLogicalDevice(pddOrLddFileName);
+ if(err != KErrNone && err != KErrAlreadyExists)
+ {
+ User::Leave(err);
+ }
+
+ // ...and now the PDD
+ columnName.Zero();
+ columnName.Append(TPtrC(LAN_BEARER));
+ columnName.Append(TChar(KSlashChar));
+ columnName.Append(TPtrC(LAN_BEARER_PDD_FILENAME));
+
+ err = iNotify->NifNotify()->ReadDes(columnName, pddOrLddFileName); // Get the PDD filename from commdb
+
+ if(err!=KErrNone)
+ {
+ __FLOG_STATIC(KEther802LogTag1,KEthLogTag3, _L("Could not find PDD filename in commdb - is .cfg file up-to-date? See ether802.ini for information on required fields in commdb."));
+ User::Leave(err);
+ }
+
+ err = User::LoadPhysicalDevice(pddOrLddFileName);
+ if (err != KErrNone && err != KErrAlreadyExists)
+ {
+ User::Leave(err);
+ }
+
+ //
+ // Get device driver names for unloading
+ //
+ columnName.Zero();
+ columnName.Append(TPtrC(LAN_BEARER));
+ columnName.Append(TChar(KSlashChar));
+ columnName.Append(TPtrC(LAN_BEARER_PDD_NAME));
+
+ err = iNotify->NifNotify()->ReadDes(columnName, iPDDName); // Get the PDD name from commdb (so we can close it when we've finished with it)
+
+ if(err!=KErrNone)
+ {
+ __FLOG_STATIC(KEther802LogTag1,KEthLogTag3, _L("Could not find PDD name in commdb - is .cfg file up-to-date? See ether802.ini for information on required fields in commdb."));
+
+#ifdef _DEBUG
+ // Not being able to unload the device drivers is not a fatal error, so don't worry too
+ // much if we can't read the field out of commdb in release builds, but if the user is
+ // using a debug nif they ought to get it right...
+ User::Leave(err);
+#endif // _DEBUG
+ }
+
+ // Rather than fiddle around trying to reuse the contents of the descriptor (problems with field name lengths), just zero and start again
+ columnName.Zero();
+ columnName.Append(TPtrC(LAN_BEARER));
+ columnName.Append(TChar(KSlashChar));
+ columnName.Append(TPtrC(LAN_BEARER_LDD_NAME));
+
+ err = iNotify->NifNotify()->ReadDes(columnName, iLDDName); // Get the LDD name from commdb (so we can close it when we've finished with it)
+
+ if(err!=KErrNone)
+ {
+ __FLOG_STATIC(KEther802LogTag1,KEthLogTag3, _L("Could not find LDD name in commdb - is .cfg file up-to-date? See ether802.ini for information on required fields in commdb."));
+
+#ifdef _DEBUG
+ User::Leave(err); // see reasoning for LDD above
+#endif // _DEBUG
+ }
+
+ __FLOG_STATIC(KEther802LogTag1,KEthLogTag3, _L("Device drivers loaded"));
+}
+
+/**
+Cancel I/O and close the Card LDD.
+*/
+void CPcCardControlEngine::Stop()
+{
+ // LDD Performs status checks on Read and Write
+ // Completes requests with an error code if they are pending
+ iCard.WriteCancel();
+ iSender->EmptyQueue();
+ iSender->Cancel();
+
+ iCard.ReadCancel();
+ iCardOpen = EFalse;
+ iCard.Close();
+}
+
+CPcCardControlEngine::CPcCardControlEngine(CPcCardPktDrv* aPktDrv)
+:iCardOpen(EFalse), iNotify(aPktDrv)
+/**
+Constructor.
+@param aPktDrv Pointer to PC Card Packet Driver.
+*/
+{
+
+}
+
+/**
+Destructor.
+*/
+CPcCardControlEngine::~CPcCardControlEngine()
+{
+#ifdef _DEBUG
+ // see reasoning for only doing this in debug builds in LoadPacketDrivers()
+ User::FreeLogicalDevice(iLDDName);
+ User::FreePhysicalDevice(iPDDName);
+#endif
+
+ delete iReceiver;
+ delete iSender;
+ delete iEventHandler;
+}
+
+/**
+Upwards notify
+@param aBuffer A Reference to a buffer holding data.
+*/
+void CPcCardControlEngine::ProcessReceivedPacket(TDesC8& aBuffer)
+{
+ iNotify->ReadDataAvailable(aBuffer);
+}
+
+/**
+Resume Sending is a notification call into NIF from the lower layer telling the NIF that a
+previous sending congestion situation has been cleared and it can accept more downstack data.
+*/
+void CPcCardControlEngine::ResumeSending()
+{
+ iNotify->ResumeSending();
+}
+
+/**
+Resume Sending is a notification call into NIF from the lower layer telling the NIF that
+the interface is now up and can accept and transmit data. NIF subsequently calls all the
+bearers' StartSending() methods directly.
+*/
+void CPcCardControlEngine::LinkLayerUp()
+{
+ iNotify->LinkLayerUp();
+}
+
+/**
+Sender class handles queueing and takes ownership of the HBuf and the CIOBuffer.
+@param aBuffer The data to be send is set.
+@return 0 Tells the higher layer to send no more data.
+ 1 Tells higher layer that it can send more data.
+*/
+TInt CPcCardControlEngine::Send(HBufC8* aBuffer)
+{
+ CIOBuffer* buf = NULL;
+ TRAPD(err,buf = CIOBuffer::NewL(aBuffer));
+ if(err != KErrNone)
+ {
+ delete aBuffer;
+ }
+ else
+ {
+ err = iSender->Send(buf);
+ }
+ return err;
+}
+
+/**
+Call to LDD or subordinate object to get the Hardware address of the LAN Device
+@return NULL Failure.
+ (NULL Terminated Binary String) The Hardware Address of the interface. LAN Device
+ Specific
+*/
+TUint8* CPcCardControlEngine::GetInterfaceAddress()
+{
+ iConfig.SetMax();
+ iCard.Config(iConfig);
+ return ((TUint8*)iConfig.Ptr())+2; // The MAC address is located 2 bytes
+ // from the start of the buffer
+}
+
+#if !defined(__WINS__)
+//
+
+/**
+ethermac.dat reading - work around for mac address problem
+@internal component
+*/
+_LIT(KEtherMacFileName,"C:\\System\\Data\\EtherMac.dat");
+
+/**
+Parse the Machine Address from the File.
+*/
+void CPcCardControlEngine::ParseMACFromFileL()
+{
+
+ TBuf8<64> controlBuf; // the size of this is defined in the driver as 64.
+ TBuf8<12> macAddress = 0;
+ RFile macFile;
+ RFs fileSrv;
+
+ User::LeaveIfError(fileSrv.Connect());
+ User::LeaveIfError(macFile.Open(fileSrv,KEtherMacFileName,EFileRead));
+ User::LeaveIfError(macFile.Read(macAddress,12));
+ macFile.Close();
+ fileSrv.Close();
+ controlBuf.SetLength(8);
+ controlBuf[0] = KEthSpeed10BaseT;
+ controlBuf[1] = KEthDuplexHalf;
+
+ TBuf<20> validChars(_L("0123456789abcdef"));
+ TUint8 value;
+ TUint8 upper=0;
+ TChar c;
+ TInt pos;
+ iConfig.SetMax(); // MAC Address fix
+ for(TInt i=0; i<6; i++)
+ {
+ c = macAddress[2*i];
+ c.LowerCase();
+ if((pos = validChars.Locate(c))==KErrNotFound)
+ {
+ pos = upper;
+ break;
+ }
+ upper = (TUint8)pos;
+ c = macAddress[(2*i)+1];
+ c.LowerCase();
+ if((pos = validChars.Locate(c))==KErrNotFound)
+ {
+ User::Leave(KErrNotFound);
+ }
+ value = (TUint8)pos;
+ value = (TUint8)((upper<<4) | value);
+ controlBuf.Append(value);
+ iConfig[i+2]=value; // MAC Address fix 21/05/01
+ }
+ TRequestStatus status = 0;
+
+ User::LeaveIfError(iCard.SetMAC(controlBuf));
+
+ User::WaitForRequest(status);
+ User::LeaveIfError(status.Int());
+}
+#endif
+
+/**
+Constructor. Generic Buffer class
+Currently used for transmit buffers
+*/
+CIOBuffer::CIOBuffer() : iBufPtr(NULL,0)
+{
+}
+
+/**
+Destructor. Free the HBuf if there is one
+*/
+CIOBuffer::~CIOBuffer()
+{
+ FreeData();
+}
+
+/**
+Creation where we new the HBuf.
+@param aSize Length of the Buffer.
+@return A pointer to CIOBuffer object.
+*/
+CIOBuffer* CIOBuffer::NewL(const TInt aSize)
+{
+ CIOBuffer * self = new (ELeave) CIOBuffer;
+ CleanupStack::PushL(self);
+ self->ConstructL(aSize);
+ CleanupStack::Pop();
+ return self;
+}
+
+/**
+Construction where we new the HBuf
+@param aSize Length of the Buffer.
+*/
+void CIOBuffer::ConstructL(const TInt aSize)
+{
+ iBuf = HBufC8::NewL(aSize);
+ TPtr8 temp=iBuf->Des();
+ iBufPtr.Set(temp);
+}
+
+/**
+HBuf provided.
+@param aBuf The data to be assigned
+@return A pointer to CIOBuffer object.
+*/
+CIOBuffer* CIOBuffer::NewL(HBufC8* aBuf)
+{
+ CIOBuffer * self = new (ELeave) CIOBuffer;
+ self->Assign(aBuf);
+ return self;
+}
+
+/**
+Offset
+*/
+TInt CIOBuffer::LinkOffset()
+{
+ return _FOFF(CIOBuffer,iLink);
+}
+
+/**
+Assigns the data from buffer to pointer.
+
+@param aBuffer The data to be assigned
+*/
+void CIOBuffer::Assign(HBufC8* aBuffer)
+{
+ FreeData();
+ iBuf = aBuffer;
+ if(aBuffer)
+ {
+ TPtr8 temp=iBuf->Des();
+ iBufPtr.Set(temp);
+ }
+}
+
+/**
+Frees the data.
+*/
+void CIOBuffer::FreeData()
+{
+ if(iBuf)
+ {
+ delete iBuf;
+ iBuf = NULL;
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/linklayerprotocols/ethernetnif/EtherPkt/CardDll.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -0,0 +1,365 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+#include <nifman.h>
+#include <nifvar.h>
+#include <nifutl.h>
+#include <es_mbuf.h>
+#include <nifmbuf.h>
+#include "PKTDRV.H"
+#include "ETHINTER.H"
+#include "Cardctl.h"
+
+
+/**
+@internalComponent
+*/
+extern "C"
+{
+ IMPORT_C CPktDrvFactory * NewPcCardPktDrvFactoryL(); //< Force export
+}
+
+/**
+Library file is opened and this is the the first and only export.
+@internalComponent
+@return A pointer to CPktDrvFactory object.
+*/
+EXPORT_C CPktDrvFactory* NewPcCardPktDrvFactoryL()
+{
+ CPktDrvFactory *f=new (ELeave) CPcCardPktDrvFactory;
+ return f;
+}
+
+/**
+Create the packet driver object
+@param aParent Pointer to the parent Ethint NIF class.
+@return A pointer to CPktDrvBase object.
+*/
+CPktDrvBase* CPcCardPktDrvFactory::NewDriverL(CLANLinkCommon* aParent)
+{
+ CPktDrvBase *drv = new (ELeave) CPcCardPktDrv(*this);
+ CleanupStack::PushL(drv);
+ drv->ConstructL(aParent);
+ CleanupStack::Pop();
+ return drv;
+}
+
+/**
+Constructor.
+*/
+CPcCardPktDrvFactory::CPcCardPktDrvFactory()
+{
+
+}
+
+/**
+Packet Driver version number.
+@return Version number of the Packet Driver
+*/
+TVersion CPcCardPktDrvFactory::Version() const
+{
+ return(TVersion(KPcCardDrvMajorVersionNumber,KPcCardDrvMinorVersionNumber,KPcCardDrvBuildVersionNumber));
+}
+
+
+/**
+Constructor. Packet Driver object.
+*/
+CPcCardPktDrv::CPcCardPktDrv(CPktDrvFactory& aFactory) : CPktDrvBase(aFactory)
+{
+
+}
+
+/**
+Only one object owned
+Destructor.
+*/
+CPcCardPktDrv::~CPcCardPktDrv()
+{
+ delete iControl;
+}
+
+/**
+Pure Virtual Construction of the CPktDrvBase object
+@param aParent Pointer to the CLANLinkCommon class.
+*/
+void CPcCardPktDrv::ConstructL(CLANLinkCommon* aParent)
+{
+ iParent = aParent;
+ // Card control engine
+ iControl=CPcCardControlEngine::NewL(this);
+}
+
+/**
+Pure Virtual Downstack call. " Call to LDD or subordinate object to start/initialise the
+Physical device
+@return KErrNone if Successful
+ KErrNotSupported LAN Device does not support.
+ Implementation specific Error Code Failure
+*/
+TInt CPcCardPktDrv::StartInterface()
+{
+ // Opens the card and queues a read
+ // Control engine validates
+ TRAPD(err,iControl->StartL());
+ return err;
+}
+
+/**
+Call to LDD or subordinate object to stop/de-initialise the Physical device
+@return KErrNone if Successful
+ KErrNotSupported LAN Device does not support.
+ Implementation specific Error Code Failure
+*/
+TInt CPcCardPktDrv::StopInterface()
+{
+ // Closes the card
+ // Control engine validates
+ iControl->Stop();
+ return KErrNone;
+}
+
+/**
+Call to LDD or subordinate object to reset/re-initialise the Physical device
+@return KErrNone if Successful
+ KErrNotSupported LAN Device does not support.
+ Implementation specific Error Code Failure
+*/
+TInt CPcCardPktDrv::ResetInterface()
+{
+ iControl->Stop();
+ TRAPD(err,iControl->StartL());
+ return err;
+}
+
+/**
+Sender Class is generic and does not want to know about RMBuf's
+Copy to a Heap Buffer and Free the packet. EtherII MAC layer comments
+Say we should free the packet buffer
+RMBuf could contain a chain so get into a contiguous buffer
+@param aPacket Reference to a chain of data buffers to be passed to the line.
+@return 0 Tells the higher layer to send no more data.
+ 1 Tells higher layer that it can send more data.
+*/
+TInt CPcCardPktDrv::Send(RMBufChain &aPacket)
+{
+ if(!iControl->CardOpen())
+ {
+ aPacket.Free();
+ return KErrNotReady;
+ }
+ HBufC8 * buf = NULL;
+ TRAPD(err,buf = HBufC8::NewMaxL(aPacket.Length()));
+ if(err != KErrNone)
+ {
+ aPacket.Free();
+ return err;
+ }
+ TPtr8 ptr = buf->Des();
+ aPacket.CopyOut(ptr);
+ aPacket.Free();
+ return(iControl->Send(buf));
+}
+
+/**
+Read the Available data.
+@param aBuffer A Reference to a buffer holding data.
+*/
+void CPcCardPktDrv::ReadDataAvailable(TDesC8& aBuffer)
+{
+ RMBufPacket frame;
+ TRAPD(ret,frame.CreateL(aBuffer,0));
+ if (ret == KErrNone)
+ {
+ frame.Pack();
+ iParent->Process(frame);
+ }
+}
+
+/**
+Resume Sending is a notification call into NIF from the lower layer telling the NIF that a
+previous sending congestion situation has been cleared and it can accept more downstack data.
+*/
+void CPcCardPktDrv::ResumeSending()
+{
+ iParent->ResumeSending();
+}
+
+/**
+Call to LDD or subordinate object to set the receive mode of the LAN Device
+@param aMode The mode to be set for the LAN Device.
+@return KErrNotSupported LAN Device does not support.
+*/
+TInt CPcCardPktDrv::SetRxMode(TRxMode /*aMode*/)
+{
+ return KErrNotSupported;
+}
+
+/**
+Call to LDD or subordinate object to Get the receive mode of the LAN Device
+@return KErrNotSupported LAN Device does not support.
+*/
+TInt CPcCardPktDrv::GetRxMode() const
+{
+ return KErrNotSupported;
+}
+
+/**
+Specifies the AccessType.
+@return KErrNotSupported LAN Device does not support.
+*/
+TInt CPcCardPktDrv::AccessType()
+{
+ return KErrNotSupported;
+}
+
+/**
+Specifies the ReleaseType.
+@return KErrNotSupported LAN Device does not support.
+*/
+TInt CPcCardPktDrv::ReleaseType()
+{
+ return KErrNotSupported;
+}
+
+/**
+Call to LDD or subordinate object to get the Hardware address of the LAN Device
+@return NULL Failure.
+ (NULL Terminated Binary String) The Hardware Address of the interface. LAN Device
+ Specific
+*/
+TUint8* CPcCardPktDrv::GetInterfaceAddress()const
+{
+ return (iControl->GetInterfaceAddress());
+}
+
+/**
+Call to LDD or subordinate object to set the Hardware address of the LAN Device.
+@param THWAddr Address of where the Multicast list should be written.
+@return KErrNone if Successful
+ KErrNotSupported LAN Device does not support.
+ Implementation specific Error Code Failure
+*/
+TInt CPcCardPktDrv::SetInterfaceAddress(const THWAddr&)
+{
+ return KErrNotSupported;
+}
+
+/**
+Call to LDD or subordinate object to retrieve the Multicast List from the LAN Device
+@param aAddr Address of where the Multicast list should be written.
+@param n Output Parameter , number of Addresses written
+@return KErrNone if Successful
+ KErrNotSupported LAN Device does not support.
+ Implementation specific Error Code Failure
+*/
+TInt CPcCardPktDrv::GetMulticastList(const THWAddr* /*aAddr*/, TInt& /*n*/) const
+{
+ return KErrNotSupported;
+}
+
+/**
+Call to LDD or subordinate object to set the Multicast List for the LAN Device.
+@param aAddr Address of where the Multicast list should be written.
+@param n Output Parameter , number of Addresses written
+@return KErrNone if Successful
+ KErrNotSupported LAN Device does not support.
+ Implementation specific Error Code Failure
+*/
+TInt CPcCardPktDrv::SetMulticastList(const THWAddr* /*aAddr*/, TInt /*n*/)
+{
+ return KErrNotSupported;
+}
+
+/**
+Call to LDD or subordinate object to power up the LAN Device.
+@return KErrNone if Successful
+ KErrNotSupported LAN Device does not support.
+ Implementation specific Error Code Failure
+*/
+TInt CPcCardPktDrv::InterfacePowerUp()
+{
+ return KErrNotSupported;
+}
+
+/**
+Call to LDD or subordinate object to power down the LAN Device
+@return KErrNone if Successful
+ KErrNotSupported LAN Device does not support.
+ Implementation specific Error Code Failure
+*/
+TInt CPcCardPktDrv::InterfacePowerDown()
+{
+ return KErrNotSupported;
+}
+
+/**
+Call to LDD or subordinate object to suspend the LAN Device.
+@return KErrNone if Successful
+ KErrNotSupported LAN Device does not support.
+ Implementation specific Error Code Failure
+*/
+TInt CPcCardPktDrv::InterfaceSleep()
+{
+ return KErrNotSupported;
+}
+
+/**
+Call to LDD or subordinate object to resume the LAN Device.
+@return KErrNone if Successful
+ KErrNotSupported LAN Device does not support.
+ Implementation specific Error Code Failure
+*/
+TInt CPcCardPktDrv::InterfaceResume()
+{
+ return KErrNotSupported;
+}
+
+/**
+Resume Sending is a notification call into NIF from the lower layer telling the NIF that
+the interface is now up and can accept and transmit data. NIF subsequently calls all the
+bearers' StartSending() methods directly.
+*/
+void CPcCardPktDrv::LinkLayerUp()
+{
+ iParent->LinkLayerUp();
+}
+
+/**
+Receive notifications from agent
+*/
+TInt CPcCardPktDrv::Notification(enum TAgentToNifEventType /*aEvent*/, void* /*aInfo*/)
+{
+ return KErrNotSupported;
+}
+
+/**
+Receive Control() calls from agent/nifman/connection
+*/
+TInt CPcCardPktDrv::Control(TUint /*aLevel*/,TUint /*aName*/,TDes8& /*aOption*/, TAny* /*aSource*/)
+{
+ return KErrNotSupported;
+}
+
+/**
+Return the pointer to the ethernet nif.
+Purely for access to commdb reading functionality
+*/
+CLANLinkCommon* CPcCardPktDrv::NifNotify()
+{
+ return iParent;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/linklayerprotocols/ethernetnif/EtherPkt/CardIo.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -0,0 +1,461 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+//
+
+/**
+ @file
+*/
+
+#include <nifman.h>
+#include <nifvar.h>
+#include <nifutl.h>
+#include <es_mbuf.h>
+#include "PKTDRV.H"
+#include "ETHINTER.H"
+#include "Cardctl.h"
+
+
+
+
+#ifdef __DebugCardLo__
+// TCP packet tracing debug
+const TUint8 ETHER2_TYPE_IP_MSB = 0x08;
+const TUint8 ETHER2_TYPE_IP_LSB = 0x00;
+const TUint8 IP_TYPE_TCP = 0x06;
+static inline TBool IsTcp(TDesC8 &aFrame)
+{
+ return (aFrame[12] == ETHER2_TYPE_IP_MSB && aFrame[13] == ETHER2_TYPE_IP_LSB && aFrame[23] == IP_TYPE_TCP);
+}
+static TInt GetTcpSeqNumber(TDesC8 &aFrame)
+ {
+ TInt seqNum = 0;
+ if (IsTcp(aFrame))
+ seqNum = aFrame[38] << 24 | aFrame[39] << 16 | aFrame[40] << 8| aFrame[41];
+ return seqNum;
+ }
+static TInt GetTcpAckNumber(TDesC8 &aFrame)
+ {
+ TInt ackNum = 0;
+ if (IsTcp(aFrame))
+ ackNum = aFrame[42] << 24 | aFrame[43] << 16 | aFrame[44] << 8| aFrame[45];
+ return ackNum;
+ }
+#endif
+
+
+/**
+Send active object class
+When CIOBuffer's are passed to SendL() the class takes ownership and is
+therefore resposible for freeing them in the RunL()
+@internalComponent
+*/
+const TInt KTxQueueThreshold = 40;
+
+/**
+Constructor.
+*/
+CPcCardSender::CPcCardSender() : CActive(EPriorityStandard)
+{
+
+}
+
+/**
+Destructor.
+Could be buffers on the transmit queue, free them as this class should be sole owner.
+*/
+CPcCardSender::~CPcCardSender()
+{
+ EmptyQueue();
+ Cancel();
+}
+
+/**
+Standard CActive construction.
+@param aParent Pointer to the parent CPcCardControlEngine class.
+@return A pointer to CPcCardSender object.
+*/
+CPcCardSender* CPcCardSender::NewL(CPcCardControlEngine* aParent)
+{
+ CPcCardSender *sd=new (ELeave) CPcCardSender;
+ CleanupStack::PushL(sd);
+ sd->InitL(aParent);
+ CActiveScheduler::Add(sd);
+ CleanupStack::Pop();
+ return sd;
+}
+
+/**
+Add the newly created object to an object container.
+@param aParent Pointer to the parent CPcCardControlEngine class.
+*/
+void CPcCardSender::InitL(CPcCardControlEngine* aParent)
+{
+ iParent=aParent;
+ iTxQueue.SetOffset(CIOBuffer::LinkOffset());
+ iQueueLength = 0;
+ iStopSending = EFalse;
+}
+
+/**
+Protocol inspects return
+It blocks sending if it receives a return <= 0
+This value should be propogated up through the stack
+@internalComponent
+*/
+const TInt KStopSending = 0;
+
+/**
+Protocol inspects return to indicate Keep sending the data.
+@internalComponent
+*/
+const TInt KContinueSending = 1;
+
+/**
+Writes the data to buffer.
+
+@param aBuffer The data to be send.
+@return 0 Tells the higher layer to stop sending the data.
+ 1 Tells higher layer that it can continue sending more data.
+*/
+TInt CPcCardSender::Send(CIOBuffer *aBuffer)
+{
+
+ // Check to see if we need to start transmission
+ // Pseudo interrupt queue
+ TBool startTx = iTxQueue.IsEmpty();
+
+ iTxQueue.AddLast(*aBuffer);
+ iQueueLength++;
+ if(startTx)
+ {
+ // Transmitter was idle start next transmit
+ iParent->iCard.Write(iStatus,aBuffer->Ptr());
+ SetActive();
+ }
+ else
+ {
+ }
+ // The stack could saturate us with data
+ // Tell the stack to send no more
+ // We will unblock the stack when the queue size drops below
+ // the the threshold
+ if(iQueueLength >= KTxQueueThreshold)
+ {
+ iStopSending = ETrue;
+ return KStopSending;
+ }
+ else
+ {
+ return KContinueSending;
+ }
+}
+
+/**
+Free all queued buffers. Should be safe as this class owns them
+*/
+void CPcCardSender::EmptyQueue()
+{
+
+ while(!iTxQueue.IsEmpty())
+ {
+ CIOBuffer* buf = iTxQueue.First();
+ iTxQueue.Remove(*buf);
+ delete buf;
+ }
+ iQueueLength = 0;
+ iStopSending = EFalse;
+}
+
+/**
+Write completion from the LDD. Pseudo transmit interrupt handler
+*/
+void CPcCardSender::RunL()
+{
+ // Check for error, all we can do is free the buffers
+ if(iStatus.Int()!=KErrNone)
+ {
+ EmptyQueue();
+ return;
+ }
+
+ if(!iTxQueue.IsEmpty())
+ {
+ // Head of the queue has been transmitted
+ // Remove it and free it
+ CIOBuffer* buf = iTxQueue.First();
+ iTxQueue.Remove(*buf);
+ iQueueLength--;
+ delete buf;
+
+
+ // Check to see if there are still buffers queued.
+ // Start next transmit if there are
+ TBool startTx;
+ (iTxQueue.IsEmpty()) ? (startTx = EFalse) : (startTx = ETrue);
+ if(startTx)
+ {
+ buf = iTxQueue.First();
+ iParent->iCard.Write(iStatus,buf->Ptr());
+ SetActive();
+ }
+ else
+ {
+
+ }
+ // Resume sending if the protocol was previously blocked
+ if(iStopSending && iQueueLength < KTxQueueThreshold)
+ {
+ iStopSending = EFalse;
+ iParent->ResumeSending();
+ }
+ }
+}
+
+/**
+cancellation of an outstanding request.
+*/
+void CPcCardSender::DoCancel()
+{
+ iParent->iCard.WriteCancel();
+}
+
+/**
+Read active object class.
+Read kept permanently on the LDD
+Read completion is notified immediately up through the stack
+with the one receive buffer therefore no Q.
+*/
+CPcCardReceiver::CPcCardReceiver() : CActive(EPriorityMore) , iRecvBufPtr(NULL,0)
+{
+
+}
+
+/**
+Constructor.
+*/
+CPcCardReceiver::~CPcCardReceiver()
+{
+ Cancel();
+ // One buffer only
+ delete iRecvBuffer;
+}
+
+/**
+Standard CActive construction.
+@param aParent Pointer to the parent CPcCardControlEngine class.
+@return A pointer to CPcCardReceiver object.
+*/
+CPcCardReceiver* CPcCardReceiver::NewL(CPcCardControlEngine* aParent)
+{
+ CPcCardReceiver *rv=new (ELeave) CPcCardReceiver;
+ CleanupStack::PushL(rv);
+ rv->InitL(aParent);
+ CActiveScheduler::Add(rv);
+ CleanupStack::Pop();
+ return rv;
+}
+
+/**
+Allocate the one and only read buffer.
+@param aParent Pointer to the parent CPcCardControlEngine class.
+*/
+void CPcCardReceiver::InitL(CPcCardControlEngine* aParent)
+{
+ iParent=aParent;
+ iRecvBufLength=KEtherBufSize;
+ iRecvBuffer=HBufC8::NewMaxL(iRecvBufLength);
+ TPtr8 temp=iRecvBuffer->Des();
+ iRecvBufPtr.Set(temp);
+}
+
+/**
+Pass the receive buffer to the Card.
+*/
+void CPcCardReceiver::QueueRead()
+{
+ iRecvBufPtr.SetMax();
+ iParent->iCard.Read(iStatus,iRecvBufPtr);
+ SetActive();
+}
+
+/**
+Pseudo read interrupt handler.
+*/
+void CPcCardReceiver::RunL()
+{
+ if (iParent->CardOpen())
+ {
+ if (iStatus.Int()!=KErrNone)
+ {
+ QueueRead();
+ return;
+ }
+ // Pass the buffer up the stack
+ // and queue the next read, safe to reuse the buffer.
+ if(iRecvBufPtr.Length())
+ {
+ iParent->ProcessReceivedPacket(iRecvBufPtr);
+ }
+ QueueRead();
+ }
+ else
+ {
+
+ }
+}
+
+/**
+Cancellation of an outstanding request.
+*/
+void CPcCardReceiver::DoCancel()
+{
+ iParent->iCard.ReadCancel();
+}
+
+/**
+Constructor.
+*/
+CPcCardEventHandler::CPcCardEventHandler() : CActive(EPriorityStandard)
+{
+
+}
+
+/**
+Destructor.
+*/
+CPcCardEventHandler::~CPcCardEventHandler()
+{
+ Cancel();
+}
+
+/**
+Allocate the one and only read buffer.
+@param aParent Pointer to the parent CPcCardControlEngine class.
+*/
+void CPcCardEventHandler::InitL(CPcCardControlEngine* aParent)
+{
+ iParent = aParent;
+}
+
+/**
+Standard CActive construction
+@param aParent Pointer to the parent CPcCardControlEngine class.
+@return A pointer to the CPcCardEventHandler object.
+*/
+CPcCardEventHandler* CPcCardEventHandler::NewL(CPcCardControlEngine* aParent)
+{
+ CPcCardEventHandler *p=new (ELeave) CPcCardEventHandler;
+ CleanupStack::PushL(p);
+ p->InitL(aParent);
+ CActiveScheduler::Add(p);
+ CleanupStack::Pop();
+ return p;
+}
+
+/**
+Handles an active object’s request completion event.
+*/
+void CPcCardEventHandler::RunL()
+{
+ // TODO Parse code in iStatus for type of event
+}
+
+/**
+Cancellation of an outstanding request.
+*/
+void CPcCardEventHandler::DoCancel()
+{
+}
+
+/**
+Gets the Event generated by the device drivers.
+*/
+void CPcCardEventHandler::GetEvent()
+{
+ // Tell the device driver we want ALL Events
+ iEventBuffer.SetLength(1);
+ iEventBuffer[0] = 0xFF;
+ SetActive();
+}
+
+/**
+Constructor.
+*/
+CPcCardIOCTL::CPcCardIOCTL() : CActive(EPriorityStandard)
+{
+
+}
+
+/**
+Destructor.
+*/
+CPcCardIOCTL::~CPcCardIOCTL()
+{
+ Cancel();
+}
+
+/**
+Add the newly created object to an object container.
+@param aParent Pointer to the parent CPcCardControlEngine class.
+*/
+void CPcCardIOCTL::InitL(CPcCardControlEngine* aParent)
+{
+ iParent = aParent;
+}
+
+TInt CPcCardIOCTL::Ioctl(const TUint8 aIOCTLCode)
+{
+ if(IsActive())
+ return KErrNotReady;
+ iIOCTLBuffer.SetLength(1);
+ iIOCTLBuffer[0] = aIOCTLCode;
+ iCurrentIOCTL = aIOCTLCode;
+ SetActive();
+ return KErrNone;
+}
+
+
+/**
+Standard CActive construction.
+@param aParent Pointer to the parent CPcCardControlEngine class.
+@return A pointer to CPcCardIOCTL object.
+*/
+CPcCardIOCTL* CPcCardIOCTL::NewL(CPcCardControlEngine* aParent)
+{
+ CPcCardIOCTL *p=new (ELeave) CPcCardIOCTL;
+ CleanupStack::PushL(p);
+ p->InitL(aParent);
+ CActiveScheduler::Add(p);
+ CleanupStack::Pop();
+ return p;
+}
+
+/**
+Handles an active object’s request completion event.
+*/
+void CPcCardIOCTL::RunL()
+{
+ {
+ iParent->iReceiver->QueueRead();
+ iParent->LinkLayerUp();
+ }
+}
+
+/**
+Cancellation of an outstanding request.
+*/
+void CPcCardIOCTL::DoCancel()
+{
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/linklayerprotocols/ethernetnif/EtherPkt/Cardctl.h Sun Mar 14 13:15:53 2010 +0000
@@ -0,0 +1,201 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#if !defined(__CARDCTL_H__)
+#define __CARDCTL_H__
+
+#include <d32ethernet.h>
+
+#include "carddrv.h"
+#include <comms-infras/connectionsettings.h> // for KSlashChar
+
+const TInt KConfigBufferSize = 12;
+
+
+NONSHARABLE_CLASS(CIOBuffer) : public CBase
+/**
+Generic buffer class
+Enables HBufC8 pointers to be queued
+@internalComponent
+*/
+{
+public:
+ ~CIOBuffer();
+ inline HBufC8* Data() const {return iBuf;};
+ void FreeData();
+ inline TPtr8& Ptr() {return iBufPtr;};
+ void Assign(HBufC8* aBuffer = NULL);
+ static CIOBuffer* NewL(HBufC8* aBuf = NULL);
+ static CIOBuffer* NewL(const TInt aSize);
+ static TInt LinkOffset();
+
+private:
+ CIOBuffer();
+ void ConstructL(const TInt aSize);
+ // void Construct(HBufC8* aBuffer);
+
+ TSglQueLink iLink;
+ HBufC8* iBuf;
+ TPtr8 iBufPtr;
+};
+
+
+// Main Card Control class. Controls open, close, read, write etc
+class CPcCardSender;
+class CPcCardReceiver;
+class CPcCardIOCTL;
+class CPcCardEventHandler;
+
+NONSHARABLE_CLASS(CPcCardControlEngine) : public CBase
+/**
+@internalComponent
+*/
+{
+public:
+ friend class CPcCardSender;
+ friend class CPcCardReceiver;
+ friend class CPcCardIOCTL;
+ friend class CPcCardEventHandler;
+
+ static CPcCardControlEngine *NewL(CPcCardPktDrv* aPktDrv);
+ ~CPcCardControlEngine();
+ void StartL();
+ void Stop();
+ TUint8* GetInterfaceAddress();
+ TInt Send(HBufC8* aBuffer);
+ TBool CardOpen(){return iCardOpen;};
+
+#if (!defined __WINS__)
+ void ParseMACFromFileL();
+#endif
+
+
+private:
+ CPcCardControlEngine(CPcCardPktDrv* aPktDrv);
+ void ConstructL();
+ void ProcessReceivedPacket(TDesC8 &aBuffer);
+ void ResumeSending();
+ void LinkLayerUp();
+ void LoadDeviceDriversL();
+
+private:
+ TBool iCardOpen;
+ CPcCardPktDrv* iNotify;
+
+ TBuf8<KConfigBufferSize> iConfig;
+
+ CPcCardSender* iSender;
+ CPcCardReceiver* iReceiver;
+ CPcCardEventHandler* iEventHandler;
+ RBusDevEthernet iCard;
+ TInt iPcmciaSocket;
+
+ TBuf<KCommsDbSvrDefaultTextFieldLength> iPDDName;
+ TBuf<KCommsDbSvrDefaultTextFieldLength> iLDDName;
+};
+
+NONSHARABLE_CLASS(CPcCardSender) : public CActive
+/**
+Writer Active object class
+Queues buffers for transmit
+@internalComponent
+*/
+{
+public:
+ static CPcCardSender* NewL(CPcCardControlEngine* aParent);
+ ~CPcCardSender();
+ TInt Send(CIOBuffer* aBuffer);
+ void EmptyQueue();
+
+private:
+ virtual void RunL();
+ virtual void DoCancel();
+ CPcCardSender();
+ void InitL(CPcCardControlEngine* aParent);
+
+ TInt iQueueLength;
+ CPcCardControlEngine* iParent;
+ TSglQue<CIOBuffer> iTxQueue;
+ TBool iStopSending;
+};
+
+NONSHARABLE_CLASS(CPcCardReceiver) : public CActive
+/**
+Reader active object
+One receive buffer only, read queue handled by LDD
+@internalComponent
+*/
+{
+public:
+ static CPcCardReceiver* NewL(CPcCardControlEngine* aParent);
+ ~CPcCardReceiver();
+ void QueueRead();
+private:
+ virtual void RunL();
+ virtual void DoCancel();
+ CPcCardReceiver();
+ void InitL(CPcCardControlEngine* aParent);
+
+ CPcCardControlEngine* iParent;
+ HBufC8* iRecvBuffer;
+ TUint iRecvBufLength;
+ TPtr8 iRecvBufPtr;
+};
+
+NONSHARABLE_CLASS(CPcCardEventHandler) : public CActive
+/**
+@internalComponent
+*/
+{
+public:
+ ~CPcCardEventHandler();
+ static CPcCardEventHandler* NewL(CPcCardControlEngine* aParent);
+ void GetEvent();
+private:
+ virtual void RunL();
+ virtual void DoCancel();
+ CPcCardEventHandler();
+ void InitL(CPcCardControlEngine* aParent);
+
+ TBuf8<32> iEventBuffer;
+ CPcCardControlEngine* iParent;
+};
+
+NONSHARABLE_CLASS(CPcCardIOCTL) : public CActive
+/**
+@internalComponent
+*/
+{
+public:
+ ~CPcCardIOCTL();
+ static CPcCardIOCTL* NewL(CPcCardControlEngine* aParent);
+ TInt Ioctl(const TUint8 aIOCTLCode);
+private:
+ virtual void RunL();
+ virtual void DoCancel();
+ CPcCardIOCTL();
+ void InitL(CPcCardControlEngine* aParent);
+ TBuf8<32> iIOCTLBuffer;
+ TUint8 iCurrentIOCTL;
+
+ CPcCardControlEngine* iParent;
+};
+
+#endif
--- a/linklayerprotocols/ethernetnif/INC/CLanxBearer.h Mon Mar 08 21:44:54 2010 +0000
+++ b/linklayerprotocols/ethernetnif/INC/CLanxBearer.h Sun Mar 14 13:15:53 2010 +0000
@@ -35,6 +35,7 @@
#include <es_mbuf.h>
#include <comms-infras/ss_protflow.h>
#include <comms-infras/ss_flowbinders.h>
+#include <es_prot.h>
class CLANLinkCommon;
class TLanProvision;
--- a/linklayerprotocols/ethernetnif/IRLAN/IRLAN.H Mon Mar 08 21:44:54 2010 +0000
+++ b/linklayerprotocols/ethernetnif/IRLAN/IRLAN.H Sun Mar 14 13:15:53 2010 +0000
@@ -30,6 +30,7 @@
#include "IRLANDAT.H"
#include <comms-infras/nifif.h>
+#include <es_prot.h>
const TUint KIrlanMajorVersionNumber=1; //< Constant specifies Major version number.
const TUint KIrlanMinorVersionNumber=0; //< Constant specifies Minor version number.
--- a/linklayerprotocols/ethernetnif/IRLAN/IRLANCTL.CPP Mon Mar 08 21:44:54 2010 +0000
+++ b/linklayerprotocols/ethernetnif/IRLAN/IRLANCTL.CPP Sun Mar 14 13:15:53 2010 +0000
@@ -33,6 +33,7 @@
#include "IRLANBUF.H"
#include "IRLANDAT.H"
#include "irlantimer.h"
+#include <nifmbuf.h>
//#define __TRACEWIN__
#ifdef __TRACEWIN__
--- a/linklayerprotocols/pppnif/te_ppp/dummyppp/src/dummypppnif.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/linklayerprotocols/pppnif/te_ppp/dummyppp/src/dummypppnif.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -23,6 +23,7 @@
#include <comms-infras/commsdebugutility.h>
#include <connectprog.h>
#include <in_chk.h>
+#include <metadatabase.h>
#include <commsdattypeinfov1_1.h>
//New ppp progress states file
--- a/linklayerprotocols/slipnif/SRC/SLIP.CPP Mon Mar 08 21:44:54 2010 +0000
+++ b/linklayerprotocols/slipnif/SRC/SLIP.CPP Sun Mar 14 13:15:53 2010 +0000
@@ -20,6 +20,7 @@
#include <nifmbuf.h>
#include <in_iface.h>
#include <cdblen.h>
+#include <cdbcols.h>
#include "SLIP.H"
#include "SLIP_VER.H"
--- a/linklayerprotocols/slipnif/SRC/SLIP.H Mon Mar 08 21:44:54 2010 +0000
+++ b/linklayerprotocols/slipnif/SRC/SLIP.H Sun Mar 14 13:15:53 2010 +0000
@@ -28,6 +28,7 @@
#include <es_mbuf.h>
#include <comms-infras/nifif.h>
#include <nifutl.h>
+#include <es_prot.h>
////////////////////////////////////////////////////////////////////////////////
--- a/networkcontrol/ipnetworklayer/src/IPProtoSCPRStates.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/networkcontrol/ipnetworklayer/src/IPProtoSCPRStates.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -21,6 +21,7 @@
*/
#include <comms-infras/netcfgextprov.h>
+#include <etelqos.h>
#include <networking/qos3gpp_subconparams.h>
#include <cs_subconparams.h>
#include <cs_subconevents.h>
--- a/networkcontrol/ipnetworklayer/src/ipprotodeftscprstates.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/networkcontrol/ipnetworklayer/src/ipprotodeftscprstates.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -21,6 +21,7 @@
*/
#include <comms-infras/netcfgextprov.h>
+#include <etelqos.h>
#include <networking/qos3gpp_subconparams.h>
#include <cs_subconparams.h>
#include <cs_subconevents.h>
--- a/networkcontrol/iptransportlayer/inc/netmcpr.h Mon Mar 08 21:44:54 2010 +0000
+++ b/networkcontrol/iptransportlayer/inc/netmcpr.h Sun Mar 14 13:15:53 2010 +0000
@@ -29,6 +29,8 @@
#include "netmcprstates.h"
#include "IPMessages.h"
+#include <cdbcols.h>
+#include <cdbover.h>
#include <metadatabase.h>
#include <commsdattypesv1_1.h>
#include <in_sock.h>
--- a/networkcontrol/ipupsplugins/dialogcreator/bwins/ipupsdialogu.def Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-EXPORTS
- ?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z @ 1 NONAME ; struct TImplementationProxy const * ImplementationGroupProxy(int &)
- ?KTestNotifierImplementationId@@3KB @ 2 NONAME ; unsigned long const KTestNotifierImplementationId
- ?KNotifierImplementationId@@3KB @ 3 NONAME ; unsigned long const KNotifierImplementationId
-
--- a/networkcontrol/ipupsplugins/dialogcreator/eabi/ipupsdialogu.def Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-EXPORTS
- _Z24ImplementationGroupProxyRi @ 1 NONAME
- KNotifierImplementationId @ 2 NONAME DATA 4
- KTestNotifierImplementationId @ 3 NONAME DATA 4
-
--- a/networkcontrol/ipupsplugins/dialogcreator/group/bld.inf Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// Component description file
-//
-//
-
-PRJ_EXPORTS
-../group/ipupsdialog.iby /epoc32/rom/include/ipupsdialog.iby
-
-PRJ_MMPFILES
-ipupsdialog.mmp
-
-PRJ_PLATFORMS
-DEFAULT
--- a/networkcontrol/ipupsplugins/dialogcreator/group/ipupsdialog.iby Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef SYMBIAN_IPUPSDIALOG_IBY
-#define SYMBIAN_IPUPSDIALOG_IBY
-
-REM IP UPS Dialog Creator
-
-#ifdef TEXT_ONLY_ROM
-#include <security_ups_utils.iby>
-#endif
-
-define ZDRIVE \epoc32\data\Z
-
-data=ZDRIVE\system\data\ups_101F7989_10281DD8.rsc system\data\ups_101F7989_10281DD8.rsc
-
-
-
-#ifdef _DEBUG
-ECOM_PLUGIN_UDEB(ipupsdialog.dll,10285A7B.rss)
-#else
-ECOM_PLUGIN(ipupsdialog.dll,10285A7B.rss)
-#endif
-
-// If NETWORKING_UPS_NOTIFIERUID is defined, then patch the Dialog Creator to use that Notifier UID.
-// Otherwise if _STARTUPMODE1 is defined then use Networking UPS Test Notifier UID, otherwise don't patch.
-
-#ifndef NETWORKING_UPS_NOTIFIERUID
-#ifdef _STARTUPMODE1
-#define NETWORKING_UPS_NOTIFIERUID 0x1028369b
-#endif
-#endif
-
-#ifdef NETWORKING_UPS_NOTIFIERUID
-patchdata ipupsdialog.dll@KNotifierImplementationId NETWORKING_UPS_NOTIFIERUID
-#endif
-
-#endif //SYMBIAN_IPUPSDIALOG_IBY
--- a/networkcontrol/ipupsplugins/dialogcreator/group/ipupsdialog.mmp Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// IP implementation of User Prompt Service dialog creator ECOM plug-in
-//
-//
-
-/**
- @file
-*/
-
-target ipupsdialog.dll
-capability protserv trustedui
-targettype plugin
-deffile ipupsdialog.def
-
-uid 0x10009D8D 0x10285A7B
-vendorid 0x70000001
-
-userinclude ../source
-userinclude ../inc
-
-// OS_LAYER_SYSTEMINCLUDE_SYMBIAN illegal dependency on apaid.h
-MW_LAYER_SYSTEMINCLUDE_SYMBIAN
-
-sourcepath ../source
-source ipupsdialog.cpp
-source ipupsconst.cpp
-
-sourcepath ../resource
-start resource 10285A7B.rss
-target ipupsdialog.rsc
-end
-
-//
-// Default reference policy file for IP UPS
-//
-// This policy file is not installed by default in the proper UPS policy file directory
-// (/private/10283558/policies/), as it is intended to be copied there as required.
-
-sourcepath ../../policyfile
-start resource ups_101F7989_10281DD8.rss
-targetpath /system/data
-end
-
-library apgrfx.lib apparc.lib ecom.lib euser.lib upspolicies.lib
-library upsclient.lib ipcstream.lib estor.lib sisregistryclient.lib upsnotifierutil.lib
-
-SMPSAFE
--- a/networkcontrol/ipupsplugins/dialogcreator/inc/ipupsconst.h Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// This file specifies the constants which are used to configure
-// the NetUps during testing. The associated enumerations are to
-// to be found in netupstls.h.
-// @internalComponent
-// @prototype
-//
-//
-
-#ifndef IPUPSCONST_H
-#define IPUPSCONST_H
-
-#include <e32def.h>
-
-/** @SYMPatchable Disable UPS IP functionality
-*/
-IMPORT_C extern const TUint32 KNotifierImplementationId;
-IMPORT_C extern const TUint32 KTestNotifierImplementationId;
-
-
-#endif // IPUPSCONST_H
\ No newline at end of file
--- a/networkcontrol/ipupsplugins/dialogcreator/inc/ipupsdialog.h Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// Class declaration for Reference dialog creator plug-in for IP.
-//
-//
-
-/**
- @file
- @internalTechnology
- @prototype
-*/
-
-#ifndef IPUPSDIALOG_H
-#define IPUPSDIALOG_H
-
-#include <e32base.h>
-#include <e32cmn.h>
-#include <ups/dialogcreator.h>
-#include <ups/fingerprint.h>
-#include <ups/upsnotifierutil.h>
-
-using namespace UserPromptService;
-
-/**
- Reference implementation of a User Prompt Service dialog creator ECOM plug-in for IP.
- */
-NONSHARABLE_CLASS(CIpUpsDialog) : public CDialogCreator
- {
- public:
- typedef enum
- {
- EIdle,
- EPrepareDialog,
- EDisplayDialog,
- EProcessResult
- } TState;
- static CIpUpsDialog* CreateDialogCreatorL();
- ~CIpUpsDialog();
-
-protected:
- // From CActive
- void DoCancel();
- void RunL();
- TInt RunError(TInt aError);
-
- // From CDialogCreator
- void PrepareDialog(
- const CPromptRequest& aRequest, const CPolicy& aPolicy,
- const RPointerArray<CFingerprint>& aFingerprints, const CClientEntity* aClientEntity,
- const TAny* aDialogCreatorParams, TRequestStatus& aStatus);
- void DisplayDialog(CPolicy::TOptions& aOptionSelcted, const CFingerprint*& aFingerprint,
- TUint& aEvaluatorInfo, TRequestStatus& aStatus);
-
-private:
- CIpUpsDialog();
- void ConstructL();
- void ResolveClientNameL(const TSecureId& aSid);
- TBool ResolveClientNameFromAppArcL(const TSecureId& aSid);
- TBool ResolveClientNameFromSisRegistryL(const TSecureId& aSid);
- void ResolveVendorNameL(const TVendorId& aVid);
- void DoPrepareDialogL();
- void DoDisplayDialogL();
- void DoProcessResultL();
-
- // Const data from UPS & policy evaluator
- const CPromptRequest* iRequest; //< Request data from system server
- const CPolicy* iPolicy; //< The policy that matches iRequest
- const RPointerArray<CFingerprint>* iFingerprints; //< Fingerprints generated by policy evaluator from iRequest
- const TAny* iEvalPrivateData; //< Extra data generated by policy evaluator
-
- TRequestStatus* iClientStatus; //< UPS's request object
-
- // Return data for DisplayDialog
- CPolicy::TOptions* iOptionSelected; //< The option selected by the user
- const CFingerprint** iFingerprint; //< The fingerprint for the new decision if Always or Never selected
- TUint* iEvaluatorInfo; //< Plug-in specific field in decision record
-
- CPromptData* iPromptData; //< Data used by notifier to render dialog
- RBuf8 iPromptDataDes; //< Externalized prompt data
- TPromptResult iPromptResult; //< Response buffer for notifier
- TPckg<TPromptResult> iPromptResultPckg; //< Packages iPromptResult
- RNotifier iNotifier; //< Connection to notifier framework
- TState iState; //< Current state
- TUint iNotifierId; //< User prompting user Id
- };
-#endif // SMSUPSDIALOG_H
-
--- a/networkcontrol/ipupsplugins/dialogcreator/resource/10285A7B.rss Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// UIDs quick-ref
-// ECOM DLL UID: 0x10285A7B
-// ECOM interface UID: KUidUpsDialogCreatorInterface
-// ECOM Implementation: 0x10285A7C
-//
-//
-
-
-#include <ups/ups.hrh>
-#include <ecom/registryinfo.rh>
-
-RESOURCE REGISTRY_INFO r_registry
- {
- dll_uid = 0x10285A7B;
- interfaces =
- {
- INTERFACE_INFO
- {
- interface_uid = KUidUpsDialogCreatorInterface;
- implementations =
- {
- IMPLEMENTATION_INFO
- {
- implementation_uid = 0x10285A7C;
- version_no = 1;
- display_name = "IP Reference dialog creator";
- default_data = "";
- opaque_data = "";
- }
- };
- }
- };
- }
--- a/networkcontrol/ipupsplugins/dialogcreator/source/ipupsconst.cpp Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// This file provides the definition of the patchable constants
-// used in debugging.
-// @internalAll
-// @prototype
-//
-//
-
-#include <e32def.h>
-
-/** @SYMPatchable Disable UPS IP functionality
-*/
-EXPORT_C extern const TUint32 KNotifierImplementationId = 0x1028369b;
-EXPORT_C extern const TUint32 KTestNotifierImplementationId = 0x10285887;
-
-
--- a/networkcontrol/ipupsplugins/dialogcreator/source/ipupsdialog.cpp Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,440 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-#include <e32svr.h> // Included here, since removal of Platform headers from public headers[f32file.h] for TB92SDK
-#include "ipupsdialog.h"
-#include <ecom/implementationproxy.h>
-#include <apgcli.h>
-#include <ups/promptrequest.h>
-#include <swi/sisregistrypackage.h>
-#include <swi/sisregistrysession.h>
-#include <scs/nullstream.h>
-#include <s32mem.h>
-#include <u32hal.h>
-
-#include "ipupsconst.h"
-
-static const TUint KIpDialogCreatorImplementationId = 0x10285A7C;
-
-CIpUpsDialog* CIpUpsDialog::CreateDialogCreatorL()
-/**
-Factory method that instantiates a new dialog creator ECOM plug-in.
-
-@return A pointer to the new reference dialog creator object.
-*/
- {
- CIpUpsDialog* self = new (ELeave)CIpUpsDialog();
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
-
-const TImplementationProxy ImplementationTable[] =
- {
- IMPLEMENTATION_PROXY_ENTRY(KIpDialogCreatorImplementationId, CIpUpsDialog::CreateDialogCreatorL)
- };
-
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
-/**
-Standard ECOM factory
-*/
- {
- aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
- return ImplementationTable;
- }
-
-
-CIpUpsDialog::CIpUpsDialog()
-/**
-Constructor
-*/
- : CDialogCreator(), iPromptResult(),iPromptResultPckg(iPromptResult), iState(EIdle)
- {
- CActiveScheduler::Add(this);
- }
-
-CIpUpsDialog::~CIpUpsDialog()
-/**
-Destructor
-*/
- {
- Deque();
- iPromptDataDes.Close();
- delete iPromptData;
- iNotifier.Close();
- }
-
-void CIpUpsDialog::ConstructL()
-/**
-Second phase constructor
-*/
- {
- User::LeaveIfError(iNotifier.Connect());
-
- // setup the value for the notifier. Test or reference
-#if (defined (__EABI__) || defined (__GCCXML__))
- // this value is patched via the patchable constant mechanism
- iNotifierId = KNotifierImplementationId;
-#else
- TUint notifierUidVal = 0;
- TInt retCode = UserSvr::HalFunction(EHalGroupEmulator, EEmulatorHalIntProperty,
- (TAny*)"NETWORKING_UPS_NOTIFIERUID", ¬ifierUidVal);
-
- if (retCode == KErrNone)
- {
- iNotifierId = notifierUidVal;
- }
- else
- {
- TUint startupModeVal = 0;
- retCode = UserSvr::HalFunction(EHalGroupEmulator, EEmulatorHalIntProperty,
- (TAny*)"startupmode", &startupModeVal);
-
- if(retCode == KErrNone && startupModeVal == 1)
- iNotifierId = KTestNotifierImplementationId;
- else
- iNotifierId = KNotifierImplementationId;
- }
-#endif
- }
-
-void CIpUpsDialog::DoCancel()
- {
- if (iState == EProcessResult)
- {
- iNotifier.CancelNotifier(TUid::Uid(iNotifierId));
- }
-
- if (iClientStatus)
- {
- User::RequestComplete(iClientStatus, KErrCancel);
- }
- }
-
-TInt CIpUpsDialog::RunError(TInt aError)
- {
- if (iClientStatus)
- {
- User::RequestComplete(iClientStatus, aError);
- }
- return KErrNone;
- }
-
-void CIpUpsDialog::RunL()
- {
- User::LeaveIfError(iStatus.Int());
- switch (iState)
- {
- case EPrepareDialog:
- DoPrepareDialogL();
- break;
- case EDisplayDialog:
- DoDisplayDialogL();
- break;
- case EProcessResult:
- DoProcessResultL();
- break;
- default:
- ASSERT(EFalse);
- }
- }
-
-void CIpUpsDialog::DoPrepareDialogL()
- {
- iPromptData = CPromptData::NewL();
-
- // Only one state at the moment but more should be
- // added for long running operators e.g. querying the SIS registry
- // or resolving the client entity.
- ResolveClientNameL(iRequest->ClientSid());
-
- // Get the vendor name for the client process
- ResolveVendorNameL(iRequest->ClientVid());
-
- // pass the destination information through.
- iPromptData->iDestination.Create(iRequest->Destination());
-
- // Pass any opaque data from the user to the notifier
- iPromptData->iOpaqueData.Create(iRequest->OpaqueData());
-
- // Server / Service localized names generated in notifier plug-in.
- iPromptData->iServerSid = iRequest->ServerSid();
- iPromptData->iServiceId = iRequest->ServiceId();
-
- // Different dialog text is displayed depending on whether the client application
- // is signed.
- // N.B. Protected SID is assumed to be signed or included at ROM build.
- if (iRequest->IsClientSidProtected()) iPromptData->iFlags |= ETrustedClient;
-
- // Use the options specified by the policy
- iPromptData->iOptions = iPolicy->Options();
-
- // Add the descriptions of the fingerprints. This could be used
- // to allow the user to grant access to all destinations
- // or a single destination.
- TInt count = iFingerprints->Count();
- for (TInt i = 0; i < count; ++i)
- {
- HBufC* description = (*iFingerprints)[i]->Description().AllocLC();
- iPromptData->iDescriptions.AppendL(description);
- CleanupStack::Pop(description);
- }
-
- User::RequestComplete(iClientStatus, KErrNone);
- // DisplayDialog is invoked by the UPS, this just verifies
- // that PrepareDialog was called first.
- iState = EDisplayDialog;
- }
-
-void CIpUpsDialog::DoDisplayDialogL()
-/**
-Uses the notifier framework to display the dialog.
-*/
- {
- // Externalize the prompt data to a descriptor
- RNullWriteStream ns;
- ns << *iPromptData;
- ns.CommitL();
- iPromptDataDes.CreateL(ns.BytesWritten());
- RDesWriteStream ws;
- ws.Open(iPromptDataDes);
- ws << *iPromptData;
- ws.CommitL();
- iNotifier.StartNotifierAndGetResponse(iStatus, TUid::Uid(iNotifierId),
- iPromptDataDes, iPromptResultPckg);
- SetActive();
- iState = EProcessResult;
- }
-
-void CIpUpsDialog::DoProcessResultL()
-/**
-Processes the result returned by the notifier.
-*/
- {
- if(iPromptResult.iSelected == CPolicy::EAlways || iPromptResult.iSelected == CPolicy::ENever)
- {
- // The Always or Never option was selected so return the fingerprint
- // for the new decision record.
- //
- // In this implementation a copy of the original fingerprint is returned. However,
- // it is permitted to return a different fingerprint e.g. a modifier description.
- if(iPromptResult.iDestination >= 0 && iPromptResult.iDestination < iFingerprints->Count())
- {
- *iFingerprint = (*iFingerprints)[iPromptResult.iDestination];
- }
- else
- {
- ASSERT(EFalse); // should never happen, unless notifier is buggy.
- }
- }
-
- // ensure the notifier has returned a valid option specified in policy file
- if(iPromptResult.iSelected & iPromptData->iOptions)
- {
- *iOptionSelected = iPromptResult.iSelected;
- }
- else
- {
- ASSERT(EFalse);
- }
-
- iState = EIdle;
- User::RequestComplete(iClientStatus, KErrNone);
- }
-
-void CIpUpsDialog::ResolveVendorNameL(const TVendorId& aVid)
-/**
-Looks up the localized vendor name for the client process and writes
-this to iPromptData.iVendorName.
-
-Typically, this would be resolved from the SIS registry or a lookup table.
-
-@param aVid The vendor id of the client process.
-*/
- {
- if (iPromptData->iVendorName.Length() != 0)
- {
- // already obtained vendor name from SIS registry
- return;
- }
-
- if (aVid.iId == 0x70000001)
- {
- _LIT(KSymbian, "Symbian Software Ltd");
- iPromptData->iVendorName.Create(KSymbian);
- }
- else
- {
- _LIT(KUnknown, "Unknown vendor");
- iPromptData->iVendorName.Create(KUnknown);
- }
- }
-
-void CIpUpsDialog::ResolveClientNameL(const TSecureId& aSid)
-/**
-Generates a human readable name for the client process. In order of
-preference the following data is returned
-
-- The AppArc caption name.
-- The localized package name that owns this SID.
-- A value from a lookup table.
-- The filename for the client process executable.
-
-@param aSid The secure id of the client process.
-*/
- {
- TBool found = EFalse;
-
- // Although the client name from AppArc takes precedance the SIS
- // registry is always invoked in order to retrieve the vendor name
- found |= ResolveClientNameFromSisRegistryL(aSid);
- found |= ResolveClientNameFromAppArcL(aSid);
-
- // A lookup that maps secure-ids to application names could
- // be used here.
-
- // Fall back to the filename of the client process
- // The original thread may have exited so the process handle is used instead.
- // because the client-side object e.g. RSocket may be shared between threads.
-
- // If the process has exited then it's o.k. to leave.
- if (! found)
- {
- RProcess clientProcess;
- User::LeaveIfError(clientProcess.Open(iRequest->ClientProcessId()));
- CleanupClosePushL(clientProcess);
- iPromptData->iClientName.Create(clientProcess.FileName());
- CleanupStack::PopAndDestroy(&clientProcess);
- }
- }
-
-TBool CIpUpsDialog::ResolveClientNameFromAppArcL(const TSecureId& aSid)
-/**
-Gets the caption name for the application from AppArc (if available).
-
-@param aSid The secure id of the client process.
-@return ETrue if a match was found in apparc; otherwise, EFalse is returned.
-*/
- {
- TBool found(EFalse);
-
- RApaLsSession apa;
- CleanupClosePushL(apa);
- TInt err = apa.Connect();
- if (err == KErrNone)
- {
- TApaAppInfo* info = new(ELeave) TApaAppInfo();
- CleanupStack::PushL(info);
-
- err = apa.GetAppInfo(*info, TUid::Uid(aSid));
-
- if (err == KErrNone)
- {
- iPromptData->iClientName.Close();
- iPromptData->iClientName.Create(info->iCaption);
- found = ETrue;
- }
- else if (err != KErrNotFound)
- {
- User::Leave(err);
- }
-
- CleanupStack::PopAndDestroy(info);
- }
- else if (err != KErrNotFound)
- {
- // If the connection to apparc failed with KErrNotFound
- // then the error is ignored becase we assume the dialog
- // creator was invoked from text-shell
- User::Leave(err);
- }
-
- CleanupStack::PopAndDestroy(&apa);
- return found;
- }
-
-TBool CIpUpsDialog::ResolveClientNameFromSisRegistryL(const TSecureId& aSid)
-/**
-Retrieves the client and vendor information from the SIS registry.
-@param aSid The secure-id of the client application to lookup in the registry.
-@return ETrue, if the lookup was successful; otherwise, EFalse is returned.
-*/
- {
- TBool found(EFalse);
- Swi::RSisRegistrySession r;
- User::LeaveIfError(r.Connect());
- CleanupClosePushL(r);
-
- Swi::CSisRegistryPackage* p(0);
- TRAPD(err, p = r.SidToPackageL(aSid));
- if (err == KErrNone)
- {
- iPromptData->iClientName.Create(p->Name());
- iPromptData->iVendorName.Create(p->Vendor());
- found = ETrue;
- delete p;
- }
-
- CleanupStack::PopAndDestroy(&r);
- return found;
- }
-
-// From CDialogCreator
-void CIpUpsDialog::PrepareDialog(const UserPromptService::CPromptRequest& aRequest,
- const CPolicy& aPolicy,
- const RPointerArray<CFingerprint>& aFingerprints,
- const CClientEntity* aClientEntity,
- const TAny* aEvalPrivateData,
- TRequestStatus& aStatus)
- {
- aStatus = KRequestPending;
- iClientStatus = &aStatus;
-
- iRequest = &aRequest;
- iPolicy = &aPolicy;
- iFingerprints = &aFingerprints;
- iEvalPrivateData = aEvalPrivateData;
- (void) aClientEntity;
-
- // Kick off dialog creator state machine
- iState = EPrepareDialog;
- iStatus = KRequestPending;
- TRequestStatus* status = &iStatus;
- SetActive();
- User::RequestComplete(status, KErrNone);
- }
-
-void CIpUpsDialog::DisplayDialog(CPolicy::TOptions& aOptions,
- const CFingerprint*& aFingerprint,
- TUint& aEvaluatorInfo,
- TRequestStatus& aStatus)
- {
- aStatus = KRequestPending;
- iClientStatus = &aStatus;
-
- iOptionSelected = &aOptions;
- iFingerprint = &aFingerprint;
- aFingerprint = 0;
- iEvaluatorInfo = &aEvaluatorInfo;
- iClientStatus = &aStatus;
-
- // Start state machine
- ASSERT(iState == EDisplayDialog); // PrepareDialog should have been called first
- iStatus = KRequestPending;
- TRequestStatus* status = &iStatus;
- SetActive();
- User::RequestComplete(status, KErrNone);
- }
-
--- a/networkcontrol/ipupsplugins/group/bld.inf Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// UPS Plugins and Utilities for IP Networking
-//
-//
-
-/**
- @file
-*/
-
-#define SYMBIAN_NETWORKING_UPS
-
-#ifdef SYMBIAN_NETWORKING_UPS
-
-#include "../dialogcreator/group/bld.inf"
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_TESTEXPORTS
-../test/te_ipups/scripts/te_ipups.script z:/testdata/scripts/te_ipups/te_ipups.script
-../test/te_ipups/data/te_ipups.ini z:/testdata/configs/te_ipups/te_ipups.ini
-
-../test/te_ipups/group/te_ipups.iby /epoc32/rom/include/te_ipups.iby
-
-PRJ_TESTMMPFILES
-../test/te_ipups/group/te_ipups.mmp
-
-#endif
--- a/networkcontrol/ipupsplugins/group/networking_ipups.mrp Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-component networking_ipups
-source \sf\os\networkingsrv\networkcontrol\ipupsplugins
-binary \sf\os\networkingsrv\networkcontrol\ipupsplugins\group all
-exports \sf\os\networkingsrv\networkcontrol\ipupsplugins\group
-notes_source \component_defs\release.src
-
-
-ipr E
-ipr T \sf\os\networkingsrv\networkcontrol\ipupsplugins\test
--- a/networkcontrol/ipupsplugins/policyfile/ups_101F7989_10281DD8.rss Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-#include <ups/policies.rh>
-
-UID2 KUidUpsPolicyResourceFile
-
-//New Unique identifier for this policy file
-UID3 0x10282FBE
-
-
-// UPS policy file for IP
-RESOURCE POLICIES IP_Default_policies
- {
- header = POLICY_HEADER
- {
- authorisationpolicy = ECheckUnprotectedSids;
- dialogcreator = 0x10285A7C;
- // Use default policy evaluator
- policyevaluator = 0x00000000;
- };
- policies =
- {
- POLICY
- {
- sid_classes = KAllSids;
- destination = "*";
- options = KSessionYes | KSessionNo | KAlways | KNever;
- }
-
- };
- }
--- a/networkcontrol/ipupsplugins/test/te_ipups/data/te_ipups.ini Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,260 +0,0 @@
-//DialogOptionSelection (multiple options could be specified using delimeter ',') = Always/Never/SessionYes/SessionNo
-//ExpectedDialogOptions (Optional) = Always/Never/SessionYes/SessionNo
-//PlatSecPass = True/False
-//ExpectedUpsDecision (Optional, multiple options could be specified using delimeter ',') = Yes/No/SessionYes/SessionNo
-//PromptTriggerCount (Optional) = Expected number of times prompt would be triggered by test
-//NoOfAuthoriseCalls = 1..N (N - Maximum number of iterations , 10 is the limit)
-//AlwaysOpenNewSession (Each iteration open the session in the beiginning of the iteration and close at the end if set to True) = True/False
-//UseSameSubSession (Optional, Each iteration uses same SubSession if set to True) = True/False
-//UseSameSubSessionAfterClose (Optional, Each iteration uses same SubSession after closing it at the end of iteration) = True/False
-//AlwaysOpenNewSubSession (Optional, Always open new SubSession for each iteration) = True/False
-
-
-[ProtSidPlatSecFail]
-ServiceId = 10281DD8
-Destination = 0776655443
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionYes
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes
-PromptTriggerCount = 1
-
-[UnProtSidPlatSecPass]
-ServiceId = 10281DD8
-Destination = 0776655443
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionYes
-PlatSecPass = True
-ExpectedUpsDecision = SessionYes
-PromptTriggerCount = 1
-
-[UnProtSidPlatSecFail]
-ServiceId = 10281DD8
-Destination = 0776655443
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionYes
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes
-PromptTriggerCount = 1
-
-[ProtSidPlatSecPass]
-ServiceId = 10281DD8
-Destination = 0776655443
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionYes
-PlatSecPass = True
-ExpectedUpsDecision = Yes
-PromptTriggerCount = 0
-
-[ValidPromptResponse]
-ServiceId = 10281DD8
-Destination = 0776655443
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionYes
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes
-PromptTriggerCount = 1
-ExpectedDialogOptions = Always/Never/SessionYes/SessionNo
-
-[ValidDestinationIPPrompted]
-ServiceId = 10281DD8
-Destination = 10.0.0.10
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionYes
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes
-PromptTriggerCount = 1
-
-[UserResponseSessionYes]
-ServiceId = 10281DD8
-Destination = 10.0.0.10
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionYes
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes
-PromptTriggerCount = 1
-
-[PromptAgainAfterSessionYes]
-ServiceId = 10281DD8
-Destination = 0789012345
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionYes
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes
-PromptTriggerCount = 2
-NoOfAuthoriseCalls = 2
-
-[PromptAfterSessionYesWithNewSubSession]
-ServiceId = 10281DD8
-Destination = 0789012345
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionYes
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes
-PromptTriggerCount = 2
-NoOfAuthoriseCalls = 2
-UseSameSubSessionAfterClose = True
-
-[PromptAgainAfterSessionNo]
-ServiceId = 10281DD8
-Destination = 0789012345
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionNo
-PlatSecPass = False
-ExpectedUpsDecision = SessionNo
-PromptTriggerCount = 2
-NoOfAuthoriseCalls = 2
-
-[PromptAfterSessionNoWithNewSubSession]
-ServiceId = 10281DD8
-Destination = 0789012345
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionNo
-PlatSecPass = False
-ExpectedUpsDecision = SessionNo
-PromptTriggerCount = 2
-NoOfAuthoriseCalls = 2
-UseSameSubSessionAfterClose = True
-
-[NoPromptAfterAlwaysResponse]
-ServiceId = 10281DD8
-Destination = 0789012345
-OpaqueData = NoOpaqueData
-DialogOptionSelection = Always
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes
-PromptTriggerCount = 1
-NoOfAuthoriseCalls = 2
-
-[NoPromptInNewSessionAfterAlways]
-ServiceId = 10281DD8
-Destination = 0789012345
-OpaqueData = NoOpaqueData
-DialogOptionSelection = Always
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes
-PromptTriggerCount = 1
-NoOfAuthoriseCalls = 2
-AlwaysOpenNewSession = True
-UseSameSubSessionAfterClose = True
-
-[NoPromptInSameSessionAfterNever]
-ServiceId = 10281DD8
-Destination = 0789012345
-OpaqueData = NoOpaqueData
-DialogOptionSelection = Never
-PlatSecPass = False
-ExpectedUpsDecision = SessionNo
-PromptTriggerCount = 1
-NoOfAuthoriseCalls = 2
-
-[NoPromptInNewSessionAfterNever]
-ServiceId = 10281DD8
-Destination = 0789012345
-OpaqueData = NoOpaqueData
-DialogOptionSelection = Never
-PlatSecPass = False
-ExpectedUpsDecision = SessionNo
-PromptTriggerCount = 1
-NoOfAuthoriseCalls = 2
-AlwaysOpenNewSession = True
-UseSameSubSessionAfterClose = True
-
-[UserResponseYes]
-ServiceId = 10281DD8
-Destination = 0789012345
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionYes
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes
-PromptTriggerCount = 1
-
-[UserResponseNo]
-ServiceId = 10281DD8
-Destination = 10.0.0.1
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionNo
-PlatSecPass = False
-ExpectedUpsDecision = SessionNo
-PromptTriggerCount = 1
-
-[Client1UserResponseSessionYes]
-ServiceId = 10281DD8
-Destination = 20.0.0.1
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionYes
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes
-
-[Client2UserResponseSessionNo]
-ServiceId = 10281DD8
-Destination = 20.0.0.2
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionNo
-PlatSecPass = False
-ExpectedUpsDecision = SessionNo
-
-[Client1UserResponseAlways]
-ServiceId = 10281DD8
-Destination = 20.0.0.1
-OpaqueData = NoOpaqueData
-DialogOptionSelection = Always
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes
-
-[Client2UserResponseNever]
-ServiceId = 10281DD8
-Destination = 20.0.0.2
-OpaqueData = NoOpaqueData
-DialogOptionSelection = Never
-PlatSecPass = False
-ExpectedUpsDecision = SessionNo
-
-[Client2UserResponseSessionNo]
-ServiceId = 10281DD8
-Destination = 20.0.0.2
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionNo
-PlatSecPass = False
-ExpectedUpsDecision = SessionNo
-
-[MultipleSubSessionsWithAlways]
-ServiceId = 10281DD8
-Destination = 20.0.0.1
-OpaqueData = NoOpaqueData
-DialogOptionSelection = Always
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes
-PromptTriggerCount = 1
-NoOfAuthoriseCalls = 2
-AlwaysOpenNewSubSession = True
-
-[MultipleSubSessionsWithSessionYes]
-ServiceId = 10281DD8
-Destination = 20.0.0.1
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionYes,Always
-PlatSecPass = False
-ExpectedUpsDecision = SessionYes,SessionYes
-PromptTriggerCount = 2
-NoOfAuthoriseCalls = 2
-AlwaysOpenNewSubSession = True
-
-[CancelPromptCall]
-ServiceId = 10281DD8
-Destination = 20.0.0.1
-OpaqueData = NoOpaqueData
-DialogOptionSelection = SessionYes
-PlatSecPass = False
-CancelPromptCall = True
-PromptTriggerCount = 0
-
-[StorePromptTriggerCount]
-StorePromptTriggerCount = True
-
-[PromptCount_2]
-PromptTriggerCount = 2
-
-[PromptCount_3]
-PromptTriggerCount = 3
-
--- a/networkcontrol/ipupsplugins/test/te_ipups/group/te_ipups.iby Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// tups_ipups.iby
-//
-//
-
-#ifndef __TE_IPUPS_IBY__
-#define __TE_IPUPS_IBY__
-
-#include <upstestnotifier.iby>
-#include <ipupsdialog.iby>
-#include <ups.iby>
-
-#ifdef NETWORKING_UPS_TESTS
-data=ABI_DIR\BUILD_DIR\te_ipups.exe \sys\bin\te_ipups.exe
-#endif
-
-REM Test policy files export
-data=ZDRIVE\private\10283558\policies\ups_10285B91_10281DD8.rsc \private\10283558\policies\ups_10285B91_10281DD8.rsc
-data=ZDRIVE\private\10283558\policies\ups_A0000001_10281DD8.rsc \private\10283558\policies\ups_A0000001_10281DD8.rsc
-data=ZDRIVE\private\10283558\policies\ups_10000001_10281DD8.rsc \private\10283558\policies\ups_10000001_10281DD8.rsc
-data=ZDRIVE\private\10283558\policies\ups_10000002_10281DD8.rsc \private\10283558\policies\ups_10000002_10281DD8.rsc
-data=ZDRIVE\system\data\ups_test_always_101F7989_10281DD8.rsc \system\data\ups_test_always_101F7989_10281DD8.rsc
-
-#ifdef NETWORKING_UPS_TESTS
-REM Test script and data files export
-data = ZDRIVE\testdata\scripts\te_ipups\te_ipups.script \testdata\scripts\te_ipups\te_ipups.script
-data = ZDRIVE\testdata\configs\te_ipups\te_ipups.ini \testdata\configs\te_ipups\te_ipups.ini
-#endif
-
-#endif
--- a/networkcontrol/ipupsplugins/test/te_ipups/group/te_ipups.mmp Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @file
- @test
-*/
-
-
-
-
-TARGET te_ipups.exe
-TARGETTYPE exe
-UID 0x1000007A 0x10285B91
-VENDORID 0x70000001
-
-CAPABILITY ALL -TCB
-
-SOURCEPATH ../src
-SOURCE te_ipups_stepbase.cpp
-SOURCE te_ipups_server.cpp
-SOURCE te_ipups_ups_step.cpp
-SOURCE te_ipups_notify_count.cpp
-SOURCE te_ipups_delete_decision_db.cpp
-
-USERINCLUDE ../inc
-
-SOURCEPATH ../policyfile
-
-START RESOURCE ups_10285B91_10281DD8.rss
-TARGETPATH /private/10283558/policies
-END
-
-START RESOURCE ups_10285B91_10281DD8.rss
-TARGETPATH /private/10283558/policies
-TARGET ups_a0000001_10281dd8.rsc
-END
-
-START RESOURCE ups_10285B91_10281DD8.rss
-TARGETPATH /private/10283558/policies
-TARGET ups_10000001_10281dd8.rsc
-END
-
-START RESOURCE ups_10285B91_10281DD8.rss
-TARGETPATH /private/10283558/policies
-TARGET ups_10000002_10281dd8.rsc
-END
-
-START RESOURCE ups_test_always_101F7989_10281DD8.rss
-TARGETPATH /system/data
-TARGET ups_test_always_101F7989_10281DD8.rss
-END
-
-#ifdef SYMBIAN_OLD_EXPORT_LOCATION
-SYSTEMINCLUDE /epoc32/include
-SYSTEMINCLUDE /epoc32/include/ups
-SYSTEMINCLUDE /epoc32/include/test
-#else
-OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-SYSTEMINCLUDE /epoc32/include/platform/test
-#endif
-
-LIBRARY euser.lib
-LIBRARY testexecuteutils.lib
-LIBRARY testexecutelogclient.lib
-LIBRARY bafl.lib
-LIBRARY efsrv.lib
-LIBRARY numberconversion.lib
-LIBRARY upsclient.lib
-LIBRARY upsmanagement.lib
-LIBRARY upsnotifierutil.lib
-LIBRARY estor.lib
-
-SMPSAFE
--- a/networkcontrol/ipupsplugins/test/te_ipups/inc/te_ipups_delete_decision_db.h Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// te_ipups_notify_count.h
-//
-//
-
-/**
- @file
- @test
- @internalComponent - Internal Symbian test code
-*/
-
-
-#if (!defined DELETE_DECISION_DB_STEP_H)
-#define DELETE_DECISION_DB_STEP_H
-#include <test/testexecutestepbase.h>
-
-class CIpUpsDeleteDecisionDB : public CTeIpUpsStepBase
- {
-public:
- CIpUpsDeleteDecisionDB();
- virtual ~CIpUpsDeleteDecisionDB();
- virtual TVerdict doTestStepPreambleL();
- virtual TVerdict doTestStepL();
- virtual TVerdict doTestStepPostambleL();
- };
-
-_LIT(KIpUpsDeleteDecisionDB,"IpUpsDeleteDecisionDB");
-
-
-#endif
--- a/networkcontrol/ipupsplugins/test/te_ipups/inc/te_ipups_notify_count.h Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @file
- @test
- @internalComponent - Internal Symbian test code
-*/
-
-
-#if (!defined NOTIFY_COUNT_STEP_H)
-#define NOTIFY_COUNT_STEP_H
-#include <test/testexecutestepbase.h>
-
-class CIpUpsNotifyCount : public CTeIpUpsStepBase
- {
-public:
- CIpUpsNotifyCount();
- virtual ~CIpUpsNotifyCount();
- virtual TVerdict doTestStepPreambleL();
- virtual TVerdict doTestStepL();
- virtual TVerdict doTestStepPostambleL();
- };
-
-_LIT(KIpUpsNotifyCount,"IpUpsNotifyCount");
-
-_LIT(KIpUpsStorePromptTriggerCount, "StorePromptTriggerCount");
-
-#endif
--- a/networkcontrol/ipupsplugins/test/te_ipups/inc/te_ipups_server.h Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @file
- @test
- @internalComponent - Internal Symbian test code
-*/
-
-#if (!defined TE_IPUPS_SERVER_H)
-#define TE_IPUPS_SERVER_H
-#include <test/testexecuteserverbase.h>
-
-
-class CTeIpUpsSuite : public CTestServer
- {
-public:
- static CTeIpUpsSuite* NewL(const TDesC& aName);
-
- virtual CTestStep* CreateTestStep(const TDesC& aStepName);
-
- };
-
-#endif
--- a/networkcontrol/ipupsplugins/test/te_ipups/inc/te_ipups_stepbase.h Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @file
- @test
- @internalComponent - Internal Symbian test code
-*/
-
-#if (!defined TE_IPUPS_STEP_BASE)
-#define TE_IPUPS_STEP_BASE
-#include <test/testexecutestepbase.h>
-#include <ups/upsclient.h>
-
-class CTeIpUpsStepBase : public CTestStep
- {
-public:
- virtual ~CTeIpUpsStepBase();
- CTeIpUpsStepBase();
- virtual TVerdict doTestStepPreambleL();
- virtual TVerdict doTestStepPostambleL();
- };
-
-#endif
--- a/networkcontrol/ipupsplugins/test/te_ipups/inc/te_ipups_ups_step.h Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @file
- @test
- @internalComponent - Internal Symbian test code
-*/
-
-
-#if (!defined TE_IPUPS_UPS_STEP_H)
-#define TE_IPUPS_UPS_STEP_H
-#include <test/testexecutestepbase.h>
-#include "te_ipups_stepbase.h"
-#include <ups/upsnotifierutil.h>
-
-class CIpUpsStep : public CTeIpUpsStepBase
- {
-public:
- CIpUpsStep();
- ~CIpUpsStep();
- virtual TVerdict doTestStepPreambleL();
- virtual TVerdict doTestStepL();
- virtual TVerdict doTestStepPostambleL();
-private:
- UserPromptService::CPolicy::TOptions ButtonToOption(const TPtrC& aButton);
- TPtrC TUpsDecisionToString(TUpsDecision aDecision);
- TUpsDecision TUpsDecisionFromString(const TPtrC& aDecision);
- TBool OptionsFlagToString(TUint aOptions, TDes& aOptionString, TBool aCheckAgainstExpectedOpt=ETrue);
- TBool VerifyAndPrintPromptDataL();
- void GetValueAt(const TInt aPos, const TPtrC& aArrayString, const TChar aDelimeter, TDes& aValue);
-
- void GetSessionAndSubSession(UserPromptService::RUpsSession& aUpsSession, UserPromptService::RUpsSubsession& aUpsSubsession);
-
- TInt iNotifyCount;
- UserPromptService::CPromptData* iPromptData;
-
- TInt iServiceUID;
- TPtrC iServerName;
- TPtrC iDestination;
- TPtrC iOpaqueData;
- TBuf8<64> iOpaqueDataStored;
- TPtrC iDialogOption;
- TPtrC iExpectedDialogOptions;
- TBool iPlatSecPass;
- TPtrC iExpectedUpsDecision;
- TInt iPromptTriggerCount;
- TInt iNoOfAuthoriseCalls;
- TBool iCancelPromptCall;
-
- TBool iAlwaysOpenNewSession;
-
- TBool iUseSameSubSession;
- TBool iUseSameSubSessionAfterClose;
- TBool iAlwaysOpenNewSubSession;
- TInt iTestNotifierMode;
- };
-
-_LIT(KIpUpsClientStep,"IpUpsStep");
-
-_LIT(KIpUpsServiceId, "ServiceId");
-_LIT(KIpUpsDestination, "Destination");
-_LIT(KIpUpsOpaqueData, "OpaqueData");
-_LIT(KIpUpsDialogOptionSelection, "DialogOptionSelection");
-_LIT(KExpectedDialogOptions, "ExpectedDialogOptions");
-_LIT(KIpUpsPlatSecPass, "PlatSecPass");
-_LIT(KIpUpsExpectedDecision, "ExpectedUpsDecision");
-_LIT(KIpUpsPromptTriggerCount, "PromptTriggerCount");
-_LIT(KIpUpsNoOfAuthoriseCalls, "NoOfAuthoriseCalls");
-_LIT(KIpUpsCancelPromptCall, "CancelPromptCall");
-
-_LIT(KIpUpsAlwaysOpenNewSession, "AlwaysOpenNewSession");
-
-_LIT(KIpUpsUseSameSubSession, "UseSameSubSession");
-_LIT(KIpUpsUseSameSubSessionAfterClose, "UseSameSubSessionAfterClose");
-_LIT(KIpUpsAlwaysOpenNewSubSession, "AlwaysOpenNewSubSession");
-
-const TInt KMaxNoOfAuthoriseCalls = 10;
-const TChar KIniFileDelimeter = ',';
-
-#endif
--- a/networkcontrol/ipupsplugins/test/te_ipups/policyfile/ups_10285B91_10281DD8.rss Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-#include <ups/policies.rh>
-
-UID2 KUidUpsPolicyResourceFile
-
-//New Unique identifier for this policy file
-UID3 0x10285B92
-
-
-// UPS policy file for IP
-RESOURCE POLICIES IP_Default_policies
- {
- header = POLICY_HEADER
- {
- authorisationpolicy = ECheckUnprotectedSids;
- dialogcreator = 0x10285A7C;
- policyevaluator = 0x00000000;
- };
- policies =
- {
- POLICY
- {
- sid_classes = KAllSids;
- destination = "*";
- options = KSessionYes | KSessionNo | KAlways | KNever;
- }
-
- };
- }
--- a/networkcontrol/ipupsplugins/test/te_ipups/policyfile/ups_test_always_101F7989_10281DD8.rss Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-#include <ups/policies.rh>
-
-UID2 KUidUpsPolicyResourceFile
-
-//New Unique identifier for this policy file
-UID3 0x10282FBE
-
-
-// UPS policy file for IP
-RESOURCE POLICIES IP_Default_policies
- {
- header = POLICY_HEADER
- {
- authorisationpolicy = EAlwaysCheck;
- dialogcreator = 0x10285A7C;
- // Use default policy evaluator
- policyevaluator = 0x00000000;
- };
- policies =
- {
- POLICY
- {
- sid_classes = KAllSids;
- destination = "*";
- options = KSessionYes | KSessionNo | KAlways | KNever;
- }
-
- };
- }
--- a/networkcontrol/ipupsplugins/test/te_ipups/scripts/te_ipups.script Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,372 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// Contains integration tests for UPS server.
-//
-//
-
-PRINT Run Basic integration test cases for PREQ1116 ( IP Networking User Prompting )
-
-RUN_PROGRAM -1 SETCAP te_ipups.exe 0003FFFE -SID A0000001 te_ipups_un_prot_sid.exe
-RUN_PROGRAM -1 SETCAP te_ipups.exe 0003FFFE -SID 10000001 te_ipups_1.exe
-RUN_PROGRAM -1 SETCAP te_ipups.exe 0003FFFE -SID 10000002 te_ipups_2.exe
-
-LOAD_SUITE te_ipups
-LOAD_SUITE te_ipups_1
-LOAD_SUITE te_ipups_2
-LOAD_SUITE te_ipups_un_prot_sid
-
-
-START_TESTCASE ProtSidPlatSecFail
-//!@SYMTestCaseID NET-IP-UPS-1001
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Prompt when protected SID, platsec fails.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini ProtSidPlatSecFail
-END_TESTCASE ProtSidPlatSecFail
-
-START_TESTCASE UnProtSidPlatSecPass
-//!@SYMTestCaseID NET-IP-UPS-1002
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Prompt when unprotected SID, platsec passes.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups_un_prot_sid IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini UnProtSidPlatSecPass
-END_TESTCASE UnProtSidPlatSecPass
-
-START_TESTCASE UnProtSidPlatSecFail
-//!@SYMTestCaseID NET-IP-UPS-1003
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Prompt when unprotected SID, platsec fails.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups_un_prot_sid IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini UnProtSidPlatSecFail
-END_TESTCASE UnProtSidPlatSecFail
-
-START_TESTCASE ProtSidPlatSecPass
-//!@SYMTestCaseID NET-IP-UPS-1004
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc No Prompt when protected SID, platsec passes.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini ProtSidPlatSecPass
-END_TESTCASE ProtSidPlatSecPass
-
-START_TESTCASE ValidPromptResponse
-//!@SYMTestCaseID NET-IP-UPS-1005
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Prompt only offers SessionYes, SessionNo, Always & Never.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini ValidPromptResponse
-END_TESTCASE ValidPromptResponse
-
-START_TESTCASE ValidDestinationIPPrompted
-//!@SYMTestCaseID NET-IP-UPS-1006
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Prompt contains details of client.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini ValidDestinationIPPrompted
-END_TESTCASE ValidDestinationIPPrompted
-
-START_TESTCASE UserResponseSessionYes
-//!@SYMTestCaseID NET-IP-UPS-1007
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Client receives correct SessionYes response.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini UserResponseSessionYes
-END_TESTCASE UserResponseSessionYes
-
-START_TESTCASE PromptAgainAfterSessionYes
-//!@SYMTestCaseID NET-IP-UPS-1008
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Prompt again after response first SessionYes response.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini PromptAgainAfterSessionYes
-END_TESTCASE PromptAgainAfterSessionYes
-
-START_TESTCASE PromptAfterSessionYesWithNewSubSession
-//!@SYMTestCaseID NET-IP-UPS-1009
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Prompt when starting subsequent sub session after initial SessionYes.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini PromptAfterSessionYesWithNewSubSession
-END_TESTCASE PromptAfterSessionYesWithNewSubSession
-
-START_TESTCASE PromptAgainAfterSessionNo
-//!@SYMTestCaseID NET-IP-UPS-1010
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Prompt again after response SessionNo.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini PromptAgainAfterSessionNo
-END_TESTCASE PromptAgainAfterSessionNo
-
-START_TESTCASE PromptAfterSessionNoWithNewSubSession
-//!@SYMTestCaseID NET-IP-UPS-1011
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Prompt when starting subsequent sub session after initial SessionNo.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini PromptAfterSessionNoWithNewSubSession
-END_TESTCASE PromptAfterSessionNoWithNewSubSession
-
-START_TESTCASE NoPromptAfterAlwaysResponse
-//!@SYMTestCaseID NET-IP-UPS-1012
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc User response Always - No further Prompting in same session.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini NoPromptAfterAlwaysResponse
-END_TESTCASE NoPromptAfterAlwaysResponse
-
-START_TESTCASE NoPromptInNewSessionAfterAlways
-//!@SYMTestCaseID NET-IP-UPS-1013
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc User response Always - No further Prompting in subsequent session.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini NoPromptInNewSessionAfterAlways
-END_TESTCASE NoPromptInNewSessionAfterAlways
-
-START_TESTCASE NoPromptInSameSessionAfterNever
-//!@SYMTestCaseID NET-IP-UPS-1014
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc User response Never - No further Prompting in same session.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini NoPromptInSameSessionAfterNever
-END_TESTCASE NoPromptInSameSessionAfterNever
-
-START_TESTCASE NoPromptInNewSessionAfterNever
-//!@SYMTestCaseID NET-IP-UPS-1015
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc User response Never - No further Prompting in subsequent session.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini NoPromptInNewSessionAfterNever
-END_TESTCASE NoPromptInNewSessionAfterNever
-
-START_TESTCASE UserResponseYes
-//!@SYMTestCaseID NET-IP-UPS-1016
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc User returned response SessionYes and receives same.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini UserResponseYes
-END_TESTCASE UserResponseYes
-
-START_TESTCASE UserResponseNo
-//!@SYMTestCaseID NET-IP-UPS-1017
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc User returned response SessionNo and receives same.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini UserResponseNo
-END_TESTCASE UserResponseNo
-
-START_TESTCASE MultipleClientWithSessionYesAndSessionNo
-//!@SYMTestCaseID NET-IP-UPS-1018
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Multiple UPS SubSessions and clients - SessionYes + SessionNo User response.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsNotifyCount z:\testdata\configs\te_ipups\te_ipups.ini StorePromptTriggerCount
-CONCURRENT
-RUN_TEST_STEP 100 te_ipups_1 IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini Client1UserResponseSessionYes
-DELAY 1
-RUN_TEST_STEP 100 te_ipups_2 IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini Client2UserResponseSessionNo
-DELAY 1
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini Client2UserResponseSessionNo
-CONSECUTIVE
-RUN_TEST_STEP 100 te_ipups IpUpsNotifyCount z:\testdata\configs\te_ipups\te_ipups.ini PromptCount_3
-END_TESTCASE MultipleClientWithSessionYesAndSessionNo
-
-START_TESTCASE MultipleClientWithAlwaysAndNever
-//!@SYMTestCaseID NET-IP-UPS-1019
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Multiple UPS SubSessions and Clients - Always + Never User responses.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsNotifyCount z:\testdata\configs\te_ipups\te_ipups.ini StorePromptTriggerCount
-CONCURRENT
-RUN_TEST_STEP 100 te_ipups_1 IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini Client1UserResponseAlways
-DELAY 1
-RUN_TEST_STEP 100 te_ipups_2 IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini Client2UserResponseNever
-DELAY 1
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini Client2UserResponseNever
-CONSECUTIVE
-RUN_TEST_STEP 100 te_ipups IpUpsNotifyCount z:\testdata\configs\te_ipups\te_ipups.ini PromptCount_3
-END_TESTCASE MultipleClientWithAlwaysAndNever
-
-START_TESTCASE MultipleClientWithAlwaysAndSessionNo
-//!@SYMTestCaseID NET-IP-UPS-1020
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Multiple UPS SubSessions and clients - Always + SessionNo User Responses.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsNotifyCount z:\testdata\configs\te_ipups\te_ipups.ini StorePromptTriggerCount
-CONCURRENT
-RUN_TEST_STEP 100 te_ipups_1 IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini Client1UserResponseAlways
-DELAY 1
-RUN_TEST_STEP 100 te_ipups_2 IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini Client2UserResponseSessionNo
-DELAY 1
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini Client2UserResponseSessionNo
-CONSECUTIVE
-RUN_TEST_STEP 100 te_ipups IpUpsNotifyCount z:\testdata\configs\te_ipups\te_ipups.ini PromptCount_3
-END_TESTCASE MultipleClientWithAlwaysAndSessionNo
-
-START_TESTCASE MultipleClientWithSessionYesAndNever
-//!@SYMTestCaseID NET-IP-UPS-1021
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Multiple UPS SubSessions and clients - SessionYes + Never User Responses.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsNotifyCount z:\testdata\configs\te_ipups\te_ipups.ini StorePromptTriggerCount
-CONCURRENT
-RUN_TEST_STEP 100 te_ipups_1 IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini Client1UserResponseSessionYes
-DELAY 1
-RUN_TEST_STEP 100 te_ipups_2 IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini Client2UserResponseNever
-DELAY 1
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini Client2UserResponseNever
-CONSECUTIVE
-RUN_TEST_STEP 100 te_ipups IpUpsNotifyCount z:\testdata\configs\te_ipups\te_ipups.ini PromptCount_3
-END_TESTCASE MultipleClientWithSessionYesAndNever
-
-START_TESTCASE MultipleSubSessionsWithAlways
-//!@SYMTestCaseID NET-IP-UPS-1022
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Multiple UPS SubSessions, single client - Always + No prompt.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini MultipleSubSessionsWithAlways
-END_TESTCASE MultipleSubSessionsWithAlways
-
-START_TESTCASE MultipleSubSessionsWithSessionYes
-//!@SYMTestCaseID NET-IP-UPS-1023
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Multiple UPS SubSessions, single client - SessionYes + Prompt.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini MultipleSubSessionsWithSessionYes
-END_TESTCASE MultipleSubSessionsWithSessionYes
-
-START_TESTCASE CancelPromptCall
-//!@SYMTestCaseID NET-IP-UPS-1024
-//!@SYMPREQ PREQ1116
-//!@SYMTestCaseDesc Cancel authorisation request mid-prompting.
-//!@SYMTestPriority Critical
-//!@SYMTestActions Start UPS Session, SubSession and call Authorise.
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CIT
-
-RUN_TEST_STEP 100 te_ipups IpUpsDeleteDecisionDB
-RUN_TEST_STEP_RESULT -3 100 te_ipups IpUpsStep z:\testdata\configs\te_ipups\te_ipups.ini CancelPromptCall
-END_TESTCASE CancelPromptCall
--- a/networkcontrol/ipupsplugins/test/te_ipups/src/te_ipups_delete_decision_db.cpp Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @file
- @test
- @internalComponent - Internal Symbian test code
-*/
-
-#include "te_ipups_stepbase.h"
-#include "te_ipups_delete_decision_db.h"
-
-CIpUpsDeleteDecisionDB::CIpUpsDeleteDecisionDB()
-/**
- * Constructor
- */
- {
- SetTestStepName(KIpUpsDeleteDecisionDB);
- }
-
-CIpUpsDeleteDecisionDB::~CIpUpsDeleteDecisionDB()
-/**
- * Destructor
- */
- {
- }
-
-TVerdict CIpUpsDeleteDecisionDB::doTestStepPreambleL()
-/**
- * @return - TVerdict code
- */
- {
- SetTestStepResult(EPass);
- return TestStepResult();
- }
-
-TVerdict CIpUpsDeleteDecisionDB::doTestStepL()
-/**
- * @return - TVerdict code
- */
- {
- UserPromptService::RUpsManagement upsManagement;
-
- //Connect to the UPS Manager
- User::LeaveIfError(upsManagement.Connect());
-
- //Delete the contents of the Decision Database
- TRAPD(err, upsManagement.DeleteDatabaseL());
-
- if (err != KErrNone)
- {
- ERR_PRINTF2(_L("UPS Database Deletion attempt failed ( %d )"), err);
- }
- else
- {
- INFO_PRINTF1(_L("UPS Database Deleted."));
- }
-
- SetTestStepError(err);
-
- return TestStepResult();
- }
-
-TVerdict CIpUpsDeleteDecisionDB::doTestStepPostambleL()
-/**
- * @return - TVerdict code
- */
- {
- return TestStepResult();
- }
--- a/networkcontrol/ipupsplugins/test/te_ipups/src/te_ipups_notify_count.cpp Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @file
- @test
- @internalComponent - Internal Symbian test code
-*/
-
-#include "te_ipups_ups_step.h"
-#include "te_ipups_notify_count.h"
-#include "upstestnotifierproperties.h"
-
-CIpUpsNotifyCount::CIpUpsNotifyCount()
-/**
- * Constructor
- */
- {
- SetTestStepName(KIpUpsNotifyCount);
- }
-
-CIpUpsNotifyCount::~CIpUpsNotifyCount()
-/**
- * Destructor
- */
- {
- }
-
-TVerdict CIpUpsNotifyCount::doTestStepPreambleL()
-/**
- * @return - TVerdict code
- */
- {
- TSecurityPolicy nullPolicy(ECapability_None);
- TInt err;
-
- //Properties modified to be returned to test harness from test notifier
- err = RProperty::Define(KUidPSUPSTestNotifCategory, KUnStart, KUnCountKeyType, nullPolicy, nullPolicy);
- if (err != KErrAlreadyExists && err != KErrNone)
- {
- User::LeaveIfError(err);
- }
-
- //Define a new Property which would be used to store the count to retreive later for comparison
- err = RProperty::Define(KUidPSUPSTestNotifCategory, KUnStoredNotifyCount, KUnStoredCountKeyType, nullPolicy, nullPolicy);
- if (err != KErrAlreadyExists && err != KErrNone)
- {
- User::LeaveIfError(err);
- }
-
- SetTestStepResult(EPass);
- return TestStepResult();
- }
-
-TVerdict CIpUpsNotifyCount::doTestStepL()
-/**
- * NotifyCount test step either stores the count retireved and store it in separate property defined or
- * it compares the retireved notify count with the stored value + count increment expected relative to stored.
- * @return - TVerdict code
- */
- {
- TBool storePromptTriggerCount = EFalse;
-
- GetBoolFromConfig(ConfigSection(),KIpUpsStorePromptTriggerCount, storePromptTriggerCount);
-
- if (storePromptTriggerCount)
- {
- TInt notifyCountReturned = 0;
- User::LeaveIfError(RProperty::Get(KUidPSUPSTestNotifCategory, KUnNotifyCount, notifyCountReturned));
-
- User::LeaveIfError(RProperty::Set(KUidPSUPSTestNotifCategory, KUnStoredNotifyCount, notifyCountReturned));
-
- INFO_PRINTF2(_L("NotifyCount Stored ( %d )"), notifyCountReturned);
- }
- else
- {
- TInt promptTriggerCount = 0;
-
- GetIntFromConfig(ConfigSection(),KIpUpsPromptTriggerCount, promptTriggerCount);
-
- TInt notifyCountReturned = 0;
- User::LeaveIfError(RProperty::Get(KUidPSUPSTestNotifCategory, KUnNotifyCount, notifyCountReturned));
-
- TInt sotredPromptTriggerCount = 0;
- User::LeaveIfError(RProperty::Get(KUidPSUPSTestNotifCategory, KUnStart+2, sotredPromptTriggerCount));
-
- INFO_PRINTF3(_L("NotifyCount Expected ( %d ) <> NotifyCount Returned ( %d )"), promptTriggerCount+sotredPromptTriggerCount, notifyCountReturned);
-
- TEST ( (promptTriggerCount + sotredPromptTriggerCount) == notifyCountReturned);
- }
-
- return TestStepResult();
- }
-
-TVerdict CIpUpsNotifyCount::doTestStepPostambleL()
-/**
- * @return - TVerdict code
- */
- {
- return TestStepResult();
- }
--- a/networkcontrol/ipupsplugins/test/te_ipups/src/te_ipups_server.cpp Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @file
- @test
- @internalComponent - Internal Symbian test code
-*/
-
-#include "te_ipups_server.h"
-#include "te_ipups_ups_step.h"
-#include "te_ipups_notify_count.h"
-#include "te_ipups_delete_decision_db.h"
-#include <bacline.h>
-
-CTeIpUpsSuite* CTeIpUpsSuite::NewL(const TDesC& aName)
-/**
- * @return - Instance of the test server
- */
- {
- CTeIpUpsSuite * server = new (ELeave) CTeIpUpsSuite();
- CleanupStack::PushL(server);
- server->ConstructL(aName);
- CleanupStack::Pop(server);
- return server;
- }
-
-
-LOCAL_C void MainL()
-/**
- * Main implementation
- */
- {
- CActiveScheduler* sched=NULL;
- sched=new(ELeave) CActiveScheduler;
- CActiveScheduler::Install(sched);
- CTeIpUpsSuite* server = NULL;
-
- CCommandLineArguments* args = CCommandLineArguments::NewLC();
- TPtrC exeName = args->Arg(0);
- TParse fullName;
- fullName.Set(exeName, NULL, NULL);
- CleanupStack::PopAndDestroy(args);
-
- // Create the CTestServer derived server
- TRAPD(err,server = CTeIpUpsSuite::NewL(fullName.Name()));
- if(!err)
- {
- // Sync with the client and enter the active scheduler
- RProcess::Rendezvous(KErrNone);
- sched->Start();
- }
- delete server;
- delete sched;
- }
-
-
-
-GLDEF_C TInt E32Main()
-/**
- * @return - Standard Epoc error code on process exit
- * Process entry point. Called by client using RProcess API
- */
- {
- __UHEAP_MARK;
- CTrapCleanup* cleanup = CTrapCleanup::New();
- if(cleanup == NULL)
- {
- return KErrNoMemory;
- }
- TRAPD(err,MainL());
- delete cleanup;
- __UHEAP_MARKEND;
- return err;
- }
-
-
-CTestStep* CTeIpUpsSuite::CreateTestStep(const TDesC& aStepName)
-/**
- * @return - A CTestStep derived instance
- */
- {
- CTestStep* testStep = NULL;
-
- if(aStepName == KIpUpsClientStep)
- {
- testStep = new CIpUpsStep();
- }
- else if(aStepName == KIpUpsNotifyCount)
- {
- testStep = new CIpUpsNotifyCount();
- }
- else if(aStepName == KIpUpsDeleteDecisionDB)
- {
- testStep = new CIpUpsDeleteDecisionDB();
- }
-
- return testStep;
- }
--- a/networkcontrol/ipupsplugins/test/te_ipups/src/te_ipups_stepbase.cpp Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @file
- @test
- @internalComponent - Internal Symbian test code
-*/
-
-#include "te_ipups_stepbase.h"
-
-TVerdict CTeIpUpsStepBase::doTestStepPreambleL()
-/**
- * @return - TVerdict
- */
- {
- SetTestStepResult(EPass);
- return TestStepResult();
- }
-
-TVerdict CTeIpUpsStepBase::doTestStepPostambleL()
-/**
- * @return - TVerdict
- */
- {
- return TestStepResult();
- }
-
-CTeIpUpsStepBase::~CTeIpUpsStepBase()
- {
- }
-
-CTeIpUpsStepBase::CTeIpUpsStepBase()
- {
- }
--- a/networkcontrol/ipupsplugins/test/te_ipups/src/te_ipups_ups_step.cpp Mon Mar 08 21:44:54 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,613 +0,0 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @file
- @test
- @internalComponent - Internal Symbian test code
-*/
-
-#include "te_ipups_ups_step.h"
-#include "upstestnotifierproperties.h"
-#include <s32mem.h>
-
-static TInt ThreadFunction(TAny *)
- {
- return KErrNone;
- }
-
-CIpUpsStep::~CIpUpsStep()
-/**
- * Destructor
- */
- {
- } // End of function
-
-
-CIpUpsStep::CIpUpsStep()
-/**
- * Constructor
- */
- {
- SetTestStepName(KIpUpsClientStep);
- } // End of function
-
-
-TVerdict CIpUpsStep::doTestStepPreambleL()
-/**
- * @return - TVerdict code
- * Override of base class virtual
- */
- {
- TSecurityPolicy nullPolicy(ECapability_None);
- TInt err;
-
- //Properties modified to be returned to test harness from test notifier
- err = RProperty::Define(KUidPSUPSTestNotifCategory, KUnNotifyCount, KUnCountKeyType, nullPolicy, nullPolicy);
- if (err != KErrAlreadyExists && err != KErrNone)
- {
- User::LeaveIfError(err);
- }
-
- err = RProperty::Define(KUidPSUPSTestNotifCategory, KUnNotifyValues, KUnNotifyValuesKeyType, nullPolicy, nullPolicy);
- if (err != KErrAlreadyExists && err != KErrNone)
- {
- User::LeaveIfError(err);
- }
-
- //Properties test notifier requires from test harness about the button press and delay
- err = RProperty::Define(KUidPSUPSTestNotifCategory, KUtButtonPress, KUtButtonPressKeyType, nullPolicy, nullPolicy);
- if (err != KErrAlreadyExists && err != KErrNone)
- {
- User::LeaveIfError(err);
- }
-
- err = RProperty::Define(KUidPSUPSTestNotifCategory, KUtButtonPressDelay, KUtButtonPressDelayKeyType, nullPolicy, nullPolicy);
- if (err != KErrAlreadyExists && err != KErrNone)
- {
- User::LeaveIfError(err);
- }
-
- //Get the testNotifier working mode, filemode or P&S mode
- User::LeaveIfError(RProperty::Get(KUidPSUPSTestNotifCategory, KUtFileOverride, iTestNotifierMode));
-
- //Set the property to override working of testNotifier in P&S mode instead of filemode
- User::LeaveIfError(RProperty::Set(KUidPSUPSTestNotifCategory, KUtFileOverride, KFileOverride));
-
- //Initialise optional data iNoOfAuthoriseCalls (should be '1' minimum).
- iNoOfAuthoriseCalls = 1;
-
- //Initialise optional data iPromptTriggerCount (Initialising with '-1' means no check if user not specfied in INI file).
- iPromptTriggerCount = -1;
-
- //Read data from INI file
- GetHexFromConfig(ConfigSection(), KIpUpsServiceId, iServiceUID);
- GetStringFromConfig(ConfigSection(),KIpUpsDestination, iDestination);
- GetStringFromConfig(ConfigSection(),KIpUpsOpaqueData, iOpaqueData);
- GetStringFromConfig(ConfigSection(),KIpUpsDialogOptionSelection, iDialogOption);
- GetBoolFromConfig(ConfigSection(),KIpUpsPlatSecPass, iPlatSecPass);
- GetStringFromConfig(ConfigSection(),KIpUpsExpectedDecision, iExpectedUpsDecision);
- GetIntFromConfig(ConfigSection(),KIpUpsPromptTriggerCount, iPromptTriggerCount);
- GetIntFromConfig(ConfigSection(),KIpUpsNoOfAuthoriseCalls, iNoOfAuthoriseCalls);
- GetBoolFromConfig(ConfigSection(),KIpUpsCancelPromptCall, iCancelPromptCall);
-
- GetBoolFromConfig(ConfigSection(),KIpUpsAlwaysOpenNewSession, iAlwaysOpenNewSession);
-
- GetBoolFromConfig(ConfigSection(),KIpUpsUseSameSubSession, iUseSameSubSession);
- GetBoolFromConfig(ConfigSection(),KIpUpsUseSameSubSessionAfterClose, iUseSameSubSessionAfterClose);
- GetBoolFromConfig(ConfigSection(),KIpUpsAlwaysOpenNewSubSession, iAlwaysOpenNewSubSession);
-
- //Keep the initial count of the notifier recorded, should be '0'
- User::LeaveIfError(RProperty::Get(KUidPSUPSTestNotifCategory, KUnNotifyCount, iNotifyCount));
-
- SetTestStepResult(EPass);
- return TestStepResult();
- } // End of function.
-
-
-TVerdict CIpUpsStep::doTestStepL()
-/**
- * @return - TVerdict code
- * Override of base class virtual
- */
- {
- UserPromptService::RUpsSession upsSession;
- UserPromptService::RUpsSubsession upsSubSession[KMaxNoOfAuthoriseCalls];
-
- RThread dummyThread[KMaxNoOfAuthoriseCalls];
- TRequestStatus threadStatus;
-
- TInt notifyCountBeforeTest = iNotifyCount;
- TInt notifyCountAfterTest = 0;
-
- TServiceId serviceId = TUid::Uid(iServiceUID);
-
- TInt subSessionCntr = 0;
-
- //Repeat call to Authorise as specified in INI file (through NoOfAuthoriseCalls data)
- for (TInt cntr=0; cntr<iNoOfAuthoriseCalls && cntr<KMaxNoOfAuthoriseCalls; cntr++)
- {
- if (upsSession.Handle() == KNullHandle)
- {
- User::LeaveIfError(upsSession.Connect());
- INFO_PRINTF1(_L("UPS Session Started."));
- }
-
- if (upsSubSession[subSessionCntr].SubSessionHandle() == KNullHandle)
- {
- //Create dummy thread with different names
- TBuf<32> dummyThreadName;
- dummyThreadName.Copy(_L("DummyThread_0123456789"));
-
- User::LeaveIfError(dummyThread[subSessionCntr].Create(dummyThreadName.Right(dummyThreadName.Length()-subSessionCntr), ThreadFunction, 4096, 4096, 4096, 0, EOwnerThread));
-
- dummyThread[subSessionCntr].Rendezvous(threadStatus);
- dummyThread[subSessionCntr].Resume();
- User::WaitForRequest(threadStatus);
-
- upsSubSession[subSessionCntr] = UserPromptService::RUpsSubsession();
- User::LeaveIfError(upsSubSession[subSessionCntr].Initialise(upsSession, dummyThread[subSessionCntr]));
- INFO_PRINTF1(_L("UPS SubSession Initialised."));
- }
-
- //Get the dialog option for this iteration (specified in the INI file through
- //DialogOptionSelection data, separated using KIniFileDelimeter).
- TBuf<32> dialogOption;
- GetValueAt(cntr, iDialogOption, KIniFileDelimeter, dialogOption);
-
- UserPromptService::TPromptResult promptResult;
- promptResult.iSelected = ButtonToOption(dialogOption);
-
- TPckg<UserPromptService::TPromptResult> resultPckg(promptResult);
-
- //Set the Dialog Option selection by user (specifies through DialogOptionSelection data value in INI file).
- User::LeaveIfError(RProperty::Set(KUidPSUPSTestNotifCategory, KUtButtonPress, resultPckg));
- User::LeaveIfError(RProperty::Set(KUidPSUPSTestNotifCategory, KUtButtonPressDelay, iCancelPromptCall?1:0));
-
- INFO_PRINTF2(_L("Dialog Option Selection ( %S )."), &dialogOption);
-
- //Get the Notify Count BEFORE call to Authorise
- User::LeaveIfError(RProperty::Get(KUidPSUPSTestNotifCategory, KUnNotifyCount, notifyCountBeforeTest));
-
- TUpsDecision upsDecision;
- TRequestStatus status;
-
- if ( iOpaqueData.Length() > 0 )
- {
- HBufC8* converter = HBufC8::NewLC(iOpaqueData.Length());
- converter->Des().Copy(iOpaqueData);
- iOpaqueDataStored = converter->Ptr();
- CleanupStack::PopAndDestroy(); //converter
-
- INFO_PRINTF1(_L("Opaque data present."));
- upsSubSession[subSessionCntr].Authorise(iPlatSecPass, serviceId, iDestination, iOpaqueDataStored, upsDecision, status);
- }
- else
- {
- INFO_PRINTF1(_L("Opaque data NOT present."));
- upsSubSession[subSessionCntr].Authorise(iPlatSecPass, serviceId, iDestination, upsDecision, status);
- }
-
-
- if (iCancelPromptCall)
- {
- upsSubSession[subSessionCntr].CancelPrompt();
- INFO_PRINTF1(_L("CancelPrompt called on UPS SubSession."));
- }
-
- User::WaitForRequest(status);
-
- SetTestStepError(status.Int());
- User::LeaveIfError(status.Int());
-
- //Get the Notify Count AFTER call to Authorise
- User::LeaveIfError(RProperty::Get(KUidPSUPSTestNotifCategory, KUnNotifyCount, notifyCountAfterTest));
-
- INFO_PRINTF3(_L("NotifyCount Before Authorise ( %d ) <> NotifyCount After Authorise ( %d )"), notifyCountBeforeTest, notifyCountAfterTest);
-
- if ( iExpectedUpsDecision.Length() > 0 )
- {
- //Get the expected UPS decision for this iteration (specified in the INI file through
- //ExpectedUpsDecision data, separated using KIniFileDelimeter).
- TBuf<32> expectedUpsDecision;
- GetValueAt(cntr, iExpectedUpsDecision, KIniFileDelimeter, expectedUpsDecision);
-
- TPtrC upsDecisionString = TUpsDecisionToString(upsDecision);
-
- INFO_PRINTF3(_L("UPS Decision Expected ( %S ) <> UPS Decision Returned ( %S )"), &expectedUpsDecision, &upsDecisionString);
-
- //Compare the expected and returned UPS decision
- TEST( expectedUpsDecision.Compare(TUpsDecisionToString(upsDecision)) == 0);
- }
-
- VerifyAndPrintPromptDataL();
-
- //Check what user requested to do with SubSession for further iterations (if any).
- if ( iUseSameSubSession )
- {
- INFO_PRINTF2(_L("Using UPS SubSession ( %d )."), subSessionCntr);
- }
- if ( iUseSameSubSessionAfterClose || iAlwaysOpenNewSession )
- {
- upsSubSession[subSessionCntr].Close();
- INFO_PRINTF2(_L("UPS SubSession Closed ( %d )."), subSessionCntr);
- dummyThread[subSessionCntr].Close();
- }
- else if ( iAlwaysOpenNewSubSession )
- {
- ++subSessionCntr;
- }
-
- if ( iAlwaysOpenNewSession )
- {
- upsSession.Close();
- INFO_PRINTF1(_L("UPS Session Closed."));
- }
- } //End - for loop
-
-
- //As with multiple clients , its better not to try to synchronize the calls which change the notify count.
- //When all the concurrent calls are done , check the count finally through test step notifycount.
- if (iPromptTriggerCount >= 0)
- {
- TEST( notifyCountAfterTest == (iNotifyCount+iPromptTriggerCount) );
- }
-
- //Ensure all sub sessions are closed
- for (TInt cntr=0; cntr<subSessionCntr; cntr++)
- {
- if ( upsSubSession[cntr].SubSessionHandle() != KNullHandle )
- {
- INFO_PRINTF2(_L("UPS SubSession Closed ( %d )."), cntr);
- upsSubSession[cntr].Close();
- dummyThread[cntr].Close();
- }
- }
-
- //Ensure session is closed
- if ( upsSession.Handle() != KNullHandle )
- {
- upsSession.Close();
- INFO_PRINTF1(_L("UPS Session Closed."));
- }
-
- return TestStepResult();
- } // End of function
-
-
-TVerdict CIpUpsStep::doTestStepPostambleL()
-/**
- * @return - TVerdict code
- * Override of base class virtual
- */
- {
- //ReSet the property to specify working of testNotifier in P&S or filemode
- User::LeaveIfError(RProperty::Set(KUidPSUPSTestNotifCategory, KUtFileOverride, iTestNotifierMode));
-
- return TestStepResult();
- } // End of function.
-
-TBool CIpUpsStep::VerifyAndPrintPromptDataL()
-/**
- * @return - TBool - ETrue of prompt data returned matched the data expected as specified in INI file, else EFalse.
- *
- */
- {
- //Get the Prompt Information
- const TInt KMaxPromptDataLenght = 512;
- HBufC8* buf=HBufC8::NewLC(KMaxPromptDataLenght);
- TPtr8 bufPtr(buf->Des());
-
- User::LeaveIfError(RProperty::Get(KUidPSUPSTestNotifCategory, KUnNotifyValues, bufPtr));
-
- RDesReadStream promptDataStream(bufPtr);
-
- iPromptData = UserPromptService::CPromptData::NewL();
- CleanupStack::PushL(iPromptData);
- iPromptData->InternalizeL(promptDataStream);
-
- INFO_PRINTF2(_L("Client Name ( %S )"), &iPromptData->iClientName);
- INFO_PRINTF2(_L("Vendor Name ( %S )"), &iPromptData->iVendorName);
- INFO_PRINTF2(_L("Destination ( %S )"), &iPromptData->iDestination);
- INFO_PRINTF2(_L("ClientSid ( %08x )"), iPromptData->iClientSid.iId);
- INFO_PRINTF2(_L("ServerSid ( %08x )"), iPromptData->iServerSid.iId);
- INFO_PRINTF2(_L("ServiceId ( %08x )"), iPromptData->iServiceId);
-
- TInt count = iPromptData->iDescriptions.Count();
- for (TInt cntr = 0; cntr < count; ++cntr)
- {
- INFO_PRINTF3(_L("Descriptions(%d) : %S "), cntr, iPromptData->iDescriptions[cntr]);
- }
-
- //Print Dialog Flags
- TBuf<64> dialogFlags;
-
- if ( iPromptData->iFlags & UserPromptService::ETrustedClient )
- {
- dialogFlags.Append(_L(" TrustedClient "));
- }
- if ( iPromptData->iFlags & UserPromptService::EBuiltInApp )
- {
- dialogFlags.Append(_L(" BuiltInApp "));
- }
- INFO_PRINTF2(_L("DialogFlags Set to ( %S )"), &dialogFlags);
-
- TPtrC expectedDialogOptions;
- TBuf<64> bufOptions;
-
- GetStringFromConfig(ConfigSection(),KExpectedDialogOptions, iExpectedDialogOptions);
-
- if (iExpectedDialogOptions.Length() > 0)
- {
- INFO_PRINTF2(_L("Options Expected ( %S )"), &iExpectedDialogOptions);
-
- //Check if options presented are as expected
- TBool result = OptionsFlagToString(iPromptData->iOptions, bufOptions);
- TEST(result != EFalse);
- }
- else
- {
- OptionsFlagToString(iPromptData->iOptions, bufOptions, EFalse);
- }
-
- INFO_PRINTF2(_L("Options Presented ( %S )"), &bufOptions);
-
- TEST(iPromptData->iServiceId.iUid == iServiceUID);
- TEST(iPromptData->iDestination == iDestination);
-
- CleanupStack::PopAndDestroy(2); //buf, iPromptData
-
- return EFalse;
- } // End of function.
-
-TBool CIpUpsStep::OptionsFlagToString(TUint aOptions, TDes& aOptionString, TBool aCheckAgainstExpectedOpt)
-/** OptionsFlagToString converts the dialog option(s) presented to string and check if the presented option
- * is amongst the one which is expected(from INI file) or not if aCheckAgainstExpectedOpt is set to ETrue.
- *
- * @return - TBool - ETrue if presented options are the ones which are expected as specified in the INI file.
- *
- */
- {
- _LIT(KOptionYes, "Yes");
- _LIT(KOptionNo, "No");
- _LIT(KOptionSessionYes, "SessionYes");
- _LIT(KOptionAlways, "Always");
- _LIT(KOptionNever, "Never");
- _LIT(KOptionSessionNo, "SessionNo");
-
- const TPtrC policyOptions[] = {KOptionYes(), KOptionNo(), KOptionSessionYes(), KOptionAlways(),
- KOptionNever(), KOptionSessionNo()};
-
- TInt optionsCntr = 0;
- TBool isOptionExpected = ETrue;
-
- aOptionString.Append(_L("-"));
-
- if (aOptions & UserPromptService::CPolicy::EYes)
- {
- aOptionString.Copy(policyOptions[optionsCntr]);
- aOptionString.Append(_L("-"));
-
- if (aCheckAgainstExpectedOpt)
- {
- if (iExpectedDialogOptions.FindF(policyOptions[optionsCntr]) == KErrNotFound)
- {
- isOptionExpected = EFalse;
- }
- }
- }
- ++optionsCntr;
-
- if (aOptions & UserPromptService::CPolicy::ENo)
- {
- aOptionString.Append(policyOptions[optionsCntr]);
- aOptionString.Append(_L("-"));
-
- if (aCheckAgainstExpectedOpt)
- {
- if (iExpectedDialogOptions.FindF(policyOptions[optionsCntr]) == KErrNotFound)
- {
- isOptionExpected = EFalse;
- }
- }
- }
- ++optionsCntr;
-
- if (aOptions & UserPromptService::CPolicy::ESessionYes)
- {
- aOptionString.Append(policyOptions[optionsCntr]);
- aOptionString.Append(_L("-"));
-
- if (aCheckAgainstExpectedOpt)
- {
- if (iExpectedDialogOptions.FindF(policyOptions[optionsCntr]) == KErrNotFound)
- {
- isOptionExpected = EFalse;
- }
- }
- }
- ++optionsCntr;
-
- if (aOptions & UserPromptService::CPolicy::EAlways)
- {
- aOptionString.Append(policyOptions[optionsCntr]);
- aOptionString.Append(_L("-"));
-
- if (aCheckAgainstExpectedOpt)
- {
- if (iExpectedDialogOptions.FindF(policyOptions[optionsCntr]) == KErrNotFound)
- {
- isOptionExpected = EFalse;
- }
- }
- }
- ++optionsCntr;
-
- if (aOptions & UserPromptService::CPolicy::ENever)
- {
- aOptionString.Append(policyOptions[optionsCntr]);
- aOptionString.Append(_L("-"));
-
- if (aCheckAgainstExpectedOpt)
- {
- if (iExpectedDialogOptions.FindF(policyOptions[optionsCntr]) == KErrNotFound)
- {
- isOptionExpected = EFalse;
- }
- }
- }
- ++optionsCntr;
-
- if (aOptions & UserPromptService::CPolicy::ESessionNo)
- {
- aOptionString.Append(policyOptions[optionsCntr]);
- aOptionString.Append(_L("-"));
-
- if (aCheckAgainstExpectedOpt)
- {
- if (iExpectedDialogOptions.FindF(policyOptions[optionsCntr]) == KErrNotFound)
- {
- isOptionExpected = EFalse;
- }
- }
- }
-
- return isOptionExpected;
- } // End of function.
-
-/** GetValueAt provides the value of data at a specific index (specified by aPos)
-* String containing the values is specified thorugh aArrayString and multiple values
-* are separated by delimeter aDelimeter.
-* aValue is returned.
-*/
-void CIpUpsStep::GetValueAt(const TInt aPos, const TPtrC& aArrayString, const TChar aDelimeter, TDes& aValue)
- {
- TInt posCntr=0;
- TInt itemCntr = -1;
-
- //Initialise it with blank string to avoid any previous copies
- aValue.Copy(_L(""));
-
- while (posCntr < aArrayString.Length() && itemCntr != aPos)
- {
- if (aArrayString[posCntr] != aDelimeter)
- {
- aValue.Append(aArrayString[posCntr]);
- }
- else
- {
- ++itemCntr;
- //Is this the item we are looking for, if not, make space to next one
- if (itemCntr != aPos)
- {
- aValue.Copy(_L(""));
- }
- }
- ++posCntr;
- }
- }
-
-/* TUpsDecisionToString converts TUpsDecision to string.
-*/
-TPtrC CIpUpsStep::TUpsDecisionToString(TUpsDecision aDecision)
- {
- if(aDecision == EUpsDecYes)
- {
- return _L("Yes");
- }
- else if(aDecision == EUpsDecNo)
- {
- return _L("No");
- }
- else if(aDecision == EUpsDecSessionYes)
- {
- return _L("SessionYes");
- }
- else if(aDecision == EUpsDecSessionNo)
- {
- return _L("SessionNo");
- }
- else
- {
- ERR_PRINTF1(_L("Invalid UPS Descision, returning No by default."));
- return _L("No");
- }
- } // End of function.
-
-/* TUpsDecisionFromString converts string value to TUpsDecision.
-*/
-TUpsDecision CIpUpsStep::TUpsDecisionFromString(const TPtrC& aDecision)
- {
- if(aDecision.CompareF(_L("Yes"))==0)
- {
- return EUpsDecYes;
- }
- else if(aDecision.CompareF(_L("No"))==0)
- {
- return EUpsDecNo;
- }
- else if(aDecision.CompareF(_L("SessionYes"))==0)
- {
- return EUpsDecSessionYes;
- }
- else if(aDecision.CompareF(_L("SessionNo"))==0)
- {
- return EUpsDecSessionNo;
- }
- else
- {
- ERR_PRINTF1(_L("Invalid UPS Descision, returning No by default."));
- return EUpsDecNo;
- }
- } // End of function.
-
-/* ButtonToOption converts string value of button presented to CPolicy::TOptions.
-*/
-UserPromptService::CPolicy::TOptions CIpUpsStep::ButtonToOption(const TPtrC& aButton)
- {
- if(aButton.CompareF(_L("Yes"))==0)
- {
- return UserPromptService::CPolicy::EYes;
- }
- else if(aButton.CompareF(_L("No"))==0)
- {
- return UserPromptService::CPolicy::ENo;
- }
- else if(aButton.CompareF(_L("Session"))==0)
- {
- return UserPromptService::CPolicy::ESession;
- }
- else if(aButton.CompareF(_L("SessionYes"))==0)
- {
- return UserPromptService::CPolicy::ESessionYes;
- }
- else if(aButton.CompareF(_L("Always"))==0)
- {
- return UserPromptService::CPolicy::EAlways;
- }
- else if(aButton.CompareF(_L("Never"))==0)
- {
- return UserPromptService::CPolicy::ENever;
- }
- else if(aButton.CompareF(_L("SessionNo"))==0)
- {
- return UserPromptService::CPolicy::ESessionNo;
- }
- else
- {
- ERR_PRINTF1(_L("Invalid Button Option, returning Policy Option No by default."));
- return UserPromptService::CPolicy::ENo;
- }
- } // End of function.
--- a/networkcontrol/qosipscpr/inc/ip_subconparams.h Mon Mar 08 21:44:54 2010 +0000
+++ b/networkcontrol/qosipscpr/inc/ip_subconparams.h Sun Mar 14 13:15:53 2010 +0000
@@ -27,9 +27,7 @@
#define __IP_SUBCONPARAMS_H__
#include <es_sock.h>
-#include <comms-infras/metadata.h>
-#include <comms-infras/metatype.h>
-#include <etelqos.h>
+#include <networking/Qos3GPP_subconparams.h>
// NOTE: This Uid may be changed - See #ifdef at bottom of the file
--- a/networkcontrol/qosipscpr/src/ipscpr.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/networkcontrol/qosipscpr/src/ipscpr.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -20,6 +20,7 @@
@internalComponent
*/
+#include <etelqos.h>
#include "IPSCPRStates.h"
#include "IPSCPR.h"
#include "ipdeftbasescpr.h"
--- a/networkingtestandutils/networkingunittest/DummyNifProtos/inc/Dummynifbinder.h Mon Mar 08 21:44:54 2010 +0000
+++ b/networkingtestandutils/networkingunittest/DummyNifProtos/inc/Dummynifbinder.h Sun Mar 14 13:15:53 2010 +0000
@@ -32,6 +32,7 @@
#include <comms-infras/ss_protflow.h>
#include <comms-infras/ss_flowbinders.h>
#include <comms-infras/commsdebugutility.h>
+#include <e32property.h>
#include "es_protbinder.h"
#include "DummyNifFlow.h"
--- a/networkingtestandutils/networkingunittest/DummyNifProtos/src/Dummynifbinder.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/networkingtestandutils/networkingunittest/DummyNifProtos/src/Dummynifbinder.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -27,6 +27,7 @@
#include <in_iface.h>
#include <comms-infras/nifif.h>
#include <in_sock.h>
+#include <nifmbuf.h>
#include "dummynifvar.h"
#include "Dummynifbinder.h"
#include "DummyProvision.h"
--- a/networkingtestandutils/networkingunittest/dummynif/dummynif.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/networkingtestandutils/networkingunittest/dummynif/dummynif.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -32,6 +32,8 @@
#include <in_chk.h>
#include <in_sock.h>
#include <tcp_hdr.h>
+#include <cdbcols.h>
+#include <cdblen.h>
#include "dummynifvar.h"
#include "dummynif.h"
--- a/networkingtestandutils/networkingunittest/dummynif/dummynif.h Mon Mar 08 21:44:54 2010 +0000
+++ b/networkingtestandutils/networkingunittest/dummynif/dummynif.h Sun Mar 14 13:15:53 2010 +0000
@@ -23,6 +23,7 @@
#include <udp_hdr.h>
#include <in_iface.h>
#include <eui_addr.h> // TE64Addr
+#include <es_prot.h>
#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
#include <comms-infras/nifprvar_internal.h>
#endif
--- a/networkingtestandutils/networkingunittest/dummynif/dummynif6.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/networkingtestandutils/networkingunittest/dummynif/dummynif6.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -25,6 +25,8 @@
#include <in_chk.h>
#include <in_sock.h>
#include <in6_if.h> // KSoIface*, KIf*, TSoInet6IfConfig
+#include <cdbcols.h>
+#include <cdblen.h>
#include "dummynifvar.h"
#include "dummynif.h"
--- a/networkprotocols/iphook/inhook6/group/bld.inf Mon Mar 08 21:44:54 2010 +0000
+++ b/networkprotocols/iphook/inhook6/group/bld.inf Sun Mar 14 13:15:53 2010 +0000
@@ -27,6 +27,7 @@
../include/in_bind.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(in_bind.h)
../include/ip6_hook.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(ip6_hook.h)
../include/in_pkt.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(in_pkt.h)
+../include/in_pkt_platform.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(in_pkt_platform.h)
../include/ip6_hdr.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(ip6_hdr.h)
../include/in_hdr.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(in_hdr.h)
../include/ip4_hdr.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(ip4_hdr.h)
--- a/networkprotocols/iphook/inhook6/include/flow.h Mon Mar 08 21:44:54 2010 +0000
+++ b/networkprotocols/iphook/inhook6/include/flow.h Sun Mar 14 13:15:53 2010 +0000
@@ -32,6 +32,7 @@
#include <nifmbuf.h>
#include "in_pkt.h"
#include "apibase.h"
+#include "in_pkt_platform.h"
//
// TFlowStatus
--- a/networkprotocols/iphook/inhook6/include/in_chk.h Mon Mar 08 21:44:54 2010 +0000
+++ b/networkprotocols/iphook/inhook6/include/in_chk.h Sun Mar 14 13:15:53 2010 +0000
@@ -26,8 +26,9 @@
#ifndef __IN_CHK_H__
#define __IN_CHK_H__
-#include <nifmbuf.h>
#include "in_pkt.h"
+class RMBufChain;
+class RMBufPktInfo;
/** Checksum calculation.
--- a/networkprotocols/iphook/inhook6/include/in_pkt.h Mon Mar 08 21:44:54 2010 +0000
+++ b/networkprotocols/iphook/inhook6/include/in_pkt.h Sun Mar 14 13:15:53 2010 +0000
@@ -26,9 +26,10 @@
#ifndef __IN_PKT_H__
#define __IN_PKT_H__
-#include <nifmbuf.h>
#include "ip6_hdr.h" // ..should eventually be <inet/ip6_hdr.h>? -- msa
#include "ip4_hdr.h"
+class RMBufChain;
+
#define TPACKETHEAD_FRAGMENT 1 //< Enable iFragment in TPacketHead
@@ -102,345 +103,6 @@
};
-// RMBufPacketPeek
-// ***************
-class RMBufPacketPeek : public RMBufChain
- /**
- Extends RMBufChain to add functions to read packet data as a descriptor
- and as an IP header.
-
- The RMBufChain is assumed to contain the raw packet, without
- the info block prepended (e.g. if this class is used for RMBufPacketBase
- derived handle, it must be in "unpacked" state).
-
- @since v7.0
- @publishedAll
- @released
- */
- {
-public:
- IMPORT_C TPtr8 Access(TInt aSize, TUint aOffset = 0);
- IMPORT_C TIpHeader *GetIpHeader();
- };
-
-// TPacketHead
-// ***********
-class TPacketHead
- /**
- Storage for some precomputed information for an outbound packet flow.
-
- The outbound TPacketHead is part of the flow context (CFlowContext).
-
- The CFlowContext::Connect initializes the content from the parameters
- of the flow (TFlowInfo) and runs the connection process.. The connection
- process (MIp6Hook::OpenL and MFlowHook::ReadyL phases) completes the
- information. After this, as long as the flow is connected, the content
- is mostly frozen and <b>must not be modified by anyone</b>.
-
- When there is a need to change any flow information, the changes must
- be done to the flow parameters (and not to TPacketHead). The change of
- flow parameters also sets the CFlowContext::iChanged flag, and this
- eventually causes a new CFlowContext::Connect, which re-initializes
- the TPacketHead with the new information.
-
- For each field in the TPacketHead, the hook writer must follow the
- basic rule (only for fields that it intends to change):
-
- - if some field is changed in MIp6Hook::OpenL, then the previous
- value should be restored in the MFlowHook::ReadyL.
- - an exeception: the hook must omit the restore, if the
- previous value was unspecified value (for example, the source
- address).
- - the content of #iPacket (and #iOffset) are special: they cannot
- be modified in the MIp6Hook::OpenL phase. A hook can
- modify them only in the MFlowHook::ReadyL phase. And, if the hook
- is adding an IP header for tunneling, it must save the current content
- of these fields in the ReadyL function, and then clear out the fields
- (it must make the iPacket empty and zero iOffset). The hook must add
- the saved iPacket content below the added tunnel header in
- MFlowHook::ApplyL .
-
- @since v7.0
- @publishedAll
- @released
- */
- {
-public:
- IMPORT_C TBool ExtHdrGet(TInt aType, TInt& aOfs, TInt& aLen);
- IMPORT_C TBool ExtHdrGetOrPrependL(TInt aType, TInt& aOfs, TInt& aLen);
- IMPORT_C TBool ExtHdrGetOrAppendL(TInt aType, TInt& aOfs, TInt& aLen);
- IMPORT_C void AddDestinationOptionL(const TPtrC8& aOption, TUint8 aAlign=0, TUint8 aModulo=4);
- IMPORT_C void AddDestinationOptionL(const TUint8* aOption, TUint8 aLen, TUint8 aAlign=0, TUint8 aModulo=4);
-
-public:
- /**
- "Virtual" IP header. The IPv6 header stucture is used, but the same
- format is <b>also</b> used for the IPv4 destinations (Version() == 4,
- even though the header format is still IPv6!)
-
- This header is initialized in the beginning of the OpenL phase
- as follows:
- @li Version = 0
- @li Traffic Class, copied from the flow iOptions.iTrafficClass
- @li Flow Label = 0
- @li Payload Length = 0 (dummy field, not used)
- @li Next Header, copied from the flow iProtocol
- @li Hop Limit, copied from the flow iOptions.iHopLimit
- @li Src Address, copied from the flow Local Address (usually unspecified)
- @li Dst Address, copied from the flow Remote Address
-
- At beginning of the ReadyL phase (= at end of OpenL), the destination
- address (and iDstId) are used to find a route on the interface. Depending
- on whether this address is IPv4 (mapped) or IPv6, the Version field is set
- accordingly to either 4 or 6.
-
- After succesfull completion of the ReadyL, this used for *each* packet
- which needs an IP header to be generated on send. The Version() determines
- whether IPv4 or IPv6 frame is to be generated (this is the initial
- header in the packet, *before* running outbound ApplyL hooks):
-
- @verbatim
- IPv6 IPv4
- Version == 6 ==4
- Traffic Class used as is used as TOS
- Flow Label used as is ignored
- Payload Length ignored ignored
- Next Header used as is used as Protocol
- Hop Limit used as is used as TTL
- Src Address used as is used as IPv4 mapped
- Dst Address used as is used as IPv4 mapped
- @endverbatim
- */
- TInet6HeaderIP ip6;
- /**
- Contains the scope id associated with the destination address
- which is stored in #ip6 Dst Address. This id and address must
- always be considered as a unit. Logically, any change changes
- both values.
-
- iDstId is initialized from the flow context TFlowInfo::iRemote.Scope() at
- beginning of the flow connect phase. If application does not define
- this scope id, then the system will attempt to choose a default value
- at beginning of the connect phase. If the default cannot be determined,
- the flow is put into pending state (and no connect happens).
-
- @par MIp6Hook::OpenL
- On entry to the OpenL, the iDstId is always non-zero and destination
- address is specified. If a hook changes the destination address in
- OpenL method, it must provide the correct id value
- which goes with the new destination. If it cannot do this, it
- must either abort the connect by leaving with an error state, or it
- can leave with PENDING (> 0) status to signal there is no route
- for the new destination.
- If the stack cannot find suitable interface for the destination, then
- it aborts the connect phase, and the flow is placed into holding state.
-
- @note
- Only a tunneling hook can safely change the destination
- address (a use of routing header can also be a kind of
- tunneling).
-
- @par MFlowHook::ReadyL
- If the hook changed the destination address (or id) in the OpenL,
- the ReadyL must restore the original values back.
-
- */
- TUint32 iDstId;
- /**
- Contains the scope id associated with the source address
- which is stored in #ip6 Src address. This is defined when the source
- address is defined, and otherwise undefined.
-
- iSrcId is initialized from TFlowInfo::iLocal.Scope() at beginning of the
- flow connect phase. If application defines the source address,
- but does not specify this scope id, then the system chooses
- the id based on the interface defined by the source address.
- If scope and address are both specified, they must match the
- selected interface.
-
- @par MIp6Hook::OpenL
- On entry to the OpenL, the iSrcId (and source address) may be
- undefined (#iSourceSet = 0). If defined (iSourceSet = 1), then
- both address and iSrcId are defined (iSrcId != 0). A hook may
- force a reselection of the source just by zeroing the
- iSourceSet.
-
- @par MFlowHook::ReadyL
- If the hook changed the source address (or id) in the OpenL,
- the ReadyL must restore the original values back, but only
- if the original value was defined (#iSourceSet = 1 in OpenL).
- */
- TUint32 iSrcId;
- /**
- The source address has been set.
-
- This bit indicates whether the value stored in #ip6 src field
- and #iSrcId is to be used as a source address as is.
-
- Initialized from TFlowInfo::iLocalSet, which tells whether user
- specified tbe source address or not (e.g used RSocket Bind method).
- The stack checks the value after each MIp6Hook::OpenL call, and
- if the flag is set, the source in ip6 is used as is. If the flag
- is zero, then the stack performs the normal source address selection
- based on the current destination address (#iSrcId and destination
- address).
-
- @par MIp6Hook::OpenL
- On entry, this flag is always set and source address is defined.
- A hook may clear this flag, if it wants the
- stack choose the source address based on current destination.
- The clearing operation is normally needed only by a tunneling
- hook.
-
- @note
- If the hook specifies the source address, it must be either
- a valid source address for the interface or unspecified
- address.
-
- @par MFlowHook::ReadyL
- Upon entry to the ReadyL, the source address is always fully
- known (the hook can assume that #iSrcId and the #ip6 source
- addresses are valid).
- If the source address was set before the OpenL, then this
- must restore the original value (along with the #iSrcId
- and source address).
- */
- TUint iSourceSet:1;
-#ifdef TPACKETHEAD_FRAGMENT
- /**
- The fragment processing alredy done.
-
- This bit is meaningful only in OpenL phase. If already set,
- then some ealier hook has requested that the packet must
- be fragmented to fit the mtu.
-
- A tunneling hook can set this bit in OpenL, if it needs
- the fragmenting to happen before the ApplyL is called (e.g.
- the fragments are tunneled instead of fragmenting the
- tunneling).
-
- This bit can only be set or left as is. It cannot be cleared
- once set.
- */
- TUint iFragment:1;
-#endif
- /**
- Selector info, the upper layer protocol.
-
- iProtocol has the same value as ip6.NextHeader() when iPacket is empty,
- and otherwise it is the same as NextHeader() of the last extension
- header in the iPacket.
-
- The values of the other selector fields: #iIcmpType, #iIcmpCode
- #iSrcPort and #iDstPort depend on iProtocol. Whenever iProtocol
- is changed, the other fields must be updated accordingly.
-
- @par MIp6Hook::OpenL
- Because iPacket cannot be modified during the OpenL phase, the
- content of this field and the Next Header (protocol) field in
- the #ip6 pseudoheader must always be the same. This field should
- be considered as <b>read-only</b>, unless the hook intends to
- apply IP-in-IP tunneling, in which case the hook <b>must</b>
- change the value to the appropriate tunneling protocol
- (#KProtocolInet6Ipip or #KProtocolInetIpip).
-
- @par MFlowHook::ReadyL
- Only a tunneling hook needs to restore the value here to match
- the original upper layer protocol. See #iPacket for
- more detailed information.
- */
- TUint8 iProtocol;
- /**
- Selector field whose value depends on #iProtocol.
-
- If this field does not have meaning with the protocol,
- the field content should be set to ZERO.
- */
- TUint8 iIcmpType;
- /**
- Selector field whose value depends on #iProtocol.
-
- If this field does not have meaning with the protocol,
- the field content should be set to ZERO.
- */
- TUint8 iIcmpCode;
- /**
- Selector field whose value depends on #iProtocol.
-
- If this field does not have meaning with the protocol,
- the field content should be set to ZERO.
- */
- TUint16 iSrcPort;
- /**
- Selector field whose value depends on #iProtocol.
-
- If this field does not have meaning with the protocol,
- the field content should be set to ZERO.
- */
- TUint16 iDstPort;
- /**
- The amount of pre-computed IPv6 extension headers in iPacket which
- are copied to the beginning of each outgoing packet
-
- If iOffset > 0, then #iPacket includes that much of extension
- headers that are copied in front of each packet.
- */
- TInt iOffset;
- /**
- Pre-computed extension headers for all packets in this flow.
-
- These can only be added in the ReadyL phase. If any of the
- ReadyL's adds extension headers into this, it must take care
- of maintaining the correct Next Header in the virtual IP header
- (and the original upper layer protocol must be placed in the
- next header of the last extension header added.
-
- Stack copies the content of this to each outgoing packet, just below
- the IP header, before running the ApplyL functions of the outbound
- flow hooks.
-
- @par MIp6Hook::OpenL
- The iPacket <b>must not</b> be modified during the OpenL phase.
-
- @par MFlowHook::ReadyL
- A non-tunneling hook may add extension headers into the current
- iPacket. A tunneling hook has more complex requirements:
- it must save the current iPacket and #iOffset and initialize
- iOffset = 0, and iPacket as empty.
-
- @par MFlowHook::ApplyL
- When a tunneling hook adds the tunneling IP header, it
- must also copy the saved iPacket below the added IP header.
- */
- RMBufPacketPeek iPacket;
- /**
- The received packet which caused an ICMP error reply to be sent.
-
- This is only used for ICMP error repply flows, and should be
- ignored by others -- mainly for IPSEC hook. The packet, if
- present, is in unpacked state.
- */
- RMBufPacketBase iIcmp;
- /**
- The current destination interface.
-
- This is ONLY used during connect/OpenL phase.
-
- The value is maintained by the stack, and is intended as
- read-only information for the hooks that have a use for
- it (for example, IPSEC implementing VPN specific policies).
-
- A hook must not modify this value (the stack will recompute
- the value after each OpenL, based on the possibly changed
- address parameters in the TPacketHead)
-
- @par MIp6Hook::OpenL
- <b>read-only</b>
- @par MFlowHook::ReadyL
- <b>read-only</b>
- */
- TUint32 iInterfaceIndex;
- };
class TInet6PacketBase
/**
@@ -593,121 +255,4 @@
};
-// TPacketPoker
-// ************
-class TPacketPoker
- /**
- Provides a utility for linear scanning of a chain of RMBuf objects (an RMBufChain).
-
- An object of this type maintains a current point in the RMBufChain. This point
- can only move forward, and a leave occurs if the point advances beyond the
- end of the chain.
-
- Any pointers and aligns arranged before the current point, remain valid: for
- example, you can save a reference and advance the pointer, and the reference
- remains usable.
-
- If instead you need to go to a single specified offset, then use
- RMBufChain::Goto() or RMBufPacketPeek::Access().
-
- @post
- A Generic implementation assert:
- after construct, iTail == 0 iff iCurrent == 0 (all scanned), or
- in other words: as long as there are bytes after current point,
- iTail will be non-zero (and More() returns ETrue).
- All methods maintain this invariant or leave, if impossible.
-
- Some other utility methods, not directly related to scanning, are also included.
- @since v7.0
- @publishedAll
- @released
- */
- {
-public:
- IMPORT_C TPacketPoker(RMBufChain &aChain);
-
- inline void SkipL(TInt aSize)
- /**
- Moves the current point forward a specified number of bytes.
-
- @param aSize Number of bytes to move forward
- @leave KErrEof
- if the request cannot be satisfied.
- */
- { if (aSize < iTail) { iTail -= aSize; iOffset += aSize; } else OverL(aSize); }
-
- inline TUint8 *Ptr() const
- /**
- Raw pointer to the current point (can be invalid, if iTail = 0).
-
- @note Internal "unsafe" method
- */
- {return iCurrent->Ptr() + iOffset; }
-
- inline TUint8 *ReferenceL(TInt aSize = 1)
- /**
- Gets a pointer to the current point, such that
- at least the specified minimum number of bytes can be read.
-
- @param aSize
- Specified minimum number of bytes to be read through
- the returned pointer.
- @return Raw data pointer
- @leave KErrEof
- if the request cannot be satisfied.
- */
- { if (iTail >= aSize) return Ptr(); else return AdjustL(aSize); }
-
- inline TUint8 *ReferenceAndSkipL(TInt aSize)
- /**
- Gets a pointer to the current point, such that at least the
- specified minimum number of bytes can be read,
- and moves the point the specified number of bytes forward.
-
- @param aSize
- Specified minimum number of bytes to be read through the returned
- pointer, and the number of bytes to move forward
- @return
- Raw data pointer
- @leave KErrEof
- if the request cannot be satisfied.
- */
- { TUint8 *x = ReferenceL(aSize); SkipL(aSize); return x; }
-
- inline TInt Remainder() const
- /**
- Gets the length of the contiguous space after the current point.
-
- @return Length after the current point
- */
- { return iTail; }
-
- inline TBool AtBegin() const
- /**
- Tests whether the current point is at the beginning of an RMBuf.
-
- @return ETrue if current point is at the beginning
- */
- { return iOffset == 0; }
-
- inline TBool More() const
- /**
- Tests whether there is more data to scan.
-
- @return ETrue if there is more data to scan
- */
- { return iTail > 0; }
-
- IMPORT_C static TBool IsExtensionHeader(TInt aProtocolId);
-private:
- IMPORT_C void OverL(TInt aSize);
- IMPORT_C TUint8 *AdjustL(TInt aSize);
- /** The RMBuf of the current point. */
- RMBuf *iCurrent;
- /** The offset of the current point in the RMBuf. */
- TInt iOffset;
- /** Remaining bytes starting from the current point in the RMBuf. */
- TInt iTail;
- };
-
#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networkprotocols/iphook/inhook6/include/in_pkt_platform.h Sun Mar 14 13:15:53 2010 +0000
@@ -0,0 +1,488 @@
+// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// in_pkt.h - packet handling routines
+// Generic packet handling utility for mapping packet handling to the RMBufChain.
+//
+
+
+
+/**
+ @file in_pkt_partner.h
+ @publishedPartner
+ @released
+*/
+
+#ifndef __IN_PKTPARTNER_H__
+#define __IN_PKTPARTNER_H__
+
+#include <nifmbuf.h>
+
+// RMBufPacketPeek
+// ***************
+class RMBufPacketPeek : public RMBufChain
+ /**
+ Extends RMBufChain to add functions to read packet data as a descriptor
+ and as an IP header.
+
+ The RMBufChain is assumed to contain the raw packet, without
+ the info block prepended (e.g. if this class is used for RMBufPacketBase
+ derived handle, it must be in "unpacked" state).
+
+ @since v7.0
+ @publishedAll
+ @released
+ */
+ {
+public:
+ IMPORT_C TPtr8 Access(TInt aSize, TUint aOffset = 0);
+ IMPORT_C TIpHeader *GetIpHeader();
+ };
+
+// TPacketHead
+// ***********
+class TPacketHead
+ /**
+ Storage for some precomputed information for an outbound packet flow.
+
+ The outbound TPacketHead is part of the flow context (CFlowContext).
+
+ The CFlowContext::Connect initializes the content from the parameters
+ of the flow (TFlowInfo) and runs the connection process.. The connection
+ process (MIp6Hook::OpenL and MFlowHook::ReadyL phases) completes the
+ information. After this, as long as the flow is connected, the content
+ is mostly frozen and <b>must not be modified by anyone</b>.
+
+ When there is a need to change any flow information, the changes must
+ be done to the flow parameters (and not to TPacketHead). The change of
+ flow parameters also sets the CFlowContext::iChanged flag, and this
+ eventually causes a new CFlowContext::Connect, which re-initializes
+ the TPacketHead with the new information.
+
+ For each field in the TPacketHead, the hook writer must follow the
+ basic rule (only for fields that it intends to change):
+
+ - if some field is changed in MIp6Hook::OpenL, then the previous
+ value should be restored in the MFlowHook::ReadyL.
+ - an exeception: the hook must omit the restore, if the
+ previous value was unspecified value (for example, the source
+ address).
+ - the content of #iPacket (and #iOffset) are special: they cannot
+ be modified in the MIp6Hook::OpenL phase. A hook can
+ modify them only in the MFlowHook::ReadyL phase. And, if the hook
+ is adding an IP header for tunneling, it must save the current content
+ of these fields in the ReadyL function, and then clear out the fields
+ (it must make the iPacket empty and zero iOffset). The hook must add
+ the saved iPacket content below the added tunnel header in
+ MFlowHook::ApplyL .
+
+ @since v7.0
+ @publishedAll
+ @released
+ */
+ {
+public:
+ IMPORT_C TBool ExtHdrGet(TInt aType, TInt& aOfs, TInt& aLen);
+ IMPORT_C TBool ExtHdrGetOrPrependL(TInt aType, TInt& aOfs, TInt& aLen);
+ IMPORT_C TBool ExtHdrGetOrAppendL(TInt aType, TInt& aOfs, TInt& aLen);
+ IMPORT_C void AddDestinationOptionL(const TPtrC8& aOption, TUint8 aAlign=0, TUint8 aModulo=4);
+ IMPORT_C void AddDestinationOptionL(const TUint8* aOption, TUint8 aLen, TUint8 aAlign=0, TUint8 aModulo=4);
+
+public:
+ /**
+ "Virtual" IP header. The IPv6 header stucture is used, but the same
+ format is <b>also</b> used for the IPv4 destinations (Version() == 4,
+ even though the header format is still IPv6!)
+
+ This header is initialized in the beginning of the OpenL phase
+ as follows:
+ @li Version = 0
+ @li Traffic Class, copied from the flow iOptions.iTrafficClass
+ @li Flow Label = 0
+ @li Payload Length = 0 (dummy field, not used)
+ @li Next Header, copied from the flow iProtocol
+ @li Hop Limit, copied from the flow iOptions.iHopLimit
+ @li Src Address, copied from the flow Local Address (usually unspecified)
+ @li Dst Address, copied from the flow Remote Address
+
+ At beginning of the ReadyL phase (= at end of OpenL), the destination
+ address (and iDstId) are used to find a route on the interface. Depending
+ on whether this address is IPv4 (mapped) or IPv6, the Version field is set
+ accordingly to either 4 or 6.
+
+ After succesfull completion of the ReadyL, this used for *each* packet
+ which needs an IP header to be generated on send. The Version() determines
+ whether IPv4 or IPv6 frame is to be generated (this is the initial
+ header in the packet, *before* running outbound ApplyL hooks):
+
+ @verbatim
+ IPv6 IPv4
+ Version == 6 ==4
+ Traffic Class used as is used as TOS
+ Flow Label used as is ignored
+ Payload Length ignored ignored
+ Next Header used as is used as Protocol
+ Hop Limit used as is used as TTL
+ Src Address used as is used as IPv4 mapped
+ Dst Address used as is used as IPv4 mapped
+ @endverbatim
+ */
+ TInet6HeaderIP ip6;
+ /**
+ Contains the scope id associated with the destination address
+ which is stored in #ip6 Dst Address. This id and address must
+ always be considered as a unit. Logically, any change changes
+ both values.
+
+ iDstId is initialized from the flow context TFlowInfo::iRemote.Scope() at
+ beginning of the flow connect phase. If application does not define
+ this scope id, then the system will attempt to choose a default value
+ at beginning of the connect phase. If the default cannot be determined,
+ the flow is put into pending state (and no connect happens).
+
+ @par MIp6Hook::OpenL
+ On entry to the OpenL, the iDstId is always non-zero and destination
+ address is specified. If a hook changes the destination address in
+ OpenL method, it must provide the correct id value
+ which goes with the new destination. If it cannot do this, it
+ must either abort the connect by leaving with an error state, or it
+ can leave with PENDING (> 0) status to signal there is no route
+ for the new destination.
+ If the stack cannot find suitable interface for the destination, then
+ it aborts the connect phase, and the flow is placed into holding state.
+
+ @note
+ Only a tunneling hook can safely change the destination
+ address (a use of routing header can also be a kind of
+ tunneling).
+
+ @par MFlowHook::ReadyL
+ If the hook changed the destination address (or id) in the OpenL,
+ the ReadyL must restore the original values back.
+
+ */
+ TUint32 iDstId;
+ /**
+ Contains the scope id associated with the source address
+ which is stored in #ip6 Src address. This is defined when the source
+ address is defined, and otherwise undefined.
+
+ iSrcId is initialized from TFlowInfo::iLocal.Scope() at beginning of the
+ flow connect phase. If application defines the source address,
+ but does not specify this scope id, then the system chooses
+ the id based on the interface defined by the source address.
+ If scope and address are both specified, they must match the
+ selected interface.
+
+ @par MIp6Hook::OpenL
+ On entry to the OpenL, the iSrcId (and source address) may be
+ undefined (#iSourceSet = 0). If defined (iSourceSet = 1), then
+ both address and iSrcId are defined (iSrcId != 0). A hook may
+ force a reselection of the source just by zeroing the
+ iSourceSet.
+
+ @par MFlowHook::ReadyL
+ If the hook changed the source address (or id) in the OpenL,
+ the ReadyL must restore the original values back, but only
+ if the original value was defined (#iSourceSet = 1 in OpenL).
+ */
+ TUint32 iSrcId;
+ /**
+ The source address has been set.
+
+ This bit indicates whether the value stored in #ip6 src field
+ and #iSrcId is to be used as a source address as is.
+
+ Initialized from TFlowInfo::iLocalSet, which tells whether user
+ specified tbe source address or not (e.g used RSocket Bind method).
+ The stack checks the value after each MIp6Hook::OpenL call, and
+ if the flag is set, the source in ip6 is used as is. If the flag
+ is zero, then the stack performs the normal source address selection
+ based on the current destination address (#iSrcId and destination
+ address).
+
+ @par MIp6Hook::OpenL
+ On entry, this flag is always set and source address is defined.
+ A hook may clear this flag, if it wants the
+ stack choose the source address based on current destination.
+ The clearing operation is normally needed only by a tunneling
+ hook.
+
+ @note
+ If the hook specifies the source address, it must be either
+ a valid source address for the interface or unspecified
+ address.
+
+ @par MFlowHook::ReadyL
+ Upon entry to the ReadyL, the source address is always fully
+ known (the hook can assume that #iSrcId and the #ip6 source
+ addresses are valid).
+ If the source address was set before the OpenL, then this
+ must restore the original value (along with the #iSrcId
+ and source address).
+ */
+ TUint iSourceSet:1;
+#ifdef TPACKETHEAD_FRAGMENT
+ /**
+ The fragment processing alredy done.
+
+ This bit is meaningful only in OpenL phase. If already set,
+ then some ealier hook has requested that the packet must
+ be fragmented to fit the mtu.
+
+ A tunneling hook can set this bit in OpenL, if it needs
+ the fragmenting to happen before the ApplyL is called (e.g.
+ the fragments are tunneled instead of fragmenting the
+ tunneling).
+
+ This bit can only be set or left as is. It cannot be cleared
+ once set.
+ */
+ TUint iFragment:1;
+#endif
+ /**
+ Selector info, the upper layer protocol.
+
+ iProtocol has the same value as ip6.NextHeader() when iPacket is empty,
+ and otherwise it is the same as NextHeader() of the last extension
+ header in the iPacket.
+
+ The values of the other selector fields: #iIcmpType, #iIcmpCode
+ #iSrcPort and #iDstPort depend on iProtocol. Whenever iProtocol
+ is changed, the other fields must be updated accordingly.
+
+ @par MIp6Hook::OpenL
+ Because iPacket cannot be modified during the OpenL phase, the
+ content of this field and the Next Header (protocol) field in
+ the #ip6 pseudoheader must always be the same. This field should
+ be considered as <b>read-only</b>, unless the hook intends to
+ apply IP-in-IP tunneling, in which case the hook <b>must</b>
+ change the value to the appropriate tunneling protocol
+ (#KProtocolInet6Ipip or #KProtocolInetIpip).
+
+ @par MFlowHook::ReadyL
+ Only a tunneling hook needs to restore the value here to match
+ the original upper layer protocol. See #iPacket for
+ more detailed information.
+ */
+ TUint8 iProtocol;
+ /**
+ Selector field whose value depends on #iProtocol.
+
+ If this field does not have meaning with the protocol,
+ the field content should be set to ZERO.
+ */
+ TUint8 iIcmpType;
+ /**
+ Selector field whose value depends on #iProtocol.
+
+ If this field does not have meaning with the protocol,
+ the field content should be set to ZERO.
+ */
+ TUint8 iIcmpCode;
+ /**
+ Selector field whose value depends on #iProtocol.
+
+ If this field does not have meaning with the protocol,
+ the field content should be set to ZERO.
+ */
+ TUint16 iSrcPort;
+ /**
+ Selector field whose value depends on #iProtocol.
+
+ If this field does not have meaning with the protocol,
+ the field content should be set to ZERO.
+ */
+ TUint16 iDstPort;
+ /**
+ The amount of pre-computed IPv6 extension headers in iPacket which
+ are copied to the beginning of each outgoing packet
+
+ If iOffset > 0, then #iPacket includes that much of extension
+ headers that are copied in front of each packet.
+ */
+ TInt iOffset;
+ /**
+ Pre-computed extension headers for all packets in this flow.
+
+ These can only be added in the ReadyL phase. If any of the
+ ReadyL's adds extension headers into this, it must take care
+ of maintaining the correct Next Header in the virtual IP header
+ (and the original upper layer protocol must be placed in the
+ next header of the last extension header added.
+
+ Stack copies the content of this to each outgoing packet, just below
+ the IP header, before running the ApplyL functions of the outbound
+ flow hooks.
+
+ @par MIp6Hook::OpenL
+ The iPacket <b>must not</b> be modified during the OpenL phase.
+
+ @par MFlowHook::ReadyL
+ A non-tunneling hook may add extension headers into the current
+ iPacket. A tunneling hook has more complex requirements:
+ it must save the current iPacket and #iOffset and initialize
+ iOffset = 0, and iPacket as empty.
+
+ @par MFlowHook::ApplyL
+ When a tunneling hook adds the tunneling IP header, it
+ must also copy the saved iPacket below the added IP header.
+ */
+ RMBufPacketPeek iPacket;
+ /**
+ The received packet which caused an ICMP error reply to be sent.
+
+ This is only used for ICMP error repply flows, and should be
+ ignored by others -- mainly for IPSEC hook. The packet, if
+ present, is in unpacked state.
+ */
+ RMBufPacketBase iIcmp;
+ /**
+ The current destination interface.
+
+ This is ONLY used during connect/OpenL phase.
+
+ The value is maintained by the stack, and is intended as
+ read-only information for the hooks that have a use for
+ it (for example, IPSEC implementing VPN specific policies).
+
+ A hook must not modify this value (the stack will recompute
+ the value after each OpenL, based on the possibly changed
+ address parameters in the TPacketHead)
+
+ @par MIp6Hook::OpenL
+ <b>read-only</b>
+ @par MFlowHook::ReadyL
+ <b>read-only</b>
+ */
+ TUint32 iInterfaceIndex;
+ };
+
+// TPacketPoker
+// ************
+class TPacketPoker
+ /**
+ Provides a utility for linear scanning of a chain of RMBuf objects (an RMBufChain).
+
+ An object of this type maintains a current point in the RMBufChain. This point
+ can only move forward, and a leave occurs if the point advances beyond the
+ end of the chain.
+
+ Any pointers and aligns arranged before the current point, remain valid: for
+ example, you can save a reference and advance the pointer, and the reference
+ remains usable.
+
+ If instead you need to go to a single specified offset, then use
+ RMBufChain::Goto() or RMBufPacketPeek::Access().
+
+ @post
+ A Generic implementation assert:
+ after construct, iTail == 0 iff iCurrent == 0 (all scanned), or
+ in other words: as long as there are bytes after current point,
+ iTail will be non-zero (and More() returns ETrue).
+ All methods maintain this invariant or leave, if impossible.
+
+ Some other utility methods, not directly related to scanning, are also included.
+ @since v7.0
+ @publishedAll
+ @released
+ */
+ {
+public:
+ IMPORT_C TPacketPoker(RMBufChain &aChain);
+
+ inline void SkipL(TInt aSize)
+ /**
+ Moves the current point forward a specified number of bytes.
+
+ @param aSize Number of bytes to move forward
+ @leave KErrEof
+ if the request cannot be satisfied.
+ */
+ { if (aSize < iTail) { iTail -= aSize; iOffset += aSize; } else OverL(aSize); }
+
+ inline TUint8 *Ptr() const
+ /**
+ Raw pointer to the current point (can be invalid, if iTail = 0).
+
+ @note Internal "unsafe" method
+ */
+ {return iCurrent->Ptr() + iOffset; }
+
+ inline TUint8 *ReferenceL(TInt aSize = 1)
+ /**
+ Gets a pointer to the current point, such that
+ at least the specified minimum number of bytes can be read.
+
+ @param aSize
+ Specified minimum number of bytes to be read through
+ the returned pointer.
+ @return Raw data pointer
+ @leave KErrEof
+ if the request cannot be satisfied.
+ */
+ { if (iTail >= aSize) return Ptr(); else return AdjustL(aSize); }
+
+ inline TUint8 *ReferenceAndSkipL(TInt aSize)
+ /**
+ Gets a pointer to the current point, such that at least the
+ specified minimum number of bytes can be read,
+ and moves the point the specified number of bytes forward.
+
+ @param aSize
+ Specified minimum number of bytes to be read through the returned
+ pointer, and the number of bytes to move forward
+ @return
+ Raw data pointer
+ @leave KErrEof
+ if the request cannot be satisfied.
+ */
+ { TUint8 *x = ReferenceL(aSize); SkipL(aSize); return x; }
+
+ inline TInt Remainder() const
+ /**
+ Gets the length of the contiguous space after the current point.
+
+ @return Length after the current point
+ */
+ { return iTail; }
+
+ inline TBool AtBegin() const
+ /**
+ Tests whether the current point is at the beginning of an RMBuf.
+
+ @return ETrue if current point is at the beginning
+ */
+ { return iOffset == 0; }
+
+ inline TBool More() const
+ /**
+ Tests whether there is more data to scan.
+
+ @return ETrue if there is more data to scan
+ */
+ { return iTail > 0; }
+
+ IMPORT_C static TBool IsExtensionHeader(TInt aProtocolId);
+private:
+ IMPORT_C void OverL(TInt aSize);
+ IMPORT_C TUint8 *AdjustL(TInt aSize);
+ /** The RMBuf of the current point. */
+ RMBuf *iCurrent;
+ /** The offset of the current point in the RMBuf. */
+ TInt iOffset;
+ /** Remaining bytes starting from the current point in the RMBuf. */
+ TInt iTail;
+ };
+
+#endif
--- a/networkprotocols/iphook/inhook6/src/in_chk.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/networkprotocols/iphook/inhook6/src/in_chk.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -16,6 +16,7 @@
#include <in_sock.h> // IPv6 enhanced in_sock.h
#include "in_chk.h"
+#include "in_pkt_platform.h"
EXPORT_C void TChecksum::Add(RMBufChain &aPacket, TInt aOffset)
--- a/networkprotocols/iphook/inhook6/src/in_pkt.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/networkprotocols/iphook/inhook6/src/in_pkt.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -18,7 +18,9 @@
//
#include "in_pkt.h"
+#include "in_pkt_platform.h"
#include "ext_hdr.h"
+#include <nifmbuf.h>
#define OPTIMIZE_PADDING
--- a/networkprotocols/tcpipv4v6prt/inc/loop6.h Mon Mar 08 21:44:54 2010 +0000
+++ b/networkprotocols/tcpipv4v6prt/inc/loop6.h Sun Mar 14 13:15:53 2010 +0000
@@ -29,6 +29,7 @@
#include <nifman.h>
# include <comms-infras/nifif.h> // ..for CNifIfBase in Epoc R6 and later
#include <nifmbuf.h>
+#include <es_prot.h>
const TUint KProtocolInet6Loop = 0x1F00; // Virtual
--- a/networkprotocols/tcpipv4v6prt/src/iface.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/networkprotocols/tcpipv4v6prt/src/iface.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -75,7 +75,7 @@
#include <in_sock.h>
#include "inet6log.h"
#include "iface.h"
-#include <in6_if.h> // IPv6 driver API specifications
+#include <in_iface.h> // IPv6 driver API specifications
#include <icmp6_hdr.h>
#include <in_chk.h>
#include <ip6_hook.h>
@@ -5538,12 +5538,20 @@
// Should this also check whether address type is same?
// Changing just type does not work with this code!
// -- msa 24.10.2003
- if (aId.IsSet() && aPrefix == aId.iPrefix && aAddr.IsEqual(aId.iId))
- return 0; // Id is same as before, no change!
if (aPrefix < 0 || aPrefix > 128)
return 0; // Invalid length, do nothing!
if (TIp46Addr::Cast(aAddr).IsMulticast())
return 0; // A multicast address cannot be my own.
+ if (aId.IsSet() && aPrefix == aId.iPrefix && aAddr.IsEqual(aId.iId))
+ {
+ // Id has not changed but expecting some change in any of
+ // the other interface fields. So raising a Interface change event
+ // for the subscribers to keep themselves updated
+
+ // Send notification to the event service
+ NotifyInterfaceEvent(EventTypeModify);
+ return 1;
+ }
UpdateIdRoutes(aId, 0); // Remove old route (if needed)
aId.iId = aAddr;
--- a/networkprotocols/tcpipv4v6prt/src/loop6.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/networkprotocols/tcpipv4v6prt/src/loop6.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -16,7 +16,7 @@
#include "in_fmly.h"
#include "loop6.h"
-#include <in6_if.h> // KSoIf*
+#include <in_iface.h> // KSoIf*
#include "networkinfo.h"
CIfLoop6::CIfLoop6()
--- a/package_definition.xml Mon Mar 08 21:44:54 2010 +0000
+++ b/package_definition.xml Sun Mar 14 13:15:53 2010 +0000
@@ -92,9 +92,6 @@
<component id="commsuserpromptmgr" name="Comms User Prompt Manager" introduced="^3" purpose="mandatory">
<unit bldFile="networkcontrol/commsuserpromptmgr/group" mrp="networkcontrol/commsuserpromptmgr/group/networking_netups.mrp"/>
</component>
- <component id="ipupsplugins" name="IP UPS Plugins" introduced="^3" purpose="optional" class="plugin">
- <unit bldFile="networkcontrol/ipupsplugins/group" mrp="networkcontrol/ipupsplugins/group/networking_ipups.mrp"/>
- </component>
</collection>
<collection id="networkprotocols" name="Network Protocols" level="plugin">
<component id="tcpipv4config" name="TCP/IPv4/v6 Config" introduced="7.0" purpose="mandatory" class="config" filter="test">
--- a/tcpiputils/dhcp/src/DHCPDb.cpp Mon Mar 08 21:44:54 2010 +0000
+++ b/tcpiputils/dhcp/src/DHCPDb.cpp Sun Mar 14 13:15:53 2010 +0000
@@ -27,6 +27,7 @@
#include <comms-infras/metabuffer.h>
#include <metadatabase.h>
#include <commsdattypesv1_1.h>
+#include <es_prot.h>
#include "DhcpIP6Msg.h"
using namespace CommsDat;
--- a/tcpiputils/dhcp/te_dhcp/include/te_dhcpTestServer.h Mon Mar 08 21:44:54 2010 +0000
+++ b/tcpiputils/dhcp/te_dhcp/include/te_dhcpTestServer.h Sun Mar 14 13:15:53 2010 +0000
@@ -25,6 +25,8 @@
#include <test/testexecuteserverbase.h>
#include <es_sock.h>
+#include <es_prot.h>
+#include <cdbover.h>
#include <commdbconnpref.h>
#include <comms-infras/netcfgextndhcpmsg.h>
//#include "DHCPIP4Msg.h"
--- a/tcpiputils/networkaddressandporttranslation/inc/naptutil.h Mon Mar 08 21:44:54 2010 +0000
+++ b/tcpiputils/networkaddressandporttranslation/inc/naptutil.h Sun Mar 14 13:15:53 2010 +0000
@@ -24,6 +24,8 @@
#include <e32std.h>
#include <e32base.h>
#include <nifman.h>
+#include <es_prot.h>
+#include <cdbover.h>
#include <metadatabase.h>
#include <commsdattypesv1_1.h>
#include <in_sock.h>