Catchup to latest Symbian^4 GCC_SURGE
authorWilliam Roberts <williamr@symbian.org>
Thu, 22 Jul 2010 16:48:06 +0100
branchGCC_SURGE
changeset 46 73696f712f10
parent 34 b433d36685ef (current diff)
parent 42 88121cf79045 (diff)
child 47 a96f0f8e6602
Catchup to latest Symbian^4
linklayercontrol/networkinterfacemgr/eabi/agentprcoreU.def
linklayerprotocols/pppnif/eabi/pppmainU.DEF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build.config.xml	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,109 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition [
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset 
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED  
+  span CDATA #IMPLIED
+  level CDATA #IMPLIED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>
+  <!ENTITY layer_real_source_path "sf/os/networkingsrv">
+]>
+
+<SystemDefinition name="networkingsrv" schema="1.4.0">
+  <systemModel>
+    <layer name="os_layer">
+      <module name="networkingsrv">
+	  	<unit unitID="NetSrvDo.buildall" mrp="" bldFile="sf\os\networkingsrv\group" name="networkingsrv" />
+      </module>
+    </layer>
+	<layer name="api_test_layer">
+      <module name="networkingsrv_test">
+        <unit unitID="NetSrvDo.networkingsrv_test" mrp="" bldFile="sf\os\networkingsrv\group" name="networkingsrv_test" />
+      </module>
+    </layer>
+  </systemModel>
+</SystemDefinition>
--- a/linklayercontrol/networkinterfacemgr/agentprcore/src/agentscpractivities.cpp	Mon Jun 21 22:44:36 2010 +0100
+++ b/linklayercontrol/networkinterfacemgr/agentprcore/src/agentscpractivities.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -95,6 +95,18 @@
 NODEACTIVITY_END()
 }
 
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+namespace AgentSCprParamRequestActivity
+{
+DECLARE_DEFINE_NODEACTIVITY(ECFActivityParamRequest, AgentSCprParamRequest, TCFScpr::TSetParamsRequest)
+    FIRST_NODEACTIVITY_ENTRY(PRStates::TAwaitingParamRequest, CoreNetStates::TNoTagOrBearerPresent)
+    NODEACTIVITY_ENTRY(CoreNetStates::KBearerPresent, PRStates::TPassToServiceProvider, CoreNetStates::TAwaitingParamResponse, MeshMachine::TTag<CoreNetStates::KBearerPresent>)
+    LAST_NODEACTIVITY_ENTRY(CoreNetStates::KBearerPresent, PRStates::TStoreParamsAndPostToOriginators)
+    LAST_NODEACTIVITY_ENTRY(KNoTag, PRStates::TRespondWithCurrentParams)
+NODEACTIVITY_END()
+}
+#endif //#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+
 namespace AgentSCprDestroyActivity
 {
 //Overridden destroy for cleaning up the agent if its still about
@@ -125,6 +137,9 @@
    ACTIVITY_MAP_ENTRY(AgentSCprStartActivity, AgentSCprStart)
    ACTIVITY_MAP_ENTRY(AgentSCprStopActivity, AgentSCprStop)
    ACTIVITY_MAP_ENTRY(AgentSCprDataClientStoppedActivity, AgentSCprDataClientStopped)
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+   ACTIVITY_MAP_ENTRY(AgentSCprParamRequestActivity, AgentSCprParamRequest)
+#endif //#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 ACTIVITY_MAP_END_BASE(SCprActivities, coreSCprActivities)
 }
 
--- a/linklayercontrol/networkinterfacemgr/agentprcore/src/tunnelagentcpr.cpp	Mon Jun 21 22:44:36 2010 +0100
+++ b/linklayercontrol/networkinterfacemgr/agentprcore/src/tunnelagentcpr.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -66,6 +66,15 @@
 NODEACTIVITY_END()
 }
 
+namespace TunnelGoneDownActivity
+{
+DECLARE_DEFINE_NODEACTIVITY(ECFActivityGoneDown, TunnelGoneDown, TCFControlClient::TGoneDown)
+    // Our Service Provider has gone down unexpectedly (we haven't issued a TStop)
+    FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingGoneDown, MeshMachine::TNoTag)
+    LAST_NODEACTIVITY_ENTRY(KNoTag, MeshMachine::TDoNothing)
+NODEACTIVITY_END()
+}
+
 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 namespace TunnelAgentCprNotificationActivity
 {
@@ -78,6 +87,7 @@
 {
 DECLARE_DEFINE_ACTIVITY_MAP(TunnelAgentCprActivities)
 	ACTIVITY_MAP_ENTRY(TunnelAgentCprStartActivity, TunnelCprStart)
+      ACTIVITY_MAP_ENTRY(TunnelGoneDownActivity, TunnelGoneDown)
 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 	ACTIVITY_MAP_ENTRY(TunnelAgentCprNotificationActivity, TunnelAgentCprNotification)
 #endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
--- a/linklayercontrol/networkinterfacemgr/eabi/agentprcoreU.def	Mon Jun 21 22:44:36 2010 +0100
+++ b/linklayercontrol/networkinterfacemgr/eabi/agentprcoreU.def	Thu Jul 22 16:48:06 2010 +0100
@@ -190,10 +190,9 @@
 	_ZN28CAgentMetaConnectionProvider15GetDes8SettingLERK7TDesC16R5TDes8PN5ESock14MPlatsecApiExtE @ 189 NONAME
 	_ZN28CAgentMetaConnectionProvider16GetDes16SettingLERK7TDesC16R6TDes16PN5ESock14MPlatsecApiExtE @ 190 NONAME
 	_ZN28CAgentMetaConnectionProvider18GetLongDesSettingLERK7TDesC16RP7HBufC16PN5ESock14MPlatsecApiExtE @ 191 NONAME
-	_ZThn176_N28CAgentMetaConnectionProvider14GetIntSettingLERK7TDesC16RmPN5ESock14MPlatsecApiExtE @ 192 NONAME ABSENT
-	_ZThn176_N28CAgentMetaConnectionProvider15GetBoolSettingLERK7TDesC16RiPN5ESock14MPlatsecApiExtE @ 193 NONAME ABSENT
-	_ZThn176_N28CAgentMetaConnectionProvider15GetDes8SettingLERK7TDesC16R5TDes8PN5ESock14MPlatsecApiExtE @ 194 NONAME ABSENT
-	_ZThn176_N28CAgentMetaConnectionProvider16GetDes16SettingLERK7TDesC16R6TDes16PN5ESock14MPlatsecApiExtE @ 195 NONAME ABSENT
-	_ZThn176_N28CAgentMetaConnectionProvider18GetLongDesSettingLERK7TDesC16RP7HBufC16PN5ESock14MPlatsecApiExtE @ 196 NONAME ABSENT
+	_ZThn180_N28CAgentMetaConnectionProvider14GetIntSettingLERK7TDesC16RmPN5ESock14MPlatsecApiExtE @ 192 NONAME
+	_ZThn180_N28CAgentMetaConnectionProvider15GetBoolSettingLERK7TDesC16RiPN5ESock14MPlatsecApiExtE @ 193 NONAME
+	_ZThn180_N28CAgentMetaConnectionProvider15GetDes8SettingLERK7TDesC16R5TDes8PN5ESock14MPlatsecApiExtE @ 194 NONAME
+	_ZThn180_N28CAgentMetaConnectionProvider16GetDes16SettingLERK7TDesC16R6TDes16PN5ESock14MPlatsecApiExtE @ 195 NONAME
+	_ZThn180_N28CAgentMetaConnectionProvider18GetLongDesSettingLERK7TDesC16RP7HBufC16PN5ESock14MPlatsecApiExtE @ 196 NONAME
 
-
--- a/linklayerprotocols/ethernetnif/EthInt/Ethbase.cpp	Mon Jun 21 22:44:36 2010 +0100
+++ b/linklayerprotocols/ethernetnif/EthInt/Ethbase.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -1084,7 +1084,8 @@
 
 void CLANLinkCommon::Destroy()
 	{
-	ASSERT(iMMState==EStopped);
+    // PDEF143631: RNDIS driver doesn't override CLANLinkCommon::Destroy()
+	ASSERT(iMMState==EStarting || iMMState==EStopped);
 	DeleteThisFlow();
 	}
 
--- a/linklayerprotocols/ethernetnif/eabi/ethprotou.def	Mon Jun 21 22:44:36 2010 +0100
+++ b/linklayerprotocols/ethernetnif/eabi/ethprotou.def	Thu Jul 22 16:48:06 2010 +0100
@@ -89,7 +89,7 @@
 	_ZThn80_N14CLANLinkCommon11GetControlLERK6TDesC8 @ 88 NONAME ABSENT
 	_ZThn80_N14CLANLinkCommon5BindLERK6TDesC8PN5ESock18MUpperDataReceiverEPNS3_13MUpperControlE @ 89 NONAME ABSENT
 	_ZThn80_N14CLANLinkCommon6UnbindEPN5ESock18MUpperDataReceiverEPNS0_13MUpperControlE @ 90 NONAME ABSENT
-	_ZThn96_N14CLANLinkCommon11GetControlLERK6TDesC8 @ 91 NONAME
-	_ZThn96_N14CLANLinkCommon5BindLERK6TDesC8PN5ESock18MUpperDataReceiverEPNS3_13MUpperControlE @ 92 NONAME
-	_ZThn96_N14CLANLinkCommon6UnbindEPN5ESock18MUpperDataReceiverEPNS0_13MUpperControlE @ 93 NONAME
+	_ZThn100_N14CLANLinkCommon11GetControlLERK6TDesC8 @ 91 NONAME
+	_ZThn100_N14CLANLinkCommon5BindLERK6TDesC8PN5ESock18MUpperDataReceiverEPNS3_13MUpperControlE @ 92 NONAME
+	_ZThn100_N14CLANLinkCommon6UnbindEPN5ESock18MUpperDataReceiverEPNS0_13MUpperControlE @ 93 NONAME
 
--- a/linklayerprotocols/pppnif/eabi/pppmainU.DEF	Mon Jun 21 22:44:36 2010 +0100
+++ b/linklayerprotocols/pppnif/eabi/pppmainU.DEF	Thu Jul 22 16:48:06 2010 +0100
@@ -118,52 +118,28 @@
 	_ZN7CPppLcpC1ERN5ESock29CSubConnectionFlowFactoryBaseERKN8Messages7TNodeIdEPNS0_17CProtocolIntfBaseE @ 117 NONAME
 	_ZN7CPppLcpC2ERN5ESock29CSubConnectionFlowFactoryBaseERKN8Messages7TNodeIdEPNS0_17CProtocolIntfBaseE @ 118 NONAME
 	_ZThn20_N7CPppLcp9ReceivedLERKN8Messages13TRuntimeCtxIdERKNS0_7TNodeIdERNS0_14TSignatureBaseE @ 119 NONAME
-	_ZThn80_N7CPppLcp11GetControlLERK6TDesC8 @ 120 NONAME ABSENT
-	_ZThn80_N7CPppLcp4FlowEv @ 121 NONAME ABSENT
-	_ZThn80_N7CPppLcp5BindLERK6TDesC8PN5ESock18MUpperDataReceiverEPNS3_13MUpperControlE @ 122 NONAME ABSENT
-	_ZThn80_N7CPppLcp6UnbindEPN5ESock18MUpperDataReceiverEPNS0_13MUpperControlE @ 123 NONAME ABSENT
-	_ZThn84_N7CPppLcp7ProcessER10RMBufChain @ 124 NONAME ABSENT
-	_ZThn88_N7CPppLcp12StartSendingEv @ 125 NONAME ABSENT
-	_ZThn88_N7CPppLcp5ErrorEi @ 126 NONAME ABSENT
-	_ZThn92_N7CPppLcp10FsmLayerUpEv @ 127 NONAME ABSENT
-	_ZThn92_N7CPppLcp12FsmLayerDownEi @ 128 NONAME ABSENT
-	_ZThn92_N7CPppLcp15FsmLayerStartedEv @ 129 NONAME ABSENT
-	_ZThn92_N7CPppLcp16FsmLayerFinishedEi @ 130 NONAME ABSENT
-	_ZThn92_N7CPppLcp16FsmRecvConfigAckER14RPppOptionList @ 131 NONAME ABSENT
-	_ZThn92_N7CPppLcp16FsmRecvConfigNakER14RPppOptionListS1_ @ 132 NONAME ABSENT
-	_ZThn92_N7CPppLcp18FsmAckOptionsValidER14RPppOptionListS1_ @ 133 NONAME ABSENT
-	_ZThn92_N7CPppLcp18FsmRecvUnknownCodeEhhiR10RMBufChain @ 134 NONAME ABSENT
-	_ZThn92_N7CPppLcp19FsmRecvConfigRejectER14RPppOptionListS1_ @ 135 NONAME ABSENT
-	_ZThn92_N7CPppLcp21FsmApplyConfigRequestER14RPppOptionList @ 136 NONAME ABSENT
-	_ZThn92_N7CPppLcp21FsmCheckConfigRequestER14RPppOptionListS1_S1_S1_ @ 137 NONAME ABSENT
-	_ZThn92_N7CPppLcp21FsmRejectOptionsValidER14RPppOptionListS1_ @ 138 NONAME ABSENT
-	_ZThn92_N7CPppLcp23FsmFillinConfigRequestLER14RPppOptionList @ 139 NONAME ABSENT
-	_ZThn92_N7CPppLcp27FsmTerminationPhaseCompleteEv @ 140 NONAME ABSENT
-	_ZThn92_N7CPppLcp28FsmConfigRequestOptionsValidER14RPppOptionList @ 141 NONAME ABSENT
-	_ZThn92_N7CPppLcpD0Ev @ 142 NONAME ABSENT
-	_ZThn92_N7CPppLcpD1Ev @ 143 NONAME ABSENT
-	_ZThn100_N7CPppLcp7ProcessER10RMBufChain @ 144 NONAME ABSENT
-	_ZThn104_N7CPppLcp12StartSendingEv @ 145 NONAME ABSENT
-	_ZThn104_N7CPppLcp5ErrorEi @ 146 NONAME ABSENT
-	_ZThn108_N7CPppLcp10FsmLayerUpEv @ 147 NONAME ABSENT
-	_ZThn108_N7CPppLcp12FsmLayerDownEi @ 148 NONAME ABSENT
-	_ZThn108_N7CPppLcp15FsmLayerStartedEv @ 149 NONAME ABSENT
-	_ZThn108_N7CPppLcp16FsmLayerFinishedEi @ 150 NONAME ABSENT
-	_ZThn108_N7CPppLcp16FsmRecvConfigAckER14RPppOptionList @ 151 NONAME ABSENT
-	_ZThn108_N7CPppLcp16FsmRecvConfigNakER14RPppOptionListS1_ @ 152 NONAME ABSENT
-	_ZThn108_N7CPppLcp18FsmAckOptionsValidER14RPppOptionListS1_ @ 153 NONAME ABSENT
-	_ZThn108_N7CPppLcp18FsmRecvUnknownCodeEhhiR10RMBufChain @ 154 NONAME ABSENT
-	_ZThn108_N7CPppLcp19FsmRecvConfigRejectER14RPppOptionListS1_ @ 155 NONAME ABSENT
-	_ZThn108_N7CPppLcp21FsmApplyConfigRequestER14RPppOptionList @ 156 NONAME ABSENT
-	_ZThn108_N7CPppLcp21FsmCheckConfigRequestER14RPppOptionListS1_S1_S1_ @ 157 NONAME ABSENT
-	_ZThn108_N7CPppLcp21FsmRejectOptionsValidER14RPppOptionListS1_ @ 158 NONAME ABSENT
-	_ZThn108_N7CPppLcp23FsmFillinConfigRequestLER14RPppOptionList @ 159 NONAME ABSENT
-	_ZThn108_N7CPppLcp27FsmTerminationPhaseCompleteEv @ 160 NONAME ABSENT
-	_ZThn108_N7CPppLcp28FsmConfigRequestOptionsValidER14RPppOptionList @ 161 NONAME ABSENT
-	_ZThn108_N7CPppLcpD0Ev @ 162 NONAME ABSENT
-	_ZThn108_N7CPppLcpD1Ev @ 163 NONAME ABSENT
-	_ZThn96_N7CPppLcp11GetControlLERK6TDesC8 @ 164 NONAME ABSENT
-	_ZThn96_N7CPppLcp4FlowEv @ 165 NONAME ABSENT
-	_ZThn96_N7CPppLcp5BindLERK6TDesC8PN5ESock18MUpperDataReceiverEPNS3_13MUpperControlE @ 166 NONAME ABSENT
-	_ZThn96_N7CPppLcp6UnbindEPN5ESock18MUpperDataReceiverEPNS0_13MUpperControlE @ 167 NONAME ABSENT
+	_ZThn100_N7CPppLcp11GetControlLERK6TDesC8 @ 120 NONAME
+	_ZThn100_N7CPppLcp4FlowEv @ 121 NONAME
+	_ZThn100_N7CPppLcp5BindLERK6TDesC8PN5ESock18MUpperDataReceiverEPNS3_13MUpperControlE @ 122 NONAME
+	_ZThn100_N7CPppLcp6UnbindEPN5ESock18MUpperDataReceiverEPNS0_13MUpperControlE @ 123 NONAME
+	_ZThn104_N7CPppLcp7ProcessER10RMBufChain @ 124 NONAME
+	_ZThn108_N7CPppLcp12StartSendingEv @ 125 NONAME
+	_ZThn108_N7CPppLcp5ErrorEi @ 126 NONAME
+	_ZThn112_N7CPppLcp10FsmLayerUpEv @ 127 NONAME
+	_ZThn112_N7CPppLcp12FsmLayerDownEi @ 128 NONAME
+	_ZThn112_N7CPppLcp15FsmLayerStartedEv @ 129 NONAME
+	_ZThn112_N7CPppLcp16FsmLayerFinishedEi @ 130 NONAME
+	_ZThn112_N7CPppLcp16FsmRecvConfigAckER14RPppOptionList @ 131 NONAME
+	_ZThn112_N7CPppLcp16FsmRecvConfigNakER14RPppOptionListS1_ @ 132 NONAME
+	_ZThn112_N7CPppLcp18FsmAckOptionsValidER14RPppOptionListS1_ @ 133 NONAME
+	_ZThn112_N7CPppLcp18FsmRecvUnknownCodeEhhiR10RMBufChain @ 134 NONAME
+	_ZThn112_N7CPppLcp19FsmRecvConfigRejectER14RPppOptionListS1_ @ 135 NONAME
+	_ZThn112_N7CPppLcp21FsmApplyConfigRequestER14RPppOptionList @ 136 NONAME
+	_ZThn112_N7CPppLcp21FsmCheckConfigRequestER14RPppOptionListS1_S1_S1_ @ 137 NONAME
+	_ZThn112_N7CPppLcp21FsmRejectOptionsValidER14RPppOptionListS1_ @ 138 NONAME
+	_ZThn112_N7CPppLcp23FsmFillinConfigRequestLER14RPppOptionList @ 139 NONAME
+	_ZThn112_N7CPppLcp27FsmTerminationPhaseCompleteEv @ 140 NONAME
+	_ZThn112_N7CPppLcp28FsmConfigRequestOptionsValidER14RPppOptionList @ 141 NONAME
+	_ZThn112_N7CPppLcpD0Ev @ 142 NONAME
+	_ZThn112_N7CPppLcpD1Ev @ 143 NONAME
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcpr/group/bld.inf	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,26 @@
+// Copyright (c) 2005-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_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+
+PRJ_EXPORTS
+../group/ipcpr.iby /epoc32/rom/include/ipcpr.iby
+
+PRJ_MMPFILES
+ipcpr.mmp
+
+PRJ_TESTMMPFILES
+
+#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcpr/group/ipcpr.iby	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,25 @@
+/*
+* 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 __IPCPR_IBY__
+#define __IPCPR_IBY__
+
+REM IP Connection Provider
+
+ECOM_PLUGIN(ipcpr.dll,102070ED.rss)
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcpr/group/ipcpr.mmp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,52 @@
+// Copyright (c) 2005-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:
+// ipcpr.MMP New IP Connection Provider ECOM plugin with BM support
+// 
+//
+
+/**
+ @file
+*/
+
+TARGET          ipcpr.dll
+TARGETTYPE      PLUGIN
+
+UID             0x10009D8D 0x102070ED
+VENDORID 		 0x70000001
+
+SOURCEPATH      ../src
+SOURCE          ipcprprovider.cpp ipcprfactory.cpp
+
+USERINCLUDE     ../inc
+
+SYSTEMINCLUDE   /epoc32/include
+SYSTEMINCLUDE   /epoc32/include/ecom
+SYSTEMINCLUDE   /epoc32/include/comms-infras
+
+START RESOURCE 102070ED.rss
+TARGET ipcpr.rsc
+END
+
+LIBRARY         euser.lib esock.lib esocksvr.lib eintsock.lib insock.lib
+LIBRARY			netmeta.lib
+LIBRARY         agentdialog.lib
+LIBRARY         commsdat.lib
+
+#include	    "comms-infras/commsdebugutility.mmh"
+
+CAPABILITY ALL -Tcb
+
+UNPAGED
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcpr/group/networking_ipcpr.history.xml	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<relnotes schema="1.0.0" name="Connection Provider Plugin" purpose="" type="component">
+  <revision major="1" functional="0" minor="0" date="20070802">
+    <ref name="PDEF110098" type="defect"/>
+    <description>Enabling IAP commsdat records to be protected with the ECDPrivate attribute. This requires that the DHCP and DND components are assigned the ReadDeviceData privilege and that various changes are made to ensure hidden IAP records are visible to networking components which need to be able to read them.</description>
+  </revision>
+  <purpose>
+  </purpose>
+  <defect number="PDEF102399" title="S60_MuDo_2006_wk49: Reconnecting to live video stream fails" revision="001">
+    Cause reconnect when RConnection::Start collides with Idle Timer Stop
+  </defect>
+</relnotes>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcpr/group/networking_ipcpr.mrp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,25 @@
+#
+# 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_ipcpr
+source			\sf\os\networkingsrv\networkcontrol\ipcpr
+binary			\sf\os\networkingsrv\networkcontrol\ipcpr\group	all
+exports			\sf\os\networkingsrv\networkcontrol\ipcpr\group
+notes_source	\component_defs\release.src
+
+
+ipr E 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcpr/inc/MAppIdInfo.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,40 @@
+// Copyright (c) 2006-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:
+// MAppIdInfo definition file.
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MAPPID_INFO_H
+#define MAPPID_INFO_H
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+const TUint32 KConnectionAppInfoInterfaceId = 0x102070EF;
+class MConnectionAppIdInfo      
+/**
+ @internalComponent
+ @released Since 9.3
+ */
+{
+public:
+	// This function is used the get Secure ID of the application
+	
+	virtual TUint32 GetAppSecureId() = 0; 
+};
+#endif // SYMBIAN_NETWORKING_UMTSR5
+
+#endif	// MAPPID_INFO_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcpr/inc/ipcprfactory.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,136 @@
+/**
+* Copyright (c) 2005-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 IPCPRFACTORY.H
+ @internalComponent
+*/
+
+#if !defined(__IPCPRFACTORY_H__)
+#define __IPCPRFACTORY_H__
+
+#include <ss_connprov.h> // CConnectionProviderFactoryBase, MCommsFactoryQuery
+#include <in_sock.h> // KAfInet
+#include <agentdialog.h> // RGenConAgentDialogServer
+#include <commsdebugutility.h> // __FLOG_DECLARATION_MEMBER
+
+const TUint KIPConnectionProviderFactoryId = KAfInet;
+
+class XConnectionIPFactoryQuery : public MCommsFactoryQuery
+	{
+public:
+	XConnectionIPFactoryQuery( CConnectionProviderBase* aConnectionProviderBase ) :
+		iConnectionProviderBase( aConnectionProviderBase )
+		{
+		}
+
+protected:
+	CConnectionProviderBase* iConnectionProviderBase;
+
+public:
+	virtual TMatchResult Match( TFactoryObjectInfo& aConnectionInfo );
+	};
+
+class CIPNetworkProviderFactory : public CConnectionProviderFactoryBase
+	{
+public:
+	static CIPNetworkProviderFactory* NewL(TAny* aParentContainer);
+
+protected:   
+	CIPNetworkProviderFactory(TUint aFactoryId, CConnectionFactoryContainer& aParentContainer);
+	virtual CConnectionProviderBase* DoCreateProviderL();
+	virtual MProviderSelector* DoSelectProvider( Meta::SMetaData& aPreferences, ISelectionNotify& aSelectionNotify, const RMessagePtr2* aMessage );
+	virtual MProviderSelector* DoSelectNextLayerProvider( Meta::SMetaData& aPreferences, ISelectionNotify& aSelectionNotify, const RMessagePtr2* aMessage );
+	virtual void DoEnumerateConnectionsL(RPointerArray<TConnectionInfo>& aConnectionInfoPtrArray);
+	};
+
+class TCommIdList;
+namespace ESock
+	{
+	class CConnStart;
+	}
+namespace  CommsDat
+	{
+	class CMDBSession;
+	class CCDGlobalSettingsRecord;
+    class CCDIAPPrioritySelectionPolicyRecord;
+	}
+
+class CIPConnectionSelector : public CActive, public MProviderSelector
+/** IP-layer connection selector. IP level factory creates
+these to intercept and complete the Shim layer selection
+it triggers.
+
+@internalComponent
+@released Since 9.1
+*/
+	{
+public:
+	TInt Select(Meta::SMetaData& aPreferences, const RMessagePtr2* aMessage);
+	void SelectComplete(CConnectionProviderBase* aConnProvider, TInt aError);
+	void ProgressNotification(TInt aStage, TInt aError);
+	void LayerUp(TInt aError);
+	void ServiceChangeNotification(TUint32 aId, const TDesC& aType);
+	void SubConnectionEvent(CSubConnectionProviderBase* aSubConnNextLayerProvider, const TSubConnectionEvent& aSubConnectionEvent);
+	void Detach();
+	
+	virtual TInt Cancel();
+	virtual TInt Cancel(TInt aReason, const RMessage2* aMessage);
+
+	//Only my own factory can create me but the constructor may be public because noone can link against it anyway.
+	//My factory could be my friend and the constructor priate but then my factory could mistakenly delete me!
+	CIPConnectionSelector(ISelectionNotify& aNotify, CIPNetworkProviderFactory& aFactory);
+
+private:
+	virtual ~CIPConnectionSelector(); //Nobody should delete me! Only I can delete myself.
+
+	// From CActive
+	virtual void DoCancel();
+	virtual void RunL();
+	virtual TInt RunError(TInt aError);
+
+    // Helper functions
+	static TInt DestroyMyself(TAny* aSelf);
+	void SelectL(Meta::SMetaData& aPreferences);
+	void SelectLinkLayerL();
+	void FillListL(CommsDat::CCDIAPPrioritySelectionPolicyRecord& aPolicy);
+    CommsDat::CCDGlobalSettingsRecord* LoadGlobalSettingsRecordLC();
+    CommsDat::CCDIAPPrioritySelectionPolicyRecord* LoadPolicyRecordLC(TInt aAccessPoint);
+
+private:
+    //ISelectionNotify must be stored by value, cos' it's just a short-lived wrapper class.
+    //It doesn't exist as a someone that waits for the completion, but stores refereneces
+    //to the one that does.
+    ISelectionNotify iNotify;
+    CIPNetworkProviderFactory& iFactory;
+    MProviderSelector* iNextLayerSelector;
+	RGenConAgentDialogServer iDlgServ;
+	TUint32 iAPid;
+	RMessagePtr2 iSelectMessage;
+	CAsyncCallBack iAsyncDestructor;
+	CommsDat::CMDBSession* iDbs;
+	ESock::CConnStart* iConnStart;
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+	TSecureId iAppSecureId;
+#endif 
+	__FLOG_DECLARATION_MEMBER;
+	TConnPref* iPrefs;
+	};
+
+#endif // __IPCPRFACTORY_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcpr/inc/ipcprprovider.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,141 @@
+/**
+* Copyright (c) 2005-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 class is an example implementation of a bearer-mobile network session layer. It is intended as a guide only and does
+* not employ any advanced bearer selection algorithms.
+* This is part of an ECOM plug-in
+* 
+*
+*/
+
+
+
+/**
+ @file IPCPRPROVIDER.H
+ @internalComponent
+*/
+
+#if !defined(__SS_IPCPRPROVIDER_H__)
+#define __SS_IPCPRPROVIDER_H__
+
+#include "ipcprfactory.h"	// for CIPConnectionSelector
+#include <es_sock.h>
+#include <es_prot.h>
+#include <ss_connprov.h>	// for CConnectionProviderBase and MConnectionControlClient
+#include <comms-infras/ss_log.h>			// for KESockConnectionTag
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5	
+
+#include "MAppIdInfo.h"
+
+#endif
+
+#define KIpcprTag KESockConnectionTag
+_LIT8(KIpcprSubTag, "ipcpr");		// logging tag
+
+
+	
+
+class CConnectionSettings;
+/**
+ @internalComponent
+ @released Since 9.1
+ */
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+NONSHARABLE_CLASS(CIPNetworkConnectionProvider) : public CConnectionProviderBase, public MConnectionControlClient, 
+												  public MConnectionAppIdInfo
+	{
+#else // SYMBIAN_NETWORKING_UMTSR5	
+
+NONSHARABLE_CLASS(CIPNetworkConnectionProvider) : public CConnectionProviderBase, public MConnectionControlClient
+	{
+
+#endif // SYMBIAN_NETWORKING_UMTSR5	
+
+public:
+	static CIPNetworkConnectionProvider* NewL(CConnectionProviderFactoryBase& aFactory);
+	
+#ifdef SYMBIAN_NETWORKING_UMTSR5	
+	// Interface from MConnectionAppIdInfo
+	virtual TUint32 GetAppSecureId(); 
+
+	void SetAppSecurId(TUint32 aSecureId);
+#endif // SYMBIAN_NETWORKING_UMTSR5	
+   
+protected:
+	CIPNetworkConnectionProvider(CConnectionProviderFactoryBase& aFactory) :
+		CConnectionProviderBase(aFactory)
+			{
+      	__CFLOG_VAR((KIpcprTag, KIpcprSubTag, _L8("CIPNetworkConnectionProvider [this=%08x]:\tCIPNetworkConnectionProvider [MConnectionControlClient=%08x]"),
+      	   this, (MConnectionControlClient*)this));
+			}
+	~CIPNetworkConnectionProvider();
+	
+	/////////////////////////////////////////////////////////////////////////////
+	// from MConnectionControlClient
+	virtual void ConnectionGoingDown(CConnectionProviderBase& aConnProvider);
+	virtual void ProgressNotification(TInt aStage, TInt aError);
+	virtual void ConnectionError(TInt aStage,  TInt aError);
+	virtual void ServiceChangeNotification(TUint32 aId, const TDesC& aType);
+	virtual void SubConnectionEvent(CSubConnectionProviderBase* aSubConnNextLayerProvider, const TSubConnectionEvent& aSubConnectionEvent);
+	virtual void LayerUp(TInt aError);
+	virtual TCtlType CtlType() const;
+
+	////////////////////////////////////////////////////////////////////////////
+	// from CConnectionProviderBase
+#ifdef SYMBIAN_NETWORKING_UMTSR5		
+	virtual TAny* DoFetchInterfaceInstanceL( const STypeId& aTid );
+#endif	
+	
+	virtual void DoDataClientJoiningL(MConnectionDataClient& aDataClient);
+	virtual void DoDataClientLeaving(MConnectionDataClient& aDataClient);
+	virtual void DoControlClientJoiningL(MConnectionControlClient& aControlClient);
+	virtual void DoControlClientLeaving(MConnectionControlClient& aControlClient);
+
+	virtual void DoStartL(Meta::SMetaData& aParams, const RMessagePtr2* aMessage);	
+	virtual TInt DoStop(TInt aError, const RMessagePtr2* aMessage);   
+
+	virtual void DoProgressL(Meta::SMetaData& aBuffer) const;
+	virtual void DoLastProgressError(Meta::SMetaData& aBuffer);
+	virtual void DoRequestServiceChangeNotificationL();
+	virtual void DoCancelServiceChangeNotification();
+	virtual void DoControlL(TUint aOptionLevel, TUint aOptionName, Meta::SMetaData& aOption, const RMessagePtr2* aMessage);
+	virtual TInt DoAllSubConnectionNotificationEnable();
+	virtual TInt DoCancelAllSubConnectionNotification();
+	virtual void DoSendIoctlMessageL(const RMessage2& aMessage);
+	virtual void DoSendCancelIoctl();   
+	virtual TInt DoEnumerateSubConnectionsL(TUint& aCount);
+	virtual TUint DoEnumerateClientsL(HBufC8*& aClientInfoBuffer, TEnumClients aClientType);
+	virtual void DoConnectionControlActivityL( TControlActivity aControlActivity, const Meta::SMetaData* aData, const RMessagePtr2* aMessage );
+
+	virtual CConnectionSettings& DoSettingsAccessL();
+
+	virtual TInt DoCanDoSubConnection(RSubConnection::TSubConnType aSubConnType) const;
+
+	virtual CConnectionProviderBase* DoNextLayer() const;
+	virtual void DoJoinNextLayerL(CConnectionProviderBase* aNextLayer);
+
+protected:
+	void UpdateUsageProfile(MConnectionControlClient* aControlClient);
+
+private:
+	CConnectionProviderBase* iShimCpr;
+	TMetaDes8* iMDes;
+#ifdef SYMBIAN_NETWORKING_UMTSR5	
+	// Added as per the requirements of PREQ 635 to block sockets
+	TUint32		iAppSecureId;
+#endif // SYMBIAN_NETWORKING_UMTSR5	
+	};
+
+#endif // __SS_IPCPRPROVIDER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcpr/src/102070ED.rss	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,60 @@
+// Copyright (c) 2005-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:
+// Registry info for IP Networking Connection Provider plug-in
+// 
+//
+
+/**
+ @file 102070ED.RSS
+*/
+
+#include <ecom/registryinfo.rh>
+
+RESOURCE REGISTRY_INFO theInfo
+{
+dll_uid =  0x102070ED;
+interfaces = 
+    {
+    INTERFACE_INFO
+        {
+        interface_uid =  0x102070EE;
+        implementations = 
+            {
+           IMPLEMENTATION_INFO
+                {
+                implementation_uid = 0x102070EF;
+                version_no = 1;
+                display_name = "IP Networking Connection Provider Factory";
+                default_data = "IpConnectionProviderFactory";
+                opaque_data = "";
+                }
+            };
+        },
+    INTERFACE_INFO
+        {
+        interface_uid = 0x102070F0;
+        implementations = 
+            {
+           IMPLEMENTATION_INFO
+                {
+                implementation_uid = 0x102070F1;
+                version_no = 1;
+                display_name = "IP Networking Connection Provider";
+                default_data = "IpConnectionProvider";
+                opaque_data = "";
+                }
+            };
+        }
+    };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcpr/src/ipcprfactory.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,486 @@
+// Copyright (c) 2005-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 is part of an ECOM plug-in
+// 
+//
+
+#include <implementationproxy.h>
+#include "ipcprfactory.h"	// CIPNetworkProviderFactory
+#include "ipcprprovider.h"
+#include <es_sock.h>        // KCommsNetworkLayerId
+#include <ss_glob.h>
+#include <shimcprfactory.h>
+#include <esockmessages.h>
+#include <commdbconnpref.h> // TConnPref
+#include <commsdattypesv1_1.h> // CommsDat
+#include <es_connpref.h>
+#include <in_sock.h> //KAfInet
+
+using namespace CommsDat;
+using namespace ESock;
+
+const TInt KIPConnectionProviderImplementationUid=0x102070EF;
+
+/**
+Data required for instantiating ECOM Plugin
+*/
+const TImplementationProxy ImplementationTable[] = 
+	{
+	IMPLEMENTATION_PROXY_ENTRY(KIPConnectionProviderImplementationUid, CIPNetworkProviderFactory::NewL)
+	};
+
+/**
+ECOM Implementation Factory
+*/
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+    return ImplementationTable;
+   }
+
+CIPNetworkProviderFactory* CIPNetworkProviderFactory::NewL(TAny* aParentContainer)
+	{
+ 	return new (ELeave) CIPNetworkProviderFactory(KIPConnectionProviderFactoryId, *(reinterpret_cast<CConnectionFactoryContainer*>(aParentContainer)));
+	}
+   
+CIPNetworkProviderFactory::CIPNetworkProviderFactory(TUint aFactoryId, CConnectionFactoryContainer& aParentContainer)
+	: CConnectionProviderFactoryBase(aFactoryId,aParentContainer)
+	{
+	}
+   
+CConnectionProviderBase* CIPNetworkProviderFactory::DoCreateProviderL()
+	{
+    return CIPNetworkConnectionProvider::NewL(*this);
+	}
+
+MProviderSelector* CIPNetworkProviderFactory::DoSelectProvider( Meta::SMetaData& aPreferences, ISelectionNotify& aSelectionNotify, const RMessagePtr2* aMessage )
+	{
+	//create self destructing object to select a provider
+	CIPConnectionSelector* selector = new CIPConnectionSelector(aSelectionNotify,*this);
+	TInt error;
+	if (selector == 0)
+		{
+		error = KErrNoMemory;
+		}
+	else
+		{
+		error = selector->Select(aPreferences, aMessage);
+		}
+
+	if (error != KErrNone)
+		{
+		aSelectionNotify.SelectComplete(0, error);
+		selector = NULL; //The selector will delete itself.
+		}
+
+ 
+	return selector;
+  	}
+
+MProviderSelector* CIPNetworkProviderFactory::DoSelectNextLayerProvider( Meta::SMetaData& aPreferences, ISelectionNotify& aSelectionNotify, const RMessagePtr2* /*aMessage*/ )
+	{//at the moment always uses the CConnectionProviderFactoryShim::SelectProviderL
+   (void)aPreferences;
+   (void)aSelectionNotify;
+   return NULL;
+	}
+	
+void CIPNetworkProviderFactory::DoEnumerateConnectionsL(RPointerArray<TConnectionInfo>& aConnectionInfoPtrArray)
+	{
+	CConnectionFactoryContainer* connectionFactories = SockManGlobals::Get()->iConnectionFactories;
+	ASSERT(connectionFactories);
+	CConnectionProviderFactoryBase* factory = connectionFactories->FindFactory(KShimConnectionProviderFactoryId);
+	ASSERT(factory);
+	factory->EnumerateConnectionsL(aConnectionInfoPtrArray);
+	}
+
+
+//CIPConnectionSelector--
+TInt CIPConnectionSelector::Cancel()
+	{
+	return Cancel(KErrCancel,NULL);
+	}
+
+TInt CIPConnectionSelector::Cancel(TInt aReason, const RMessage2* aMessage)
+	{
+	CActive::Cancel(); // There may be an outstanding selection request.
+
+    //CIPConnectionSelector will be deleted from Detach().
+    //Detach will always be called as a result of Cancel() in the same call stack,
+    //but only after all progress notifications have been passed up towards the
+    //CConnection.
+    TInt ret = KErrNotReady;
+    if(iNextLayerSelector !=NULL)
+    	{
+    	ret = iNextLayerSelector->Cancel(aReason, aMessage);
+    	}
+
+	iNotify.Detach(); //"PrevLayer"::Detach() will be called only once in the same call stack.
+	return ret;
+	}
+
+TInt CIPConnectionSelector::Select(Meta::SMetaData& aPreferences, const RMessagePtr2* aMessage)
+    {
+	__FLOG_OPEN(KIpcprTag, KIpcprSubTag);
+	__FLOG_1(_L8("CIPConnectionSelector::Select() %08x"), this);
+
+	STypeId tId = STypeId::CreateSTypeId(aPreferences.GetTypeId());
+    ASSERT(tId.iUid.iUid == KESockMessagesImplementationUid);
+	ASSERT(tId.iType == EESockMessageConnStart);	
+
+	if (aMessage)
+		iSelectMessage = *aMessage; // aMessage will be passed on to shim
+#ifdef SYMBIAN_NETWORKING_UMTSR5	
+     //Here secure Id of application is stored and will be kept with  
+    if(!iSelectMessage.IsNull())
+     {
+		iAppSecureId=iSelectMessage.SecureId();
+     }
+#endif // SYMBIAN_NETWORKING_UMTSR5	            
+ 
+    TRAPD(r, SelectL(aPreferences));
+	
+	if (r!=KErrNone && iNextLayerSelector==NULL)
+		{
+		__FLOG_1(_L8("Error during selection of current  - should detech now %08x"), this);
+ 		Detach();
+		return r;
+ 		}
+ 		
+ 	TRAP(r,SelectLinkLayerL());
+ 	if (r != KErrNone)
+ 		{
+ 		__FLOG_1(_L8("Error during select of link layer - detach should be called by the link layer %08x"), this);
+ 		}
+	
+	return r;
+	}
+
+void CIPConnectionSelector::SelectL(Meta::SMetaData& aPreferences)
+	{
+	ASSERT(iDbs==0);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+	iDbs = CMDBSession::NewL(KCDVersion1_2);
+#else
+	iDbs = CMDBSession::NewL(KCDVersion1_1);
+#endif
+
+	// Reveal hidden or private IAP records if a licensee has chosen to protect a record
+	// using one of these flags - the API to do this is public so internal components
+	// have to support the use of such records.
+	iDbs->SetAttributeMask( ECDHidden | ECDPrivate );
+	
+	ASSERT(iConnStart==0);
+	iConnStart = CConnStart::NewL();
+	iConnStart->Copy(aPreferences);
+
+	// Get "defaultSnap" and "promptForSnap" from CommsDat.
+    CCDGlobalSettingsRecord* gs = LoadGlobalSettingsRecordLC();
+	TBool promptForSnap = gs->iPromptForSnap;
+	iAPid = gs->iDefaultSnap; // Unless reassigned, iAPid becomes the default access point.
+	CleanupStack::PopAndDestroy(gs);
+
+	__FLOG_STMT(_LIT(K, "SelectL() Prompt%d Def%d"));
+	__FLOG_2(K, promptForSnap, iAPid);
+
+	if (iAPid != 0)
+    	// System is access point aware.
+    	{
+		TConnStartType selectType(iConnStart->StartType());
+		TConnPref* selectPrefs = iConnStart->ConnPrefs();
+		
+		if (selectType == EConnStartImplicit ||
+			selectPrefs == 0 || selectPrefs->ExtensionId() == TConnPref::EConnPrefUnknown)
+			// Use default access point or dialogue if enabled.
+			{
+			__FLOG_STMT(_LIT(K, "SelectL() Default Type%d Prefs%d"));
+			__FLOG_2(K, selectType, selectPrefs);
+
+			// Use the default access point unless promptForSnap is ETrue in which case prompt
+			// for the access point.
+			if (promptForSnap)
+				{
+				User::LeaveIfError(iDlgServ.Connect());
+				iDlgServ.AccessPointConnection(iAPid,KAfInet,iStatus);
+				SetActive();
+				return; // Don't do selection until RunL() gets the dialogue results.
+				}
+
+			CCDIAPPrioritySelectionPolicyRecord* policy = LoadPolicyRecordLC(iAPid);
+			FillListL(*policy);
+			CleanupStack::PopAndDestroy(policy);
+			}
+		else if (selectPrefs && selectPrefs->ExtensionId() == TConnPref::EConnPrefSnap)
+			// Use access point id from preferences.
+			{
+			iAPid = static_cast<const TCommSnapPref*>(selectPrefs)->Snap();
+
+			__FLOG_STMT(_LIT(K, "SelectL() Type%d TConnPrefSnap AccessPoint%d "));
+			__FLOG_2(K, selectType, iAPid);
+
+			CCDIAPPrioritySelectionPolicyRecord* policy = LoadPolicyRecordLC(iAPid);
+			FillListL(*policy);
+			CleanupStack::PopAndDestroy(policy);
+			}
+		}
+	}
+
+void CIPConnectionSelector::FillListL(CCDIAPPrioritySelectionPolicyRecord& aPolicy)
+	{
+	__FLOG_0(_L("FillListL()"));
+
+	// Make sure we have the TCommIdList.
+	
+	// Create the new Prefs on the heap so that they are always available 
+	// even in the asynchronous promptForSnap Active Object callback
+	// The copy of the original Prefs are overwritten here
+	// The original Prefs are deleted in esock.  
+	// The new Prefs are deleted on destruction of CIPConnectionSelector
+	
+	iConnStart->SetConnPrefs(NULL);
+	iConnStart->SetConnPrefs(new (ELeave) TCommIdList);
+	
+	// Store Prefs for deletion on destruction of CIPConnectionSelector
+	ASSERT(iPrefs==0);
+	iPrefs = iConnStart->ConnPrefs();
+	
+	TCommIdList& list = *static_cast<TCommIdList*>(iPrefs);
+
+	CMDBRecordLink<CCDIAPRecord>* theIap = &aPolicy.iIap1;
+	CMDBField<TUint32>* theCount = &aPolicy.iIapCount;
+	TInt count = static_cast<TInt>(*theCount);
+	if (count > CCDIAPPrioritySelectionPolicyRecord::EMaxNrOfIaps)
+		{		
+		// The number of IAP's specified is more than allowed. Fix your table :-)
+		ASSERT(EFalse);
+		count = CCDIAPPrioritySelectionPolicyRecord::EMaxNrOfIaps;
+		}	
+	for (TInt i = 0; i < count; i++, theIap++)
+		{
+		TInt theIapNumber = static_cast<TInt>(*theIap);
+		ASSERT(theIapNumber>0);
+		__FLOG_STMT(_LIT(K, "aList[%d].Append(%d)"));
+		__FLOG_2(K, list.Count(), theIapNumber);
+		list.Append(theIapNumber);
+		}
+	}
+
+void CIPConnectionSelector::SelectLinkLayerL()
+	{
+	CConnectionFactoryContainer* connectionFactories = SockManGlobals::Get()->iConnectionFactories;
+	ASSERT(connectionFactories);
+	CConnectionProviderFactoryBase* factory = connectionFactories->FindFactory(KShimConnectionProviderFactoryId);
+	ASSERT(factory);
+	ISelectionNotify selectNotify( this, TSelectionNotify<CIPConnectionSelector>::SelectComplete, 
+	                                     TProgressNotify<CIPConnectionSelector>::ProgressNotification,
+	                                     TServiceChangeNotify<CIPConnectionSelector>::ServiceChangeNotification,
+	                                     TLayerUp<CIPConnectionSelector>::LayerUp,
+	                                     TSubConnectionEventTmpl<CIPConnectionSelector>::SubConnectionEvent, NULL);
+	selectNotify.RegisterDetach(TDetachNotify<CIPConnectionSelector>::Detach);
+
+	if (iNextLayerSelector!=NULL)
+		iNextLayerSelector->Cancel();
+	
+	// Select next (link) layer's provider.
+	ASSERT(iNextLayerSelector==NULL);
+	ASSERT(iConnStart!=NULL);
+
+	iNextLayerSelector = factory->SelectProvider(*iConnStart, selectNotify, iSelectMessage.IsNull()? NULL : &iSelectMessage);
+    
+    if (iNextLayerSelector == NULL)
+		{
+		User::Leave(KErrGeneral);
+		}
+
+    }
+
+void CIPConnectionSelector::SelectComplete(CConnectionProviderBase* aConnProvider, TInt aError)
+    {
+    CIPNetworkConnectionProvider* connProvider = NULL;
+    if (aError == KErrNone)
+        {
+        ASSERT(aConnProvider);
+        XConnectionIPFactoryQuery query(aConnProvider);
+
+        TRAP( aError, connProvider = static_cast<CIPNetworkConnectionProvider*>(iFactory.FindOrCreateProviderL(query)));
+        if (aError == KErrNone && connProvider->NextLayer() == NULL)
+            {
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5	
+			// This piece of code is added to keep the information about the application secure ID in the 
+			// IP Connection provider. So that when the information is required form the subconnection provider
+			// we can do a fetch interface and get the App Secure ID to decide on to the Socket Blocking			
+                
+              connProvider->SetAppSecurId(iAppSecureId.iId);            
+  
+          
+#endif // SYMBIAN_NETWORKING_UMTSR5	            
+
+            // The factory returned a new instance - must set the lower layer.
+            TRAP(aError,connProvider->JoinNextLayerL(aConnProvider));
+            }
+        }
+    iNotify.SelectComplete(connProvider, aError);
+    }
+    
+void CIPConnectionSelector::ProgressNotification(TInt aStage, TInt aError)
+    {
+    //The original ISelectionNotifier (iNotify) might be interested in the
+    //progress, but we aren't.
+    iNotify.ProgressNotification(aStage, aError);
+    }
+
+void CIPConnectionSelector::LayerUp(TInt aError)
+	{
+    iNotify.LayerUp(aError);
+	}
+
+void CIPConnectionSelector::SubConnectionEvent(CSubConnectionProviderBase* aSubConnNextLayerProvider, const TSubConnectionEvent& aSubConnectionEvent)
+	{
+	iNotify.SubConnectionEvent(aSubConnNextLayerProvider, aSubConnectionEvent);
+	}
+	
+void CIPConnectionSelector::ServiceChangeNotification(TUint32 aId, const TDesC& aType)
+	{
+    //The original ISelectionNotifier (iNotify) might be interested in the
+    //notification, but we aren't.
+    iNotify.ServiceChangeNotification(aId, aType);
+	}
+
+void CIPConnectionSelector::Detach()
+	{
+	iNextLayerSelector = NULL;
+	//Ensure the asynch destructor is ready to use.
+	//If its not, then we have probably been already deleted which should never happen.
+	//Detach is the only place we should be deleted from.
+	ASSERT(!iAsyncDestructor.IsActive());
+	__FLOG_1(_L8("CIPConnectionSelector %08x::Detach()"), this);
+	iAsyncDestructor.Call();
+	}
+
+CIPConnectionSelector::CIPConnectionSelector(ISelectionNotify& aNotify, CIPNetworkProviderFactory& aFactory)
+:	CActive(CActive::EPriorityUserInput),
+	iNotify(aNotify),
+	iFactory(aFactory),
+	iAsyncDestructor(CActive::EPriorityLow)
+	{
+	__FLOG_1(_L8("CIPConnectionSelector %08x::CIPConnectionSelector()"), this);
+	CActiveScheduler::Add(this);
+	iAsyncDestructor.Set(TCallBack(CIPConnectionSelector::DestroyMyself, this));
+	
+  	}
+
+TInt CIPConnectionSelector::DestroyMyself(TAny* aSelf)
+	{
+	delete static_cast<CIPConnectionSelector*>(aSelf);
+	return KErrNone;
+	}
+
+CIPConnectionSelector::~CIPConnectionSelector()
+    {
+    __FLOG_CLOSE;
+	CActive::Cancel(); // There may be an outstanding selection request.
+
+	// This destructor is private and is meant to be called asynchronously via Detach() or Cancel() only.
+	// If is was called from anywhere else, the iNextLayerSelector would not be deleted!
+	// Please note that deleting iNextLayerSelector here needs revision on the link layer selectors,
+	// and specifically of the shim selector which - in such case - must not call Detach from its
+	// synchronous destructor!
+	ASSERT(iNextLayerSelector==NULL); // If still a valid pointer - probably not called via Detach() or Cancel().
+
+	delete iDbs;
+	
+	// Tidy up iConnStart and related objects
+	delete iPrefs;
+	delete iConnStart;
+	
+	iDlgServ.Close();
+
+	// Notify detach.
+	iNotify.Detach();
+    }
+
+void CIPConnectionSelector::RunL()
+	// The dialogue has been presented.
+	// Normally completes with KErrNone or KErrCancel
+	// Could, however, complete with another system error e.g. KErrOutOfMemory
+	{
+	__FLOG_STMT(_LIT(K, "RunL() Err%d Snap%d"));
+	__FLOG_2(K, iStatus.Int(), iAPid);
+
+    User::LeaveIfError(iStatus.Int());
+    ASSERT(iAPid); //Should not be 0 now.
+	CCDIAPPrioritySelectionPolicyRecord* policy = LoadPolicyRecordLC(iAPid);
+	FillListL(*policy);
+	CleanupStack::PopAndDestroy(policy);
+	SelectLinkLayerL();
+	}
+
+TInt CIPConnectionSelector::RunError(TInt aError)
+	// Either the dialogue, the FillListL() or the SelectLinkLayerL() failed.
+	// In each case the selection request is completed with the apropriate result code.
+	{
+	iNotify.SelectComplete(0, aError);
+ 	
+ 	//If we have failed before the call to iNextLayerSelector->Select() or it wasn't successful
+ 	//we need to initiate the detach sequence by calling Detach().
+ 	 if (iNextLayerSelector==NULL)
+	 	{
+	 	Detach(); //It will result in self deletion.
+	 	}
+	return KErrNone;
+	}
+
+void CIPConnectionSelector::DoCancel()
+	{
+	iDlgServ.CancelAccessPointConnection();
+	}
+
+CCDGlobalSettingsRecord* CIPConnectionSelector::LoadGlobalSettingsRecordLC()
+	{
+	CCDGlobalSettingsRecord* gs = static_cast<CCDGlobalSettingsRecord*>(CCDConnectionPrefsRecord::RecordFactoryL(KCDTIdGlobalSettingsRecord));
+	CleanupStack::PushL(gs);
+	gs->SetRecordId(1);
+	gs->LoadL(*iDbs);
+	ASSERT(gs->iDefaultSnap.TypeId() == KCDTIdDefaultSnap); // Panics if built against incorrect CommsDat.
+	return gs;
+	}
+
+CCDIAPPrioritySelectionPolicyRecord* CIPConnectionSelector::LoadPolicyRecordLC(TInt aAccessPoint)
+	{
+	// Get access point from CommsDat.
+	CCDAccessPointRecord* apRecord = static_cast<CCDAccessPointRecord*>
+		(CCDConnectionPrefsRecord::RecordFactoryL(KCDTIdAccessPointRecord));
+	CleanupStack::PushL(apRecord);
+	apRecord->SetRecordId(aAccessPoint);
+	apRecord->LoadL(*iDbs);
+	TUint32 policyNumber = apRecord->iSelectionPolicy;
+	CleanupStack::PopAndDestroy(apRecord);
+
+	ASSERT((policyNumber & KCDMaskShowRecordType) == KCDTIdIapPrioritySelectionPolicyRecord);
+
+	CCDIAPPrioritySelectionPolicyRecord* policy = static_cast<CCDIAPPrioritySelectionPolicyRecord*>
+		(CCDConnectionPrefsRecord::RecordFactoryL(KCDTIdIapPrioritySelectionPolicyRecord));
+	CleanupStack::PushL(policy);
+	policy->SetElementId(policyNumber);
+	policy->LoadL(*iDbs);
+	return policy;
+	}
+
+MCommsFactoryQuery::TMatchResult XConnectionIPFactoryQuery::Match( TFactoryObjectInfo& aProviderInfo )
+	{
+	CConnectionProviderBase* prov = static_cast<CConnectionProviderBase*>(aProviderInfo.iInfo.iFactoryObject);
+	//if the next layer is the same as the one returned by the shim selection we have a match
+	return prov->NextLayer() == iConnectionProviderBase ? EMatch : EContinue;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcpr/src/ipcprprovider.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,411 @@
+// Copyright (c) 2005-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 class is an example implementation of a bearer-mobile network session. It is intended as a guide only and does
+// not employ any advanced bearer selection algorithms. It is envisaged that users of these classes will want to derive their own
+// implementations from CIPNetworkSession. 
+// This is part of an ECOM plug-in
+// 
+//
+
+#include "ipcprprovider.h"	// for CIPNetworkConnectionProvider
+#include <comms-infras/ss_log.h>
+
+CIPNetworkConnectionProvider* CIPNetworkConnectionProvider::NewL(CConnectionProviderFactoryBase& aFactory)
+	{			
+	CIPNetworkConnectionProvider* p = new (ELeave) CIPNetworkConnectionProvider(aFactory);
+	CleanupStack::PushL(p);
+	p->iMDes = TMetaDes8::NewL(NULL);
+	CleanupStack::Pop(p);
+	__CFLOG_VAR((KIpcprTag, KIpcprSubTag, _L8("CIPNetworkConnectionProvider::NewL() %08x"), p));
+	return p;	
+	}
+	
+CIPNetworkConnectionProvider::~CIPNetworkConnectionProvider()
+	{
+	__CFLOG_VAR((KIpcprTag, KIpcprSubTag, _L8("CIPNetworkConnectionProvider   %08x:\t~CIPNetworkConnectionProvider"), this));
+	delete iMDes;
+	if (iShimCpr)
+		{
+		iShimCpr->Leave(*this);
+		}
+	}
+	
+#ifdef SYMBIAN_NETWORKING_UMTSR5	
+
+TUint32 CIPNetworkConnectionProvider::GetAppSecureId()
+	{
+	return iAppSecureId;
+	}
+
+void CIPNetworkConnectionProvider::SetAppSecurId(TUint32 aSecureId)
+	{
+	iAppSecureId = aSecureId;
+	}
+	
+TAny* CIPNetworkConnectionProvider::DoFetchInterfaceInstanceL( const STypeId& aTid )
+	{
+	STypeId typeId = STypeId::CreateSTypeId(KConnectionAppInfoInterfaceId,0);
+	if (typeId == aTid)
+    	{
+    	MConnectionAppIdInfo* ipcpr = static_cast<MConnectionAppIdInfo*>(this);
+    	return ipcpr;
+    	}
+    return NULL;
+	}
+	
+#endif // SYMBIAN_NETWORKING_UMTSR5	
+//
+// from MConnectionControlClient
+void CIPNetworkConnectionProvider::ConnectionGoingDown(CConnectionProviderBase& aConnProvider)
+	{
+	__CFLOG_VAR((KIpcprTag, KIpcprSubTag, _L8("CIPNetworkConnectionProvider %08x:\tConnectionGoingDown(aConnProvider %08x)"), this, &aConnProvider));
+	if (&aConnProvider == iShimCpr)
+		{
+		iShimCpr = NULL;
+		DeleteMeNow();
+		}
+	}
+
+void CIPNetworkConnectionProvider::ProgressNotification(TInt aStage, TInt aError)
+	{
+	__CFLOG_VAR((KIpcprTag, KIpcprSubTag, _L8("CIPNetworkConnectionProvider %08x:\tProgressNotification(aStage %d aError %d)"), this, aStage, aError));
+	TInt max = iControlClients.Count();
+	for (TInt i = max - 1 ; i >= 0 ; i--)
+   		{
+	   	iControlClients[i]->ProgressNotification(aStage, aError);
+		}
+	}
+   
+void CIPNetworkConnectionProvider::ConnectionError(TInt aStage,  TInt aError)
+	{
+	__CFLOG_VAR((KIpcprTag, KIpcprSubTag, _L8("CIPNetworkConnectionProvider %08x:\tConnectionError(aStage %d aError %d)"), this, aStage, aError));
+	TInt max = iControlClients.Count();
+	for (TInt i = max - 1 ; i >= 0 ; i--)
+		{
+		iControlClients[i]->ConnectionError(aStage, aError);
+		}
+	max = iDataClients.Count();
+	for (TInt i = max - 1 ; i >= 0 ; i--)
+		{
+		iDataClients[i]->ConnectionError(aStage, aError);
+		}
+  	}
+   
+void CIPNetworkConnectionProvider::ServiceChangeNotification(TUint32 aId, const TDesC& aType)
+	{	
+	__CFLOG_VAR((KIpcprTag, KIpcprSubTag, _L8("CIPNetworkConnectionProvider %08x:\tServiceChangeNotification(aId %u aType %s)"), this, aId, &aType));
+   	TInt max = iControlClients.Count();
+	for (TInt i = max - 1 ; i >= 0 ; i--)
+   		{
+	   	iControlClients[i]->ServiceChangeNotification(aId, aType);
+		}
+  	}   
+ 
+void CIPNetworkConnectionProvider::SubConnectionEvent(CSubConnectionProviderBase* aSubConnNextLayerProvider, const TSubConnectionEvent& aSubConnectionEvent)
+	{
+	TInt max = iControlClients.Count();
+	for (TInt i = max - 1 ; i >= 0 ; i--)
+		{
+	   	iControlClients[i]->SubConnectionEvent(aSubConnNextLayerProvider, aSubConnectionEvent);
+		}
+	}
+
+void CIPNetworkConnectionProvider::LayerUp(TInt aError)
+	{
+	TInt max = iControlClients.Count();
+	for (TInt i = max - 1 ; i >= 0 ; --i)
+		{
+		iControlClients[i]->LayerUp(aError);
+		}
+		
+	// broadcast the event to the data clients also, sideways
+	max = iDataClients.Count();	
+	for (TInt j = max - 1; j >= 0 ; --j)
+		{				
+		iDataClients[j]->Notify(MConnectionDataClient::ENotifyLayerUp, this, aError, NULL);
+		}
+   }
+   
+MConnectionControlClient::TCtlType CIPNetworkConnectionProvider::CtlType() const
+	{
+	return MConnectionControlClient::ENormal;
+	}
+
+//
+// from CConnectionProviderBase
+void CIPNetworkConnectionProvider::DoDataClientJoiningL(MConnectionDataClient& aDataClient)
+	{
+	(void)(aDataClient);
+	UpdateUsageProfile(NULL);
+	__CFLOG_VAR((KIpcprTag, KIpcprSubTag, _L8("CIPNetworkConnectionProvider [this=%08x]:\tDoDataClientJoiningL [iDataClients.Count=%d] [aDataClient=%08x]"), this, iDataClients.Count(), &aDataClient));
+	}
+   
+void CIPNetworkConnectionProvider::DoDataClientLeaving(MConnectionDataClient& aDataClient)
+	{
+	(void)(aDataClient);
+	UpdateUsageProfile(NULL);
+	__CFLOG_VAR((KIpcprTag, KIpcprSubTag, _L8("CIPNetworkConnectionProvider [this=%08x]:\tDoDataClientLeaving [iDataClients.Count=%d] [aDataClient=%08x]"), this, iDataClients.Count(), &aDataClient));
+	}
+   
+void CIPNetworkConnectionProvider::DoControlClientJoiningL(MConnectionControlClient& aControlClient)
+	{
+	(void)(aControlClient);
+	UpdateUsageProfile(NULL);
+	__CFLOG_VAR((KIpcprTag, KIpcprSubTag, _L8("CIPNetworkConnectionProvider [this=%08x]:\tDoControlClientJoiningL [iControlClients.Count=%d] [aControlClient=%08x]"), this, iControlClients.Count(), &aControlClient));
+  	}
+   
+void CIPNetworkConnectionProvider::DoControlClientLeaving(MConnectionControlClient& aControlClient)
+	{
+	UpdateUsageProfile(&aControlClient);
+	__CFLOG_VAR((KIpcprTag, KIpcprSubTag, _L8("CIPNetworkConnectionProvider [this=%08x]:\tDoControlClientLeaving [iControlClients.Count=%d] [aControlClient=%08x]"), this, iControlClients.Count(), &aControlClient));
+  	}
+
+void CIPNetworkConnectionProvider::UpdateUsageProfile(MConnectionControlClient* aControlClient)
+/**
+Update the Usage Profile if there has been a change in the RConnection's or Sessions associated
+with this provider.
+@param aControlClient A control client that should be ignored when calculating the usage profile.
+*/
+	{
+	TUint usageProfile = 0;
+	TInt ignoredClient = 0;
+	
+	TInt max = iControlClients.Count();
+	TInt nConnectionMonitorCount = 0;
+	TInt nSessionCount = 0;
+	for (TInt n = 0; n < max; n++)
+		{
+		MConnectionControlClient* client = iControlClients[n];
+		
+		// Ignore the control client passed as argument (it is the one about to leave).
+		if (!aControlClient || aControlClient != client)
+			{
+			MConnectionControlClient::TCtlType type = client->CtlType();
+			switch (type)
+				{
+				case MConnectionControlClient::EMonitor:
+					nConnectionMonitorCount++;
+					break;
+				case MConnectionControlClient::ESession:
+					nSessionCount++;
+					break;
+				}
+			}
+		else
+			{
+			ASSERT(ignoredClient == 0);
+			ignoredClient = 1;
+			}
+		}
+
+	// Assert that aControlClient, if specified, is	in iControlClients[]
+	ASSERT(aControlClient == NULL || ignoredClient == 1);
+	
+	if (max - ignoredClient > nConnectionMonitorCount)
+		usageProfile |= KConnProfileMedium;
+
+	if (nSessionCount > 0)
+		usageProfile |= KConnProfileLong;
+
+	if (iShimCpr)
+		{
+		TBuf8<sizeof(TUint)> buf;
+		buf.AppendNum(usageProfile);
+
+		//Meta derived buffer (iMDes) is only used here to pass
+		//the usageProfile down to the shimcpr
+		iMDes->iDes = &buf;
+
+		//ESetUsageProfile operation cannot leave in fact=> 
+		//=>the trap here just to make leavescan happy
+		TRAP_IGNORE(iShimCpr->ConnectionControlActivityL(ESetUsageProfile, iMDes, NULL));
+		
+		//iMDes->iDes will not be used ever again but we clean it so that it is clear
+		iMDes->iDes = NULL;
+		}
+	}
+
+void CIPNetworkConnectionProvider::DoStartL(Meta::SMetaData& aParams, const RMessagePtr2* aMessage)
+	{
+	if (iShimCpr)
+		{
+		iShimCpr->StartL(aParams, aMessage);
+		}
+	else
+		{
+		User::Leave(KErrNotReady);
+		}
+  	}
+   	
+TInt CIPNetworkConnectionProvider::DoStop(TInt aError, const RMessagePtr2* aMessage)
+	{
+	return 	iShimCpr ? iShimCpr->Stop(aError, aMessage) : KErrNotReady;
+  	}   
+
+void CIPNetworkConnectionProvider::DoProgressL(Meta::SMetaData& aBuffer) const
+	{
+	if (iShimCpr)
+		{
+		iShimCpr->ProgressL(aBuffer);
+		}
+  	}
+   
+void CIPNetworkConnectionProvider::DoLastProgressError(Meta::SMetaData& aBuffer)
+	{
+	if (iShimCpr)
+		{
+		iShimCpr->LastProgressError(aBuffer);
+		}
+  	}
+   
+void CIPNetworkConnectionProvider::DoRequestServiceChangeNotificationL()
+	{
+	if (iShimCpr)
+		{
+		iShimCpr->RequestServiceChangeNotificationL();
+		}
+  	}
+   
+void CIPNetworkConnectionProvider::DoCancelServiceChangeNotification()
+	{
+	if (iShimCpr)
+		{
+		iShimCpr->CancelServiceChangeNotification();
+		}
+  	}
+   
+void CIPNetworkConnectionProvider::DoControlL(TUint aOptionLevel, TUint aOptionName, Meta::SMetaData& aOption, const RMessagePtr2* aMessage)
+	{
+	if (iShimCpr)
+		{
+		iShimCpr->ControlL(aOptionLevel, aOptionName, aOption, aMessage);
+		}
+	else
+		{
+		User::Leave(KErrNotReady);	
+		}
+  	}
+
+TInt CIPNetworkConnectionProvider::DoEnumerateSubConnectionsL(TUint& aCount)
+	{
+	return iShimCpr ? iShimCpr->EnumerateSubConnectionsL(aCount) : KErrNotReady;
+	}
+
+TUint CIPNetworkConnectionProvider::DoEnumerateClientsL(HBufC8*& aClientInfoBuffer, TEnumClients aClientType)
+/**
+Returns information about the clients of this Interface
+
+@param aCount on return contains the number of clients using this Interface
+@param aClientInfoBuffer on return contains a TPckg<> containing information about each client
+@exception leaves with KErrNoMemory if memory allocation fails
+*/
+	{	
+	const TInt KInfoBufMaxLength = 1024;  //is this large enough?
+	TBuf8<KInfoBufMaxLength> infoBuf;
+
+	TUint count = 0;
+	STypeId tid = STypeId::CreateSTypeId(KConnectionClientExtUid,EConnectionClientDesc);
+	TInt max = iControlClients.Count();
+	for ( TInt n = 0; n < max; n++ )
+		{
+		MConnectionClientDesc* intf = reinterpret_cast<MConnectionClientDesc*>(iControlClients[n]->FetchInterfaceInstanceL(*this,tid));
+		if ( intf )
+			{
+			TConnectionProcessInfo cinfo;
+			cinfo.GetInfoL(aClientType, count, *intf, infoBuf);
+			}
+		}
+	STypeId tid2 = STypeId::CreateSTypeId(KConnectionClientExtUid,EConnectionEnumerateClients);
+	max = iDataClients.Count();
+	for ( TInt n = 0; n < max; n++ )
+		{
+		MConnectionEnumerateClients* intf = reinterpret_cast<MConnectionEnumerateClients*>(iDataClients[n]->FetchInterfaceInstanceL(*this,tid2));
+		if ( intf )
+			{
+			intf->EnumerateClientsL(count, infoBuf, aClientType);
+			}
+		}
+
+	aClientInfoBuffer = infoBuf.AllocL();
+	return count;
+	}
+
+void CIPNetworkConnectionProvider::DoConnectionControlActivityL( CConnectionProviderBase::TControlActivity aControlActivity, const Meta::SMetaData* aData, const RMessagePtr2* aMessage )
+	{
+	if (iShimCpr)
+		{
+		iShimCpr->ConnectionControlActivityL(aControlActivity, aData, aMessage);
+		}
+	}
+	
+CConnectionSettings& CIPNetworkConnectionProvider::DoSettingsAccessL()
+	{
+	if (iShimCpr == NULL)
+		{
+		User::Leave(KErrNotReady);
+		}
+	return iShimCpr->SettingsAccessL();
+	}
+	
+TInt CIPNetworkConnectionProvider::DoAllSubConnectionNotificationEnable()
+	{
+	return !iShimCpr ? KErrNotReady : iShimCpr->AllSubConnectionNotificationEnable();
+  	}
+
+TInt CIPNetworkConnectionProvider::DoCancelAllSubConnectionNotification()
+	{
+	return !iShimCpr ? KErrNotReady : iShimCpr->CancelAllSubConnectionNotification();
+  	}
+   
+void CIPNetworkConnectionProvider::DoSendIoctlMessageL(const RMessage2& aMessage)
+	{
+	if (iShimCpr)
+		{
+		iShimCpr->SendIoctlMessageL(aMessage);
+		}
+	else
+		{
+		User::Leave(KErrNotReady);	
+		}
+  	}
+   
+void CIPNetworkConnectionProvider::DoSendCancelIoctl()
+	{
+	if (iShimCpr)
+		{
+		iShimCpr->SendCancelIoctl();
+		}
+  	}
+      
+TInt CIPNetworkConnectionProvider::DoCanDoSubConnection(RSubConnection::TSubConnType /*aSubConnType*/) const
+	{
+	return ETrue;
+  	}
+
+void CIPNetworkConnectionProvider::DoJoinNextLayerL(CConnectionProviderBase* aNextLayer)
+	{
+	ASSERT( !iShimCpr );
+	ASSERT( aNextLayer );
+	iShimCpr = aNextLayer;
+    SetConnectionInfo(iShimCpr->ConnectionInfo());
+    // join ourselves as a connection control client to the lower provider
+    iShimCpr->JoinL(*this);
+	}
+
+CConnectionProviderBase* CIPNetworkConnectionProvider::DoNextLayer() const
+	{
+  	return iShimCpr;
+  	}
+   
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/group/bld.inf	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,36 @@
+// Copyright (c) 2005-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_NON_SEAMLESS_NETWORK_BEARER_MOBILITY 
+
+PRJ_EXPORTS
+#ifdef SYMBIAN_OLD_EXPORT_LOCATION
+../inc/shimcpr.h
+#endif
+#ifdef SYMBIAN_OLD_EXPORT_LOCATION
+../inc/shimcprfactory.h
+#endif
+#ifdef SYMBIAN_OLD_EXPORT_LOCATION
+../inc/shimclient.h		/epoc32/include/comms-infras/shimclient.h
+#endif
+
+../group/shimcpr.iby /epoc32/rom/include/shimcpr.iby
+
+PRJ_MMPFILES
+shimcpr.mmp
+
+PRJ_TESTMMPFILES
+
+#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/group/networking_shimcpr.history.xml	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<relnotes name="Connection Provider Plugin">
+  <purpose>
+  </purpose>
+
+  <defect number="DEF101532" title="connection DataSentNotificationRequest returns before correct vol of data sent" revision="002">
+    Correct case whereby data monitoring thresholds did not work with multiple RConnection objects referring to the same underlying object.
+  </defect>
+
+  <defect number="DEF098373" title="TE_ESock_OOM tests aborting and causing panic in Esock_IP, OOM Testing" revision="001">
+    E_ESock_OOM tests aborting and causing panic in Esock_IP, OOM Testing
+  </defect>
+</relnotes>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/group/networking_shimcpr.mrp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,25 @@
+#
+# 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_shimcpr
+source			\sf\os\networkingsrv\networkcontrol\ipcprshim
+binary			\sf\os\networkingsrv\networkcontrol\ipcprshim\group	all
+exports			\sf\os\networkingsrv\networkcontrol\ipcprshim\group
+notes_source	\component_defs\release.src
+
+
+ipr E 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/group/shimcpr.iby	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,25 @@
+/*
+* 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 __SHIMCPR_IBY__
+#define __SHIMCPR_IBY__
+
+REM IP Connection Provider Shim
+
+ECOM_PLUGIN(shimcpr.dll,102070FD.rss)
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/group/shimcpr.mmp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,57 @@
+// Copyright (c) 2005-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:
+// shimcpr.MMP New IP Connection Provider Shim ECOM plugin with BM support
+// 
+//
+
+/**
+ @file
+*/
+
+#include <cflog.mmh>
+
+TARGET          shimcpr.dll
+TARGETTYPE      PLUGIN
+
+UID             0x10009D8D 0x102070FD
+VENDORID 		 0x70000001
+
+SOURCEPATH      ../src
+SOURCE          shimcpr.cpp shimcprfactory.cpp shimconnsettings.cpp connectionSelectorShim.cpp
+SOURCE 	        shimdatatransfer.cpp shimclient.cpp shimnifmansconn.cpp
+
+USERINCLUDE     ../inc
+
+SYSTEMINCLUDE   /epoc32/include
+SYSTEMINCLUDE   /epoc32/include/ecom
+SYSTEMINCLUDE   /epoc32/include/comms-infras
+
+START RESOURCE 102070FD.rss
+TARGET shimcpr.rsc
+END
+LIBRARY         euser.lib esock.lib esocksvr.lib eintsock.lib insock.lib netmeta.lib nifman.lib commsfw.lib 
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+
+LIBRARY			commdb.lib commsdat.lib
+#endif //SYMBIAN_NETWORKING_UMTSR5
+
+
+#include	    "comms-infras/commsdebugutility.mmh"
+
+CAPABILITY ALL -Tcb
+
+UNPAGED
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/inc/shimclient.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,62 @@
+/**
+* Copyright (c) 2005-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 SHIMCLIENT.H
+ @internalComponent
+*/
+
+#if !defined(__SHIMCLIENT_H__)
+#define __SHIMCLIENT_H__
+
+#include <e32def.h>
+#include <e32base.h>
+#include <comms-infras/metadata.h>
+
+class TNifProgress;
+class MShimControlClient
+/**
+ the former CSubConnection down-calls (interface seen by ESOCK and used to comunicate sub-connection
+ related calls made via RConnection using either id or index.
+ 
+ @internalComponent
+ */
+	{
+public:
+	//former CConnection::StopSubConnectionL(const RMessage2& aMessage);
+	virtual TBool StopL(const RMessage2& aMessage) = 0;
+	// Former calls from CConnection::GetSubConnectionInfo
+	virtual TInt GetSubConnectionInfo(const RMessage2& aMessage) = 0;
+	//	Former Calls from RConnection via CSubConnection
+	virtual TInt GetCurrentProgress(TNifProgress& aProgress) = 0;
+	virtual TBool DataTransferredL(const RMessage2& aMessage) = 0;
+	virtual TBool DataTransferredCancel(const RMessage2& aMessage) = 0;
+	virtual TBool RequestSubConnectionProgressNotificationL(const RMessage2& aMessage) = 0;
+	virtual TBool CancelSubConnectionProgressNotification(const RMessage2& aMessage) = 0;
+	virtual TBool DataSentNotificationRequestL(const RMessage2& aMessage) = 0;
+	virtual TBool DataSentNotificationCancel(const RMessage2& aMessage) = 0;
+	virtual TBool DataReceivedNotificationRequestL(const RMessage2& aMessage) = 0;
+	virtual TBool DataReceivedNotificationCancel(const RMessage2& aMessage) = 0;
+	virtual TBool IsSubConnectionActiveRequestL(const RMessage2& aMessage) = 0;
+	virtual TBool IsSubConnectionActiveCancel(const RMessage2& aMessage) = 0;
+	
+	virtual TInt ReturnCode() const = 0;
+	};
+	
+#endif // __SHIMCLIENT_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/inc/shimconnsettings.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,51 @@
+/**
+* Copyright (c) 2005-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 SS_SHIMCONNSETTINGS.H
+ @internalComponent
+*/
+
+#if !defined(__SS_SHIMCONNSETTINGS_H__)
+#define __SS_SHIMCONNSETTINGS_H__
+
+#include "ss_connsettings.h"
+
+class CConnectionProvdBase;
+class CConnectionSettingsShim : public CConnectionSettings
+	{
+
+public:
+	CConnectionSettingsShim( CConnectionProvdBase& aConnectionProvdBase ) :
+		iConnectionProvdBase( aConnectionProvdBase )
+		{
+		}
+	
+protected:
+	virtual void DoGetBoolSettingL(const TDesC& aSettingName, TBool& aValue, const RMessagePtr2* aMessage );
+	virtual void DoGetDes16SettingL(const TDesC& aSettingName, TDes16& aValue, const RMessagePtr2* aMessage );
+	virtual void DoGetDes8SettingL(const TDesC& aSettingName, TDes8& aValue, const RMessagePtr2* aMessage );
+	virtual void DoGetIntSettingL(const TDesC& aSettingName, TUint32& aValue, const RMessagePtr2* aMessage );
+	virtual HBufC* DoGetLongDesSettingLC(const TDesC& aSettingName, const RMessagePtr2* aMessage );
+	
+private:
+	CConnectionProvdBase& iConnectionProvdBase;
+	};
+	
+#endif	// __SS_CONNSETTINGS_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/inc/shimcpr.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,174 @@
+/**
+* Copyright (c) 2005-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 temporary shim layer contanis the interfaces defined by MConnectionNotify, CConnectionProvdBase and CInterface.
+* However only the connection-related part of CInterface appears here, the rest is in CNifManSubConnectionShim.
+* 
+*
+*/
+
+
+
+/**
+ @file SHIMCPR.H
+ @internalComponent
+*/
+
+#if !defined(__SS_SHIMCPR_H__)
+#define __SS_SHIMCPR_H__
+
+#include <ss_connprov.h>		// for CConnectionProviderFactoryBase
+#include <cflog.h>
+#include <es_prot.h>			// for MConnectionNotify and CConnectionProvdBase
+#include <comms-infras/ss_log.h>				// for KESockConnectionTag
+
+#define KShimCprTag KESockConnectionTag
+_LIT8(KShimCprSubTag, "shimcpr");	// logging tag
+
+
+class CConnectionProvdBase;
+class CNifManSubConnectionShim;
+class CConnectionProviderFactoryShim;
+class CConnectionSettingsShim;
+class CConnection;
+class MProviderSelector;
+class CSubConnectionLinkShimClient;
+class CConnectionSelectorShim;
+NONSHARABLE_CLASS(CConnectionProviderShim) : public CConnectionProviderBase, MConnectionNotify
+	{
+  	friend class CConnectionProviderFactoryShim;
+  	friend class CConnectionSelectorShim; //to get/set the aggregarted CConnectionProvdBase
+
+
+public:
+	CConnectionProvdBase& Provider()
+		{
+		ASSERT(iProvider);
+		return *iProvider;
+		}
+	CSubConnectionLinkShimClient* QuerySubSessions(TInt32 aTypeId, const CConnection* aConnection);
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+	// The public function which will set the pointer to the factiory
+	void SetFactoryIfactory(CConnectionProviderFactoryShim *aFactoryShim);
+#endif // SYMBIAN_NETWORKING_UMTSR5	
+      
+protected:
+	virtual ~CConnectionProviderShim();
+	
+
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+	CConnectionProviderShim(CConnectionProviderFactoryBase& aFactory)
+	   : CConnectionProviderBase(aFactory), iSubConnectionType(KInvalidFactoryId)
+	    {
+	    __CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tCConnectionProviderShim()"),
+			this));
+	    }    
+#else
+	CConnectionProviderShim(CConnectionProviderFactoryBase& aFactory)
+	   : CConnectionProviderBase(aFactory)
+	    {
+	    __CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tCConnectionProviderShim()"),
+			this));
+	    }	
+#endif
+// SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+
+	    
+    void ConstructL();
+    static CConnectionProviderShim* NewL(CConnectionProviderFactoryBase& aFactory);
+
+	void ConnectionJoiningL( const CConnection& aConnection );
+	void ConnectionLeaving( const CConnection& aConnection );
+	
+	
+	      
+protected:
+	// Define methods from the interface specified by MConnectionNotify
+	virtual void SelectionComplete(TInt aError, const TDesC8& aSelectionInfo);
+	virtual void ConnectionError(TInt aError);
+	virtual void LinkLayerOpen(TInt aError);
+	virtual void LinkLayerClosed(TInt aError);
+	virtual void ProgressNotification(TInt aStage, TInt aError);
+	virtual void ProgressNotification(TSubConnectionUniqueId aSubConnectionUniqueId, TInt aStage, TInt aError);
+	virtual void ServiceChangeNotification(TUint32 aId, const TDesC& aType);
+	virtual void InterfaceStateChangeNotification(TDesC8& aInfo);
+	virtual void NotifyDataSent(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aUplinkVolume);
+	virtual void NotifyDataReceived(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aDownlinkVolume);
+	virtual void SubConnectionEvent(const TSubConnectionEvent& aSubConnectionEvent);
+	
+	virtual TBool ShouldIDeleteNow();
+	
+protected:
+	//CConnectionProviderBase virtuals
+	virtual void DoDataClientJoiningL(MConnectionDataClient& aDataClient);
+	virtual void DoDataClientLeaving(MConnectionDataClient& aDataClient);
+	virtual void DoControlClientJoiningL(MConnectionControlClient& aControlClient);
+	virtual void DoControlClientLeaving(MConnectionControlClient& aControlClient);
+   
+	virtual void DoStartL(Meta::SMetaData& aParams, const RMessagePtr2* aMessage);	
+	virtual TInt DoStop(TInt aError, const RMessagePtr2* aMessage);
+
+	virtual TInt DoCanDoSubConnection(RSubConnection::TSubConnType aSubConnType) const;
+
+	virtual CConnectionProviderBase* DoNextLayer() const ;
+	virtual void DoJoinNextLayerL(CConnectionProviderBase* aNextLayer);
+
+	virtual void DoProgressL(Meta::SMetaData& aBuffer) const;
+	virtual void DoLastProgressError(Meta::SMetaData& aBuffer);
+	virtual void DoRequestServiceChangeNotificationL();
+	virtual void DoCancelServiceChangeNotification();
+	virtual void DoControlL(TUint aOptionLevel, TUint aOptionName, Meta::SMetaData& aOption, const RMessagePtr2* aMessage);
+	virtual TInt DoAllSubConnectionNotificationEnable();
+	virtual TInt DoCancelAllSubConnectionNotification();
+  	virtual void DoSendIoctlMessageL(const RMessage2& aMessage);
+  	virtual void DoSendCancelIoctl();
+	virtual TInt DoEnumerateSubConnectionsL(TUint& aCount);
+	virtual TUint DoEnumerateClientsL(HBufC8*& aClientInfoBuffer, TEnumClients aClientType);
+	virtual void DoConnectionControlActivityL( TControlActivity aControlActivity, const Meta::SMetaData* aData, const RMessagePtr2* aMessage );
+	virtual CConnectionSettings& DoSettingsAccessL();
+
+    CConnectionProvdBase* GetNifSession();
+    void InitialiseL(CConnectionProvdBase* aStarterSession);
+    void SetBlockProgressesL(CConnectionProvdBase* aStarterSession);
+    void AddRefL(CConnectionSelectorShim* aSelector);
+    void ReleaseRef(CConnectionSelectorShim* aSelector);    
+    
+private:
+	CNifManSubConnectionShim* FindSubConnection(TSubConnectionUniqueId aId);
+	void ReleaseRef();
+
+private:
+	CConnectionProvdBase *iProvider; // Enable access to 'old' NIFMAN layer
+	CConnectionSettingsShim* iConnectionSettings;
+	TUint iUsageProfile;
+	RPointerArray<const CConnection> iConnections;
+	// TInt iRefCount; //to keep a connection up while selection is going on
+	RPointerArray<CNifManSubConnectionShim> iNifManSubConnections;
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+    TInt iSubConnectionType;
+#endif // SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+	RPointerArray<CConnectionSelectorShim> iSelectors;
+	TBool iHasAnyControlClientJoined:1;
+	TBool iIsAlreadyUninitialised:1;
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+	// The handle to the factory object that creates the CConnectionProviderShim
+	CConnectionProviderFactoryShim *iFactoryShim;
+#endif // #ifdef SYMBIAN_NETWORKING_UMTSR5
+
+
+};
+
+#endif
+// __SS_SHIMCPR_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/inc/shimcprfactory.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,113 @@
+/**
+* Copyright (c) 2005-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 SHIMCPRFACTORY.H
+ @internalComponent
+*/
+
+#if !defined(__SHIMCPRFACTORY_H__)
+#define __SHIMCPRFACTORY_H__
+
+#include <ss_connprov.h>		// for CConnectionProviderFactoryBase
+#include <cflog.h>
+
+__CFLOG_STMT(_LIT8(KLogSubSysESOCK, "ESOCK");) // subsystem name
+	
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5   
+
+// The class CConnectionProviderFactoryShim implements this interface as part of the 635 IAP locking mechanism. Since
+// each RConn::Start(), will instantiate its own selector, its then become the resposiblity of the factory to store the
+// status related to the IAP locking. This interface has the functions called by the selectors with the status of IAP lockied
+// and the IAP number to be locked
+
+class MIAPLockInfo
+{
+public:
+	virtual void SetIAPLockStatus(TBool aLockStatus, TInt aLockedIAP)=0;	
+	virtual void GetIAPLockStatus(TBool &aLockStatus, TInt &aLockedIAP)=0;
+};	
+
+#endif // #ifdef SYMBIAN_NETWORKING_UMTSR5	
+   
+class CSubConnectioProviderLinkShim;
+
+const TUint KShimConnectionProviderFactoryId = 0x10207104; //the same as CSubConnectionProviderFactoryShim
+
+class CSubConnectionFactoryContainer;
+NONSHARABLE_CLASS(CConnectionProviderFactoryShim) : public CConnectionProviderFactoryBase, public MConnectionNotify
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+													, public MIAPLockInfo
+#endif // #ifdef SYMBIAN_NETWORKING_UMTSR5													
+	{
+public:
+	static CConnectionProviderFactoryShim* NewL(TAny* aConstructionParameters);
+   	~CConnectionProviderFactoryShim();
+
+
+protected:
+	void ConstructL();
+	CConnectionProviderFactoryShim(TUint aFactoryId, CConnectionFactoryContainer& aParentContainer);
+
+	virtual CConnectionProviderBase* DoCreateProviderL();
+	virtual MProviderSelector* DoSelectProvider( Meta::SMetaData& aPreferences, ISelectionNotify& aSelectionNotify, const RMessagePtr2* aMessage );
+	virtual MProviderSelector* DoSelectNextLayerProvider( Meta::SMetaData& aPreferences, ISelectionNotify& aSelectionNotify, const RMessagePtr2* aMessage );	
+
+	virtual void DoEnumerateConnectionsL(RPointerArray<TConnectionInfo>& aConnectionInfoPtrArray);
+	
+	//CCommsFactoryBase
+	virtual TInt DoReceiveMessage( NetMessages::CMessage& aNetMessage );
+
+	//MConnectionNotify interface to catch the global events
+	virtual void SelectionComplete(TInt aError, const TDesC8& aSelectionInfo);
+	virtual void ConnectionError(TInt aError);
+	virtual void LinkLayerOpen(TInt aError);
+	virtual void LinkLayerClosed(TInt aError);
+	virtual void ProgressNotification(TInt aStage, TInt aError);
+	virtual void ProgressNotification(TSubConnectionUniqueId aSubConnectionUniqueId, TInt aStage, TInt aError);
+	virtual void ServiceChangeNotification(TUint32 aId, const TDesC& aType);
+	virtual void InterfaceStateChangeNotification(TDesC8& aInfo);
+	virtual void NotifyDataSent(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aUplinkVolume);
+	virtual void NotifyDataReceived(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aDownlinkVolume);
+	
+	virtual void SubConnectionEvent(const TSubConnectionEvent& aSubConnectionEvent);
+#ifdef SYMBIAN_NETWORKING_UMTSR5 
+public:
+  
+	// Interface MIAPLockInfo functions to store the status of IAP locking
+	virtual void SetIAPLockStatus(TBool aLockStatus, TInt aLockedIAP);	
+	virtual void GetIAPLockStatus (TBool &aLockStatus, TInt &aLockedIAP);
+	
+#endif // #ifdef SYMBIAN_NETWORKING_UMTSR5	
+	
+
+protected:
+	CConnectionProvdBase* iNifmanSession;
+#ifdef SYMBIAN_NETWORKING_UMTSR5	
+	
+	// This variable will tell the status whether the IAP is locked or not
+	TBool iIsIAPLocked;
+	// This variable will store the IAP number that is being locked.
+	TInt  iLockedIAP;
+	
+#endif // #ifdef SYMBIAN_NETWORKING_UMTSR5
+	};
+
+#endif // __SHIMCPRFACTORY_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/inc/shimdatatransfer.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,78 @@
+/**
+* Copyright (c) 2005-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 SHIMDATATRANSFER.H
+ @internalComponent
+*/
+
+#if !defined(__SHIMDATATRANSFER_H__)
+#define __SHIMDATATRANSFER_H__
+
+#include <e32def.h>
+#include <e32base.h>
+#include "ss_datatransfer.h"
+
+class CConnectionProvdBase;
+class CNifManSubConnectionShim;
+class CConnDataTransferShim : public CConnDataTransfer
+	{
+public:
+	CConnDataTransferShim(CNifManSubConnectionShim& aSubConnectionProviderShim);
+	~CConnDataTransferShim();
+	
+public:
+	//up-calls from the CNifManSubConnectionShim
+	TInt NotifyDataTransferred(TUint aUplinkVolume, TUint aDownlinkVolume);
+	TInt NotifyDataSent(TUint aUplinkVolume);
+	TInt NotifyDataReceived(TUint aDownlinkVolume);
+
+protected:
+	//down-calls clients requests
+	virtual TInt DoDataTransferred(TUint& aUplinkVolume, TUint& aDownlinkVolume);
+	virtual TInt DoDataTransferredCancel();
+	virtual TInt DoDataSentNotificationRequest(TUint aRequestedGranularity, TUint aRequestedNotificationVolume);
+	virtual TInt DoDataSentNotificationCancel();
+	virtual TInt DoDataReceivedNotificationRequest(TUint aRequestedGranularity, TUint aRequestedNotificationVolume);
+	virtual TInt DoDataReceivedNotificationCancel();
+
+protected:
+	TInt CalculateNewUplinkGranularity(TUint aRequestedGranularity);
+	TInt CalculateNewDownlinkGranularity(TUint aRequestedGranularity);
+
+	TInt SetNextUplinkGranularity();
+	TInt SetNextDownlinkGranularity();
+
+	TInt SetUplinkGranularity(TUint aRequestedGranularity);
+	TInt SetDownlinkGranularity(TUint aRequestedGranularity);
+
+protected:
+	static TInt CalculateNewGranularity(TInt aRequestedGranularity, TUint aCurrentGranularity, RArray<TUint>& aGranularities, TUint& aNewGranularity);
+
+private:
+	CNifManSubConnectionShim& iSubConnectionProviderShim;
+	
+	RArray<TUint> iUplinkGranularities;		// ordered lists of deltas for the granularities
+	RArray<TUint> iDownlinkGranularities;
+
+	TUint iCurrentUplinkGranularity;		// the aggregate notification granularity calculated from all the CConnection requests
+	TUint iCurrentDownlinkGranularity;
+	};
+	
+#endif	// __SHIMDATATRANSFER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/inc/shimnifmansconn.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,219 @@
+// Copyright (c) 2005-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(__SHIMNIFMANSCONN_H__)
+#define __SHIMNIFMANSCONN_H__
+
+#include <comms-infras/ss_log.h>
+#include "shimdatatransfer.h"
+#include "shimclient.h"
+#include "shimcpr.h" //access to the CConnectionProviderShim::Provider() fn
+
+//const TInt KSubConnectionProviderShimImplementationUid = 0x10207106;
+
+#define KShimScprTag KESockSubConnectionTag
+_LIT8(KShimScprSubTag, "shimscpr");
+_LIT8(KShimScprDataTag, "shimscprData");
+_LIT8(KShimScprClientTag, "shimscprClient");
+
+//Former CInterface CSubConnection related up-calls so that CConnectionProviderShim
+//doesn't have to link against the sub-connection shim
+class CConnection;
+class MSubInterfaceShim : public MConnDataTransferNotify
+	{
+public:
+	virtual TInt ProgressNotification(TInt aStage, TInt aError, const TDesC8& aInfo) = 0;
+	virtual TSubConnectionUniqueId Id() = 0;
+	virtual void SetSubConnectionUniqueId( TSubConnectionUniqueId aSubConnectionUniqueId ) = 0;
+	virtual void ConnectionJoiningL(const CConnection& aConnection) = 0;
+	virtual void ConnectionLeaving(const CConnection& aConnection) = 0;
+	};
+
+//class CSubConnectionProviderFactoryShim;
+class CSubConnectionLinkShimClient;
+
+NONSHARABLE_CLASS(CNifManSubConnectionShim) : public CBase, public MConnectionDataClient, public MSubInterfaceShim
+/**
+ @internalComponent
+ */
+	{
+
+public:
+	CNifManSubConnectionShim(CConnectionProviderShim& aProviderShim);
+	~CNifManSubConnectionShim();
+
+	// MSubInterfaceShim impl
+	virtual TInt ProgressNotification(TInt aStage, TInt aError, const TDesC8& aInfo);
+	virtual TInt NotifyDataTransferred(TUint aUplinkVolume, TUint aDownlinkVolume);
+	virtual TInt NotifyDataSent(TUint aUplinkVolume, TUint aCurrentGranularity);
+	virtual TInt NotifyDataReceived(TUint aDownlinkVolume, TUint aCurrentGranularity);
+	virtual TSubConnectionUniqueId Id();
+	virtual void SetSubConnectionUniqueId( TSubConnectionUniqueId aSubConnectionUniqueId );
+	virtual void ConnectionJoiningL(const CConnection& aConnection);
+	virtual void ConnectionLeaving(const CConnection& aConnection);
+
+	CConnectionProvdBase& Provider()
+		{
+		return static_cast<CConnectionProviderShim*>(iConnectionProvider)->Provider();
+		}
+	CConnDataTransferShim* DataTransferShim()
+		{
+		return iConnDataTransferShim;
+		}
+	CSubConnectionLinkShimClient* ShimClient( TInt aIndex )
+		{
+		return aIndex < iShimClients.Count() ? iShimClients[aIndex] : NULL;
+		}
+	void DeleteAsync();	
+protected:
+	//MConnectionDataClient
+	virtual void ConnectionGoingDown(CConnectionProviderBase& aConnProvider);
+	virtual void ConnectionError(TInt aStage, TInt aError);
+	virtual void Notify(TNotify aNotifyType,  CConnectionProviderBase* aConnProvider, TInt aError, const CConNotificationEvent* aConNotificationEvent);
+      virtual void AttachToNext(CSubConnectionProviderBase* aSubConnProvider);
+
+
+	TInt FindClient(const CConnection& aConnection);
+      CConnDataTransfer& CreateDataTransferL();
+
+protected:
+	RPointerArray<CSubConnectionLinkShimClient> iShimClients;
+	TSubConnectionUniqueId iSubConnectionsUniqueId;
+	CConnDataTransferShim* iConnDataTransferShim;
+	CConnectionProviderBase* iConnectionProvider;
+	CAsyncCallBack iAsyncDestructor;
+private:
+	static TInt AsyncDestructorCb(TAny* aInstance);
+	};
+
+NONSHARABLE_CLASS(CSubConnectionLinkShimClient) : public CBase, public MConnDataTransferNotify, public MShimControlClient
+/**
+ Handle subconnection-related asynchronous client requests that may not complete immediately, it effectively
+ represents the old CSubConnection
+ @internalComponent
+ */
+	{
+public:
+	CSubConnectionLinkShimClient(const CConnection& aConnection, CNifManSubConnectionShim& aSubConnectionShim);
+	~CSubConnectionLinkShimClient();
+
+	//MConnDataTransferNotify interface towards CConnDataTransfer
+	virtual TInt NotifyDataTransferred(const TUint aUplinkVolume, const TUint aDownlinkVolume);
+	virtual TInt NotifyDataSent(TUint aUplinkVolume, TUint aCurrentGranularity);
+	virtual TInt NotifyDataReceived(TUint aDownlinkVolume, TUint aCurrentGranularity);
+	
+	void ProgressNotification(TInt aStage, TInt aError, const TDesC8& aInfo);
+
+	//MShimControlClient interface towards ESOCK
+	//former CConnection::StopSubConnectionL(const RMessage2& aMessage);
+	virtual TBool StopL(const RMessage2& aMessage);
+	// Former calls from CConnection::GetSubConnectionInfo
+	virtual TInt GetSubConnectionInfo(const RMessage2& aMessage);
+	//	Former Calls from RConnection via CSubConnection
+	virtual TInt GetCurrentProgress(TNifProgress& aProgress);
+	virtual TBool DataTransferredL(const RMessage2& aMessage);
+	virtual TBool DataTransferredCancel(const RMessage2& aMessage);
+	virtual TBool RequestSubConnectionProgressNotificationL(const RMessage2& aMessage);
+	virtual TBool CancelSubConnectionProgressNotification(const RMessage2& aMessage);
+	virtual TBool DataSentNotificationRequestL(const RMessage2& aMessage);
+	virtual TBool DataSentNotificationCancel(const RMessage2& aMessage);
+	virtual TBool DataReceivedNotificationRequestL(const RMessage2& aMessage);
+	virtual TBool DataReceivedNotificationCancel(const RMessage2& aMessage);
+	virtual TBool IsSubConnectionActiveRequestL(const RMessage2& aMessage);
+	virtual TBool IsSubConnectionActiveCancel(const RMessage2& aMessage);
+	TBool Match(const CConnection& aConnection) const;
+	TSubConnectionUniqueId Id();
+	virtual TInt ReturnCode() const;
+
+	void SetReturnCode(TInt aErr)
+		{
+		iReturnCode = aErr;
+		}
+
+	/**
+	Callback from activity timer
+	*/
+	void CheckSubConnectionActivity();
+
+	NONSHARABLE_CLASS(CActivityTimer) : public CTimer
+	/**
+	@internalComponent
+	*/
+		{
+	public:
+		static CActivityTimer* NewL(CSubConnectionLinkShimClient* aOwner, TInt aPriority);
+		virtual inline ~CActivityTimer() {};
+		void RunL();
+	private:
+		inline CActivityTimer(CSubConnectionLinkShimClient* aOwner, TInt aPriority);
+	private:
+		CSubConnectionLinkShimClient* iOwner;
+		};
+
+
+private:
+	const CConnection& iConnection;
+	CNifManSubConnectionShim& iSubConnectionShim;
+	
+	TUint iUplinkDataVolume;
+	TUint iDownlinkDataVolume;
+	TUint iUplinkDataNotificationVolume;
+	TUint iDownlinkDataNotificationVolume;
+	TInt iRemainingUplinkGranularity;
+	TInt iRemainingDownlinkGranularity;
+
+	TBool iDataSentNotificationsInAbsoluteMode;
+	TBool iDataReceivedNotificationsInAbsoluteMode;
+
+	TNifProgress iCurrentProgress;
+	TInt iLastProgressToClient;
+	TInt iClientRequestedProgress;
+	CActivityTimer* iActivityTimer;
+	TInt iRequestedClientTimerPeriod;
+	TBool iClientBelievesSubConnectionActive;
+	TUint iPreviousUplinkDataVolume;
+	TUint iPreviousDownlinkDataVolume;
+
+	TBool iOutstandingProgressNotification:1;
+	TBool iOutstandingDataSentNotification:1;
+	TBool iOutstandingDataReceivedNotification:1;
+	TBool iOutstandingSubConnectionActivity:1;
+
+	RMessage2 iOutstandingProgressNotificationMessage;
+	RMessage2 iOutstandingDataSentNotificationMessage;
+	RMessage2 iOutstandingDataReceivedNotificationMessage;
+	RMessage2 iOutstandingSubConnectionActivityMessage;
+	
+	TInt iReturnCode;
+	};
+
+inline CSubConnectionLinkShimClient::CActivityTimer::CActivityTimer(CSubConnectionLinkShimClient* aOwner, TInt aPriority) 
+: CTimer(aPriority), iOwner(aOwner)
+/**
+Set up the activity timer for subconnection activity
+
+@param aOwner, The owing subconnection
+@param aPriority, The priority of the active object
+*/
+	{ CActiveScheduler::Add(this); };
+	
+#endif
+// __SHIMNIFMANSCONN_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/src/102070FD.rss	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,60 @@
+// Copyright (c) 2005-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:
+// Registry info for IP Networking Connection Provider plug-in
+// 
+//
+
+/**
+ @file 102070FD.RSS
+*/
+
+#include <ecom/registryinfo.rh>
+
+RESOURCE REGISTRY_INFO theInfo
+{
+dll_uid =  0x102070FD;
+interfaces = 
+    {
+    INTERFACE_INFO
+        {
+        interface_uid =  0x102070EE;
+        implementations = 
+            {
+           IMPLEMENTATION_INFO
+                {
+                implementation_uid = 0x102070FF;
+                version_no = 1;
+                display_name = "IP Connection Provider Factory Shim";
+                default_data = "IpConnectionFactoryShim";
+                opaque_data = "";
+                }
+            };
+        },
+    INTERFACE_INFO
+        {
+        interface_uid = 0x102070F0;
+        implementations = 
+            {
+           IMPLEMENTATION_INFO
+                {
+                implementation_uid = 0x10207101;
+                version_no = 1;
+                display_name = "IP Connection Provider Shim";
+                default_data = "IpConnectionShim";
+                opaque_data = "";
+                }
+            };
+        }
+    };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/src/connectionSelectorShim.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,557 @@
+
+// Copyright (c) 2005-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:
+// Implementation file for the CConnectionSelectorShim
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+
+#include <nifman.h>
+#include <ss_glob.h>
+#ifndef SYMBIAN_NETWORKING_UMTSR5
+#include <comms-infras/nifif.h>
+#endif //SYMBIAN_NETWORKING_UMTSR5
+#include <connpref.h>
+#include <cdblen.h>
+#include <esockmessages.h>
+#include "shimcprfactory.h"
+#include "connectionSelectorShim.h"
+#include "shimcpr.h"
+
+using namespace ESock;
+
+//PREQ399_REMOVE
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+#include <nullagtprog.h>
+#endif
+//SYMBIAN_NETWORKING_3GPPDEFAULTQOS //PREQ399_REMOVE
+
+TInt CConnectionSelectorShim::AsyncDestructorCb(TAny* aInstance)
+	{
+	CConnectionSelectorShim* selector = reinterpret_cast<CConnectionSelectorShim*>(aInstance);
+	delete selector;
+	return KErrNone;
+	}
+
+CConnectionSelectorShim::CConnectionSelectorShim(ISelectionNotify& aNotify) : 
+ iNotify(aNotify), 
+ iAsyncDestructor(CActive::EPriorityStandard + 1),
+ iConnProvider(NULL)
+/** 
+C'tor.
+
+The priority of the async destructor is specifically set one higher than normal
+to cater for the case whereby an RConnection is started asynchronously and
+immediately closed.  This ensures that the async destructor is called before
+NetCon begins the selection procedure, and hence can cancel the NetCon request
+before it starts.  This causes immediate cancellation of the connection start
+procedure.  Otherwise, NetCon gets in first, the connection comes all the way
+and then times out in the short timer.
+
+@param aNotify the ISelectionNotify that should be notified about the
+selection progress.
+*/
+    { 
+    __CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tCConnectionSelectorShim"), this));   
+    iAsyncDestructor.Set(TCallBack(AsyncDestructorCb, this));
+    }        
+    
+CConnectionSelectorShim::~CConnectionSelectorShim()
+    {
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\t~CConnectionSelectorShim"), this));
+
+	iNotify.Detach(); //"PrevLayer"::Detach() will be called only once.
+
+	delete iSelectorSession;
+
+	iSelectionInfo.Close();
+    }
+
+
+void CConnectionSelectorShim::DeleteAsync()
+	{
+	if (!iAsyncDestructor.IsActive())
+		{
+		if (iConnProvider)
+			{
+			__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tDeleteAsync() RelaseRef(this)"), this));
+			iConnProvider->ReleaseRef(this);
+			}
+		iAsyncDestructor.CallBack();
+		}
+    }
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+void CConnectionSelectorShim::SetFactoryIface(MIAPLockInfo * aFactoryIface)
+	{
+	iFactoryIface = aFactoryIface;
+	}
+
+#endif // #ifdef SYMBIAN_NETWORKING_UMTSR5
+
+TInt CConnectionSelectorShim::Cancel()
+	{
+	return Cancel(KErrCancel,NULL);
+	}
+	
+TInt CConnectionSelectorShim::Cancel(TInt aReason, const RMessage2* aMessage)
+	{
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tCancel(aReason %d)"), this, aReason));
+	TInt error = KErrNone;
+	if (iSelectorSession)
+		{
+		error = iSelectorSession->Stop(aReason, aMessage);
+		delete iSelectorSession;
+		iSelectorSession = NULL;
+		}
+	
+	//"PrevLayer"::Detach() will be called only once.
+	//It is important to call iNotify.Detach() after all progress notifications
+	//resulting from NifSession::Stop() have been passed up towards the CConnection.
+	iNotify.Detach();
+	DeleteAsync();
+	return error;
+	}
+	
+TInt CConnectionSelectorShim::Select(Meta::SMetaData& aPreferences, const RMessagePtr2* aMessage)
+/** Implements CConnectorSelector::Select (async). The shim layer (this layer)
+delegates the selection to NIFMAN. NIFMAN cannot be asked just to perform the
+selection, as the selection is tighly coupled with starting connection provider.
+
+@param aPreferences connection preferences.
+*/
+    {
+    //Assume this is a TConnStart (as defined in ss_connprov.h)
+    STypeId type = aPreferences.GetTypeId();
+    ASSERT(type.iUid.iUid == KESockMessagesImplementationUid);
+	ASSERT(type.iType == EESockMessageConnStart);
+
+   	const TConnPref* connPrefs = NULL;
+   	TConnStartType stype = EConnStartImplicit;
+   	
+   	if (type.iType == EESockMessageConnStart)
+ 		{
+ 		connPrefs = reinterpret_cast<CConnStart&>(aPreferences).ConnPrefs();
+ 		stype = reinterpret_cast<CConnStart&>(aPreferences).StartType();
+	    if (connPrefs && connPrefs->ExtensionId() == TConnPref::EConnPrefSnap)
+	    	{
+			__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tSelect() with not supported preferences EConnPrefSnap"), this));
+	    	iNotify.SelectComplete(NULL, KErrNotSupported);
+	   	    DeleteAsync();
+	   	    return KErrNotSupported;
+	    	}
+ 		}
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5 
+     	
+		// The code here will check the secure ID of the application which is expected with the aMessage Ptr.
+		// The logic used here is that if a General purpose application locks an IAP then no other application
+		// should be allowed to start the connection ans should return with KErrAccessDenied.
+	    if(aMessage!=NULL)
+	       {
+	       iAppSecureId = aMessage->SecureId();
+	       }
+ #endif   //SYMBIAN_NETWORKING_UMTSR5 
+    
+    TRAPD(ret,
+	iSelectorSession = Nif::NewConnectionL(this, 0);
+    if (connPrefs)
+    	{
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tSelect() with preferences, iSelectorSession %x"), this, iSelectorSession));
+	    iSelectorSession->StartL(stype, *connPrefs, aMessage );		
+    	}
+    else
+    	{
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tSelect() no preferences, iSelectorSession %x"), this, iSelectorSession));
+	    iSelectorSession->StartL(stype, aMessage );		
+    	}
+    );
+    if (ret != KErrNone)
+    	{
+    	iNotify.SelectComplete(NULL, ret);
+   	    DeleteAsync();
+    	}
+    return ret;
+    }
+    
+
+void CConnectionSelectorShim::SelectionComplete(TInt aError, const TDesC8& aSelectionInfo)
+/** Called by NIFMAN when the selection (previously triggered by CConnectionSelectorShim::SelectL)
+completes the selection. There are two methods NIFMAN will use to indicate progress to its client. This
+method and the generic ::ProgressNotification. This method forwards selection complete to
+this->ProgressNotification(KFinishedSelection).
+
+@param aError operation result.
+@param aSelectionInfo selection info (to be converted to TSoIfConnectionInfo {iIAPId; iNetworkId;})
+*/
+    {
+    __CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tSelectionComplete(), aError: %d"), this, aError));
+    iSelectionInfo.Close();
+    TInt err;
+    if((err = iSelectionInfo.Create(aSelectionInfo)) != KErrNone)
+    	{
+    	aError = err;
+    	}
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+    // The following line will extract connection information which is sent by nifman after agent selection.The information contains IAP , iNetworkId
+	//and connection information.
+
+    Mem::Copy(&iConnectionInfo, aSelectionInfo.Ptr(),sizeof(iConnectionInfo));
+#endif
+    ProgressNotification(KFinishedSelection, aError);
+    }
+
+void CConnectionSelectorShim::CreateProviderL()
+	{
+	ASSERT(iSelectionInfo.Length());//this should only happen after the agent's been selected
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tCreateProviderL() iConnProvider %x"), this, iConnProvider));
+ 	if (iConnProvider) 
+ 		{
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tCreateProviderL() iConnProvider->GetNifSession() %x"), this, iConnProvider->GetNifSession()));	
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tCreateProviderL() iConnProvider->ConnectionInfo() %S"), this, &iConnProvider->ConnectionInfo()));
+ 		}
+	//if we have a provider already and it's the existing one we have to check whether the conn info still matches since there could've been
+	//a reconnection
+	if ( iConnProvider && iConnProvider->GetNifSession() && iConnProvider->ConnectionInfo() != iSelectionInfo )
+		{
+        __CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tCreateProviderL() -> ReleaseRef()"), this));
+	    iConnProvider->ReleaseRef(this);
+	    iConnProvider = NULL;
+		}
+	if ( !iConnProvider )
+		{
+	    TSockManData* sockManData = SockManGlobals::Get();
+		ASSERT(sockManData);
+		
+		CConnectionFactoryContainer* connectionFactories = sockManData->iConnectionFactories;
+		ASSERT(connectionFactories);
+		
+		CConnectionProviderFactoryBase* factory = connectionFactories->FindFactory(KShimConnectionProviderFactoryId);
+		ASSERT(factory);
+		if (IsConnectionStoppingL())
+			{
+			// We must force the creation of a new provider because the old one is on its way out.
+			// This is required to ensure that we do not receive progresses generated as the connection
+			// comes down.  We are only interested in progresses generated when the connection subsequently
+			// starts coming up again.  Upper layers starting a connection just as it is coming down will
+			// otherwise receive these progresses.  In particular, progresses with an error will otherwise
+			// be mistaken for an indication that the connection startup failed.
+	    		iConnProvider = (CConnectionProviderShim*)factory->CreateProviderL();
+			__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tCreateProviderL() - connection stopping, iConnProvider %x"), this, iConnProvider));
+			}
+		else
+			{
+			XConnectionFactoryQueryInfo query(NULL, iSelectionInfo);
+			iConnProvider = (CConnectionProviderShim*)factory->FindOrCreateProviderL(query);
+			__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tCreateProviderL() - found/created iConnProvider %x"), this, iConnProvider));
+			}
+	    //and keep provider up during the selection
+	    iConnProvider->AddRefL(this);
+		}
+	}
+
+TBool CConnectionSelectorShim::IsConnectionStoppingL()
+	{
+	TPckg<TBool> stopping(EFalse);
+	iSelectorSession->ControlL(KCOLProvider, KNifSessionGetStopping, stopping, NULL);
+	return stopping();
+	}
+
+void CConnectionSelectorShim::HandleSelectionL()
+	{
+	// HandleSelection will set up the provider
+
+	// Set default factory as the CConnectionProviderFactoryShim
+	CreateProviderL();
+	if (iSelectorSession && !iConnProvider->GetNifSession())
+		{			
+		iConnProvider->SetConnectionInfo(iSelectionInfo);
+		//
+		// The factory didn't find an existing provider that matched the query.
+		// It's returned a brand new instance of CConnectionProviderShim.
+		// Hence we'll call Initialise. this will do 2 things:
+		//
+		// 1. Create a secure nif(man) session for the provider
+		// 2. Call ConnectionControlActivity for the provider so that
+		//			
+		iConnProvider->InitialiseL(iSelectorSession);
+		iConnProvider->SetBlockProgressesL(iSelectorSession);
+		iSetProviderNull = ETrue;
+		}
+	}
+
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+void CConnectionSelectorShim::MaybeLockIapL()
+	{
+	//The value of Secure ID is fetched from DataBase againt IAP.Iap is taken agent selection is over.This will look 
+	//into the database if secureID feild is NULL or not if it is NULL then IAP will not be locked
+	CMDBSession* cmdbSession;
+	CCDIAPRecord* ptrIapRecord;
+	ptrIapRecord = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+	CleanupStack::PushL(ptrIapRecord);
+	
+	// Create a new CMDB session Object
+	cmdbSession = CMDBSession::NewL(KCDVersion1_1);
+	// If successm Get and Load the record.
+	CleanupStack::PushL(cmdbSession);
+
+	ptrIapRecord->SetRecordId(iConnectionInfo.iIAPId);
+	ptrIapRecord->LoadL(*cmdbSession);
+	// Although the SecureID of the application is numerical, we have to take it into the string buffer
+	// because of the limitations of the CommsDat, which dont support hexadeciaml values, and truncate 
+	// decimal values after 8 digits, for some unknown reasons.
+	// Because of the current project schedule, its not feasible to rectify commsdat as of now, so decided
+	// to take on string Buffers to be used for Secure Ids from commsdat 
+	TUint32 secureId;
+	secureId=ptrIapRecord->iAppSid;
+ 	
+	if(secureId==iAppSecureId.iId && iAppSecureId.iId!=NULL)
+		{
+		// Inform the Factory that the Ids match so IAP will be locked. The IAP number is also given to 
+		// the factory so that the application can start connection on other IAPs which are not locked
+		// by the program
+		iFactoryIface->SetIAPLockStatus(ETrue,iConnectionInfo.iIAPId);
+		}
+	    
+        CleanupStack::Pop(cmdbSession);
+	delete cmdbSession;
+	CleanupStack::Pop(ptrIapRecord);
+	delete ptrIapRecord;
+	       
+	}
+#endif
+
+void CConnectionSelectorShim::ProgressNotification(TInt aStage, TInt aError)
+/** 
+
+@param 
+*/  
+    {
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tProgressNotification(%d, %d)"), 
+					 this, aStage, aError));
+	
+	// In all cases we must pass the new progress up the chain of selectors
+	if (aError == KErrNone)
+		{
+		aError = iError;
+		}
+	//	
+	// Depending on the progress and the progress error, we need to handle situations differently
+	// 
+	// Normally, if progress has reached KFinishedSelection, we stop propogating the progress
+	// up, because, we would have already setup the provide (iProvider) with a new nif session
+	// pointing to the same agent as iSelectorSession, hence further messages from agent and
+	// nifman will be forwared to the provider.
+	//
+	// However, there are two exceptions to this situation:
+	// We have a provider that's already been initialized with a nif session
+	// signified by !iSetProviderNull, in which case, we forward the message up 
+	// whether or not we have finished selection. Same goes for situations when 
+	// we have progress error, instead of waiting for the provider to propogate the 
+	// message upwards, we use iNotify to do that, since the client would expect the
+	// message (e.g. Stop) to be completed with error immidiately
+	// 
+
+	// Any error means that the selection (and startup of the interface) will be abandoned and reported to the client.
+	if (aError != KErrNone)
+		{
+		iNotify.ProgressNotification(aStage, aError);
+		iNotify.SelectComplete(NULL, aError);
+		DeleteAsync();
+		}
+	else if (aStage <= KFinishedSelection || !iSetProviderNull)
+		{
+		iNotify.ProgressNotification(aStage, aError);
+		}
+
+	if (aStage == KFinishedSelection && aError == KErrNone)
+		{
+		// The selection is complete so we want to reach the situation where the selector (this object) is 
+		// joined by the appropriate provider. The provider will be set up with a pointer to the CNifSession 
+		// allowing the calls to methods such as EnumerateSubConnections to work between KFinishedSelection and
+		// KLinkLayerOpen. The provider will be accessible from the selector until KLinkLayerOpen is reached
+		// (when the selector will be destroyed).
+		TRAP(aError,HandleSelectionL());
+		if (aError == KErrNone)
+			{
+			iNotify.SelectComplete(iConnProvider, aError);
+			}
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+
+		// First Check IAP Locked, if yes Return,
+		TBool  IapLocked = EFalse;
+		TInt	IapNumber = -1;
+	
+		iFactoryIface->GetIAPLockStatus(IapLocked, IapNumber);
+	
+		if (IapLocked && IapNumber == iConnectionInfo.iIAPId)
+			{
+			//iNotify.ProgressNotification(aStage, KErrPermissionDenied);
+			iNotify.SelectComplete(iConnProvider, KErrPermissionDenied);
+			DeleteAsync();	
+			return;
+			}
+#endif //SYMBIAN_NETWORKING_UMTSR5  
+
+		}
+	else if (aStage == KConnectionUninitialised)
+		{
+		//KConnectionUninitialised means that the interface has been stopped.
+		DeleteAsync();
+		}
+	else if (aStage == KLinkLayerOpen && !iIsLinkLayerOpen)
+		{
+		// Calling iNotify.LayerUp when we have a provider setup with a nif session already
+		// follows from the logic above justifying propogating progress up when we have a 
+		// provider setup with a nif session
+		iNotify.LayerUp(aError);
+		DeleteAsync(); // The interface has successfully started and all responsibility should be taken over by the the provider.
+		}
+
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+    else if ( aStage == ENullAgtConnecting && aError == KErrNone )
+    	{
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+
+	TRAPD(ret,MaybeLockIapL());
+#ifdef __CFLOG_ACTIVE	
+	if(ret!=KErrNone)
+		{
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tMaybeLockIap left with  %d"), 
+					 this, ret));
+		}
+#endif
+	(void)ret; //TRAP is safe to ignore becuase if MaybeLockIapL: leave the correct behaviour is to leave Iap unlocked.
+	//We can safely ignore the trap because the function will only lock IAP. One should not be effected if someth
+#endif //SYMBIAN_NETWORKING_UMTSR5  
+    	}
+    	
+#endif //SYMBIAN_NETWORKING_3GPPDEFAULTQOS //PREQ399_REMOVE
+    }
+
+
+void CConnectionSelectorShim::SubConnectionEvent(const TSubConnectionEvent& /*aSubConnectionEvent*/)
+/** 
+
+@param 
+*/
+   {		
+   }
+
+void CConnectionSelectorShim::ServiceChangeNotification(TUint32 aId, const TDesC& aType)
+/** 
+
+@param 
+*/
+   {
+   iNotify.ServiceChangeNotification(aId, aType);
+   }
+
+void CConnectionSelectorShim::LinkLayerOpen(TInt aError)
+/** 
+
+@param 
+*/
+	{
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tLinkLayerOpen(aError %d)"), 
+					 this, aError));
+	iIsLinkLayerOpen = ETrue;
+	if (aError == KErrNone)
+		{
+		if (iSetProviderNull)
+			{
+			ASSERT(iConnProvider->GetNifSession());
+			iConnProvider->ReleaseRef(this);
+			iConnProvider = NULL;
+			iSetProviderNull = EFalse;
+			}		
+		
+		DeleteAsync();
+		}
+	else
+		{
+		iNotify.SelectComplete(NULL, aError);
+		}
+    }
+    
+void CConnectionSelectorShim::SetProviderNull()
+	{
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionSelectorShim %08x:\tSetProviderNull() iConnProvider %x"), this, iConnProvider));
+	iConnProvider = NULL;
+	}
+
+void CConnectionSelectorShim::ConnectionError(TInt /*aError*/)
+/** 
+
+@param 
+*/
+    {
+    //ignore the event
+    }
+
+
+void CConnectionSelectorShim::LinkLayerClosed(TInt /*aError*/)
+/** 
+
+@param 
+*/
+    {
+    //ignore the event
+    }
+
+
+
+void CConnectionSelectorShim::ProgressNotification(TSubConnectionUniqueId /*aSubConnectionUniqueId*/, TInt /*aStage*/, TInt /*aError*/)
+/** 
+
+@param 
+*/
+    {
+    }
+
+void CConnectionSelectorShim::InterfaceStateChangeNotification(TDesC8& /*aInfo*/)
+/** 
+
+@param 
+*/
+    {
+    //ignore the event
+    }
+
+
+void CConnectionSelectorShim::NotifyDataSent(TSubConnectionUniqueId /*aSubConnectionUniqueId*/, TUint /*aUplinkVolume*/)
+/** 
+
+@param 
+*/
+    {
+    //ignore the event
+    }
+
+
+void CConnectionSelectorShim::NotifyDataReceived(TSubConnectionUniqueId /*aSubConnectionUniqueId*/, TUint /*aDownlinkVolume*/)
+/** 
+
+@param 
+*/
+    {
+    //ignore the event
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/src/connectionSelectorShim.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,120 @@
+/**
+* Copyright (c) 2005-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 CONNECTIONSELECTORSHIM.H
+ @internalComponent
+*/
+
+#if !defined(__CONNECTIONSELECTORSHIM_H__)
+#define __CONNECTIONSELECTORSHIM_H__
+
+#include <ss_fact.h>
+#include <ss_select.h>
+#include <ss_connprov.h>
+#include <es_prot.h>
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+#include <comms-infras/nifif.h>
+#include <comms-infras/dbaccess.h>
+#include <commdbconnpref.h>
+#include "shimcprfactory.h" 
+#endif //SYMBIAN_NETWORKING_UMTSR5
+
+class CConnectionProviderShim;
+class CConnectionSelectorShim : public CBase, public MProviderSelector, public MConnectionNotify
+/**
+@internalTechnology
+@released Since 9.1
+*/
+	{	
+	friend class CConnectionProviderFactoryShim;
+	
+public:	
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+	
+	// This function will be called by the ShimCprFactory to set its interface for the information
+	// pertaining to the IAP lock status
+	void  SetFactoryIface(MIAPLockInfo * aFactoryIface);
+	
+#endif // #ifdef SYMBIAN_NETWORKING_UMTSR5
+	
+protected:
+	CConnectionSelectorShim(ISelectionNotify& aNotify);
+	virtual ~CConnectionSelectorShim();	
+    void DeleteAsync();
+	
+public:
+    TInt Select(Meta::SMetaData& aPreferences, const RMessagePtr2* aMessage);
+      
+    // From MConnectionNotify
+	virtual void SelectionComplete(TInt aError, const TDesC8& aSelectionInfo);
+	virtual void ConnectionError(TInt aError);
+	virtual void LinkLayerOpen(TInt aError);
+	virtual void LinkLayerClosed(TInt aError);
+	virtual void ProgressNotification(TInt aStage, TInt aError);
+	virtual void ProgressNotification(TSubConnectionUniqueId aSubConnectionUniqueId, TInt aStage, TInt aError);
+	virtual void ServiceChangeNotification(TUint32 aId, const TDesC& aType);
+	virtual void InterfaceStateChangeNotification(TDesC8& aInfo);
+	virtual void NotifyDataSent(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aUplinkVolume);
+	virtual void NotifyDataReceived(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aDownlinkVolume);
+	virtual void SubConnectionEvent(const TSubConnectionEvent& aSubConnectionEvent);
+
+	//MProviderSelector
+	virtual TInt Cancel(TInt aReason, const RMessage2* aMessage);
+	virtual TInt Cancel();
+	void SetProviderNull();
+private:
+	static TInt AsyncDestructorCb(TAny* aInstance);
+	void CreateProviderL();
+	void HandleSelectionL();
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+	void MaybeLockIapL();
+#endif	
+	TBool IsConnectionStoppingL();
+	
+private:
+    CConnectionProvdBase* iSelectorSession;
+    ISelectionNotify iNotify;
+    CAsyncCallBack iAsyncDestructor;
+    RBuf8 iSelectionInfo;
+    CConnectionProviderShim* iConnProvider;
+    TInt iError;
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+    TBool iSetProviderNull;
+    TBool iIsLinkLayerOpen;
+#else
+    TBool iSetProviderNull:1;
+    TBool iIsLinkLayerOpen:1;
+#endif  
+	// New Variables added as required by 635 to achieve IAP locking
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+	// The Connection Info, IAP , etc.
+	TSoIfConnectionInfo iConnectionInfo;
+	// The Secure ID of the current Application
+    TSecureId 			iAppSecureId;
+    // Interface to the Factor which Stores and get the IAP Lock Status
+    MIAPLockInfo*		iFactoryIface;
+#endif 
+
+	};
+
+
+#endif	// __CONNECTIONSELECTORSHIM_H__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/src/shimclient.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,733 @@
+// Copyright (c) 2005-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 is part of an ECOM plug-in
+// 
+//
+
+#include <ss_std.h>
+#include "shimnifmansconn.h"
+#include "es_prot.h"
+
+
+/**
+@internalComponent
+*/
+const TUint KMicrosecondsInASecond = 1000000;
+const TInt KMaxTimerPeriod = KMaxTInt32/KMicrosecondsInASecond; //< max period of a CTimer using After()
+
+
+CSubConnectionLinkShimClient::CSubConnectionLinkShimClient(const CConnection& aConnection, CNifManSubConnectionShim& aSubConnectionShim) :
+	iConnection(aConnection), 
+	iSubConnectionShim(aSubConnectionShim),
+	iOutstandingProgressNotification(EFalse), 
+	iOutstandingDataSentNotification(EFalse), 
+	iOutstandingDataReceivedNotification(EFalse), 
+	iOutstandingSubConnectionActivity(EFalse) 
+/**
+*/
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tCSubConnectionLinkShimClient() created for id %d, iConnection %08x"), 
+							 this, aSubConnectionShim.Id(), &iConnection));
+	}
+
+CSubConnectionLinkShimClient::~CSubConnectionLinkShimClient()
+/**
+Complete all outstanding RMessages
+
+*/
+	{	
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\t~CSubConnectionLinkShimClient(), id %d, iSubConnectionShim %08x"), 
+				 this, iSubConnectionShim.Id(), this, &iSubConnectionShim));
+
+	if(iActivityTimer)
+		{
+		iActivityTimer->Cancel();
+		delete iActivityTimer;
+		iActivityTimer = NULL;
+		}
+
+	if(iOutstandingProgressNotification)
+		iOutstandingProgressNotificationMessage.Complete(KErrCancel);
+	if(iOutstandingDataSentNotification)
+		iOutstandingDataSentNotificationMessage.Complete(KErrCancel);
+	if(iOutstandingDataReceivedNotification)
+		iOutstandingDataReceivedNotificationMessage.Complete(KErrCancel);
+	if(iOutstandingSubConnectionActivity)
+		iOutstandingSubConnectionActivityMessage.Complete(KErrCancel);
+	if (iSubConnectionShim.DataTransferShim())
+		{
+		iSubConnectionShim.DataTransferShim()->DeRegisterClient(*this);
+		}
+	}
+
+TBool CSubConnectionLinkShimClient::Match(const CConnection& aConnection) const
+	{
+	return &iConnection == &aConnection;
+	}
+	
+TSubConnectionUniqueId CSubConnectionLinkShimClient::Id()
+	{
+	return iSubConnectionShim.Id();
+	}
+
+TInt CSubConnectionLinkShimClient::ReturnCode() const
+	{
+	return iReturnCode;
+	}
+	
+TInt CSubConnectionLinkShimClient::GetCurrentProgress(TNifProgress& aProgress)
+/**
+Return the current progress state
+
+@param aProgress On return, contains the current progress from the subconnection
+@return KErrNone if successful; otherwise one of the system-wide error codes
+*/
+	{	
+	aProgress = iCurrentProgress;
+	
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tGetCurrentProgress() => (%d, %d)"), 
+			    this, aProgress.iStage, aProgress.iError));
+	return KErrNone;
+	}
+
+TBool CSubConnectionLinkShimClient::StopL(const RMessage2& aMessage)
+	{	
+	TInt stopCode = 0;
+	RConnection::TConnStopType stopType = static_cast<RConnection::TConnStopType>(aMessage.Int1());
+	switch (stopType)
+		{
+		case RConnection::EStopNormal:
+			stopCode = KErrCancel;
+			break;
+		case RConnection::EStopAuthoritative:
+			stopCode = KErrConnectionTerminated;
+			break;
+		default:
+			stopCode = KErrCancel; // to remove compile warning
+			User::Leave(KErrArgument);
+		}
+
+	TInt ret = iSubConnectionShim.Provider().Stop(iSubConnectionShim.Id(), stopCode, &aMessage);
+	if (ret != KErrNone)
+		{
+		User::Leave(ret);
+		}
+	return ETrue;
+	}
+
+TBool CSubConnectionLinkShimClient::DataTransferredL(const RMessage2& aMessage)
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tDataTransferredL(), id %d"),
+				this, iSubConnectionShim.Id()));
+
+	TUint uplinkDataVolume;
+	TUint downlinkDataVolume;
+
+	TInt ret = iSubConnectionShim.DataTransferShim()->DataTransferred(uplinkDataVolume, downlinkDataVolume);
+
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tDataTransferredL(), ret %d, uplink %d, downlink %d"),
+			    this, ret, uplinkDataVolume, downlinkDataVolume));
+
+	if (KErrNone == ret)
+		{
+		TPckg<TUint> uplinkDataVolumePckg(uplinkDataVolume);
+		TPckg<TUint> downlinkDataVolumePckg(downlinkDataVolume);
+
+		aMessage.WriteL(1, uplinkDataVolumePckg);
+		aMessage.WriteL(2, downlinkDataVolumePckg);
+		}
+	SetReturnCode(ret);
+	return ETrue;
+	}
+
+TBool CSubConnectionLinkShimClient::DataTransferredCancel(const RMessage2& /*aMessage*/)
+	{
+	return ETrue;		
+	}
+
+TBool CSubConnectionLinkShimClient::RequestSubConnectionProgressNotificationL(const RMessage2& aMessage)
+/**
+Request from client for notification of new progress
+
+@pre No outstanding request for data sent notifications for this subconnection on this RConnection
+@param aMessage The client message
+@return ETrue if the client message is to be completed immediately
+@leave leaves with KErrInUse if there is already an outstanding RMessage for progress notification
+*/
+	{
+	if(iOutstandingProgressNotification)
+		User::Leave(KErrInUse);
+
+	TInt clientRequestedProgress = 0;
+	clientRequestedProgress = static_cast<TUint>(aMessage.Int2());
+	// if	- the last progress we sent to the client differs from the current one
+	// and	- the current progress is the same as the client requested progress OR 
+	//        the client has no requested progress...
+	if(iLastProgressToClient!=iCurrentProgress.iStage &&
+		(iCurrentProgress.iStage == clientRequestedProgress || clientRequestedProgress==0))
+		{		
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tRequestSubConnectionProgressNotificationL() returning progress (%d, %d)"), 
+							 this, iCurrentProgress.iStage, iCurrentProgress.iError));
+
+		// ...send the current progress back
+		TPckg<TNifProgress> prog(iCurrentProgress);
+		aMessage.WriteL(1, prog);
+		return ETrue;
+		}
+	else	// store the client message until the next progress value arrives
+		{
+		//__FLOG_STATIC1(_L("ESock: "), _L("CSubConnectionLinkShimClient"), 
+		// _L("[id: %d]: client requested progress notification; storing client message for later completion"), 
+		// iSubConnectionsUniqueId);
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tRequestSubConnectionProgressNotificationL() storing client message for later completion"), this));
+
+		iClientRequestedProgress = clientRequestedProgress;	// may be 0
+		iOutstandingProgressNotificationMessage = aMessage;
+		iOutstandingProgressNotification = ETrue;
+		return EFalse;
+		}
+	}
+
+TBool CSubConnectionLinkShimClient::CancelSubConnectionProgressNotification(const RMessage2& /*aMessage*/)
+/**
+Complete outstanding progress notification RMessage
+
+@param aMessage The client message
+@return ETrue if the client message is to be completed immediately
+*/
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tCancelSubConnectionProgressNotification(), id %d, iSubConnectionShim %08x"), 
+						 iSubConnectionShim.Id(), this));
+
+	if(iOutstandingProgressNotification)
+		{
+		iOutstandingProgressNotificationMessage.Complete(KErrCancel);
+		iOutstandingProgressNotification = EFalse;
+		}
+	return ETrue;
+	}
+
+TBool CSubConnectionLinkShimClient::DataSentNotificationRequestL(const RMessage2& aMessage)
+/**
+Request notification when the specified (absolute or relative) volume of data has been sent
+
+@pre No outstanding request for data sent notifications for this subconnection on this RConnection
+@param aMessage The client message
+@return ETrue if the client message is to be completed immeadiately
+@leave leaves with KErrInUse if there is already an outstanding RMessage for data sent notification
+*/
+	{
+	if(iOutstandingDataSentNotification)
+		User::Leave(KErrInUse);
+
+	TUint requestedUplinkGranularity = static_cast<TUint>(aMessage.Int1());
+	if(requestedUplinkGranularity)	// the client is working in relative mode
+		{
+		iRemainingUplinkGranularity = requestedUplinkGranularity;
+		iDataSentNotificationsInAbsoluteMode = EFalse;
+
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tDataSentNotificationRequestL(), id %d (relative mode: %d bytes)"), 
+							 this, iSubConnectionShim.Id(), iRemainingUplinkGranularity));
+		}
+	else							// the client is working in absolute mode
+		{
+		TPckg<TUint> iUplinkVolumeBuf(iUplinkDataNotificationVolume);
+		aMessage.ReadL(2, iUplinkVolumeBuf);
+		iDataSentNotificationsInAbsoluteMode = ETrue;
+
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tDataSentNotificationRequestL() id %d (absolute mode: %d bytes)"), 
+							 this, iSubConnectionShim.Id(), iUplinkDataNotificationVolume));
+
+		if(iUplinkDataNotificationVolume >= iUplinkDataVolume)	// we've already sent this amount of data
+			{
+			__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tDataSentNotificationRequestL() id %d (completed immediately"), 
+								 this, iSubConnectionShim.Id()));
+			return ETrue;
+			}
+		}
+	
+	iOutstandingDataSentNotificationMessage = aMessage;
+	iOutstandingDataSentNotification = ETrue;
+	
+	iSubConnectionShim.DataTransferShim()->DataSentNotificationRequest(requestedUplinkGranularity, iUplinkDataNotificationVolume);
+
+	return EFalse;
+	}
+
+TBool CSubConnectionLinkShimClient::DataSentNotificationCancel(const RMessage2& /*aMessage*/)
+/**
+Complete outstanding data sent notification RMessage
+
+@param aMessage The client message
+@return ETrue if the client message is to be completed immediately
+*/
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tDataSentNotificationCancel() id %d"), 
+				 this, iSubConnectionShim.Id()));
+	iSubConnectionShim.DataTransferShim()->DataSentNotificationCancel();
+
+	if(iOutstandingDataSentNotification)
+		{
+		iOutstandingDataSentNotificationMessage.Complete(KErrCancel);
+		iOutstandingDataSentNotification= EFalse;
+		}
+	return ETrue;
+	}
+
+TBool CSubConnectionLinkShimClient::DataReceivedNotificationRequestL(const RMessage2& aMessage)
+/**
+Request notification when the specified (absolute or relative) volume of data has been sent
+
+@pre No outstanding request for data sent notifications for this subconnection on this RConnection
+@param aMessage The client message
+@return ETrue if the client message is to be completed immediately
+@leave leaves with KErrInUse if there is already an outstanding RMessage for data received notification
+*/
+	{
+
+	if(iOutstandingDataReceivedNotification)
+		User::Leave(KErrInUse);
+	
+	TUint requestedDownlinkGranularity = static_cast<TUint>(aMessage.Int1());
+	if(requestedDownlinkGranularity)	// the client is working in relative mode
+		{
+		iRemainingDownlinkGranularity = requestedDownlinkGranularity;
+		iDataReceivedNotificationsInAbsoluteMode = EFalse;
+		
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tDataReceivedNotificationRequestL() id %d (relative mode: %d bytes)"), 
+					 this, iSubConnectionShim.Id(), iRemainingDownlinkGranularity));
+		}
+	else							// the client is working in absolute mode
+		{
+		TPckg<TUint> iDownlinkVolumeBuf(iDownlinkDataNotificationVolume);
+		aMessage.ReadL(2, iDownlinkVolumeBuf);
+		iDataReceivedNotificationsInAbsoluteMode = ETrue;
+
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tDataReceivedNotificationRequestL() id %d (absolute mode: %d bytes)"), 
+							 this, iSubConnectionShim.Id(), iDownlinkDataNotificationVolume));
+		
+		if(iDownlinkDataNotificationVolume >= iDownlinkDataVolume)	// we've already received this amount of data
+			{
+			__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tDataReceivedNotificationRequestL() id %d(completed immediately)"), 
+						 this, iSubConnectionShim.Id()));
+			return ETrue;
+			}
+		}
+
+	iOutstandingDataReceivedNotificationMessage = aMessage;
+	iOutstandingDataReceivedNotification = ETrue;
+
+	iSubConnectionShim.DataTransferShim()->DataReceivedNotificationRequest(requestedDownlinkGranularity, iDownlinkDataNotificationVolume);
+
+	return EFalse;
+	}
+
+TBool CSubConnectionLinkShimClient::DataReceivedNotificationCancel(const RMessage2& /*aMessage*/)
+/**
+Complete outstanding data received notification RMessage
+
+@param aMessage The client message
+@return ETrue if the client message is to be completed immediately
+*/
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tDataReceivedNotificationCancel() id %d"), 
+						 this, iSubConnectionShim.Id()));
+
+	iSubConnectionShim.DataTransferShim()->DataReceivedNotificationCancel();
+
+	if(iOutstandingDataReceivedNotification)
+		{
+		iOutstandingDataReceivedNotificationMessage.Complete(KErrCancel);
+		iOutstandingDataReceivedNotification = EFalse;
+		}
+	return ETrue;
+	}
+
+TBool CSubConnectionLinkShimClient::IsSubConnectionActiveRequestL(const RMessage2& aMessage)
+/**
+Indicate whether the subconnection is active or not
+
+@note Checks at a period defined in the RMessage
+@note Only returns when the state varies from that provided by the client
+@param aMessage The client message
+@return ETrue if the client message is to be completed immediately
+*/
+	{
+	if(iOutstandingSubConnectionActivity)
+		User::Leave(KErrInUse);
+
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tIsSubConnectionActiveRequestL() id %d"), 
+				this, iSubConnectionShim.Id()));
+
+	// Create the activity timer if it doesn't already exist (from a previous request)
+	if(!iActivityTimer)
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tIsSubConnectionActiveRequestL() id %d - creating timer"), 
+					this, iSubConnectionShim.Id()));
+
+		iActivityTimer = CActivityTimer::NewL(this, KActivityTimerPriority);
+		}
+
+	TPckg<TBool> subConnectionActiveBuf(iClientBelievesSubConnectionActive);
+	aMessage.ReadL(2, subConnectionActiveBuf);
+
+	iSubConnectionShim.DataTransferShim()->DataTransferred(iPreviousUplinkDataVolume, iPreviousDownlinkDataVolume);	
+
+	// get clients request timer period and check validity
+	TInt timeInSeconds = static_cast<TUint>(aMessage.Int1());
+	if(timeInSeconds > KMaxTimerPeriod) // secs; underlying CTimer limitation
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tIsSubConnectionActiveRequestL() id %d - rejecting timer request (%d secs)"), 
+							 this, iSubConnectionShim.Id(), timeInSeconds));
+		
+		SetReturnCode(KErrArgument);
+		return ETrue;
+		}
+
+	// store in microsecs
+	iRequestedClientTimerPeriod = timeInSeconds * KMicrosecondsInASecond;
+	
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tIsSubConnectionActiveRequestL() id %d, iClientBelievesSubConnectionActive %d, iRequestedClientTimerPeriod %d - Starting timer."), 
+						 this, iSubConnectionShim.Id(), iClientBelievesSubConnectionActive, iRequestedClientTimerPeriod));
+
+	iOutstandingSubConnectionActivity = ETrue;
+	iOutstandingSubConnectionActivityMessage = aMessage;
+
+	iActivityTimer->After(iRequestedClientTimerPeriod);
+	return EFalse;
+	}
+
+TBool CSubConnectionLinkShimClient::IsSubConnectionActiveCancel(const RMessage2& /*aMessage*/)
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tIsSubConnectionActiveCancel() id %d, connection %08x"), 
+						 this, iSubConnectionShim.Id(), &iConnection));
+
+	if(iOutstandingSubConnectionActivity)
+		{
+		iActivityTimer->Cancel();
+		ASSERT(iOutstandingSubConnectionActivity); // assert that the timer cancelled rather than completing
+		iOutstandingSubConnectionActivityMessage.Complete(KErrCancel);
+		iOutstandingSubConnectionActivity = EFalse;
+		}
+	return ETrue;
+	}
+	
+TInt CSubConnectionLinkShimClient::GetSubConnectionInfo(const RMessage2& aMessage)
+	{
+	TUint index = static_cast<TUint>(aMessage.Int0());
+	
+	TInt result = KErrNone;
+	TRAP(result,
+
+   	// Find the size of the clients descriptor
+   	TInt sizeOfSubConnInfo = aMessage.GetDesLengthL(1);
+   
+   	// Create an appropriately sized descriptor server-side
+   	HBufC8* subConnectionInfo;
+   	subConnectionInfo = HBufC8::NewL(sizeOfSubConnInfo);
+   	CleanupStack::PushL (subConnectionInfo);
+   	
+   	TPtr8 subConnInfoPtr(subConnectionInfo->Des());
+
+   	// and read the client data across
+      aMessage.ReadL(1, subConnInfoPtr);
+
+   	// Pass it down to the connection provider using the appropriate call
+     	if(index==KUseEmbeddedUniqueId)
+   		{
+   		result = iSubConnectionShim.Provider().GetSubConnectionInfo(subConnInfoPtr);
+   		}
+   	else
+   		{
+   		result = iSubConnectionShim.Provider().GetSubConnectionInfo(index, subConnInfoPtr);
+   		}
+   
+   	if (KErrNone == result)
+   		{
+   		// Write result back into client's address space
+   		aMessage.WriteL(1, subConnInfoPtr);
+   		}
+   		
+   	CleanupStack::PopAndDestroy (subConnectionInfo);
+      );  // END TRAP
+      
+	SetReturnCode(result);
+	return ETrue;
+	}
+	
+void CSubConnectionLinkShimClient::ProgressNotification(TInt aStage, TInt aError, const TDesC8& /*aInfo*/)
+/**
+Notification of new progress stage from nif/agent via Nifman and CInterface
+
+@param aStage The progress stage that has been reached
+@param aError Any errors that have occured
+@param aInfo No idea what this is, it's inserted by CInterface and is currently null
+*/
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tProgressNotification(%d, %d) id %d"), 
+						this, aStage, aError, iSubConnectionShim.Id()));
+
+	iCurrentProgress.iStage = aStage;
+	iCurrentProgress.iError = aError;
+
+	if(iOutstandingProgressNotification)
+		{
+		if(iLastProgressToClient!=iCurrentProgress.iStage && /* we could assume this since we've probably just received a new progress value */
+			(iCurrentProgress.iStage == iClientRequestedProgress || iClientRequestedProgress==0))
+			{
+			TPckg<TNifProgress> prog(iCurrentProgress);
+			TInt err= iOutstandingProgressNotificationMessage.Write(1, prog);
+			iOutstandingProgressNotificationMessage.Complete(err);
+			iOutstandingProgressNotification= EFalse;
+			}
+		}
+	}
+
+TInt CSubConnectionLinkShimClient::NotifyDataSent(TUint aUplinkVolume, TUint aCurrentGranularity)
+/**
+Upcall from connection provider, via MConnDataTransferNotify. Update the sent bytes count, and if necessary
+complete any outstanding RMessages
+
+@param aUplinkVolume The total number of bytes sent on this subconnection
+@note Upcall from CInterface via CConnection
+*/
+	{	
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tNotifyDataSent(aUplinkVolume %d, aCurrentGranularity %d) id %d"), 
+						 this, aUplinkVolume, aCurrentGranularity, iSubConnectionShim.Id()));
+
+	iUplinkDataVolume = aUplinkVolume;
+
+	TBool completeMessage = EFalse;
+
+	if(iOutstandingDataSentNotification)
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - outstanding client request"), 
+							 this, iSubConnectionShim.Id()));
+		switch(iDataSentNotificationsInAbsoluteMode)
+			{
+			case ETrue:
+				__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - %d bytes remaining to be sent before client completion (absolute mode)"), 
+									 this, iSubConnectionShim.Id(), (iUplinkDataNotificationVolume - iUplinkDataVolume)));
+				
+				if (iUplinkDataVolume >= iUplinkDataNotificationVolume)
+					{
+					completeMessage = ETrue;
+					}
+				break;
+				
+			case EFalse:	// in relative mode
+				iRemainingUplinkGranularity -= aCurrentGranularity;
+				
+				__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - %d bytes remaining to be sent before client completion (relative mode)."), 
+									 this, iSubConnectionShim.Id(), iRemainingUplinkGranularity));
+				
+				if(iRemainingUplinkGranularity <= 0)
+					{
+					completeMessage = ETrue;
+					}
+				break;
+
+			default:
+				break;
+			}
+		}
+
+	if(completeMessage)
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - completing client request."), 
+							 iSubConnectionShim.Id(), this));
+		TPckg<TUint> iUplinkDataVolumePckg(iUplinkDataVolume);
+		TInt ret= iOutstandingDataSentNotificationMessage.Write(2, iUplinkDataVolumePckg);
+		iOutstandingDataSentNotificationMessage.Complete(ret);
+		iOutstandingDataSentNotification= EFalse;
+		}
+	return KErrNone;
+	}
+
+TInt CSubConnectionLinkShimClient::NotifyDataReceived(TUint aDownlinkVolume, TUint aCurrentGranularity)
+/**
+Update the received bytes count, and if necessary complete any outstanding RMessages
+
+@param aDownlinkVolume The total number of bytes sent on this subconnection
+@param aCurrentGranularity The currently set granularity of notifications from the CInterface object
+@note Upcall from CInterface via CConnection
+*/
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tNotifyDataReceived(aDownlinkVolume %d, aCurrentGranularity %d)"), 
+						 this, iSubConnectionShim.Id(), aDownlinkVolume, aCurrentGranularity));
+
+	iDownlinkDataVolume = aDownlinkVolume;
+
+	TBool completeMessage = EFalse;
+
+	if(iOutstandingDataReceivedNotification)
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - outstanding client request"), 
+							 this, iSubConnectionShim.Id()));
+		switch(iDataReceivedNotificationsInAbsoluteMode)
+			{
+			case ETrue:
+				__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - %d bytes remaining to be sent before client completion (absolute mode)."), 
+									 this, iSubConnectionShim.Id(), (iDownlinkDataNotificationVolume - iDownlinkDataVolume)));
+
+				if (iDownlinkDataVolume >= iDownlinkDataNotificationVolume)
+					{
+					completeMessage = ETrue;
+					}
+				break;
+
+			case EFalse:	// in relative mode
+				iRemainingDownlinkGranularity -= aCurrentGranularity;
+		
+				__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - %d bytes remaining to be sent before client completion (relative mode)."), 
+									 this, iSubConnectionShim.Id(), iRemainingDownlinkGranularity));
+
+				if(iRemainingDownlinkGranularity <= 0)
+					{
+					completeMessage = ETrue;
+					}
+				break;
+
+			default:
+				break;
+			}
+		}
+
+	if(completeMessage)
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - completing client request."), 
+					 this, &iSubConnectionShim));
+		TPckg<TUint> iDownlinkDataVolumePckg(iDownlinkDataVolume);
+		TInt ret= iOutstandingDataReceivedNotificationMessage.Write(2, iDownlinkDataVolumePckg);
+		iOutstandingDataReceivedNotificationMessage.Complete(ret);
+		iOutstandingDataReceivedNotification= EFalse;
+		}
+	return KErrNone;
+	}
+
+TInt CSubConnectionLinkShimClient::NotifyDataTransferred(const TUint aUplinkVolume, const TUint aDownlinkVolume)
+/**
+Upcall from CConnection, indicating that it has performed a DataTransferred request and notifying us of the results
+
+@param aUplinkVolume The total amount of data sent so far on this subconnection
+@param aDownlinkVolume The total amount of data received so far on this subconnection
+*/
+	{
+	// Update internal data counters, complete any outstanding RMessages if appropriate
+	// No granularities because we don't know what they are, and because we're taking the 
+	// opportunity of using the client's call to update our counters, ie. it's not an 
+	// actual notification
+	NotifyDataSent(aUplinkVolume, 0);
+	NotifyDataReceived(aDownlinkVolume, 0);
+	return KErrNone;
+	}
+
+void CSubConnectionLinkShimClient::CheckSubConnectionActivity()
+/**
+Check for activity on the subconnection since the last call (to IsSubConnectionActiveRequest() )
+
+*/
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tCheckSubConnectionActivity() id %d"), 
+						 this, iSubConnectionShim.Id()));
+
+	ASSERT(iOutstandingSubConnectionActivity);
+
+	TUint newUplinkDataVolume;
+	TUint newDownlinkDataVolume;
+	
+	iSubConnectionShim.DataTransferShim()->DataTransferred(newUplinkDataVolume, newDownlinkDataVolume);
+
+	TBool dataTransferred = (newUplinkDataVolume!=iPreviousUplinkDataVolume) || 
+		                    (newDownlinkDataVolume!=iPreviousDownlinkDataVolume);
+
+	// If the data transferred volumes haven't change but the client thinks the connection is active...
+	if(iClientBelievesSubConnectionActive)
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - client believes subconnection active"), 
+							 this, iSubConnectionShim.Id()));
+
+		if(dataTransferred)	// ...and it is, so just start another timer cycle
+			{
+			__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - ...and it is.  Restart timer for another cycle."), 
+								 this, iSubConnectionShim.Id()));
+
+			iPreviousUplinkDataVolume = newUplinkDataVolume;
+			iPreviousDownlinkDataVolume = newDownlinkDataVolume;
+			iActivityTimer->After(iRequestedClientTimerPeriod);
+			}
+		else				// ...tell them it's not
+			{
+			__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - ...and it isn't.  Notify client."), 
+								 this, iSubConnectionShim.Id()));
+
+			TPckg<TBool> subConnectionActiveBuf(dataTransferred);
+			TInt ret= iOutstandingSubConnectionActivityMessage.Write(2, subConnectionActiveBuf);
+			iOutstandingSubConnectionActivityMessage.Complete(ret);
+			iOutstandingSubConnectionActivity = EFalse;
+			}
+		}
+	else					// client believes subconnection is idle...
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - client believes subconnection idle..."), 
+							 this, iSubConnectionShim.Id()));
+
+		if(dataTransferred)
+			{
+			__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - ...and it isn't.  Notify client."), 
+								 this, iSubConnectionShim.Id()));
+
+			TPckg<TBool> subConnectionActiveBuf(dataTransferred);
+			TInt ret= iOutstandingSubConnectionActivityMessage.Write(2, subConnectionActiveBuf);
+			iOutstandingSubConnectionActivityMessage.Complete(ret);
+			iOutstandingSubConnectionActivity = EFalse;
+			}
+		else				// ...and it is, so just start another timer cycle
+			{
+			__CFLOG_VAR((KShimScprTag, KShimScprClientTag, _L8("CSubConnectionLinkShimClient %08x:\tid %d - ...and it is.  Restart timer for another cycle."), 
+								 this, iSubConnectionShim.Id()));
+
+			iPreviousUplinkDataVolume = newUplinkDataVolume;
+			iPreviousDownlinkDataVolume = newDownlinkDataVolume;
+			iActivityTimer->After(iRequestedClientTimerPeriod);
+			}
+		}
+	}
+
+CSubConnectionLinkShimClient::CActivityTimer* CSubConnectionLinkShimClient::CActivityTimer::NewL(CSubConnectionLinkShimClient* aOwner, TInt aPriority)
+/**
+Construct a new CActivityTimer()
+
+@param aOwner The owning CSubConnectionLinkShimClient (on which we call methods upon timer completion)
+@param aPriority The priority of the active object underlying this timer object
+@return A pointer to the newly constructed CActivityTimer object
+*/
+	{
+	CSubConnectionLinkShimClient::CActivityTimer* newActivityTimer = 
+		new(ELeave) CSubConnectionLinkShimClient::CActivityTimer(aOwner, aPriority);
+
+	CleanupStack::PushL(newActivityTimer);
+	newActivityTimer->ConstructL();
+	CleanupStack::Pop(newActivityTimer);
+	return newActivityTimer;
+	}
+
+void CSubConnectionLinkShimClient::CActivityTimer::RunL()
+/**
+Call the owning object's check activity method
+
+*/
+	{ 
+	iOwner->CheckSubConnectionActivity(); 
+	} 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/src/shimconnsettings.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,46 @@
+// 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 "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 SS_CONNSETTINGS.CPP
+*/
+
+#include "shimconnsettings.h"
+#include "es_prot.h"
+
+void CConnectionSettingsShim::DoGetBoolSettingL(const TDesC& aSettingName, TBool& aValue, const RMessagePtr2* aMessage )
+	{
+	iConnectionProvdBase.DoGetBoolSettingL( aSettingName, aValue, aMessage );
+	}
+	
+void CConnectionSettingsShim::DoGetDes16SettingL(const TDesC& aSettingName, TDes16& aValue, const RMessagePtr2* aMessage )
+	{
+	iConnectionProvdBase.DoGetDes16SettingL( aSettingName, aValue, aMessage );
+	}
+	
+void CConnectionSettingsShim::DoGetDes8SettingL(const TDesC& aSettingName, TDes8& aValue, const RMessagePtr2* aMessage )
+	{
+	iConnectionProvdBase.DoGetDes8SettingL( aSettingName, aValue, aMessage );
+	}
+	
+void CConnectionSettingsShim::DoGetIntSettingL(const TDesC& aSettingName, TUint32& aValue, const RMessagePtr2* aMessage )
+	{
+	iConnectionProvdBase.DoGetIntSettingL( aSettingName, aValue, aMessage );
+	}
+	
+HBufC* CConnectionSettingsShim::DoGetLongDesSettingLC(const TDesC& aSettingName, const RMessagePtr2* aMessage )
+	{
+	return iConnectionProvdBase.DoGetLongDesSettingLC( aSettingName, aMessage );
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/src/shimcpr.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,681 @@
+// Copyright (c) 2005-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 <comms-infras/nifif.h>
+#include <esockmessages.h>
+#include <nifman.h>
+#include "shimcpr.h"
+#include "shimconnsettings.h"
+#include "es_prot.h"
+#include "shimnifmansconn.h"
+#include "ss_glob.h"
+#include "connectionSelectorShim.h"
+
+using namespace ESock;
+
+//PREQ399_REMOVE
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+#include <networking/umtsgprs_subconnprovfactory.h>
+#endif
+//SYMBIAN_NETWORKING_3GPPDEFAULTQOS //PREQ399_REMOVE
+
+
+CConnectionProviderShim* CConnectionProviderShim::NewL(CConnectionProviderFactoryBase& aFactory)
+	{
+	CConnectionProviderShim* self = new (ELeave) CConnectionProviderShim(aFactory);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CConnectionProviderShim::ConstructL()
+	{
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tConstructL"), this));
+	// Do nothing, atleast for now;	
+	}
+
+CConnectionProviderShim::~CConnectionProviderShim()
+	{
+	delete iConnectionSettings;
+	
+	// As soon as the provider has a valid iProvider pointer the ownership has passed to this provider
+   	delete iProvider;
+
+	iSelectors.Close();
+	iConnections.Close();
+	iNifManSubConnections.Close();
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\t~CConnectionProviderShim"), this));
+	}
+	
+void CConnectionProviderShim::AddRefL(CConnectionSelectorShim* aSelector)
+	{
+	TInt index = iSelectors.Find(aSelector);
+	if (-1 == index)
+		{
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tAddRef(aSelector %x) adding selector"), this, aSelector));	
+		iSelectors.AppendL(aSelector);
+		}
+	else
+		{
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tAddRef(aSelector %x) selector already known"), this, aSelector));	
+		}
+	}
+	
+
+void CConnectionProviderShim::ReleaseRef(CConnectionSelectorShim* aSelector)
+	{	
+	TInt index = iSelectors.Find(aSelector);
+	if (-1 != index)
+		{		
+		iSelectors[index]->SetProviderNull();
+		iSelectors.Remove(index);
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tReleaseRef(aSelector %x) removng selector"), this, aSelector));
+		}
+	else
+		{
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tReleaseRef(aSelector %x) selector not known"), this, aSelector));
+		}
+	
+	if (ShouldIDeleteNow())
+		{
+		DeleteMeNow();
+		}
+	}
+	
+// CConnectionProviderBase virtuals
+TBool CConnectionProviderShim::ShouldIDeleteNow()
+	{		
+	TInt selectors = iSelectors.Count();
+	if (0 == selectors && !iHasAnyControlClientJoined)
+		{
+		return ETrue;
+		}
+		
+	return EFalse;	
+	}
+
+void CConnectionProviderShim::DoStartL(Meta::SMetaData& aParams, const RMessagePtr2* aMessage)
+	{
+#ifdef _DEBUG
+	Meta::STypeId tid = aParams.GetTypeId();
+	ASSERT( tid.iUid == TUid::Uid( KESockMessagesImplementationUid ) && tid.iType == EESockMessageConnStart);
+#endif
+	
+	CConnStart& p = static_cast<CConnStart&>(aParams);
+	if ( p.ConnPrefs() )
+		{
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tDoStartL() with prefs"), this));
+		iProvider->StartL(p.StartType(), *p.ConnPrefs(), aMessage);
+		}
+	else
+		{
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tDoStartL() without prefs"), this));
+		iProvider->StartL(p.StartType(), aMessage);
+		}
+	}
+   
+void CConnectionProviderShim::DoDataClientJoiningL(MConnectionDataClient& aDataClient)
+	{
+	(void)aDataClient;
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tDoDataClientJoiningL(aDataClient %x) [iDataClients.Count()=%d]"), this, &aDataClient, iDataClients.Count()));
+	}
+	
+void CConnectionProviderShim::DoDataClientLeaving(MConnectionDataClient& aDataClient)
+	{
+	(void)aDataClient;
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tDoDataClientLeaving(aDataClient %x) [iDataClients.Count()=%d]"), this, &aDataClient, iDataClients.Count()));
+	}
+	
+void CConnectionProviderShim::DoControlClientJoiningL(MConnectionControlClient& aControlClient)
+	{
+	(void)aControlClient;
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tDoControlClientJoiningL(aControlClient %x) [iControlClients.Count()=%d]"), this, &aControlClient, iControlClients.Count()));
+	}
+	
+void CConnectionProviderShim::DoControlClientLeaving(MConnectionControlClient& aControlClient)
+	{
+	(void)aControlClient;
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tDoControlClientLeaving(aControlClient %x) [iControlClients.Count()=%d]"), this, &aControlClient, iControlClients.Count()));
+	}
+	
+TInt CConnectionProviderShim::DoStop(TInt aError, const RMessagePtr2* aMessage)
+	{
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+	// when RConn::Stop() happens, that means one is releasing the connection, so the IAP associated with
+	// the Lock should go away. The code below will set the status of IAP locked to false, so that any further
+	// Start can lock it 			
+	iFactoryShim->SetIAPLockStatus(EFalse,-1);
+#endif // SYMBIAN_NETWORKING_UMTSR5			
+	return iProvider->Stop( aError, aMessage );
+	}
+   
+void CConnectionProviderShim::DoProgressL(Meta::SMetaData& aParams) const
+	{
+#ifdef _DEBUG
+	Meta::STypeId tid = aParams.GetTypeId();
+#endif
+	ASSERT( tid.iUid == TUid::Uid( KESockMessagesImplementationUid ) && tid.iType == EESockMessageCommsNifBuffer);
+	TMetaNifProgressBuf& p = static_cast<TMetaNifProgressBuf&>(aParams);
+	iProvider->ProgressL( p.iNifProgressBuf );
+	}
+   
+void CConnectionProviderShim::DoLastProgressError(Meta::SMetaData& aBuffer)
+	{
+#ifdef _DEBUG
+	Meta::STypeId tid = aBuffer.GetTypeId();
+#endif
+	ASSERT( tid.iUid == TUid::Uid( KESockMessagesImplementationUid ) && tid.iType == EESockMessageCommsNifBuffer);
+	TMetaNifProgressBuf& p = static_cast<TMetaNifProgressBuf&>(aBuffer);
+	iProvider->LastProgressError( p.iNifProgressBuf );
+	}
+   
+void CConnectionProviderShim::DoRequestServiceChangeNotificationL()
+	{
+	iProvider->RequestServiceChangeNotificationL();
+	}
+   
+void CConnectionProviderShim::DoCancelServiceChangeNotification()
+	{
+	iProvider->CancelServiceChangeNotification();
+	}
+   
+void CConnectionProviderShim::DoControlL(TUint aOptionLevel, TUint aOptionName, Meta::SMetaData& aOption, const RMessagePtr2* aMessage)
+	{
+#ifdef _DEBUG
+	Meta::STypeId tid = aOption.GetTypeId();
+#endif
+	ASSERT( tid.iUid == TUid::Uid( KESockMessagesImplementationUid ) && tid.iType == EESockMessageCommsDes8);
+	::TMetaDes8& p = static_cast< ::TMetaDes8& >(aOption);
+	ASSERT(p.iDes);
+	iProvider->ControlL(aOptionLevel, aOptionName, *((TDes8*)(p.iDes)), aMessage);
+	}
+   
+TInt CConnectionProviderShim::DoAllSubConnectionNotificationEnable()
+	{
+	return iProvider->AllSubConnectionNotificationEnable();
+	}
+   
+TInt CConnectionProviderShim::DoCancelAllSubConnectionNotification()
+	{
+	return iProvider->CancelAllSubConnectionNotification();
+	}
+
+void CConnectionProviderShim::DoSendIoctlMessageL(const RMessage2& aMessage)
+	{
+	iProvider->SendIoctlMessageL(aMessage);
+	}
+   
+void CConnectionProviderShim::DoSendCancelIoctl()
+	{
+   	iProvider->SendCancelIoctl();	
+	}
+
+TInt CConnectionProviderShim::DoEnumerateSubConnectionsL(TUint& aCount)
+	{
+	return iProvider->EnumerateSubConnections(aCount);
+	}
+
+TUint CConnectionProviderShim::DoEnumerateClientsL(HBufC8*& /*aClientInfoBuffer*/, TEnumClients /*aClientType*/)
+	{
+	return 0;
+	}
+
+CConnectionSettings& CConnectionProviderShim::DoSettingsAccessL()
+	{
+	ASSERT(iProvider);
+	if (iConnectionSettings == NULL)
+    	{
+    	iConnectionSettings = new (ELeave)CConnectionSettingsShim(*iProvider);	    
+    	}
+	return *iConnectionSettings;
+	}
+	
+void CConnectionProviderShim::ConnectionJoiningL( const CConnection& aConnection )
+	{
+	if (iConnections.Find(&aConnection) < 0)
+		{
+		iConnections.AppendL(&aConnection);
+		}
+	TInt count = iNifManSubConnections.Count();
+	for ( TInt n = 0; n < count; n++ )
+		{//here we exactly know what we are dealing with hence the cast
+		CNifManSubConnectionShim* c = static_cast<CNifManSubConnectionShim*>(iNifManSubConnections[n]);
+		MSubInterfaceShim* subint = static_cast<MSubInterfaceShim*>(c);
+		subint->ConnectionJoiningL(aConnection);
+		}
+	}
+	
+void CConnectionProviderShim::ConnectionLeaving( const CConnection& aConnection )
+	{
+	TInt count = iNifManSubConnections.Count();
+	for ( TInt n = 0; n < count; n++ )
+		{//here we exactly know what we are dealing with hence the cast
+		CNifManSubConnectionShim* c = static_cast<CNifManSubConnectionShim*>(iNifManSubConnections[n]);
+		MSubInterfaceShim* subint = static_cast<MSubInterfaceShim*>(c);
+		subint->ConnectionLeaving(aConnection);
+		}
+	TInt n = iConnections.Find(&aConnection);
+	if (n >= 0)
+		{
+		iConnections.Remove(n);
+		}
+	}
+
+void CConnectionProviderShim::DoConnectionControlActivityL( TControlActivity aControlActivity, const Meta::SMetaData* aData, const RMessagePtr2* aMessage )
+	{
+	switch (aControlActivity)
+		{
+		case EAttachNormal:
+		case EAttachMonitor:
+			iProvider->AttachToConnectionL(iConnectionInfo.Right(KConnInfoPart), aControlActivity == EAttachMonitor, aMessage);
+			if ( aData == NULL )
+				{
+				break;
+				}
+			aControlActivity = EConnJoin; //and fall through
+		case EConnJoin:
+			if ( !aData || !aData->IsTypeOf( STypeId::CreateSTypeId(KShimCommsUid, Meta::KNetMetaTypeAny) ) )
+				{
+				User::Leave(KErrArgument);
+				}
+			ConnectionJoiningL(static_cast<const TShimConnectionInfo*>(aData)->iConnection);
+			break;
+		case EConnLeave:
+			if ( !aData || !aData->IsTypeOf( STypeId::CreateSTypeId(KShimCommsUid, Meta::KNetMetaTypeAny) ) )
+				{
+				User::Leave(KErrArgument);
+				}
+			ConnectionLeaving(static_cast<const TShimConnectionInfo*>(aData)->iConnection);
+			break;
+		case ESetUsageProfile:
+			{
+			ASSERT(aData);
+	#ifdef _DEBUG
+			Meta::STypeId tid = aData->GetTypeId();
+	#endif
+			ASSERT( tid.iUid == TUid::Uid( KESockMessagesImplementationUid ) && tid.iType == EESockMessageCommsDes8);
+			const ::TMetaDes8* p = static_cast<const ::TMetaDes8*>(aData);
+			ASSERT(p->iDes);
+			const TUint* profile = reinterpret_cast<const TUint*>(p->iDes->Ptr());
+			if (iUsageProfile != *profile)
+				{
+				__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tSetting usage profile %x -> %x"),
+						this, iUsageProfile & 0xff, *profile & 0xff));
+				iUsageProfile = *profile;
+				iProvider->SetUsageProfile(*profile);
+				}
+			break;
+			}
+		};
+	}
+	
+CNifManSubConnectionShim* CConnectionProviderShim::FindSubConnection( TSubConnectionUniqueId aId )
+	{
+	CNifManSubConnectionShim* client = NULL;
+	TInt count = iNifManSubConnections.Count();
+	for ( TInt n = 0; n < count; n++ )
+		{//here we exactly know what we are dealing with hence the cast
+		CNifManSubConnectionShim* c = static_cast<CNifManSubConnectionShim*>(iNifManSubConnections[n]);
+		MSubInterfaceShim* subint = static_cast<MSubInterfaceShim*>(c);
+		if (subint->Id() == aId )
+			{
+			client = c;
+			break;
+			}
+		}
+	return client;
+	}
+	
+// Define methods from the interface specified by MConnectionNotify
+void CConnectionProviderShim::ProgressNotification(TInt aStage, TInt aError)
+	{
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tProgressNotification(%d, %d)"), this, aStage, aError));
+	
+	TInt max = iControlClients.Count();
+	for (TInt n = max - 1 ; n >= 0 ; n--)
+		{
+		MConnectionControlClient* client = iControlClients[n];
+		client->ProgressNotification(aStage, aError);
+		//check whether the client dissapeared or not
+		if ( n < iControlClients.Count() && client == iControlClients[n] )
+			{
+			if (aStage == KLinkLayerOpen)
+				{
+				iControlClients[n]->LayerUp(aError);
+				}
+			else if (aError != KErrNone)
+				{
+				iControlClients[n]->ConnectionError(aStage, aError);
+				}
+			}
+		}
+	if (aStage == KConnectionUninitialised && !iIsAlreadyUninitialised /* Guard against receiving KConnectionUninitialised multiple times*/)
+		{						
+		iIsAlreadyUninitialised = ETrue;
+		TInt selectors = iSelectors.Count();
+		for (TInt i = 0; i < selectors; ++i)
+			{
+			iSelectors[i]->SetProviderNull();
+			}		
+		DeleteMeNow();		
+		}
+	}
+
+void CConnectionProviderShim::LinkLayerOpen(TInt /*aError*/)
+/**
+Notification from the connection provider - ignored.
+
+*/
+	{	
+	}
+   
+void CConnectionProviderShim::LinkLayerClosed(TInt /*aError*/)
+/**
+Notification from the connection provider - not currently used.
+
+*/
+	{
+	User::Invariant();
+	}
+
+void CConnectionProviderShim::SelectionComplete(TInt aError, const TDesC8& /*aSelectionInfo*/)
+	{//obsolete call selection done by factories this could happen only on Attach
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tSelectionComplete(%d)"), this, aError));
+	ProgressNotification(KFinishedSelection, aError);
+	}
+   
+void CConnectionProviderShim::ConnectionError(TInt /*aError*/)
+/**
+Notification from the connection provider - not currently used.
+
+*/
+	{
+	User::Invariant();
+	}
+   
+void CConnectionProviderShim::ProgressNotification(TSubConnectionUniqueId aSubConnectionUniqueId, TInt aStage, TInt aError)
+	{
+	MSubInterfaceShim* subint = static_cast<MSubInterfaceShim*>(FindSubConnection(aSubConnectionUniqueId));
+	if (subint)
+		{//here we exactly know what we are dealing with hence the cast
+		subint->ProgressNotification(aStage, aError, KNullDesC8);
+		}
+	else
+		{
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tProgressNotification(subConnectionId %d, %d, %d) subconnection ID lookup error occured"),
+					 this, aSubConnectionUniqueId, aStage, aError));
+		}
+	}
+   
+void CConnectionProviderShim::ServiceChangeNotification(TUint32 aId, const TDesC& aType)
+	{
+	TInt max = iControlClients.Count();
+	for (TInt i = max - 1 ; i >= 0 ; i--)
+		{
+		iControlClients[i]->ServiceChangeNotification(aId, aType);
+		}
+	}
+   
+void CConnectionProviderShim::InterfaceStateChangeNotification(TDesC8& /*aInfo*/)
+	{//served through factories
+	ASSERT( NULL );
+	}
+   
+void CConnectionProviderShim::NotifyDataSent(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aUplinkVolume)
+	{//here we exactly know what we are dealing with hence the cast
+	MSubInterfaceShim* subint = static_cast<MSubInterfaceShim*>(FindSubConnection(aSubConnectionUniqueId));
+	if (subint)
+		{
+		subint->NotifyDataSent(aUplinkVolume,0);
+		}
+	else
+		{
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tNotifyDataSent(subConnectionId %d, aUplinkVolume %d) subconnection ID lookup error %d occured"),
+					 this, aSubConnectionUniqueId, aUplinkVolume, KErrNotFound));
+		}
+	}
+   
+void CConnectionProviderShim::NotifyDataReceived(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aDownlinkVolume)
+	{//here we exactly know what we are dealing with hence the cast
+	MSubInterfaceShim* subint = static_cast<MSubInterfaceShim*>(FindSubConnection(aSubConnectionUniqueId));
+	if (subint)
+		{
+		subint->NotifyDataReceived(aDownlinkVolume,0);
+		}
+	else
+		{
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tNotifyDataReceived(SubConnectionId %d, aDownLinkVolume %d); subconnection ID lookup error %d occured"),
+					 this, aSubConnectionUniqueId, aDownlinkVolume, KErrNotFound));
+		}
+	}
+
+void CConnectionProviderShim::SubConnectionEvent(const TSubConnectionEvent& aSubConnectionEvent)
+/**
+Upcall from connection provider indicating that a subconnection event has occured
+
+@param aSubConnectionEvent The event that occured
+@note Even if the not client is listening for subconnection events, we still need them to manage the array of subconnections by listening for started and stopped events on each subconnection
+@note Events are not handled on a per-subconnection basis - all events are distributed to anyone who uses the AllSubConnectionNotification() method, so no subconnection/subinterface involvement is necessary
+*/
+	{
+	TSubConnectionEventType eventType(aSubConnectionEvent.iEventType);
+	TInt ret = KErrNone;
+	
+	TSockManData* sockManData = SockManGlobals::Get();
+	ASSERT(sockManData != NULL);
+	
+	CNifManSubConnectionShim* c = NULL;
+	switch(eventType)
+		{
+		case ESubConnectionOpened:
+		    {			
+			__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tSubConnectionEvent() ESubConnectionOpened"), this));
+			c = FindSubConnection(aSubConnectionEvent.iSubConnectionUniqueId);
+			if (c == NULL)
+				{
+				// no instance yet for particular Id, create one
+				TRAP(ret,c = new (ELeave)CNifManSubConnectionShim(*this));
+				if(ret!=KErrNone)	// nothing we can do here, no point in throwing error back to event source - nothing they can do about it
+					{
+					// Array integrity will be broken here - may cause errors later with events on this subconnection if we recover
+					__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tERROR: Subconnection opened event; could not create CSubInterface - possible OOM condition - subconnection ID %d, error %d - subinterface array integrity failure"),
+							    this, aSubConnectionEvent.iSubConnectionUniqueId, ret));
+					break;
+					}
+				ret = iNifManSubConnections.Append(c);
+				if (ret != KErrNone)
+					{
+						__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tERROR: could not append CNifManSubConnectionShim to the list - subconnection ID %d, error %d - subinterface array integrity failure"),
+							    this, aSubConnectionEvent.iSubConnectionUniqueId, ret));
+						c->DeleteAsync();
+						break;
+					}
+				}
+			MSubInterfaceShim* subint = static_cast<MSubInterfaceShim*>(c);
+			subint->SetSubConnectionUniqueId(aSubConnectionEvent.iSubConnectionUniqueId);
+			
+			TInt count = iConnections.Count();
+			for (TInt i = count - 1; i >= 0; i--)
+				{
+				TRAP(ret,c->ConnectionJoiningL(*iConnections[i]));
+				if(ret!=KErrNone)	// nothing we can do here, no point in throwing error back to event source - nothing they can do about it
+					{
+					// Array integrity will be broken here - may cause errors later with events on this subconnection if we recover
+					__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tERROR: connection joining subconnection opened event; - possible OOM condition - subconnection ID %d, error %d - subinterface array integrity failure"),
+								 this, aSubConnectionEvent.iSubConnectionUniqueId, ret));
+					break;
+					}
+				}
+		    }
+			break;
+
+		case ESubConnectionClosed:
+			__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tSubConnectionEvent() ESubConnectionClosed"), this));
+			c = FindSubConnection(aSubConnectionEvent.iSubConnectionUniqueId);
+			if(!c)		// then there was an error (probably that we couldn't find the object in the array) - write error to log - not much else we can do
+				{
+				__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tERROR: Subconnection closed event; could not find subconnection ID %d, lookup error %d occured"),
+						    this, aSubConnectionEvent.iSubConnectionUniqueId, KErrNotFound));
+				}
+			else
+				{
+				iDeleteAsynchOnly = ETrue;
+				TInt n = iNifManSubConnections.Find(c);
+				if (n >= 0)
+					{
+					iNifManSubConnections.Remove(n);
+					}
+				c->DeleteAsync();
+				}
+			break;
+
+		default:
+			// do nothing; we only care about open and close events
+			break;
+		}	
+	
+	// Rebroadcast all events to all attached control clients
+	TInt max = iControlClients.Count();
+	for (TInt i = max - 1; i >= 0 ; i--)
+		{
+		iControlClients[i]->SubConnectionEvent(NULL, aSubConnectionEvent);
+		}
+
+	CheckDeleteThis();
+
+	}
+
+CConnectionProvdBase* CConnectionProviderShim::GetNifSession()
+    {
+    return iProvider;
+    }
+    
+void CConnectionProviderShim::InitialiseL(CConnectionProvdBase* aStarterSession)
+	{
+	ASSERT(aStarterSession);
+	//
+	//can't set the provider twice
+	//
+	ASSERT(iProvider == NULL);	
+	iProvider = Nif::NewConnectionL(this, 0);	
+	__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tInitialiseL(aStarterSession %x) iProvider %x"), this, aStarterSession, iProvider));
+	//
+	// After creating the new nif session (iProvider) we also need to transfer the connection attempt count
+	// from the old nif session (aStarterSession) to the new one, since it was the one that initially 
+	// started the interface and connection attempt count was incremented in StartL of nif session
+	//
+	TPckg<TInt> connectionAttempt(-1);
+	aStarterSession->ControlL(KCOLProvider, KNifSessionGetConnectionAttempt, connectionAttempt, NULL);
+	ASSERT(connectionAttempt() != -1);			
+	iProvider->ControlL(KCOLProvider, KNifSessionSetConnectionAttempt, connectionAttempt, NULL);
+	//
+	// Finally, call ConnectionControlActivityL to ensure that the provider is attached to the connection
+	// and progress notifications from the provider end up in the connection object too
+	//		
+	DoConnectionControlActivityL(EAttachNormal, NULL, NULL);
+	
+//PREQ399_REMOVE
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+	_LIT(KIfNameField, "IfName");
+	TBuf<KCommsDbSvrMaxFieldLength> nifname;
+	iProvider->GetDes16SettingL(KIfNameField(), nifname);
+    if (nifname.CompareF (KSpudName) == 0)
+        {
+        iSubConnectionType = KUmtsGprsSubConnectionProviderFactoryId;
+        }
+#endif //SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+	iHasAnyControlClientJoined = ETrue;
+    }
+    
+void CConnectionProviderShim::SetBlockProgressesL(CConnectionProvdBase* aStarterSession)
+/**
+Ensure that the "blocked progress" status of aStarterSession is copied across to iProvider session.
+
+@param aStarterSession session from which to copy "blocked progress" status.
+*/
+	{
+	TPckg<TBool> blockProgresses(EFalse);
+	aStarterSession->ControlL(KCOLProvider, KNifSessionGetBlockProgresses, blockProgresses, NULL);
+	iProvider->ControlL(KCOLProvider, KNifSessionSetBlockProgresses, blockProgresses, NULL);
+	}
+
+void CConnectionProviderShim::DoJoinNextLayerL(CConnectionProviderBase* aNextLayer)
+	{
+	(void)aNextLayer;
+	if ( !iProvider )
+		{
+		ASSERT( !aNextLayer );
+//		AddRef(); 	//The AddRef needs to be here since it follows the logic in the selector shim. 	
+		iProvider = Nif::NewConnectionL(this, 0);
+		__CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tDoJoinNextLayerL(aNextLayer %x) iProvider %x"), this, aNextLayer, iProvider));
+		}
+	}
+	
+CConnectionProviderBase* CConnectionProviderShim::DoNextLayer() const
+    {
+    //This is (by design) the last layer.
+    return NULL;
+    }
+    
+    
+TInt CConnectionProviderShim::DoCanDoSubConnection(RSubConnection::TSubConnType aSubConnType) const
+	{
+	(void)aSubConnType;
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+	return iSubConnectionType;
+#else	
+  	return 0;
+#endif
+// SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+  	}
+
+/**
+Find particular CSubConnectionLinkShimClient object with the pointer to given aConnection
+
+@param aTypeId Id of CNifManSubConnectionShim
+@param aConnection aConnection pointer 
+@return CSubConnectionLinkShimClient* or NULL
+*/
+CSubConnectionLinkShimClient* CConnectionProviderShim::QuerySubSessions(TInt32 aTypeId,const CConnection* aConnection)
+	{
+	 TInt count = iNifManSubConnections.Count();
+	 CNifManSubConnectionShim *nifManSubConnection;
+	 CSubConnectionLinkShimClient *linkShimClient = NULL;
+	 for (TInt i = count - 1; i >= 0; i--)
+	 	{
+		nifManSubConnection = iNifManSubConnections[i];
+		if (nifManSubConnection && nifManSubConnection->Id() == aTypeId)	
+			{
+			TInt n = 0;
+			do
+				{
+				 linkShimClient = nifManSubConnection->ShimClient(n++);			
+				}
+			while (linkShimClient && !linkShimClient->Match(*aConnection));
+			}
+	 	}
+	 		
+	return linkShimClient;
+	}
+	
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+void CConnectionProviderShim::SetFactoryIfactory(CConnectionProviderFactoryShim *aFactoryShim)
+	{
+	iFactoryShim = aFactoryShim;	
+	}
+#endif // SYMBIAN_NETWORKING_UMTSR5	
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/src/shimcprfactory.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,256 @@
+// Copyright (c) 2005-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:
+// SHIMCPRFACTORY.H
+// 
+//
+
+#include <ecom/ecom.h>
+#include <implementationproxy.h>
+#include "shimcprfactory.h"	// for CConnectionProviderFactoryShim
+
+#include "connectionSelectorShim.h"
+#include "shimcpr.h"
+#include "shimnifmansconn.h"
+#include "idquerynetmsg.h"
+#include <nifman.h>
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+#include <esockmessages.h>
+#endif // #ifdef SYMBIAN_NETWORKING_UMTSR5	
+
+
+const TUint KShimConnectionProviderImplementationUid = 0x102070FF;
+/**
+Data required for instantiating ECOM Plugin
+*/
+const TImplementationProxy ImplementationTable[] = 
+	{
+	IMPLEMENTATION_PROXY_ENTRY(KShimConnectionProviderImplementationUid, CConnectionProviderFactoryShim::NewL),
+	};
+
+
+/**
+ECOM Implementation Factory
+*/
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+
+    return ImplementationTable;
+    }
+
+CConnectionProviderFactoryShim* CConnectionProviderFactoryShim::NewL(TAny* aConstructionParameters)
+	{
+	CConnectionProviderFactoryShim* ptr = new (ELeave) CConnectionProviderFactoryShim(KShimConnectionProviderFactoryId, *(reinterpret_cast<CConnectionFactoryContainer*>(aConstructionParameters)));
+	CleanupStack::PushL(ptr);
+	ptr->ConstructL();
+	CleanupStack::Pop(ptr);
+	return ptr;
+	}
+   
+void CConnectionProviderFactoryShim::ConstructL()
+	{//create a provider session for global tasks (enumerate connections/all interface notification....)
+    iNifmanSession = Nif::NewConnectionL(this, 0);
+    iNifmanSession->AllInterfaceNotificationL();
+	}
+// Destructor
+CConnectionProviderFactoryShim::~CConnectionProviderFactoryShim()
+	{
+	delete iNifmanSession;
+	}
+   
+// Constructor
+CConnectionProviderFactoryShim::CConnectionProviderFactoryShim(TUint aFactoryId, CConnectionFactoryContainer& aParentContainer) :
+	CConnectionProviderFactoryBase( aFactoryId, aParentContainer )
+	{
+	}
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+// Sets the IAP lock status
+void CConnectionProviderFactoryShim::SetIAPLockStatus(TBool aLockStatus, TInt aLockedIAP)
+	{
+	iIsIAPLocked = aLockStatus;
+	iLockedIAP = aLockedIAP;
+	}
+// Gets the IAP lock status
+void CConnectionProviderFactoryShim::GetIAPLockStatus(TBool &aLockStatus, TInt &aLockedIAP)
+	{
+	aLockStatus = iIsIAPLocked;
+	aLockedIAP = iLockedIAP;
+	}
+	
+#endif // #ifdef SYMBIAN_NETWORKING_UMTSR5	
+
+CConnectionProviderBase* CConnectionProviderFactoryShim::DoCreateProviderL()
+	{
+#ifdef SYMBIAN_NETWORKING_UMTSR5	
+	CConnectionProviderShim * shimProv = CConnectionProviderShim::NewL(*this);
+	shimProv->SetFactoryIfactory(this);
+	return shimProv;
+#else
+	return CConnectionProviderShim::NewL(*this);
+#endif // #ifdef SYMBIAN_NETWORKING_UMTSR5		
+	}
+   
+MProviderSelector* CConnectionProviderFactoryShim::DoSelectProvider( Meta::SMetaData& aPreferences, ISelectionNotify& aSelectionNotify, const RMessagePtr2* aMessage )
+	{
+	//create self-destructing object
+	CConnectionSelectorShim* selector = new CConnectionSelectorShim(aSelectionNotify);
+	if (!selector)
+		{
+		aSelectionNotify.SelectComplete(NULL,KErrNoMemory);
+		aSelectionNotify.Detach();
+		}
+	else 
+		{
+		#ifdef SYMBIAN_NETWORKING_UMTSR5	
+		selector->SetFactoryIface(this);	
+		#endif
+		if ( selector->Select(aPreferences, aMessage) != KErrNone )
+			{
+			selector = NULL;
+			}	
+		}
+		
+		
+	return selector;
+	}
+   
+MProviderSelector* CConnectionProviderFactoryShim::DoSelectNextLayerProvider( Meta::SMetaData& /*aPreferences*/, ISelectionNotify& /*aSelectionNotify*/, const RMessagePtr2* /*aMessage*/ )
+	{	
+	return NULL;
+	}
+	
+void CConnectionProviderFactoryShim::DoEnumerateConnectionsL(RPointerArray<TConnectionInfo>& aConnectionInfoPtrArray)
+	{
+    iNifmanSession->EnumerateConnectionsL(aConnectionInfoPtrArray);
+	}
+
+//MConnectionNotify interface to catch the global events
+void CConnectionProviderFactoryShim::SelectionComplete(TInt /*aError*/, const TDesC8& /*aSelectionInfo*/)
+	{
+	
+	ASSERT(NULL);//it's never to happen
+	}
+	
+void CConnectionProviderFactoryShim::ConnectionError(TInt /*aError*/)
+	{
+	ASSERT(NULL);//it's never to happen
+	}
+	
+void CConnectionProviderFactoryShim::LinkLayerOpen(TInt /*aError*/)
+	{
+	ASSERT(NULL);//it's never to happen
+	}
+	
+void CConnectionProviderFactoryShim::LinkLayerClosed(TInt /*aError*/)
+	{
+	ASSERT(NULL);//it's never to happen
+	}
+	
+void CConnectionProviderFactoryShim::ProgressNotification(TInt /*aStage*/, TInt /*aError*/)
+	{
+	ASSERT(NULL);//it's never to happen
+	}
+	
+void CConnectionProviderFactoryShim::ProgressNotification(TSubConnectionUniqueId /*aSubConnectionUniqueId*/, TInt /*aStage*/, TInt /*aError*/)
+	{
+	ASSERT(NULL);//it's never to happen
+	}
+	
+void CConnectionProviderFactoryShim::ServiceChangeNotification(TUint32 /*aId*/, const TDesC& /*aType*/)
+	{
+	ASSERT(NULL);//it's never to happen
+	}
+	
+void CConnectionProviderFactoryShim::InterfaceStateChangeNotification(TDesC8& aInfo)
+	{
+	TInt count = iConnectionFactoryNotify.Count();
+	for (TInt n = 0; n < count; n++)
+		{
+		iConnectionFactoryNotify[n].InterfaceStateChange(aInfo);
+		}
+	}
+	
+void CConnectionProviderFactoryShim::NotifyDataSent(TSubConnectionUniqueId /*aSubConnectionUniqueId*/, TUint /*aUplinkVolume*/)
+	{
+	ASSERT(NULL);//it's never to happen
+	}
+	
+void CConnectionProviderFactoryShim::NotifyDataReceived(TSubConnectionUniqueId /*aSubConnectionUniqueId*/, TUint /*aDownlinkVolume*/)
+	{
+	ASSERT(NULL);//it's never to happen
+	}
+	
+void CConnectionProviderFactoryShim::SubConnectionEvent(const TSubConnectionEvent& /*aSubConnectionEvent*/)
+	{
+	ASSERT(NULL);//it's never to happen
+	}
+	
+
+/**
+Define the factory query to find out particular CSubConnectionLinkShimClient object based on CConnection address 
+*/
+
+class XShimFactoryQuery : public MCommsFactoryQuery
+	{
+	friend class CConnectionProviderFactoryShim;
+	
+public:
+	explicit XShimFactoryQuery( NetMessages::CTypeIdQuery& aQuery ) :
+		iQuery(aQuery),
+		iClient(NULL)
+		{
+		}
+
+protected:
+	NetMessages::CTypeIdQuery& iQuery;
+	CSubConnectionLinkShimClient* iClient;
+
+public:
+	virtual TMatchResult Match( TFactoryObjectInfo& aInfo );
+	};
+
+//This method is called for each instance of particular class being managed by CommsFactory framework
+MCommsFactoryQuery::TMatchResult XShimFactoryQuery::Match( TFactoryObjectInfo& aInfo )
+	{
+	CConnectionProviderShim* connectionProvider = static_cast<CConnectionProviderShim*>(aInfo.iInfo.iFactoryObject);
+	ASSERT(connectionProvider);
+	//call the CNifManSubConnectionShim interface to do the job
+	iClient = connectionProvider->QuerySubSessions(iQuery.iTypeId, reinterpret_cast<CConnection*> (iQuery.iHandle));
+	
+	return iClient ? MCommsFactoryQuery::EMatch : MCommsFactoryQuery::EContinue;
+	}
+	
+/**	Handles incoming messages
+
+@param aNetMessage Messsge reference
+@return KErrNone|KErrNotFound|KErrNotSupported
+@return if object found passes its pointer to the aNetMessasge object
+*/
+TInt CConnectionProviderFactoryShim::DoReceiveMessage( NetMessages::CMessage& aNetMessage )
+{
+STypeId tid = STypeId::CreateSTypeId(NetMessages::KInterfaceUid, NetMessages::ETypeIdQueryId);
+NetMessages::CTypeIdQuery& query = static_cast<NetMessages::CTypeIdQuery&>(aNetMessage);
+TInt ret = KErrNotSupported;
+if (aNetMessage.GetTypeId() == tid && query.iUid == KShimCommsUid)
+	{
+	XShimFactoryQuery q(query);
+	ret = FindObject(q) ? KErrNone : KErrNotFound;
+	//carry the result back
+	query.iHandle = (TInt)(static_cast<MShimControlClient*>(q.iClient));
+	}
+return ret;
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/src/shimdatatransfer.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,458 @@
+// 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 "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 SHIMDATATRANSFER.CPP
+*/
+
+#include "shimnifmansconn.h"
+#include "shimdatatransfer.h"
+#include "es_prot.h" //CConnectionProvdBase alias NIFMAN
+
+
+
+
+CConnDataTransferShim::CConnDataTransferShim(CNifManSubConnectionShim& aSubConnectionProviderShim) :
+	iSubConnectionProviderShim(aSubConnectionProviderShim)
+	{
+	}
+		
+CConnDataTransferShim::~CConnDataTransferShim()
+	{
+	iUplinkGranularities.Close();
+	iDownlinkGranularities.Close();
+	}
+		
+
+TInt CConnDataTransferShim::DoDataTransferred(TUint& aUplinkVolume, TUint& aDownlinkVolume)
+	{
+	// Find out the amount of data transferred from the connection provider
+	TInt ret = iSubConnectionProviderShim.Provider().DataTransferred(iSubConnectionProviderShim.Id(), aUplinkVolume, aDownlinkVolume);
+
+	// Let the subinterface know in case any subconnections have outstanding data notification requests that might be completed by this
+	NotifyDataTransferred(aUplinkVolume, aDownlinkVolume);
+
+	// And return the results to the connection
+	return(ret);
+	}
+	
+TInt CConnDataTransferShim::DoDataTransferredCancel()
+	{
+	// do nothing
+	return KErrNone;
+	}
+	
+TInt CConnDataTransferShim::DoDataSentNotificationRequest(TUint aRequestedGranularity, TUint aRequestedNotificationVolume)
+	{
+	TInt requiredGranularity;
+
+	if(aRequestedGranularity == 0)	// absolute mode
+		{
+		// Start by finding out how much data has been sent, then calculate granularity
+		TUint uplinkDataVolume;
+		TUint dummyDataVolume;
+
+		DoDataTransferred( uplinkDataVolume, dummyDataVolume);
+
+		requiredGranularity = aRequestedNotificationVolume - uplinkDataVolume;
+		if(requiredGranularity < 0)	// we've already achieved this so notify immediately
+			{
+			// possible optimisation: pass reference to caller in here and 
+            // only notify them if this condition is met
+            // essentially we don't know what the granularity was here
+			for(TInt i=0; i < iClients.Count(); i++)
+				{
+				iClients[i]->NotifyDataSent(uplinkDataVolume, 0);
+				}
+			}
+		}
+	else	// relative mode
+		{
+		requiredGranularity = aRequestedGranularity;
+		}
+
+	return CalculateNewUplinkGranularity(requiredGranularity);
+	}
+	
+TInt CConnDataTransferShim::DoDataSentNotificationCancel()
+	{
+	// Do nothing.  Not worth trying to adjust granularity array.
+	return KErrNone;
+	}
+	
+TInt CConnDataTransferShim::DoDataReceivedNotificationRequest(TUint aRequestedGranularity, TUint aRequestedNotificationVolume)
+	{
+	TInt requiredGranularity;
+
+	if(aRequestedGranularity == 0)	// absolute mode
+		{
+		// Start by finding out how much data has been sent, then calculate granularity
+		TUint dummyDataVolume;
+		TUint downlinkDataVolume;
+
+		DoDataTransferred( dummyDataVolume, downlinkDataVolume);
+
+		requiredGranularity = aRequestedNotificationVolume - downlinkDataVolume;
+		if(requiredGranularity < 0)	// we've already achieved this so notify immediately
+			{
+			// possible optimisation: pass reference to caller in here 
+			// and only notify them if this condition is met
+            // essentially we don't know what the granularity was here
+			for(TInt i=0; i < iClients.Count(); i++)
+				{
+				iClients[i]->NotifyDataReceived(downlinkDataVolume, 0);
+				}
+			}
+		}
+	else	// relative mode
+		{
+		requiredGranularity = aRequestedGranularity;
+		}
+
+	return CalculateNewDownlinkGranularity(requiredGranularity);
+	}
+	
+TInt CConnDataTransferShim::DoDataReceivedNotificationCancel()
+	{
+	// Do nothing.  Not worth trying to adjust granularity array.
+	return KErrNone;
+	}
+
+TInt CConnDataTransferShim::NotifyDataTransferred(TUint aUplinkVolume, TUint aDownlinkVolume)
+/**
+Called as a side-effect of someone calling DataTransferredRequest(), to allow any absolute volume notifications that may be outstanding to be completed if the required amount of data has been sent/received
+
+@param aUplinkVolume The total volume of data sent on this subconnection
+@param aDownlinkVolume The total volume of data received on this subconnection
+@return KErrNone, or one of the system-wide error codes
+*/
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprDataTag, _L8("CConnDataTransferShim[id: %d]: New data transferred notification (uplink: %d, downlink: %d)"), 
+						 iSubConnectionProviderShim.Id(), aUplinkVolume, aDownlinkVolume));
+
+	for(TInt i=0; i < iClients.Count(); i++)
+		{
+		iClients[i]->NotifyDataTransferred(aUplinkVolume, aDownlinkVolume);
+		}
+
+	return KErrNone;
+	}
+
+TInt CConnDataTransferShim::NotifyDataSent(TUint aUplinkVolume)
+/**
+Notification from connection provider via CInterface that the requested granularity for data sent has been met or exceeded
+
+@note The granularity system is not perfect, as it may be the case that we get notifications for more than "granularity" quantity of data.  
+@param aUplinkVolume The total volume of data sent so far on this subconnection
+@return KErrNone, or one of the system-wide error codes
+*/
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprDataTag, _L8("CConnDataTransferShim[id: %d]: New data sent notification (uplink: %d)"), 
+						 iSubConnectionProviderShim.Id(), aUplinkVolume));
+
+	// Pass notification up to all subconnections, including the current granularity setting in case they are in relative notification mode
+	for(TInt i=0; i < iClients.Count(); i++)
+		{
+		iClients[i]->NotifyDataSent(aUplinkVolume, iCurrentUplinkGranularity);
+		}
+
+	// Set the new granularity required of the interface
+	return SetNextUplinkGranularity();
+	}
+
+TInt CConnDataTransferShim::NotifyDataReceived(TUint aDownlinkVolume)
+/**
+Notification from connection provider via CInterface that the requested granularity for data received has been met or exceeded
+
+@param aDownlinkVolume The total volume of data received so far on this subconnection
+@return KErrNone, or one of the system-wide error codes
+*/
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprDataTag, _L8("CConnDataTransferShim[id: %d]: New data received notification (downlink: %d)"), iSubConnectionProviderShim.Id(), aDownlinkVolume));
+
+	// Pass notification up to all subconnections, including the current granularity setting in case they are in relative notification mode
+	for(TInt i=0; i < iClients.Count(); i++)
+		{
+		iClients[i]->NotifyDataReceived(aDownlinkVolume, iCurrentDownlinkGranularity);
+		}
+
+	// Set the new granularity required of the interface
+	return SetNextDownlinkGranularity();
+	}
+
+TInt CConnDataTransferShim::CalculateNewUplinkGranularity(TUint aRequestedGranularity)
+/**
+Calculate the required granularity to satisfy client requests
+This function calculates the delta between client requests and stores it in an array.
+
+@param aRequestedGranularity The new requested granularity
+@return KErrNone if successful, otherwise one of the system-wide error codes
+@todo Quantise requests to granularity of 1K
+*/
+	{
+	TInt ret = KErrNone;
+	TInt requestedGranularity = static_cast<TInt>(aRequestedGranularity);
+	
+	//@todo In the future, this method could be rewritten to expand the maximum
+	//granularity from 2GB to 4GB.  Probably not necessary...
+	if(requestedGranularity < 0)	// check that the cast didn't produce an invalid result
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprDataTag, _L8("CConnDataTransferShim[id: %d]: ERROR - calculating new uplink granularity - overflow when casting integer"), 
+							 iSubConnectionProviderShim.Id()));
+		return(KErrOverflow);
+		}
+	
+	__CFLOG_VAR((KShimScprTag, KShimScprDataTag, _L8("CConnDataTransferShim[id: %d]: Calculating new uplink granularity..."), 
+						 iSubConnectionProviderShim.Id()));
+
+	TUint newGranularity = 0;
+
+	ret = CalculateNewGranularity(requestedGranularity, iCurrentUplinkGranularity, iUplinkGranularities, newGranularity);
+	if (ret == KErrNone && newGranularity)
+		{
+		ret = SetUplinkGranularity(newGranularity);
+		}
+	return(ret);
+	}
+
+TInt CConnDataTransferShim::CalculateNewDownlinkGranularity(TUint aRequestedGranularity)
+/**
+Calculate the required granularity to satisfy client requests
+This function calculates the delta between client requests and stores it in an array.
+
+@param aRequestedGranularity The new requested granularity
+@return KErrNone if successful, otherwise one of the system-wide error codes
+@todo Quantise requests to granularity of 1K
+*/
+	{
+	TInt ret;
+	TInt requestedGranularity = static_cast<TInt>(aRequestedGranularity);
+
+	//@todo In the future, this method could be rewritten to expand the maximum 
+	//      granularity from 2GB to 4GB.  Probably not necessary...
+	if(requestedGranularity < 0)	// check that the cast didn't produce an invalid result
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprDataTag, _L8("CConnDataTransferShim[id: %d]: ERROR - calculating new downlink granularity - overflow when casting integer"), 
+							 iSubConnectionProviderShim.Id()));
+		return(KErrOverflow);
+		}
+
+	__CFLOG_VAR((KShimScprTag, KShimScprDataTag, _L8("ESock: CConnDataTransferShim[id: %d]: Calculating new downlink granularity..."), 
+						 iSubConnectionProviderShim.Id()));
+
+	TUint newGranularity = 0;
+
+	ret = CalculateNewGranularity(requestedGranularity, iCurrentDownlinkGranularity, iDownlinkGranularities, newGranularity);
+	if (ret == KErrNone && newGranularity)
+		{
+		ret = SetDownlinkGranularity(newGranularity);
+		}
+	return(ret);
+	}
+
+TInt CConnDataTransferShim::CalculateNewGranularity(TInt aRequestedGranularity, TUint aCurrentGranularity, RArray<TUint>& aGranularities, TUint& aNewCurrentGranularity)
+/**
+Given a new granularity, calculate new values for the Current granularity and granularity array.
+
+Helper function used for processing new uplink and downlink granularities.
+
+@param aRequestedGranularity new granularity (in).
+@param aCurrentGranularity current granularity in the lower provider (in).
+@param aGranularities ordered array of delta granularities which will become the current granularity
+after the latter has expired (in/out).
+@param aNewCurrentGranularity new value of current granularity to be set in lower provider (out).
+@return KErrNone or a system wide error code.
+*/
+	{
+	TInt ret = KErrNone;
+	TInt i = 0;
+	TInt count = aGranularities.Count();		// granularities in the array
+
+	// The reason we have the three way if statement below is because we have to deal with
+	// the fact that there is a "current" granularity (set in the lower provider), and 
+	// an array of delta granularities which will become the current granularity in turn:
+	//
+	//  +---+   +---+---+---+
+	//  |   |   |   |   |   |... 
+	//  +---+   +---+---+---+
+	//            0   1   2
+	// Current      Array
+	//
+	// The complexity comes when a new granularity needs to be notionally inserted either before the
+	// current granularity or between the current granularity and the first entry in the array.
+
+	if (count == 0 && aCurrentGranularity == 0)
+		{
+		// Empty granularity array and no current granularity.
+		//
+		// - set current granularity to the requested granularity (no entries needed in array)
+		aNewCurrentGranularity = aRequestedGranularity;
+		}
+	else
+	if (aRequestedGranularity < aCurrentGranularity)
+		{
+		// Requested granularity is less than current granularity.  The requested granularity
+		// needs to be notionally inserted before the current granularity.
+
+		// add a new entry into the beginning of the array that contains the delta between the requested
+		// granularity and current granularity.  This new entry represents the "old" current granularity.
+		ret = aGranularities.Insert(aCurrentGranularity - aRequestedGranularity, 0);
+		if (ret == KErrNone)
+			{
+			// the requested granularity becomes the new current granularity
+			aNewCurrentGranularity = aRequestedGranularity;
+			}
+		}
+	else
+	if (aRequestedGranularity > aCurrentGranularity)
+		{
+		// Requested granularity is greater than current granularity.  The requested granularity
+		// needs to be inserted into the array at the appropriate place.  The current granularity
+		// remains unchanged.
+
+		// Take into account the current granularity by subtracting it from requested granularity
+		aRequestedGranularity -= aCurrentGranularity;
+		
+		// Find correct insertion position.  Each entry visited in the array will subtract from the
+		// requested granularity, leaving the latter as being delta based.
+		for(i=0; i < count ; i++)
+			{
+			aRequestedGranularity -= aGranularities[i];
+			if (aRequestedGranularity <= 0)
+				{
+				break;
+				}
+			}
+			
+		if (aRequestedGranularity < 0)
+			{
+			// Insertion position found within the array - held in "i".
+			aRequestedGranularity += aGranularities[i];
+			ret = aGranularities.Insert(aRequestedGranularity, i);
+			if (ret == KErrNone)
+				{
+				// Adjust the next granularity in the array by the Requested granularity
+				// that we've just inserted.  "i+1" because of the Insert() above.
+				aGranularities[i+1] -= aRequestedGranularity;
+				}
+			}
+		else
+		if (aRequestedGranularity > 0)
+			{
+			// Reached end of the array while searching - insert requested granularity at the end.
+			ret = aGranularities.Append(aRequestedGranularity);
+			}
+		// aRequestedGranularity == 0 is a no-op case (setting zero granularity).
+		}
+	// (aRequestedGranularity == iCurrentUplinkGranularity) is a no-op case (setting the same
+	// granularity as current value).
+	return (ret);
+	}
+
+
+TInt CConnDataTransferShim::SetUplinkGranularity(TUint aRequestedGranularity)
+/**
+Set data sent notification granularity in lower provider.
+
+@param aRequestedGranularity granularity to set.  If zero, cancel data sent notifications.
+@return KErrNone or a system wide error code.
+*/
+	{
+	iCurrentUplinkGranularity = aRequestedGranularity;
+	if (iCurrentUplinkGranularity)
+		{
+		return iSubConnectionProviderShim.Provider().SetDataSentNotificationGranularity(iSubConnectionProviderShim.Id(), iCurrentUplinkGranularity);
+		}
+	else
+		{
+		return iSubConnectionProviderShim.Provider().DataSentNotificationCancel(iSubConnectionProviderShim.Id());
+		}
+	}
+
+TInt CConnDataTransferShim::SetNextUplinkGranularity()
+/**
+Get the next uplink granularity from the array, and send it to the connection provider
+
+@return KErrNone if successful, otherwise one of the system-wide error codes
+*/
+	{
+	if(iUplinkGranularities.Count())
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprDataTag, _L8("CConnDataTransferShim[id: %d]: setting new uplink granularity (%d)"), 
+							 iSubConnectionProviderShim.Id(), iCurrentUplinkGranularity));
+
+		// Read the next granularity from the array
+		TUint granularity = iUplinkGranularities[0];
+		
+		// Remove the value read
+		iUplinkGranularities.Remove(0);
+
+		return SetUplinkGranularity(granularity);
+		}
+	else
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprDataTag, _L8("CConnDataTransferShim[id: %d]: cancelling data sent notifications - no values remaining in granularity array"), 
+							 iSubConnectionProviderShim.Id()));
+
+		return SetUplinkGranularity(0);		// cancel notifications
+		}
+	}
+
+TInt CConnDataTransferShim::SetDownlinkGranularity(TUint aRequestedGranularity)
+/**
+Set data received notification granularity in lower provider.
+
+@param aRequestedGranularity granularity to set.  If zero, cancel data received notifications.
+@return KErrNone or a system wide error code.
+*/
+	{
+	iCurrentDownlinkGranularity = aRequestedGranularity;
+	if (iCurrentDownlinkGranularity)
+		{
+		return iSubConnectionProviderShim.Provider().SetDataReceivedNotificationGranularity(iSubConnectionProviderShim.Id(), iCurrentDownlinkGranularity);
+		}
+	else
+		{
+		return iSubConnectionProviderShim.Provider().DataReceivedNotificationCancel(iSubConnectionProviderShim.Id());
+		}
+	}
+
+TInt CConnDataTransferShim::SetNextDownlinkGranularity()
+/**
+Get the next downlink granularity from the array, and send it to the connection provider
+
+@return KErrNone if successful, otherwise one of the system-wide error codes
+*/
+	{
+	if(iDownlinkGranularities.Count())
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprDataTag, _L8("CConnDataTransferShim[id: %d]: setting new downlink granularity (%d)"), 
+							 iSubConnectionProviderShim.Id(), iCurrentDownlinkGranularity));
+		// Read the next granularity from the array
+		TUint granularity = iDownlinkGranularities[0];
+		
+		// Remove the value read
+		iDownlinkGranularities.Remove(0);
+
+		return SetDownlinkGranularity(granularity);
+		}
+	else
+		{
+		__CFLOG_VAR((KShimScprTag, KShimScprDataTag, _L8("ESock: CConnDataTransferShim[id: %d]: cancelling data received notifications - no values remaining in granularity array"), 
+							 iSubConnectionProviderShim.Id()));
+
+		return SetDownlinkGranularity(0);	// cancel notifications
+		}
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/src/shimnifmansconn.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,244 @@
+// Copyright (c) 2005-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:
+// SHIMSCPR.CPP
+// This is part of an ECOM plug-in
+// 
+//
+
+#include <ss_std.h>
+#include <comms-infras/ss_log.h>
+#include "shimnifmansconn.h"
+
+START_ATTRIBUTE_TABLE(TShimConnectionInfo, KShimCommsUid, Meta::KNetMetaTypeAny)
+END_ATTRIBUTE_TABLE()
+
+TInt CNifManSubConnectionShim::AsyncDestructorCb(TAny* aInstance)
+	{
+	CNifManSubConnectionShim* nifManSubConnection= reinterpret_cast<CNifManSubConnectionShim*>(aInstance);
+	delete nifManSubConnection;
+	return KErrNone;
+	}
+
+/**
+Create a new CNifManSubConnectionShim to act as a mux/demux for subconnections
+*/
+CNifManSubConnectionShim::CNifManSubConnectionShim (CConnectionProviderShim& aProviderShim)
+   :iSubConnectionsUniqueId(0), iConnectionProvider(&aProviderShim),
+   iAsyncDestructor(CActive::EPriorityStandard + 1)
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprSubTag, _L8("CNifManSubConnectionShim [this=%08x]:\tCNifManSubConnectionShim() [MConnectionDataClient=%08x]"),
+	   this, (MConnectionDataClient*)this));
+	iAsyncDestructor.Set(TCallBack(AsyncDestructorCb, this));
+	}
+
+/**
+D'tor
+*/
+CNifManSubConnectionShim::~CNifManSubConnectionShim()
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprSubTag, _L8("CNifManSubConnectionShim::~CNifManSubConnectionShim() %08x"), this));
+	iShimClients.ResetAndDestroy();
+	delete iConnDataTransferShim;
+	}
+
+
+void CNifManSubConnectionShim::DeleteAsync()
+	{
+	if ( !iAsyncDestructor.IsActive() )
+		{
+		iAsyncDestructor.CallBack();
+		}
+    }
+
+TInt CNifManSubConnectionShim::FindClient(const CConnection& aConnection)
+	{
+	TInt max = iShimClients.Count();
+	for (TInt i = max - 1 ; i >= 0 ; i--)
+		{
+		CSubConnectionLinkShimClient* client = iShimClients[i];
+		if ( client->Match(aConnection) )
+			{
+			return i;
+			}
+		}
+	return KErrNotFound;
+	}
+	
+void CNifManSubConnectionShim::ConnectionJoiningL(const CConnection& aConnection)
+	{//create a new CSubConnectionLinkShimClient for the joining conection
+	TInt i = FindClient(aConnection);
+	if ( i == KErrNotFound )
+		{
+		CSubConnectionLinkShimClient* client = new (ELeave)CSubConnectionLinkShimClient(aConnection,*this);
+		CleanupStack::PushL(client);
+		//create data transfer object if not created yet
+		CreateDataTransferL();
+		iConnDataTransferShim->RegisterClientL(*client);
+		TInt ret = iShimClients.Append(client);
+		if (ret != KErrNone)
+			{
+			iConnDataTransferShim->DeRegisterClient(*client);
+			User::Leave(ret);
+			}
+		CleanupStack::Pop(client);
+		}
+	}
+	
+void CNifManSubConnectionShim::ConnectionLeaving(const CConnection& aConnection)
+	{//destroy a CSubConnectionLinkShimClient belonging to leaving conection
+	TInt i = FindClient(aConnection);
+	if ( i >= 0 )
+		{
+		CSubConnectionLinkShimClient* client = iShimClients[i];
+		iShimClients.Remove(i);
+		delete client;
+		}
+	}
+
+void CNifManSubConnectionShim::ConnectionGoingDown(CConnectionProviderBase& /*aConnProvider*/)
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprSubTag, _L8("CNifManSubConnectionShim %08x:\tConnectionGoingDown() Id %d"), 
+						 this, iSubConnectionsUniqueId));
+						 
+   // The ConnectionProvider has told us its going down so we delete ourselves, clearing
+   // the pointer to it so our d'tor doesn't make any calls on it.
+	iConnectionProvider = NULL;
+	delete this;
+	}
+	
+void CNifManSubConnectionShim::ConnectionError(TInt /*aStage*/, TInt /*aError*/)
+	{
+	}
+	
+void CNifManSubConnectionShim::Notify(TNotify /*aNotifyType*/,  CConnectionProviderBase* /*aConnProvider*/, TInt /*aError*/, const CConNotificationEvent* /*aConNotificationEvent*/)
+	{
+	}
+
+void CNifManSubConnectionShim::AttachToNext(CSubConnectionProviderBase* /*aSubConnProvider*/)
+	{
+	}
+
+TInt CNifManSubConnectionShim::ProgressNotification(TInt aStage, TInt aError, const TDesC8& aInfo)
+/**
+Upcall from connection provider via CInterface with notification of new progress stage reached
+
+@param aStage The progress stage that the subconnection has reached
+@param aError Any errors that were encountered at this stage
+@param aInfo No idea what this is, it's inserted by CInterface and is currently null
+@return KErrNone, or one of the system-wide error codes
+*/
+	{
+	__CFLOG_VAR((KShimScprTag, KShimScprSubTag, _L8("CNifManSubConnectionShim %08x:\tProgressNotification(%d, %d) SubConnId: %d"), 
+				this, aStage, aError, iSubConnectionsUniqueId));
+
+	TInt max = iShimClients.Count();
+	for (TInt i = max - 1 ; i >= 0 ; i--)
+		{
+		iShimClients[i]->ProgressNotification(aStage, aError, aInfo);
+		}
+
+	return KErrNone;
+	}
+
+	
+TInt CNifManSubConnectionShim::NotifyDataTransferred(TUint aUplinkVolume, TUint aDownlinkVolume)
+	{
+	return  iConnDataTransferShim ? iConnDataTransferShim->NotifyDataTransferred(aUplinkVolume, aDownlinkVolume) : KErrNone;
+
+	}
+	
+TInt CNifManSubConnectionShim::NotifyDataSent(TUint aUplinkVolume, TUint /*aCurrentGranularity*/)
+	{
+	return  iConnDataTransferShim ? iConnDataTransferShim->NotifyDataSent(aUplinkVolume) : KErrNone;
+
+	}
+	
+TInt CNifManSubConnectionShim::NotifyDataReceived(TUint aDownlinkVolume, TUint /*aCurrentGranularity*/)
+	{
+	return  iConnDataTransferShim ? iConnDataTransferShim->NotifyDataReceived(aDownlinkVolume) : KErrNone;
+
+	}
+	
+TSubConnectionUniqueId CNifManSubConnectionShim::Id()
+	/**
+	Access this subconnections unique id for search purposes
+	*/
+	{
+	return iSubConnectionsUniqueId;
+	}
+	
+void CNifManSubConnectionShim::SetSubConnectionUniqueId( TSubConnectionUniqueId aSubConnectionUniqueId )
+	{
+	iSubConnectionsUniqueId = aSubConnectionUniqueId;
+	}
+	
+//void CNifManSubConnectionShim::DataClientJoiningL(MSubConnectionDataClient& aDataClient)
+//	{
+//	aDataClient.JoinComplete(*this);
+//	}
+
+//void CNifManSubConnectionShim::DataClientLeaving(MSubConnectionDataClient& aDataClient)
+//	{
+//	aDataClient.LeaveComplete(*this);
+//	}
+
+//void CNifManSubConnectionShim::DoSourceAddressUpdate(MSubConnectionDataClient& /*aDataClient*/, const TSockAddr& /*aSource*/)
+//	{//do nothing
+//	}
+
+//void CNifManSubConnectionShim::DoDestinationAddressUpdate(MSubConnectionDataClient& /*aDataClient*/, const TSockAddr& /*aDestination*/)
+//	{//do nothing
+//	}
+
+//void CNifManSubConnectionShim::DoDataClientRouted(MSubConnectionDataClient& /*aDataClient*/, const TSockAddr& /*aSource*/, const TSockAddr& /*aDestination*/, const TDesC8& /*aConnectionInfo*/)
+//	{//do nothing
+//	}
+
+//void CNifManSubConnectionShim::DoParametersAboutToBeSetL(CSubConParameterBundle& /*aParameterBundle*/)
+//	{//do nothing
+//	}
+
+//TInt CNifManSubConnectionShim::DoControl(TUint /*aOptionLevel*/, TUint /*aOptionName*/, TDes8& /*aOption*/)
+//	{//do nothing
+//	return KErrNotSupported;	
+//	}
+	
+//void CNifManSubConnectionShim::DoStartL()
+//	{
+//	User::Leave(KErrNotSupported);
+//	}
+
+//void CNifManSubConnectionShim::DoStop()
+//	{
+//	}
+
+//CSubConnectionProviderBase* CNifManSubConnectionShim::DoNextLayer()
+//	{
+//	return NULL;
+//	}
+
+CConnDataTransfer& CNifManSubConnectionShim::CreateDataTransferL()
+	{
+	if (!iConnDataTransferShim)
+		{
+		iConnDataTransferShim = new (ELeave)CConnDataTransferShim(*this);
+		}
+	return *iConnDataTransferShim;
+	}
+
+//MConnectionDataClient* CNifManSubConnectionShim::DoSelfConnectionDataClient()
+//	{
+//	return this;
+//	}
+
--- a/networkcontrol/ipnetworklayer/src/IPProtoCPR.cpp	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkcontrol/ipnetworklayer/src/IPProtoCPR.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -190,8 +190,8 @@
 namespace IPProtoCprClientLeaveActivity
 { //This activity will wait for ECFActivityBinderRequest to complete
 using namespace  CprClientLeaveActivity;
-DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityClientLeave, IPProtoCprClientLeave, Messages::TNodeSignal::TNullMessageId, CClientLeaveActivity::NewL) //May be waiting for both messages
-	FIRST_NODEACTIVITY_ENTRY(CoreStates::TAwaitingClientLeave, MeshMachine::TNoTag)
+DECLARE_DEFINE_RESERVED_CUSTOM_NODEACTIVITY(ECFActivityClientLeave, IPProtoCprClientLeave, TCFServiceProvider::TLeaveRequest, CClientLeaveActivity::New) //May be waiting for both messages
+	FIRST_NODEACTIVITY_ENTRY(MeshMachine::TAwaitingMessageState<TCFServiceProvider::TLeaveRequest>, MeshMachine::TNoTag)
 	THROUGH_NODEACTIVITY_ENTRY(KNoTag, CprClientLeaveActivity::CClientLeaveActivity::TRemoveClientAndDestroyOrphanedDataClients, CClientLeaveActivity::TNoTagOrSendPriorityToCtrlProvider)
 	NODEACTIVITY_ENTRY(CprStates::KSendPriorityToCtrlProvider, CClientLeaveActivity::TUpdatePriorityForControlProvider, CoreStates::TAwaitingJoinComplete, CClientLeaveActivity::TNoTagOrSendPriorityToServProvider)
 	NODEACTIVITY_ENTRY(CprStates::KSendPriorityToServProvider, CClientLeaveActivity::TUpdatePriorityForServiceProviders, CoreStates::TAwaitingJoinComplete, MeshMachine::TNoTag)
@@ -229,8 +229,11 @@
 	THROUGH_NODEACTIVITY_ENTRY(KActiveTag, CoreNetStates::TCancelDataClientStart, MeshMachine::TNoTag)
 	NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TStopSelf, CoreNetStates::TAwaitingDataClientStopped, CoreNetStates::TNoTagOrNoBearer)
 	NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendStop, CoreNetStates::TAwaitingStopped, MeshMachine::TNoTag)
-	NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendClientLeavingRequestToServiceProvider, MeshMachine::TAwaitingLeaveComplete, TTag<CoreNetStates::KNoBearer>)
-	LAST_NODEACTIVITY_ENTRY(CoreNetStates::KNoBearer, IpProtoCpr::TSendStoppedAndGoneDown)
+	NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendClientLeavingRequestToServiceProvider, MeshMachine::TAwaitingLeaveComplete, TTag<CoreNetStates::KNoBearer>)	
+	THROUGH_NODEACTIVITY_ENTRY(CoreNetStates::KNoBearer, IpProtoCpr::TSendStoppedAndGoneDown, MeshMachine::TNoTag)
+	//Ensure that we reset the iLinkUp flag, otherwise a Start activity blocked against this Stop activity will
+	//cause an assertion failure as iLinkUp will be set twice.
+	LAST_NODEACTIVITY_ENTRY(KNoTag, IpProtoCpr::TLinkDown)
 NODEACTIVITY_END()
 }
 
@@ -755,8 +758,7 @@
 		{
 		iTimerExpired = ETrue;
 		CancelTimer();
-		if (CountActivities(ECFActivityStop) == 0 &&
-+		    CountActivities(ECFActivityDestroy) == 0)
+		if (CountActivities(ECFActivityStop) == 0 && CountActivities(ECFActivityDestroy) == 0)
 			{
 			RClientInterface::OpenPostMessageClose(Id(), TNodeCtxId(ECFActivityStop, Id()), TCFServiceProvider::TStop(KErrTimedOut).CRef());
 			}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/group/basicipscpr.mmp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,34 @@
+// Copyright (c) 2005-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:
+// BasicIPSCPR.MMP IP Subconnection Provider ECOM plugin
+// 
+//
+
+/**
+ @file
+*/
+
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+
+#define BASIC_IPSCPR_MMP
+MACRO BASIC_IPSCPR
+
+#include "ipscpr.mmh"
+
+#endif
+// SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+
+UNPAGED
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/group/bld.inf	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,32 @@
+// 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 "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_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+
+PRJ_EXPORTS
+../inc/ip_subconparams.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(ip_subconparams.h)
+../inc/ip_subconparams.inl SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(ip_subconparams.inl)
+
+../group/ipscpr.iby /epoc32/rom/include/ipscpr.iby
+
+PRJ_MMPFILES
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS  
+basicipscpr.mmp
+#endif
+ipscpr.mmp
+
+PRJ_TESTMMPFILES
+
+#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/group/ipscpr.iby	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,43 @@
+/*
+* 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 __IPSCPR_IBY__
+#define __IPSCPR_IBY__
+
+REM IP Subconnection Provider
+
+
+#if defined(SYMBIAN_EXCLUDE_QOS_PROTPLUGINS) && defined(SYMBIAN_NETWORKING_3GPPDEFAULTQOS)
+REM Feature QoS is not included in this ROM
+
+#ifdef _DEBUG
+ECOM_PLUGIN_UDEB(basicipscpr.dll,102752C4.rss)
+#else
+ECOM_PLUGIN(basicipscpr.dll,102752C4.rss)
+#endif
+
+#else
+
+#ifdef _DEBUG
+ECOM_PLUGIN_UDEB(ipscpr.dll,10204307.rss)
+#else
+ECOM_PLUGIN(ipscpr.dll,10204307.rss)
+#endif
+
+#endif
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/group/ipscpr.mmh	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,86 @@
+// Copyright (c) 2005-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:
+// Ipscpr/Basic Ipscpr.MMH IP Subconnection Provider ECOM plugin
+// 
+//
+
+/**
+ @file 
+*/
+
+#ifdef BASIC_IPSCPR_MMP
+
+// Should be ARMV5 only really...
+
+TARGET          basicipscpr.dll
+TARGETTYPE      PLUGIN
+UID             0x10009D8D 0x102752C4
+#else
+TARGET          ipscpr.dll
+TARGETTYPE      PLUGIN
+UID             0x10009D8D 0x10204307
+#endif
+
+VENDORID 		0x70000001
+
+SOURCEPATH      ../src
+SOURCE			ipscpr.cpp 
+SOURCE			ip_subconparams.cpp
+SOURCE			deft_scpr.cpp 
+SOURCE			ipscprlog.cpp
+#ifndef BASIC_IPSCPR_MMP
+SOURCE			asyncwriter.cpp
+SOURCE			qos_msg.cpp 
+#endif
+
+USERINCLUDE     ../inc
+#ifndef BASIC_IPSCPR_MMP
+USERINCLUDE     ../../pfqoslib/inc
+#endif
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+USERINCLUDE		../../ipcpr/inc
+#endif
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+#ifdef BASIC_IPSCPR_MMP
+START RESOURCE 102752C4.rss
+TARGET basicipscpr.rsc
+END
+#else
+START RESOURCE 10204307.rss
+TARGET ipscpr.rsc
+END
+#endif
+
+LIBRARY         euser.lib esock.lib esocksvr.lib eintsock.lib insock.lib netmeta.lib
+#ifndef BASIC_IPSCPR_MMP
+
+LIBRARY         pfqoslib.lib   qoslib.lib
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5 
+LIBRARY         qosextnapi.lib
+#else
+LIBRARY         umtsapi.lib  sblpapi.lib 
+#endif
+// SYMBIAN_NETWORKING_UMTSR5 
+
+
+#endif
+
+#include	    "comms-infras/commsdebugutility.mmh"
+
+CAPABILITY ALL -Tcb
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/group/ipscpr.mmp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,26 @@
+// 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 "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:
+// Ipscpr.MMP IP Subconnection Provider ECOM plugin
+// 
+//
+
+/**
+ @file
+*/
+
+#include "ipscpr.mmh"
+
+UNPAGED
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/group/networking_ipscpr.history.xml	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<relnotes name="Connection Provider Plugin">
+  <purpose>
+  </purpose>
+</relnotes>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/group/networking_ipscpr.mrp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,25 @@
+#
+# 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_ipscpr
+source			\sf\os\networkingsrv\networkcontrol\ipscpr
+binary			\sf\os\networkingsrv\networkcontrol\ipscpr\group	all
+exports			\sf\os\networkingsrv\networkcontrol\ipscpr\group
+notes_source	\component_defs\release.src
+
+
+ipr E 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/inc/asyncwriter.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,41 @@
+// Copyright (c) 2005-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 ASYNCWRITER_H_
+#define ASYNCWRITER_H_
+
+#include <qoslib.h>
+#include <e32base.h>
+#include "pfqoslib.h"
+#include "pfqos_stream.h"
+#include "qos_msg.h"
+
+NONSHARABLE_CLASS(CAsyncWriter) : public CActive
+	{
+	public:
+		static CAsyncWriter* NewL(CQoSMsgWriter* aWriter);
+		void Send(CQoSMsg* aMessage);
+	protected:
+		CAsyncWriter(CQoSMsgWriter* aWriter);
+		void ConstructL();
+		void RunL();
+		void DoCancel();
+	private:
+		CQoSMsgWriter* iWriter;
+		CQoSMsg* iMessage;
+		TSglQue<CQoSMsg> iPendingMsg;
+	};
+
+#endif //ASYNCWRITER_H_
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/inc/deft_scpr.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,170 @@
+/**
+* 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 "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:
+* Header file for the default SubConnection Provider
+* 
+*
+*/
+
+
+
+/**
+ @file deft_scpr.h
+*/
+
+#ifndef __DEFT_CPR_H__
+#define __DEFT_CPR_H__
+
+#include <e32base.h>
+#include <e32std.h>
+#include <ss_subconnprov.h>
+#include <ss_connprov.h>
+#include "ipscprlog.h"
+
+
+class CConnDataTransfer;
+class CEmptySubConnectionProvider : public CSubConnectionProviderBase, public MConnectionEnumerateClients, public MConnectionDataClient
+/**
+Defines the IP Connection Provider.  Class provides a mapping from ESock Subconnection
+function calls to QoS.PRT messages.
+
+@internalComponent
+
+@released Since v9.0
+*/
+	{
+protected:
+	// Construction
+	CEmptySubConnectionProvider(CSubConnectionProviderFactoryBase& aFactory, CConnectionProviderBase& aConnProvider) :
+		CSubConnectionProviderBase(aFactory, aConnProvider)
+			{
+			__IPCPRLOG(IpCprLog::Printf(_L("CEmptySubConnectionProvider [this=%08x]:\tCEmptySubConnectionProvider() [MConnectionDataClient=%08x]"),
+			   this, (MConnectionDataClient*)this));
+			}
+			
+	~CEmptySubConnectionProvider();
+	
+	virtual MConnectionDataClient* DoSelfConnectionDataClient();
+
+	//MConnectionEnumerateClients
+	virtual void EnumerateClientsL(TUint& aCount, TDes8& aDes, CConnectionProviderBase::TEnumClients aClientType);
+
+	//MConnectionDataClient
+	virtual void ConnectionError(TInt aStage, TInt aError);
+
+	virtual void DoControlClientJoiningL(MSubConnectionControlClient& aControlClient);
+	virtual void DoControlClientLeaving(MSubConnectionControlClient& aControlClient);
+	};
+	
+
+/**
+Defines the default IP Connection Provider. 
+
+@internalComponent
+
+@released Since v9.0
+*/
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+class CDefaultSubConnectionProvider : public CEmptySubConnectionProvider, public MSubConnectionControlClient
+#else
+class CDefaultSubConnectionProvider : public CEmptySubConnectionProvider
+#endif
+//SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+	{
+public:
+
+	// Construction
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+	CDefaultSubConnectionProvider(CSubConnectionProviderFactoryBase& aFactory, CConnectionProviderBase& aConnProvider, RSubConnection::TSubConnType aType)
+	   : CEmptySubConnectionProvider(aFactory, aConnProvider), iSubConnType(aType)
+#else
+	CDefaultSubConnectionProvider(CSubConnectionProviderFactoryBase& aFactory, CConnectionProviderBase& aConnProvider)
+	   : CEmptySubConnectionProvider(aFactory, aConnProvider)
+#endif
+			{
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+			__IPCPRLOG(IpCprLog::Printf(_L("CDefaultSubConnectionProvider [this=%08x]:\tCDefaultSubConnectionProvider() [MSubConnectionControlClient=%08x] [MConnectionDataClient=%08x]"),
+			   this, (MSubConnectionControlClient*)this, (MConnectionDataClient*)this));
+#else
+			__IPCPRLOG(IpCprLog::Printf(_L("CDefaultSubConnectionProvider [this=%08x]:\tCDefaultSubConnectionProvider() [MConnectionDataClient=%08x]"),
+			   this, (MConnectionDataClient*)this));
+#endif			   
+			}
+			
+	~CDefaultSubConnectionProvider();
+
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+	//-=========================================================
+	// MSubConnectionControlClient methods
+	//-=========================================================
+	/**	Override this to inform the sub-connection client (e.g. socket, host resolver etc.) that 
+		the sub-connection is going down
+	
+	@param aSubConnProvider the sub-connection provider going down */
+	virtual void SubConnectionGoingDown(CSubConnectionProviderBase& aSubConnProvider);
+
+	/**	Override this to notify the control client of a sub-connection event, eg. layer up etc.
+	
+	@param aSubConnProvider The provider which the event was generated on
+	@param aNotifyType The type of event
+	@param aError Error code, if any
+	@param aEvent The notification object containing specialized information */
+	virtual void SubConnectionEvent(CSubConnectionProviderBase& aSubConnProvider, MConnectionDataClient::TNotify aNotifyType, TInt aError, const CSubConNotificationEvent* aEvent);
+
+
+	virtual void LayerUp(CSubConnectionProviderBase& aSubConnProvider, TInt aError);
+	virtual void IncomingConnection(CSubConnectionProviderBase* aSubConnProvider, CSubConParameterBundle* aParameterBundle, TInt aError);
+#endif
+// SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+
+protected:
+	//-=========================================================
+	// CSubConnectionProviderBase methods
+	//-=========================================================
+	// Methods to be overriden be derived subconnection provider
+	virtual void DoControlClientJoiningL(MSubConnectionControlClient& aControlClient);	//Fix for DEF096132
+	virtual void DoDataClientJoiningL(MSubConnectionDataClient& aDataClient);
+	virtual void DoDataClientLeaving(MSubConnectionDataClient& aDataClient);
+	virtual void DoSourceAddressUpdate(MSubConnectionDataClient& aDataClient, const TSockAddr& aSource);
+	virtual void DoDestinationAddressUpdate(MSubConnectionDataClient& aDataClient, const TSockAddr& aDestination);
+	virtual void DoDataClientRouted(MSubConnectionDataClient& aDataClient, const TSockAddr& aSource, const TSockAddr& aDestination, const TDesC8& aConnectionInfo);
+	virtual void DoParametersAboutToBeSetL(CSubConParameterBundle& aParameterBundle);
+	virtual TInt DoControl(TUint aOptionLevel, TUint aOptionName, TDes8& aOption);
+
+   virtual void DoStartL();
+	virtual void DoStop();
+	virtual CSubConnectionProviderBase* DoNextLayer();
+	virtual CConnDataTransfer& DoDataTransferL();
+
+	//MConnectionDataClient
+	virtual TAny* FetchInterfaceInstanceL(CConnectionProviderBase& aProvider, const STypeId& aTid);
+	virtual void ConnectionGoingDown(CConnectionProviderBase& aConnProvider);
+	virtual void Notify(TNotify aNotifyType,  CConnectionProviderBase* aConnProvider, TInt aError, const CConNotificationEvent* aConNotificationEvent);
+   virtual void AttachToNext(CSubConnectionProviderBase* aSubConnProvider);
+  
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+   virtual void DoControlClientLeaving(MSubConnectionControlClient& aControlClient);
+private:
+    const RSubConnection::TSubConnType iSubConnType;
+#endif
+
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+    TUint32 iAppId;
+	CSubConnectionProviderBase * iSubConNextLayer;
+#endif
+	};
+#endif
+// __DEFT_CPR_H__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/inc/ip_subconparams.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,221 @@
+/**
+* Copyright (c) 2005-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:
+* Header file for the IP SubConnection Parameters
+* 
+*
+*/
+
+
+
+/**
+ @file ip_subconparams.h
+*/
+
+#ifndef __IP_SUBCONPARAMS_H__
+#define __IP_SUBCONPARAMS_H__
+
+#include <es_sock.h>
+#include <comms-infras/metadata.h>
+#include <comms-infras/metatype.h>
+#include <etelqos.h>
+
+
+// NOTE: This Uid may be changed - See #ifdef at bottom of the file
+const TInt KSubConIPParamsUid = 0x10204309;
+const TInt KSubConQosIPLinkR99ParamsType = 1;
+
+
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+#include <networking/qos3gpp_subconparams.h>
+
+#else
+const TInt KSubConnSBLPR5ExtensionParamsType = 2;
+
+
+/** Constant definitions particular to the Generic Parameters. */
+const TInt KMAuthTokenLength = 255;
+/** Typedef for the AuthToken Holder. */
+typedef TBuf8<KMAuthTokenLength> TAuthToken;
+
+#if defined(SYMBIAN_NETWORKING_UMTSR5) && !defined(SYMBIAN_NETWORKING_3GPPDEFAULTQOS)
+#pragma message("SYMBIAN_NETWORKING_UMTSR5 cannot be defined without SYMBIAN_NETWORKING_3GPPDEFAULTQOS")
+#endif
+// SYMBIAN_NETWORKING_UMTSR5 
+
+
+#endif
+
+
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+/** Provides Implementation of IP QoS Parameters
+
+@publishedAll
+@released since v9.1
+@deprecated from v9.2 onwards. Use CSubConQosR99ParamSet from Qos3GPP_Subconparams.h instead.
+*/
+#else
+/** Provides Implementation of IP QoS Parameters
+
+@publishedAll
+@released since v9.1
+*/#endif
+class CSubConQosIPLinkR99ParamSet : public CSubConExtensionParameterSet
+{
+public:
+	inline static CSubConQosIPLinkR99ParamSet* NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType);
+	inline static CSubConQosIPLinkR99ParamSet* NewL();
+
+	inline CSubConQosIPLinkR99ParamSet();
+
+	inline RPacketQoS::TTrafficClass GetTrafficClass() const;
+	inline RPacketQoS::TDeliveryOrder GetDeliveryOrder() const;
+	inline RPacketQoS::TErroneousSDUDelivery GetErroneousSDUDelivery() const;
+	inline RPacketQoS::TBitErrorRatio GetResidualBitErrorRatio() const;
+	inline RPacketQoS::TSDUErrorRatio GetSDUErrorRatio() const;
+	inline RPacketQoS::TTrafficHandlingPriority GetTrafficHandlingPriority() const;
+	inline TInt GetTransferDelay() const;
+	inline TInt GetMaxSduSize() const;
+	inline TInt GetMaxBitrateUplink() const;
+	inline TInt GetMaxBitrateDownlink() const;
+	inline TInt GetGuaBitrateUplink() const;
+	inline TInt GetGuaBitrateDownlink() const;
+	inline void SetTrafficClass(RPacketQoS::TTrafficClass aTrafficClass);
+	inline void SetDeliveryOrder(RPacketQoS::TDeliveryOrder aDeliveryOrder);
+	inline void SetErroneousSDUDelivery(RPacketQoS::TErroneousSDUDelivery aDeliveryOfErroneusSdu);
+	inline void SetResidualBitErrorRatio(RPacketQoS::TBitErrorRatio aResidualBer);
+	inline void SetSDUErrorRatio(RPacketQoS::TSDUErrorRatio aErrorRatio);
+	inline void SetTrafficHandlingPriority(RPacketQoS::TTrafficHandlingPriority aPriority);
+	inline void SetTransferDelay(TInt aTransferDelay);
+	inline void SetMaxSduSize(TInt aMaxSduSize);
+	inline void SetMaxBitrateUplink(TInt aMaxBitrateUplink);
+	inline void SetMaxBitrateDownlink(TInt aMaxBitrateDownlink);
+	inline void SetGuaBitrateUplink(TInt aGuaBitrateUplink);
+	inline void SetGuaBitrateDownlink(TInt aGuaBitrateDownlink);
+
+protected:
+
+	DATA_VTABLE
+
+protected:
+	RPacketQoS::TTrafficClass				iTrafficClass;			// Traffic class
+	RPacketQoS::TDeliveryOrder				iDeliveryOrder;			// Delivery order
+	RPacketQoS::TErroneousSDUDelivery		iDeliveryOfErroneusSdu;	// Delivery of erroneous SDUs
+	RPacketQoS::TBitErrorRatio				iResidualBer;			// Residual BER
+	RPacketQoS::TSDUErrorRatio				iErrorRatio;			// SDU error ratio
+	RPacketQoS::TTrafficHandlingPriority	iPriority;				// Traffic handling priority
+	TInt									iTransferDelay;			// Transfer delay
+	TInt									iMaxSduSize;			// Maximum SDU size
+	TInt									iMaxBitrateUplink;		// Maximum bit rate for uplink
+	TInt									iMaxBitrateDownlink;	// Maximum bit rate for downlink
+	TInt									iGuaBitrateUplink;		// Guaranteed bit rate for uplink
+	TInt									iGuaBitrateDownlink;	// Guaranteed bit rate for downlink
+	};
+
+#ifndef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+
+
+/** Flow Identifires
+ECOM Implementation Id for SBLP Extension parameters.
+
+@publishedAll
+@released since v9.1 */
+struct TFlowId
+	{
+	/** Getter Function for the Components of Flow ids. */
+	inline TUint16 GetMediaComponentNumber() const;
+	inline TUint16 GetIPFlowNumber() const;
+	/**	Setter Function For Flow Id Components.	*/
+	inline void SetMediaComponentNumber(TUint16 aMediaComponentNumber);
+	inline void SetIPFlowNumber(TUint16 aIPFlowNumber);
+
+private:	
+	TUint16 iMediaComponentNumber;
+	TUint16 iIPFlowNumber;
+	};	
+
+typedef RArray<TFlowId> RFlowIdentifiers;
+
+/** Extension Parameter Sets, Consise of MAT and FI(s).
+Provides Implementation of Extension parameters of the SBLP Family.
+
+@publishedAll
+@released since v9.1 */
+class CSubConSBLPR5ExtensionParamSet : public CSubConExtensionParameterSet
+	{
+public:
+	inline static CSubConSBLPR5ExtensionParamSet* NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType);
+	inline static CSubConSBLPR5ExtensionParamSet* NewL();
+
+	/**	Media Authorization Token setter and getter functions. */
+	inline const TAuthToken& GetMAT() const;
+	inline void SetMAT(const TAuthToken& aAuthToken);
+	
+	/** Flow identifires setter and getter functions. */
+	inline TInt GetNumberOfFlowIds() const;
+	inline const TFlowId& GetFlowIdAt(TInt aIndex) const;
+	
+	/** Adding of Flow Identifires into an array. */
+	inline void AddFlowIdL(const TFlowId& aFlowId);
+	
+	/** public constructors so that it can be accessed by factory. */
+	inline CSubConSBLPR5ExtensionParamSet();	
+	inline ~CSubConSBLPR5ExtensionParamSet();
+	
+protected:
+	DATA_VTABLE
+
+	/** Single Media Authorization Token (MAT). */
+	TAuthToken iAuthToken;
+	
+	/** Multiple Flow Identifiers. */
+	RFlowIdentifiers	iFlowIds;
+	};
+#endif
+
+
+
+
+
+/**
+Factory used to create instances of IP SubConnection Parameters.
+
+@internalComponent
+@released since v9.1
+*/
+class CSubConIPExtensionParamsFactory : public CBase
+	{
+public:
+	static CSubConExtensionParameterSet* NewL(TAny* aConstructionParameters);
+	};
+
+#include <ip_subconparams.inl>
+
+
+
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+/*
+ Umts QoS extension classes have been relocated to the UmtsGprsSCPR component.
+ So now we need to make sure that the correct class factory TUid, class name,
+ and class Id are used
+*/
+#define KSubConIPParamsUid KSubCon3GPPExtParamsFactoryUid
+#define KSubConQosIPLinkR99ParamsType KSubConQosR99ParamsType
+#define CSubConQosIPLinkR99ParamSet CSubConQosR99ParamSet
+#endif
+// SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+
+
+#endif
+// __IP_SUBCONPARAMS_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/inc/ip_subconparams.inl	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,261 @@
+/**
+* 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 "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:
+* Inline Functions file for the IP SubConnection Parameters
+* 
+*
+*/
+
+
+
+/**
+ @file ip_subconparams.inl
+*/
+
+
+#ifndef __IP_SUBCONPARAMS_INL__
+#define __IP_SUBCONPARAMS_INL__
+
+#ifndef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+
+CSubConQosIPLinkR99ParamSet* CSubConQosIPLinkR99ParamSet::NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType)
+	{
+	CSubConQosIPLinkR99ParamSet* obj = NewL();
+	CleanupStack::PushL(obj);
+	aFamily.AddExtensionSetL(*obj, aType);
+	CleanupStack::Pop(obj);
+	return obj;
+	}
+
+CSubConQosIPLinkR99ParamSet* CSubConQosIPLinkR99ParamSet::NewL()
+	{
+	STypeId typeId = STypeId::CreateSTypeId(KSubConIPParamsUid, KSubConQosIPLinkR99ParamsType);
+	return static_cast<CSubConQosIPLinkR99ParamSet*>(CSubConParameterSet::NewL(typeId));
+	}
+
+CSubConQosIPLinkR99ParamSet::CSubConQosIPLinkR99ParamSet()
+	: CSubConExtensionParameterSet(), 
+	iTrafficClass(RPacketQoS::ETrafficClassUnspecified),
+	iDeliveryOrder(RPacketQoS::EDeliveryOrderUnspecified),
+	iDeliveryOfErroneusSdu(RPacketQoS::EErroneousSDUDeliveryUnspecified),
+	iResidualBer(RPacketQoS::EBERUnspecified),
+	iErrorRatio(RPacketQoS::ESDUErrorRatioUnspecified),
+	iPriority(RPacketQoS::ETrafficPriorityUnspecified),
+	iTransferDelay(0),
+	iMaxSduSize(0),
+	iMaxBitrateUplink(0),
+	iMaxBitrateDownlink(0),
+	iGuaBitrateUplink(0),
+	iGuaBitrateDownlink(0)
+	{
+	}
+
+RPacketQoS::TTrafficClass CSubConQosIPLinkR99ParamSet::GetTrafficClass() const
+	{
+	return iTrafficClass;
+	}
+
+RPacketQoS::TDeliveryOrder CSubConQosIPLinkR99ParamSet::GetDeliveryOrder() const
+	{
+	return iDeliveryOrder;
+	}
+
+RPacketQoS::TErroneousSDUDelivery CSubConQosIPLinkR99ParamSet::GetErroneousSDUDelivery() const
+	{
+	return iDeliveryOfErroneusSdu;
+	}
+
+RPacketQoS::TBitErrorRatio CSubConQosIPLinkR99ParamSet::GetResidualBitErrorRatio() const
+	{
+	return iResidualBer;
+	}
+
+RPacketQoS::TSDUErrorRatio CSubConQosIPLinkR99ParamSet::GetSDUErrorRatio() const
+	{
+	return iErrorRatio;
+	}
+
+RPacketQoS::TTrafficHandlingPriority CSubConQosIPLinkR99ParamSet::GetTrafficHandlingPriority() const
+	{
+	return iPriority;
+	}
+
+TInt CSubConQosIPLinkR99ParamSet::GetTransferDelay() const
+	{
+	return iTransferDelay;
+	}
+
+TInt CSubConQosIPLinkR99ParamSet::GetMaxSduSize() const
+	{
+	return iMaxSduSize;
+	}
+
+TInt CSubConQosIPLinkR99ParamSet::GetMaxBitrateUplink() const
+	{
+	return iMaxBitrateUplink;
+	}
+
+TInt CSubConQosIPLinkR99ParamSet::GetMaxBitrateDownlink() const
+	{
+	return iMaxBitrateDownlink;
+	}
+
+TInt CSubConQosIPLinkR99ParamSet::GetGuaBitrateUplink() const
+	{
+	return iGuaBitrateUplink;
+	}
+
+TInt CSubConQosIPLinkR99ParamSet::GetGuaBitrateDownlink() const
+	{
+	return iGuaBitrateDownlink;
+	}
+
+void CSubConQosIPLinkR99ParamSet::SetTrafficClass(RPacketQoS::TTrafficClass aTrafficClass)
+	{
+	iTrafficClass = aTrafficClass;
+	}
+
+void CSubConQosIPLinkR99ParamSet::SetDeliveryOrder(RPacketQoS::TDeliveryOrder aDeliveryOrder)
+	{
+	iDeliveryOrder = aDeliveryOrder;
+	}
+
+void CSubConQosIPLinkR99ParamSet::SetErroneousSDUDelivery(RPacketQoS::TErroneousSDUDelivery aDeliveryOfErroneusSdu)
+	{
+	iDeliveryOfErroneusSdu = aDeliveryOfErroneusSdu;
+	}
+
+void CSubConQosIPLinkR99ParamSet::SetResidualBitErrorRatio(RPacketQoS::TBitErrorRatio aResidualBer)
+	{
+	iResidualBer = aResidualBer;
+	}
+
+void CSubConQosIPLinkR99ParamSet::SetSDUErrorRatio(RPacketQoS::TSDUErrorRatio aErrorRatio)
+	{
+	iErrorRatio = aErrorRatio;
+	}
+
+void CSubConQosIPLinkR99ParamSet::SetTrafficHandlingPriority(RPacketQoS::TTrafficHandlingPriority aPriority)
+	{
+	iPriority = aPriority;
+	}
+
+void CSubConQosIPLinkR99ParamSet::SetTransferDelay(TInt aTransferDelay)
+	{
+	iTransferDelay = aTransferDelay;
+	}
+
+void CSubConQosIPLinkR99ParamSet::SetMaxSduSize(TInt aMaxSduSize)
+	{
+	iMaxSduSize = aMaxSduSize;
+	}
+
+void CSubConQosIPLinkR99ParamSet::SetMaxBitrateUplink(TInt aMaxBitrateUplink)
+	{
+	iMaxBitrateUplink = aMaxBitrateUplink;
+	}
+
+void CSubConQosIPLinkR99ParamSet::SetMaxBitrateDownlink(TInt aMaxBitrateDownlink)
+	{
+	iMaxBitrateDownlink = aMaxBitrateDownlink;
+	}
+
+void CSubConQosIPLinkR99ParamSet::SetGuaBitrateUplink(TInt aGuaBitrateUplink)
+	{
+	iGuaBitrateUplink = aGuaBitrateUplink;
+	}
+
+void CSubConQosIPLinkR99ParamSet::SetGuaBitrateDownlink(TInt aGuaBitrateDownlink)
+	{
+	iGuaBitrateDownlink = aGuaBitrateDownlink;
+	}
+
+
+TUint16 TFlowId::GetMediaComponentNumber() const
+	{
+	return iMediaComponentNumber;
+	}
+
+TUint16 TFlowId::GetIPFlowNumber() const
+	{
+	return iIPFlowNumber;	
+	}
+
+void TFlowId::SetMediaComponentNumber(TUint16 aMediaComponentNumber)
+	{
+	iMediaComponentNumber = aMediaComponentNumber;
+	}
+
+void TFlowId::SetIPFlowNumber(TUint16 aIPFlowNumber)
+	{
+	iIPFlowNumber = aIPFlowNumber;
+	}
+
+
+//===========================
+// Implementation Extension class
+CSubConSBLPR5ExtensionParamSet::CSubConSBLPR5ExtensionParamSet()
+	: CSubConExtensionParameterSet()
+	{
+	} 
+
+CSubConSBLPR5ExtensionParamSet::~CSubConSBLPR5ExtensionParamSet()
+	{
+	iFlowIds.Close();
+	}
+
+CSubConSBLPR5ExtensionParamSet* CSubConSBLPR5ExtensionParamSet::NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType)
+	{
+	CSubConSBLPR5ExtensionParamSet* sblpExtn = NewL();
+	CleanupStack::PushL(sblpExtn);
+	aFamily.AddExtensionSetL(*sblpExtn, aType);
+	CleanupStack::Pop(sblpExtn);
+	return sblpExtn;
+	}
+CSubConSBLPR5ExtensionParamSet* CSubConSBLPR5ExtensionParamSet::NewL()
+	{
+	STypeId typeId = STypeId::CreateSTypeId(KSubConIPParamsUid, KSubConnSBLPR5ExtensionParamsType);
+	return static_cast<CSubConSBLPR5ExtensionParamSet*>(CSubConParameterSet::NewL(typeId));
+	}
+	
+const TAuthToken& CSubConSBLPR5ExtensionParamSet::GetMAT() const
+	{
+	return iAuthToken;
+	}
+
+void CSubConSBLPR5ExtensionParamSet::SetMAT(const TAuthToken& aAuthToken)
+	{
+	iAuthToken = aAuthToken;
+	}
+
+TInt CSubConSBLPR5ExtensionParamSet::GetNumberOfFlowIds() const
+	{
+	return iFlowIds.Count();
+	}
+
+const TFlowId& CSubConSBLPR5ExtensionParamSet::GetFlowIdAt(TInt aIndex) const
+	{
+	return iFlowIds[aIndex];
+	}
+
+void CSubConSBLPR5ExtensionParamSet::AddFlowIdL(const TFlowId & aFlowId)
+	{
+	iFlowIds.AppendL(aFlowId);
+	}
+#endif
+// SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+
+#endif
+// __IP_SUBCONPARAMS_INL__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/inc/ipscpr.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,249 @@
+/**
+* Copyright (c) 2005-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:
+* Header file for the IP SubConnection Provider and its basic version
+* 
+*
+*/
+
+
+
+/**
+ @file ipscpr.h
+*/
+
+#ifndef __IPSCPR_H__
+#define __IPSCPR_H__
+
+#include <e32base.h>
+#include <e32std.h>
+#include <ss_subconnprov.h>
+#include "deft_scpr.h"
+#include <eintsock.h>
+#include <in_sock.h>
+#include <es_sock.h>
+
+
+#ifndef BASIC_IPSCPR
+#include "asyncwriter.h"
+#include <qoslib.h>
+#include <ip_subconparams.h>
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+#include <umtsextn.h>
+#include <imsextn.h>
+#endif
+#endif
+
+
+/**
+Connection Provider Id - Protocol Family
+
+@internalComponent
+
+@released Since v9.0
+*/
+const TUint KIPConnectionProviderFactoryId = KAfInet;
+
+/**
+ECOM Implementation Id for Connection Provider
+
+@internalComponent
+
+@released Since v9.0
+*/
+#ifdef BASIC_IPSCPR
+const TInt KSubConnectionProviderImplementationUid = { 0x102752C5 };
+#else
+const TInt KSubConnectionProviderImplementationUid = { 0x10204308 };
+#endif
+
+
+class CConnectionProviderBase;
+class CIpSubConnectionProviderFactory : public CSubConnectionProviderFactoryBase
+/**
+Factory that is used to create instances of IP Connection Providers
+
+@internalComponent
+
+@released Since v9.0
+*/
+	{
+public:
+	static CIpSubConnectionProviderFactory* NewL(TAny* aConstructionParameters);
+	virtual ~CIpSubConnectionProviderFactory();
+
+	CIpSubConnectionProviderFactory(TUint aFactoryId, CSubConnectionFactoryContainer& aParentContainer);
+
+	// methods to be overriden for CSubConnectionProviderFactory
+	virtual CSubConnectionProviderBase* DoCreateProviderL(CConnectionProviderBase& aConnProvider, RSubConnection::TSubConnType aType);
+	};
+
+
+#ifndef BASIC_IPSCPR
+
+class CQoSMsgWriter;
+class CQoSMsgReader;
+class TPfqosMessage;
+class CSubConGenEventParamsGranted;
+class CSubConQosGenericParamSet;
+class CSubConQosIPLinkR99ParamSet;
+class CSubConSBLPR5ExtensionParamSet;
+class CSblpParameters;
+class TQoSParameters;
+class TUmtsQoSParameters;
+
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5  
+class TUmtsR5QoSParameters;
+class TImsParameter;
+class CSubConQosR5ParamSet;
+class CSubConIMSExtParamSet;
+#endif 
+// SYMBIAN_NETWORKING_UMTSR5 
+
+
+class CIpSubConnectionProvider : public CEmptySubConnectionProvider
+/**
+Defines the IP Connection Provider.  Class provides a mapping from ESock Subconnection
+function calls to QoS.PRT messages.
+
+@internalComponent
+
+@released Since v9.0
+*/
+	{
+private:
+    enum 
+        {
+        KParameterRelInvalid = 0,
+        KParameterRelGeneric = 1,
+        KParameterRel4Rel99 = 4,
+        KParameterRel5 = 5,
+        };
+
+public:
+	// Construction
+	static CIpSubConnectionProvider* NewL(CIpSubConnectionProviderFactory& aFactory, CConnectionProviderBase& aConnProvider);
+
+protected:
+	// Construction
+	CIpSubConnectionProvider(CIpSubConnectionProviderFactory& aFactory, CConnectionProviderBase& aConnProvider);
+
+	// Methods to be overriden be derived subconnection provider
+	virtual void DoDataClientJoiningL(MSubConnectionDataClient& aDataClient);
+	virtual void DoDataClientLeaving(MSubConnectionDataClient& aDataClient);
+	virtual void DoSourceAddressUpdate(MSubConnectionDataClient& aDataClient, const TSockAddr& aSource);
+	virtual void DoDestinationAddressUpdate(MSubConnectionDataClient& aDataClient, const TSockAddr& aDestination);
+	virtual void DoDataClientRouted(MSubConnectionDataClient& aDataClient, const TSockAddr& aSource, const TSockAddr& aDestination, const TDesC8& aConnectionInfo);
+	virtual void DoParametersAboutToBeSetL(CSubConParameterBundle& aParameterBundle);
+	virtual TInt DoControl(TUint aOptionLevel, TUint aOptionName, TDes8& aOption);
+
+    virtual void DoStartL();
+	virtual void DoStop();
+	virtual CSubConnectionProviderBase* DoNextLayer();
+	virtual CConnDataTransfer& DoDataTransferL();
+
+	//MConnectionDataClient
+	virtual TAny* FetchInterfaceInstanceL(CSubConnectionProviderBase& aProvider, const STypeId& aTid);
+	virtual void ConnectionGoingDown(CConnectionProviderBase& aConnProvider);
+	virtual void Notify(TNotify aNotifyType,  CConnectionProviderBase* aConnProvider, TInt aError, const CConNotificationEvent* aConNotificationEvent);
+    virtual void AttachToNext(CSubConnectionProviderBase* aSubConnProvider);
+
+	// Don't allow clients to invoke the destructor.
+	// (Only the CCommsFactoryBase should do this)
+	virtual ~CIpSubConnectionProvider();
+
+	void ConstructL();
+
+public:
+	// Messages from PRT
+	void ProcessPRTMsg(TPfqosMessage& aMsg);
+	void ProcessPRTError(TPfqosMessage& aMsg, TInt aError);
+#ifdef _DEBUG
+	void ProcessPRTError(TInt aMsgType, TInt aError);
+#endif
+
+private:
+	// Messages to PRT
+	void SendOpenExistingL(const TInetAddr &aSrcAddr, const TInetAddr &aDstAddr, TUint32 aIapId, TUint32 aProtocol);
+	void SendCreateL(const TInetAddr &aSrcAddr, const TInetAddr &aDstAddr, TUint32 aIapId, TUint32 aProtocol);
+	void SendCloseL();
+	void SendJoinL(const TInetAddr &aSrcAddr, const TInetAddr &aDstAddr, TUint32 aIapId, TUint32 aProtocol);
+	void SendLeaveL(const TInetAddr &aSrcAddr, const TInetAddr &aDstAddr, TUint32 aIapId, TUint32 aProtocol);
+	void SendSetQoSL();
+
+	// Internal Processing
+	void ProcessPRTEventL(TPfqosMessage& aMsg);
+	void ProcessPRTReplyL(TPfqosMessage& aMsg);
+
+	void ConvertParametersFromESockL(CSubConParameterBundle& aParameterBundle);
+	void ConvertParametersFromQOSL(TPfqosMessage& aMsg, CSubConGenEventParamsGranted* aEvent);
+
+	TInt DetermineClient(const TPfqosMessage& aMsg, MSubConnectionDataClient*& aDataClient);
+	void MapGenericParamsFromESockToPRTL(const CSubConQosGenericParamSet& generic) const;
+	void MapGenericParamsFromPRTToESockL(CSubConQosGenericParamSet& generic) const;
+	void MapExtensionParamsFromESockToPRTL(const CSubConQosIPLinkR99ParamSet& extension, TUmtsQoSParameters& params);
+	
+	void ResetPrtExtensions();
+	
+	
+#ifdef SYMBIAN_NETWORKING_UMTSR5  
+	void MapExtensionParamsFromESockToPRTL(const CSubConQosR5ParamSet& aExtension, TUmtsR5QoSParameters& aParams);
+	void MapExtensionParamsFromESockToPRTL(const CSubConImsExtParamSet& aExtension, TImsParameter& aParams);
+    
+    CSubConExtensionParameterSet* MapFromUmtsR5ExtensionL (const CUmtsR5QoSPolicy* aPolicy);
+    CSubConExtensionParameterSet* MapFromImsExtensionL (const CImsPolicy* aPolicy);
+#endif 
+// SYMBIAN_NETWORKING_UMTSR5 
+
+
+	void MapExtensionParamsFromESockToPRTL(const CSubConSBLPR5ExtensionParamSet& extension, CSblpParameters& params) const;
+	
+	void ConvertTQoSIntoCQoSParamsL(const TQoSParameters& aParameter);
+	void ConvertCQoSIntoTQoSParamsL(TQoSParameters& aParameters) const;
+
+private:
+	/** Internal Socket */
+	RInternalSocket iSocket;
+	
+	/** PRT message writer */
+	CQoSMsgWriter* iWriter;
+
+	/** PRT message reader */
+	CQoSMsgReader* iReader;
+
+	/** QoS channel Id */
+	TInt iChannelId;
+
+	/** Process UID */
+	TUidType iUid;
+
+	/** QoS Parameters */
+    CQoSParameters* iPrtParameters;
+
+	/** QoS Extensions */
+    TQoSExtensionQueue iPrtExtensions;
+
+	/** QoS Parameters Set */
+	TBool iParametersSet;
+	TInt iParameterRelease;
+	
+	/**Class for doing async writes */
+	CAsyncWriter* iAsyncWriter;
+	};
+
+#endif  // BASIC_IPSCPR
+#endif  // __IPSCPR_H__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/src/10204307.rss	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,60 @@
+// 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 "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:
+// Registry info for IP Sub-Connection Provider plug-in
+// 
+//
+
+/**
+ @file 10204307.RSS
+*/
+
+#include <ecom/registryinfo.rh>
+
+RESOURCE REGISTRY_INFO theInfo
+{
+dll_uid = 0x10204307;
+interfaces = 
+    {
+    INTERFACE_INFO
+        {
+        interface_uid = 0x10204301;
+        implementations = 
+            {
+           IMPLEMENTATION_INFO
+                {
+                implementation_uid = 0x10204308;
+                version_no = 1;
+                display_name = "IP Sub-Connection Provider Factory";
+                default_data = "IpSubConnectionProviderFactory";
+                opaque_data = "";
+                }
+            };
+        },
+    INTERFACE_INFO
+        {
+        interface_uid = 0x10204303;
+        implementations = 
+            {
+           IMPLEMENTATION_INFO
+                {
+                implementation_uid = 0x10204309;
+                version_no = 1;
+                display_name = "CSubConnection Qos IP Link R5 Extension Parameter Set";
+                default_data = "text/wml";
+                opaque_data = "";
+                }
+            };
+        }
+    };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/src/102752C4.rss	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,60 @@
+// Copyright (c) 2005-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:
+// Registry info for Basic IP Sub-Connection Provider plug-in
+// 
+//
+
+/**
+ @file
+*/
+
+#include <ecom/registryinfo.rh>
+
+RESOURCE REGISTRY_INFO theInfo
+{
+dll_uid = 0x102752C4;
+interfaces = 
+    {
+    INTERFACE_INFO
+        {
+        interface_uid = 0x10204301;
+        implementations = 
+            {
+           IMPLEMENTATION_INFO
+                {
+                implementation_uid = 0x102752C5;
+                version_no = 1;
+                display_name = "Basic IP Sub-Connection Provider Factory";
+                default_data = "BasicIpSubConnectionProvdFactory";
+                opaque_data = "";
+                }
+            };
+        },
+    INTERFACE_INFO
+        {
+        interface_uid = 0x10204303;
+        implementations = 
+            {
+           IMPLEMENTATION_INFO
+                {
+                implementation_uid = 0x102754C7;
+                version_no = 1;
+                display_name = "CSubConnection Qos IP Link R5 Extension Parameter Set";
+                default_data = "text/wml";
+                opaque_data = "";
+                }
+            };
+	}
+    };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/src/asyncwriter.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,70 @@
+// Copyright (c) 2005-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 "asyncwriter.h"
+
+
+CAsyncWriter* CAsyncWriter::NewL(CQoSMsgWriter* aWriter)
+	{
+	CAsyncWriter* self = new (ELeave) CAsyncWriter(aWriter);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+	
+CAsyncWriter::CAsyncWriter(CQoSMsgWriter* aWriter) :
+	CActive(EPriorityNormal),
+	iWriter(aWriter)
+	{
+        iPendingMsg.SetOffset(_FOFF(CQoSMsg, iLink));
+        }
+
+void CAsyncWriter::ConstructL()
+	{
+	CActiveScheduler::Add(this);
+	}
+
+void CAsyncWriter::Send(CQoSMsg* aMessage)
+	{
+	if (IsActive())
+ 		{
+ 		iPendingMsg.AddLast(*aMessage);
+ 		}
+ 	else
+ 		{
+ 		iWriter->Send(aMessage);
+ 		SetActive();
+ 		TRequestStatus* stat = &iStatus;
+ 		User::RequestComplete(stat,KErrNone);
+ 		}
+	}
+	
+void CAsyncWriter::RunL()
+	{
+	ASSERT(iWriter);
+	if (!iPendingMsg.IsEmpty())
+ 		{
+ 		CQoSMsg* msg = iPendingMsg.First();
+ 		iPendingMsg.Remove(*msg);
+ 		iWriter->Send(msg);
+ 		SetActive();
+ 		}
+	}
+	
+void CAsyncWriter::DoCancel()
+	{
+	//No code needed here becuase the request is completed immediately on activation
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/src/deft_scpr.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,460 @@
+// 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 "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:
+// Implementation file for the IP SubConnection Provider
+// 
+//
+
+/**
+ @file
+*/
+
+#include <e32std.h>
+#include <e32test.h>
+#include <ss_glob.h>
+#include "deft_scpr.h"
+#include "ipscprlog.h"
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+#include "MAppIdInfo.h"
+#include <networking/qos3gpp_subconparams.h>
+#include <ip_subconparams.h>
+#endif //SYMBIAN_NETWORKING_UMTSR5
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+	const TUint32 KSIPSecureId  = 270490934;
+	const TUint32 KDHCPSecureId = 270522821;
+	const TUint32 KDNSSecureId  = 268437634;
+#endif //SYMBIAN_NETWORKING_UMTSR5
+
+CEmptySubConnectionProvider::~CEmptySubConnectionProvider()
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("~CEmptySubConnectionProvider [this=%08x]"), this));
+	if (iConnectionProvider)
+		{
+		iConnectionProvider->Leave(*this);
+		}
+	}
+
+void CEmptySubConnectionProvider::DoControlClientJoiningL(MSubConnectionControlClient& aControlClient)
+	{
+	(void)aControlClient;
+	__IPCPRLOG(IpCprLog::Printf(_L("CEmptySubConnectionProvider [this=%08x]:\tDoControlClientJoiningL() [iControlClients.Count=%d] [aControlClient=%08x]"), this, iControlClients.Count(), &aControlClient));
+	}
+	
+void CEmptySubConnectionProvider::DoControlClientLeaving(MSubConnectionControlClient& aControlClient)
+	{
+	(void)aControlClient;
+	__IPCPRLOG(IpCprLog::Printf(_L("CEmptySubConnectionProvider [this=%08x]:\tDoControlClientLeaving() [iControlClients.Count=%d] [aControlClient=%08x]"), this, iControlClients.Count(), &aControlClient));
+	}
+
+void CEmptySubConnectionProvider::EnumerateClientsL(TUint& aCount, TDes8& aDes, CConnectionProviderBase::TEnumClients aClientType)
+	{
+	STypeId tid = STypeId::CreateSTypeId(KConnectionClientExtUid,EConnectionClientDesc);
+	TInt max = iControlClients.Count();
+	for ( TInt n = 0; n < max; n++ )
+		{
+		MConnectionClientDesc* intf = reinterpret_cast<MConnectionClientDesc*>(iControlClients[n]->FetchInterfaceInstanceL(*this,tid));
+		if ( intf )
+			{
+			TConnectionProcessInfo cinfo;
+			cinfo.GetInfoL(aClientType,aCount, *intf, aDes);
+			}
+		}
+	STypeId tid2 = STypeId::CreateSTypeId(KConnectionClientExtUid,EConnectionEnumerateClients);
+	max = iDataClients.Count();
+	for ( TInt n = 0; n < max; n++ )
+		{
+		MConnectionEnumerateClients* intf = reinterpret_cast<MConnectionEnumerateClients*>(iDataClients[n]->FetchInterfaceInstanceL(*this,tid2));
+		if ( intf )
+			{
+			intf->EnumerateClientsL(aCount,aDes,aClientType);
+			}
+		}
+	}
+
+void CEmptySubConnectionProvider::ConnectionError(TInt /*aStage*/, TInt aError)
+	{//it's comming from connection at the same level so forward it sideways
+	//with an origin EConnection
+	TInt max = iDataClients.Count();
+	for ( TInt n = max - 1; n >= 0; n-- )
+		{
+		iDataClients[n]->SubConnectionError(*this, MSubConnectionDataClient::EConnection, aError);
+		}
+	}
+
+MConnectionDataClient* CEmptySubConnectionProvider::DoSelfConnectionDataClient()
+	{
+	return this;
+	}
+
+
+// Methods to be overriden be derived subconnection provider
+void CDefaultSubConnectionProvider::DoControlClientJoiningL(MSubConnectionControlClient& aControlClient)
+	{
+	(void)aControlClient;
+   __IPCPRLOG(IpCprLog::Printf(_L("CDefaultSubConnectionProvider::DoControlClientJoiningL [this=%08x]"), this));
+   if (NULL != NextLayer())
+      {
+      __IPCPRLOG(IpCprLog::Printf(_L("Lower subconnection provider for IP exists - joined with provider")));
+      }
+   else
+      {
+      __IPCPRLOG(IpCprLog::Printf(_L("Lower subconnection provider for IP doesn't exists - not joined")));
+      }
+	
+	}
+	
+void CDefaultSubConnectionProvider::DoDataClientJoiningL(MSubConnectionDataClient& aDataClient)
+	{
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+	// This piece of code is being added as per the requirements of PREQ 635 of dedicated PDP signalling 
+	// context. When Primary PDP Context is created Network will return back the code saying whether it 
+	// accepts the request to be dedicated signalling context or not. If Network decided to allow for dedicated
+	// signalling context then UmtsGprs SCPR add the information into the iParameterBundle of the UmtsGprsScpr 
+	
+	// However, if the User doesnt do RSubConnection::SetParamter(EAttachDefault), which actually the user shouldn't do
+	// then we have to Get the parameter from the Next Layer, which again might or might not be UmtsGprs SubConnection Provider.
+	// Nevertheless if we call SetParameter() on iNextLayer then SetParameters across all the Layers below will get called, and 
+	// since I knew that if any of the layer below is UmtsGprsSCpr, it will update the IMCN Signalling flag in the 
+	// parameter Bundle which I will pass with the SetParameter()
+	
+	// We Initialize this variable everytime so that it can it can point to proper next layer 
+	// everytime. Just a safety measure because it will anyway be initialised by the code written 
+	// below
+	iSubConNextLayer = NULL;
+	if (NULL == iNextLayer)
+		{
+		// Find the Next Layer , otherwise iSubConNextLayer will be NULL by default.
+		CConnectionProviderBase* lowerConnectionProvider = iConnectionProvider->NextLayer();
+   		if (lowerConnectionProvider)
+       		{
+			TUint nextLayerFactoryId = lowerConnectionProvider->CanDoSubConnection(RSubConnection::EAttachToDefault);
+			if (nextLayerFactoryId != 0)
+	   			{	
+           		TSockManData* sockManData = SockManGlobals::Get();
+           		CSubConnectionFactoryContainer* subConnectionFactories = sockManData->iSubConnectionFactories;
+   	            XSubConnectionFactoryQuery query(lowerConnectionProvider, RSubConnection::EAttachToDefault);
+       		    iSubConNextLayer = subConnectionFactories->FindOrCreateProviderL(nextLayerFactoryId, query);
+	   			}	
+			        	
+       		}
+   		}
+	else
+		{
+		// We have a NextLayer, Point iSubConNextLayer to the same
+		iSubConNextLayer = iNextLayer;
+		}
+
+	// Get The parameter Bundle for this SubConnectionProvider Instance. if Not available create one
+	// and Get the parameters from the Next Lyer
+	CSubConParameterBundle *tempBundle = NULL;
+	if (iSubConNextLayer != NULL)
+		{
+		tempBundle = iParameterBundle != NULL? iParameterBundle :CSubConParameterBundle::NewL();
+		TRAP_IGNORE(iSubConNextLayer->SetParametersL(*tempBundle));
+		}
+	
+	// Get the family if Available
+	CSubConParameterFamily *imcnFamily = tempBundle != NULL ? tempBundle->FindFamily(KSubConnContextDescrParamsFamily) : NULL;
+	if (imcnFamily)
+		{
+		// Find the family, Look for the IMCN value, using CSubConImsExtParamSet defined in Qos3gpp
+		CSubConImsExtParamSet *imcnSigParams = static_cast<CSubConImsExtParamSet*>
+		(imcnFamily->FindExtensionSet(STypeId::CreateSTypeId(KSubConIPParamsUid,KSubConImsExtParamsType), 
+		CSubConParameterFamily::EGranted));
+		// If Family contains IMCN Signalling Parameters
+		if (imcnSigParams&& imcnSigParams->GetImsSignallingIndicator())	
+			{
+    		// Check and Delete
+			if (tempBundle != iParameterBundle)
+				{
+				tempBundle->Close();
+				tempBundle=NULL;
+				}
+			// Fetch the interface from the connection provider
+			STypeId typeID = STypeId::CreateSTypeId(KConnectionAppInfoInterfaceId,0); // IP Conenction provider factory Uid
+			TAny* intf = iConnectionProvider->FetchInterfaceInstanceL(typeID);
+			if (!intf)
+				{
+				// We are not able to get the AppSId so leaving
+				User::Leave(KErrNotSupported);
+				}
+			MConnectionAppIdInfo  *appIdIP = static_cast<MConnectionAppIdInfo*>(intf);
+			TUint32 appSecureId = appIdIP->GetAppSecureId();
+			
+			// if socket is being opened by any application other than SIP, DHCP, and DNS we need to
+			// restrict the socket from being Created.
+		
+			
+			if ( ( appSecureId==KSIPSecureId || iAppId == KSIPSecureId)  || 
+			     (appSecureId==KDHCPSecureId || iAppId == KDHCPSecureId)  || 
+			     (appSecureId==KDNSSecureId || iAppId == KDNSSecureId) )
+				{
+				aDataClient.JoinComplete(*this);
+				}
+		    else
+	            {
+	            User::Leave(KErrPermissionDenied);
+	            }	     
+			} // if (imcnSigParams&& imcnSigParams->GetImsSignallingIndicator())	
+		else
+		    {
+		    if (iConnectionProvider->IsLayerUp())
+		        {
+		         aDataClient.JoinComplete(*this);
+		        }
+
+	     	}
+		} // if (imcnFamily)
+		// Check and Delete
+		if (tempBundle != iParameterBundle && tempBundle!=NULL)
+		   {
+		    tempBundle->Close();
+	       }
+#else 
+			
+		if (iConnectionProvider->IsLayerUp())
+		  {
+		   aDataClient.JoinComplete(*this);
+		  }
+#endif 	// #ifdef SYMBIAN_NETWORKING_UMTSR5
+
+	}
+
+void CDefaultSubConnectionProvider::DoDataClientLeaving(MSubConnectionDataClient& aDataClient)
+	{
+	aDataClient.LeaveComplete(*this);
+	}
+	
+void CDefaultSubConnectionProvider::DoSourceAddressUpdate(MSubConnectionDataClient& /*aDataClient*/, const TSockAddr& /*aSource*/)
+	{
+	}
+	
+void CDefaultSubConnectionProvider::DoDestinationAddressUpdate(MSubConnectionDataClient& /*aDataClient*/, const TSockAddr& /*aDestination*/)
+	{
+	}
+	
+void CDefaultSubConnectionProvider::DoDataClientRouted(MSubConnectionDataClient& /*aDataClient*/, const TSockAddr& /*aSource*/, const TSockAddr& /*aDestination*/, const TDesC8& /*aConnectionInfo*/)
+	{
+	}
+	
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+void CDefaultSubConnectionProvider::DoParametersAboutToBeSetL(CSubConParameterBundle& aParameterBundle)
+	{
+   __IPCPRLOG(IpCprLog::Printf(_L("CDefaultSubConnectionProvider::DoParametersAboutToBeSetL [this=%08x]"), this));
+   if (NULL != NextLayer())
+      {
+      __IPCPRLOG(IpCprLog::Printf(_L("Lower subconnection provider for IP exists - forwarding the request")));
+      iNextLayer->SetParametersL(aParameterBundle);
+      }
+   else
+      {
+      __IPCPRLOG(IpCprLog::Printf(_L("Lower subconnection provider for IP doesn't exists - the request not supported")));
+      User::Leave(KErrNotSupported);        
+      }
+   }
+
+#else
+void CDefaultSubConnectionProvider::DoParametersAboutToBeSetL(CSubConParameterBundle& /*)aParameterBundle*/)
+	{//this could potentially fetch a current parameters from GuQoS and return them back as granted ones	
+	User::Leave(KErrNotSupported);
+	}
+#endif
+	
+#ifdef SYMBIAN_NETWORKING_UMTSR5	
+TInt CDefaultSubConnectionProvider::DoControl(TUint aOptionLevel, TUint /*aOptionName*/, TDes8& /*aOption*/)
+#else
+TInt CDefaultSubConnectionProvider::DoControl(TUint /*aOptionLevel*/, TUint /*aOptionName*/, TDes8& /*aOption*/)
+#endif //#ifdef SYMBIAN_NETWORKING_UMTSR5
+	{
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+//This control is used to send application secure ID of Active Connection. This Id 
+//will be used to for adding socket as data client to the subconnection.
+	iAppId=aOptionLevel;
+	return KErrNone;
+#else
+	return KErrNotSupported;
+#endif //#ifdef SYMBIAN_NETWORKING_UMTSR5
+	}
+	
+void CDefaultSubConnectionProvider::DoStartL()
+	{
+   __IPCPRLOG(IpCprLog::Printf(_L("CDefaultSubConnectionProvider::DoStartL [this=%08x]"), this));
+	}
+	
+void CDefaultSubConnectionProvider::DoStop()
+	{
+   __IPCPRLOG(IpCprLog::Printf(_L("CDefaultSubConnectionProvider::DoStop [this=%08x]"), this));
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+   if (iNextLayer)
+      {
+      __IPCPRLOG(IpCprLog::Printf(_L("Leaving Lower subconnection provider")));
+      iNextLayer->Leave(*this);
+      iNextLayer = NULL;
+      }
+#endif
+	}
+	
+CSubConnectionProviderBase* CDefaultSubConnectionProvider::DoNextLayer()
+	{
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+   __IPCPRLOG(IpCprLog::Printf(_L("CDefaultSubConnectionProvider [this=%08x]:\tDoNextLayer()"), this));
+   if (NULL == iNextLayer)
+      {
+      CConnectionProviderBase* lowerConnectionProvider = iConnectionProvider->NextLayer();
+      if (!lowerConnectionProvider)
+         {
+         //This could denote the connection isn't started and perhaps should be from here,
+         // but since the selection isn't separated from startup, we don't have enough
+         // information to do it here.
+         __IPCPRLOG(IpCprLog::Printf(_L("CDefaultSubConnectionProvider [this=%08x]:\tDoNextLayer() Connection Provider is missing its NextLayer"), this));
+         return NULL;   // No Lower layer,so leaving rhostresolver without connection.
+         }
+		                                 
+		TUint nextLayerFactoryId = lowerConnectionProvider->CanDoSubConnection(RSubConnection::EAttachToDefault);
+      TRAP_IGNORE(
+      
+   		if (nextLayerFactoryId != 0)
+   		   {
+            //'This' not started yet. The lower layer unknown
+            //This is as much as we can delay with resolving the subconnection stack
+            TSockManData* sockManData = SockManGlobals::Get();
+            CSubConnectionFactoryContainer* subConnectionFactories = sockManData->iSubConnectionFactories;
+      
+            XSubConnectionFactoryQuery query(lowerConnectionProvider, RSubConnection::EAttachToDefault);
+               iNextLayer = subConnectionFactories->FindOrCreateProviderL(nextLayerFactoryId, query);
+   		   }
+   		
+         if (iNextLayer)
+            {
+            __IPCPRLOG(IpCprLog::Printf(_L("Lower subconnection provider for IP found.. Joining")));
+            iNextLayer->JoinL(*this);
+            }
+         else
+            {
+            __IPCPRLOG(IpCprLog::Printf(_L("Lower subconnection provider for IP not found.. Continuing")));
+            }
+         );
+         
+      }
+      
+   return iNextLayer;
+
+#else
+   __IPCPRLOG(IpCprLog::Printf(_L("Lower subconnection provider for IP not supported")));
+	return NULL;
+#endif
+//SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+	}
+	
+CConnDataTransfer& CDefaultSubConnectionProvider::DoDataTransferL()
+	{
+	User::Leave(KErrNotSupported);
+	//unreachable code
+	return iNextLayer->DataTransferL();
+ 	}
+	
+//MConnectionDataClient
+TAny* CDefaultSubConnectionProvider::FetchInterfaceInstanceL(CConnectionProviderBase& /*aProvider*/, const STypeId& aTid)
+	{
+	return (aTid == STypeId::CreateSTypeId(KConnectionClientExtUid,EConnectionEnumerateClients)) ? static_cast<MConnectionEnumerateClients*>(this) : NULL;
+	}
+	
+void CDefaultSubConnectionProvider::ConnectionGoingDown(CConnectionProviderBase& /*aConnProvider*/)
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CDefaultSubConnectionProvider [this=%08x]:\tConnectionGoingDown()"), this));
+	iConnectionProvider = NULL;
+	DeleteMeNow();
+	}
+	
+void CDefaultSubConnectionProvider::Notify(MConnectionDataClient::TNotify aNotifyType, CConnectionProviderBase* /*aConnProvider*/, TInt aError, const CConNotificationEvent* /*aConNotificationEvent*/)
+	{
+	int count = iControlClients.Count();	
+	for (int i = count - 1; i >= 0; --i)
+		{		
+		iControlClients[i]->SubConnectionEvent(*this, aNotifyType, aError, NULL);
+		}
+	if (aNotifyType == ENotifyLayerUp)
+		{//complete outstanding data client joins
+		TInt max = iDataClients.Count();
+		for ( TInt n = max - 1; n >= 0; n-- )
+			{
+			if (aError == KErrNone)
+				{
+				iDataClients[n]->JoinComplete(*this);
+				}
+			else
+				{
+				iDataClients[n]->JoinFailed(*this,aError);
+				}
+			}
+		}
+	}
+	
+void CDefaultSubConnectionProvider::AttachToNext(CSubConnectionProviderBase* /*aSubConnProvider*/)
+	{
+	}
+
+CDefaultSubConnectionProvider::~CDefaultSubConnectionProvider ()
+   {
+	__IPCPRLOG(IpCprLog::Printf(_L("~CDefaultSubConnectionProvider [this=%08x]"), this));
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+   if (iNextLayer) 
+      {
+      iNextLayer->Leave (*this);
+      }
+#endif	
+   }
+	
+	
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+void CDefaultSubConnectionProvider::DoControlClientLeaving(MSubConnectionControlClient& aControlClient)
+   {
+   (void)aControlClient;
+	__IPCPRLOG(IpCprLog::Printf(_L("CDefaultSubConnectionProvider [this=%08x]:\tDoControlClientLeaving() [iControlClients.Count=%d] [aControlClient=%08x]"), this, iControlClients.Count(), &aControlClient));
+
+    // Note: control client count == 1 because the the client has not been removed yet
+    if (iNextLayer && iControlClients.Count() == 1 && iDataClients.Count() == 0) 
+      {
+      iNextLayer->Leave (*this);
+      iNextLayer = NULL;
+      }
+   }
+
+void CDefaultSubConnectionProvider::SubConnectionEvent(CSubConnectionProviderBase& /*aSubConnProvider*/, MConnectionDataClient::TNotify /*aNotifyType*/, TInt /*aError*/, const CSubConNotificationEvent* aEvent)
+    {
+    NotifyClientEvent(*aEvent);
+    }	
+    
+    
+void CDefaultSubConnectionProvider::SubConnectionGoingDown(CSubConnectionProviderBase& /*aSubConnProvider*/)
+    {
+	TInt max = iControlClients.Count();
+	for ( TInt n = max - 1; n >= 0; n-- )
+		{
+		iControlClients[n]->SubConnectionGoingDown(*this);
+		}
+    }
+    
+    
+void CDefaultSubConnectionProvider::LayerUp(CSubConnectionProviderBase& /*aSubConnProvider*/, TInt /*aError*/)
+   {
+   }
+   
+void CDefaultSubConnectionProvider::IncomingConnection(CSubConnectionProviderBase* /*aSubConnProvider*/, CSubConParameterBundle* /*aParameterBundle*/, TInt /*aError*/)
+   {
+   }
+    
+#endif
+// SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/src/ip_subconparams.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,74 @@
+// 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 "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:
+// Implementation file for the IP SubConnection Parameters
+// 
+//
+
+/**
+ @file ip_subconparams.h
+*/
+
+
+#include <e32std.h>
+#include <e32test.h>
+#include <ecom/ecom.h>
+#include <implementationproxy.h>
+#include <ip_subconparams.h>
+#include <comms-infras/metatypearray.h>
+
+#ifndef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+// need to ensure the original class name and TUid of the factory class
+// is used for implementions in this component
+#undef KSubConIPParamsUid
+#undef KSubConQosIPLinkR99ParamsType
+#undef CSubConQosIPLinkR99ParamSet
+#endif
+
+START_ATTRIBUTE_TABLE( CSubConQosIPLinkR99ParamSet, KSubConIPParamsUid, KSubConQosIPLinkR99ParamsType )
+	REGISTER_ATTRIBUTE( CSubConQosIPLinkR99ParamSet, iTrafficClass, TMetaNumber )
+	REGISTER_ATTRIBUTE( CSubConQosIPLinkR99ParamSet, iDeliveryOrder, TMetaNumber )
+	REGISTER_ATTRIBUTE( CSubConQosIPLinkR99ParamSet, iDeliveryOfErroneusSdu, TMetaNumber )
+	REGISTER_ATTRIBUTE( CSubConQosIPLinkR99ParamSet, iResidualBer, TMetaNumber )
+	REGISTER_ATTRIBUTE( CSubConQosIPLinkR99ParamSet, iErrorRatio, TMetaNumber )
+	REGISTER_ATTRIBUTE( CSubConQosIPLinkR99ParamSet, iPriority, TMetaNumber )
+	REGISTER_ATTRIBUTE( CSubConQosIPLinkR99ParamSet, iTransferDelay, TMetaNumber )
+	REGISTER_ATTRIBUTE( CSubConQosIPLinkR99ParamSet, iMaxSduSize, TMetaNumber )
+	REGISTER_ATTRIBUTE( CSubConQosIPLinkR99ParamSet, iMaxBitrateUplink, TMetaNumber )
+	REGISTER_ATTRIBUTE( CSubConQosIPLinkR99ParamSet, iMaxBitrateDownlink, TMetaNumber )
+	REGISTER_ATTRIBUTE( CSubConQosIPLinkR99ParamSet, iGuaBitrateUplink, TMetaNumber )
+	REGISTER_ATTRIBUTE( CSubConQosIPLinkR99ParamSet, iGuaBitrateDownlink, TMetaNumber )
+END_ATTRIBUTE_TABLE()
+
+START_ATTRIBUTE_TABLE( CSubConSBLPR5ExtensionParamSet, KSubConIPParamsUid, KSubConnSBLPR5ExtensionParamsType )
+	REGISTER_ATTRIBUTE( CSubConSBLPR5ExtensionParamSet, iAuthToken, TMeta<TAuthToken>)
+	REGISTER_ATTRIBUTE( CSubConSBLPR5ExtensionParamSet, iFlowIds, TMetaArray<RFlowIdentifiers>)
+END_ATTRIBUTE_TABLE()
+
+CSubConExtensionParameterSet* CSubConIPExtensionParamsFactory::NewL(TAny* aConstructionParameters)
+	{
+	TInt32 type = reinterpret_cast<TInt32>(aConstructionParameters);
+	switch (type)
+		{
+	case (KSubConQosIPLinkR99ParamsType):
+		return new (ELeave) CSubConQosIPLinkR99ParamSet;
+		// break;
+	case (KSubConnSBLPR5ExtensionParamsType):
+		return new (ELeave) CSubConSBLPR5ExtensionParamSet;
+		// break;
+	default:
+		User::Leave(KErrNotFound);
+		}
+	return NULL;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/src/ipscpr.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,2006 @@
+// Copyright (c) 2005-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:
+// Implementation file for the IP SubConnection Provider and its basic version.
+// 
+//
+
+/**
+ @file ipscpr.cpp
+*/
+
+#include <e32std.h>
+#include <e32test.h>
+#include <ecom/ecom.h>
+#include <implementationproxy.h>
+#include <es_prot.h>
+#include <cs_subconevents.h>
+#include <cs_subconparams.h>
+#include "ipscpr.h"
+#include "ipscprlog.h"
+#include "sblpextn.h"
+#include <ip_subconparams.h>
+
+#ifndef BASIC_IPSCPR
+#include "pfqos_stream.h"
+#include "ipscprlog.h"
+#include <ip_subconparams.h>
+#include "qos_msg.h"
+#include "pfqoslib.h"
+#include <networking/qoserr.h>
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5  
+#include <networking/imsextn.h>
+#include <networking/sblpextn.h>
+#include <networking/umtsextn.h>
+#else
+#include <networking/umtsapi.h>
+#include <networking/sblpapi.h>
+#endif 
+// SYMBIAN_NETWORKING_UMTSR5 
+
+#endif
+
+#ifndef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+// need to ensure the original TUid of the factory class is used for implementions in this component
+#undef KSubConIPParamsUid
+#endif
+
+
+/**
+Data required for instantiating ECOM Plugin
+*/
+const TImplementationProxy ImplementationTable[] =
+	{
+	IMPLEMENTATION_PROXY_ENTRY(KSubConnectionProviderImplementationUid, CIpSubConnectionProviderFactory::NewL),
+	IMPLEMENTATION_PROXY_ENTRY(KSubConIPParamsUid, CSubConIPExtensionParamsFactory::NewL)
+	};
+
+
+/**
+ECOM Implementation Factory
+*/
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+
+    return ImplementationTable;
+    }
+
+
+/**
+Plugin Implementation
+*/
+
+
+CIpSubConnectionProviderFactory* CIpSubConnectionProviderFactory::NewL(TAny* aConstructionParameters)
+/**
+Constructs a IP Connection Provider Factory
+
+@param aConstructionParameters construction data passed by ECOM
+
+@return pointer to a constructed factory
+*/
+	{
+	CIpSubConnectionProviderFactory* ptr = new (ELeave) CIpSubConnectionProviderFactory(KIPConnectionProviderFactoryId, *(reinterpret_cast<CSubConnectionFactoryContainer*>(aConstructionParameters)));
+	return ptr;
+	}
+
+
+CIpSubConnectionProviderFactory::CIpSubConnectionProviderFactory(TUint aFactoryId, CSubConnectionFactoryContainer& aParentContainer)
+	: CSubConnectionProviderFactoryBase(aFactoryId, aParentContainer)
+/**
+IP SubConnection Provider Factory Constructor
+
+@param aFactoryId ECOM Implementation Id
+@param aParentContainer Object Owner
+*/
+	{
+	}
+
+
+CIpSubConnectionProviderFactory::~CIpSubConnectionProviderFactory()
+/**
+IP SubConnection Provider Factory Destructor
+*/
+	{
+	}
+
+
+CSubConnectionProviderBase* CIpSubConnectionProviderFactory::DoCreateProviderL(CConnectionProviderBase& aConnProvider, RSubConnection::TSubConnType aType)
+/**
+Factory Function that either creates a new SubConnection Provider or attaches
+to the default Provider.  The type of creation can be either RSubConnection::ECreateNew
+or RSubConnection::EAttachToDefault.
+
+Use of other types will cause the factory to leave with KErrNotSupported.
+
+@param aConnProvider Associated Connection Provider
+@param aType Type of SubConnection Provider Creation.
+*/
+	{
+	CSubConnectionProviderBase* p = NULL;
+	switch (aType)
+		{
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+		case RSubConnection::EAttachToDefault:
+			p = new(ELeave)CDefaultSubConnectionProvider(*this, aConnProvider, aType);
+			break;
+#ifdef BASIC_IPSCPR
+		case RSubConnection::ECreateNew:
+            // The Basic IPSCPR, itself, by definition, doesn't support secondary contexts.
+            // Ideally it should defer to the transport layer provider as for primary contexts...
+            //        
+			User::Leave(KErrNotSupported);
+			break;
+#else
+		case RSubConnection::ECreateNew:
+			p = CIpSubConnectionProvider::NewL(*this, aConnProvider);
+			break;
+#endif // BASIC_IPSCPR
+#else
+		case RSubConnection::ECreateNew:
+			p = CIpSubConnectionProvider::NewL(*this, aConnProvider);
+			break;
+		case RSubConnection::EAttachToDefault:
+			p = new(ELeave)CDefaultSubConnectionProvider(*this, aConnProvider);
+			break;
+#endif // SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+		default:
+			{
+			User::Leave(KErrNotSupported);
+			}
+		};
+	return p;
+	}
+
+
+#ifndef BASIC_IPSCPR
+
+/**
+Provider Implementation
+*/
+
+
+CIpSubConnectionProvider* CIpSubConnectionProvider::NewL(CIpSubConnectionProviderFactory& aFactory, CConnectionProviderBase& aConnProvider)
+/**
+Construct a new IP SubConnection Provider Object
+
+@param aFactory factory that create this object
+@param aConnProvider Connection Provider associated with this object
+*/
+	{
+	CIpSubConnectionProvider* ptr = new (ELeave) CIpSubConnectionProvider(aFactory, aConnProvider);
+
+    CleanupStack::PushL(ptr);
+    ptr->ConstructL();
+    CleanupStack::Pop();
+
+	return ptr;
+	}
+
+
+CIpSubConnectionProvider::CIpSubConnectionProvider(CIpSubConnectionProviderFactory& aFactory, CConnectionProviderBase& aConnProvider)
+	: CEmptySubConnectionProvider(aFactory, aConnProvider)
+	, iChannelId(-1)
+	, iPrtExtensions(_FOFF(CExtensionBase,iLink))
+	, iParametersSet(EFalse)
+/**
+IP SubConnection Provider Constructor
+
+@param aFactory factory that create this object
+@param aConnProvider Connection Provider associated with this object
+*/
+	{
+		__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider [this=%08x]:\tCIpSubConnectionProvider() [MConnectionDataClient=%08x]"),
+		   this, (MConnectionDataClient*)this));
+	}
+
+
+CIpSubConnectionProvider::~CIpSubConnectionProvider()
+/**
+IP SubConnection Provider Destructor
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::Destruct [%08x]"), this));
+
+	if( iChannelId >= 0 ) // Only send a Close if have opened a channel
+		{
+		TRAPD(ret,SendCloseL());
+		if( ret != KErrNone )
+			{
+			__IPCPRLOG(IpCprLog::Printf(_L("SendCloseL left with error: %d"), ret));
+			}
+		}
+
+	if( iWriter )
+		{
+		iWriter->Cancel();
+		delete iWriter;
+		iWriter = NULL;
+		}
+
+	if( iReader )
+		{
+		iReader->Cancel();
+		delete iReader;
+		iReader = NULL;
+		}
+
+	delete iPrtParameters;
+	delete iAsyncWriter;
+	ResetPrtExtensions();
+
+	iSocket.Close();
+	}
+
+
+void CIpSubConnectionProvider::ConstructL()
+/**
+IP SubConnection Provider Second Phase Constructor
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::Construct [%08x]"), this));
+
+	// Open a connection to the QoS PRT
+    _LIT(KDescPfqos, "pfqos");
+
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+    // If we couldn't open pipe to QoS framework then it is not supported
+    TInt ret = iSocket.Open(KDescPfqos);
+    if(ret == KErrNotFound)
+    {
+    	User::Leave(KErrNotSupported);
+    }
+    else if (ret != KErrNone)
+    {
+    	User::Leave(ret);
+    }
+#else
+    User::LeaveIfError(iSocket.Open(KDescPfqos));
+#endif
+    iUid = RProcess().Type();
+
+	iReader = CQoSMsgReader::NewL(this,	 iSocket);
+	iWriter = CQoSMsgWriter::NewL(this, iSocket);
+	iAsyncWriter = CAsyncWriter::NewL(iWriter);
+
+	/** Create the CQoSParameters to hold the Qos
+	* and Extension Parameters. The values will initially
+	be set to default
+	*/
+	iPrtParameters = new (ELeave) CQoSParameters;
+	// Set Default Uplink Parameters
+	iPrtParameters->SetUpLinkMaximumBurstSize(3000);  // for TokenBucketSizeUplink
+	iPrtParameters->SetUpLinkMaximumPacketSize(1500);	// for MaxPacketSizeUplink
+	iPrtParameters->SetUplinkBandwidth(1500);	// for TokenRateUplink
+	iPrtParameters->SetUpLinkAveragePacketSize(1500); // for MinimumPolicedUnitUplink
+	iPrtParameters->SetUpLinkPriority(KQoSLowestPriority); // for PriorityUplink
+	iPrtParameters->SetUpLinkDelay(0); // for DelayUplink
+	// Set Default Downlink parameters
+	iPrtParameters->SetDownLinkMaximumBurstSize(3000); // for TokenBucketSizeDownlink
+	iPrtParameters->SetDownLinkMaximumPacketSize(1500); // for MaxPacketSizeDownlink
+	iPrtParameters->SetDownlinkBandwidth(1500); // for TokenRateDownlink
+	iPrtParameters->SetDownLinkAveragePacketSize(1500); // for MinimumPolicedUnitDownlink
+	iPrtParameters->SetDownLinkPriority(KQoSLowestPriority); // for PriorityDownlonk
+	iPrtParameters->SetDownLinkDelay(0); // for DelayDownlink
+
+	iPrtParameters->SetAdaptMode(EFalse);
+//	iPrtParameters->SetHeaderMode(???);
+//	User::LeaveIfError(iPrtParameters->SetName(name));
+	}
+
+
+TAny* CIpSubConnectionProvider::FetchInterfaceInstanceL(CSubConnectionProviderBase& /*aProvider*/, const STypeId& aTid)
+	{
+	return (aTid == STypeId::CreateSTypeId(KConnectionClientExtUid,EConnectionEnumerateClients)) ? static_cast<MConnectionEnumerateClients*>(this) : NULL;
+	}
+
+void CIpSubConnectionProvider::DoDataClientJoiningL(MSubConnectionDataClient& aDataClient)
+/**
+Function called by Connection Provider when a socket is to be added to a QoS Flow
+
+@param aDataClient Data Client to add to the QoS Channel
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider [this=%08x]:\tDoDataClientJoiningL() [iDataClients.Count=%d] [aDataClient=%08x]"), this, iDataClients.Count(), &aDataClient));
+
+	// Can only join to a channel once it has been successfully routed
+	// Can only open/create/join the channel once the connection has been established
+	const TSockAddr* srcAddr = NULL;
+	const TSockAddr* dstAddr = NULL;
+	const TDesC8* connInfo;
+	if(aDataClient.ReadAddressInformation(srcAddr, dstAddr, connInfo) == KErrNone)
+		{
+		if( srcAddr == NULL || srcAddr->Family() == KAFUnspec )
+			{
+			__IPCPRLOG(IpCprLog::Printf(_L("Source Address not defined")));
+			User::Leave( KErrNotReady );
+			}
+
+		if( dstAddr == NULL || dstAddr->Family() == KAFUnspec )
+			{
+			__IPCPRLOG(IpCprLog::Printf(_L("Destination Address not defined")));
+			User::Leave( KErrNotReady );
+			}
+
+		if( connInfo == NULL )
+			{
+			__IPCPRLOG(IpCprLog::Printf(_L("Connection Information not defined")));
+			User::Leave( KErrNotReady );
+			}
+
+		TConnectionInfoBuf* connInfoBuf = (TConnectionInfoBuf*)connInfo->Ptr();
+		TUint32 iapId = (*connInfoBuf)().iIapId;
+
+		if( iChannelId >= 0 )
+			{
+			SendJoinL((TInetAddr)*srcAddr, (TInetAddr)*dstAddr, iapId, aDataClient.ProtocolId());
+			}
+		else
+			{
+			SendCreateL((TInetAddr)*srcAddr, (TInetAddr)*dstAddr, iapId, aDataClient.ProtocolId());
+			}
+		}
+	}
+
+
+void CIpSubConnectionProvider::DoDataClientLeaving(MSubConnectionDataClient& aDataClient)
+/**
+Function called by Connection Provider when a socket is to be removed from a QoS Flow
+
+@param aDataClient Data Client to remove from the QoS Channel
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider [this=%08x]:\tDoDataClientLeaving() [iDataClients.Count=%d] [aDataClient=%08x]"), this, iDataClients.Count(), &aDataClient));
+
+	// Can only leave on a routed conection that has been successfully
+	// attached to a QoS Channel.  Otherwise we cannot leave
+	const TSockAddr* srcAddr = NULL;
+	const TSockAddr* dstAddr = NULL;
+	const TDesC8* connInfo;
+	TInt err = aDataClient.ReadAddressInformation(srcAddr, dstAddr, connInfo);
+	if( err != KErrNone )
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Unable to read Address Information")));
+		return;
+		}
+
+	if( srcAddr == NULL || srcAddr->Family() == KAFUnspec )
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Source Address not defined")));
+		return;
+		}
+
+	if( dstAddr == NULL || dstAddr->Family() == KAFUnspec )
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Destination Address not defined")));
+		return;
+		}
+
+	if( connInfo == NULL )
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Connection Information not defined")));
+		return;
+		}
+
+	TConnectionInfoBuf* connInfoBuf = (TConnectionInfoBuf*)connInfo->Ptr();
+	TUint32 iapId = (*connInfoBuf)().iIapId;
+
+	if( iChannelId >= 0 )
+		{
+		TRAPD(ret, SendLeaveL((TInetAddr)*srcAddr, (TInetAddr)*dstAddr, iapId, aDataClient.ProtocolId()));
+		if (ret != KErrNone)
+			{
+			__IPCPRLOG(IpCprLog::Printf(_L("SendLeaveL left with err=%d"), ret));
+			}
+		}
+	else
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Attempted to leave on an unconnected channel")));
+		}
+	}
+
+
+void CIpSubConnectionProvider::DoSourceAddressUpdate(MSubConnectionDataClient& /*aDataClient*/, const TSockAddr& /*aSource*/)
+/**
+Function called by Connection Provider when the source address on a data client is set
+
+@param aDataClient Data Client affected
+@param aSource Source Address
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::DoSourceAddressUpdate [%08x]"), this));
+	// Not Interested in either souce or destination updates; wait until connected
+	}
+
+
+void CIpSubConnectionProvider::DoDestinationAddressUpdate(MSubConnectionDataClient& /*aDataClient*/, const TSockAddr& /*aDestination*/)
+/**
+Function called by Connection Provider when the destination address on a data client is set
+
+@param aDataClient Data Client affected
+@param aDestination Destination Address
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::DoDestinationAddressUpdate [%08x]"), this));
+	// Not Interested in either souce or destination updates; wait until connected
+	}
+
+
+void CIpSubConnectionProvider::DoDataClientRouted(MSubConnectionDataClient& aDataClient, const TSockAddr& aSource, const TSockAddr& aDestination, const TDesC8& aConnectionInfo)
+/**
+Function called by Connection Provider when the connection has been established
+
+@param aDataClient Data Client affected
+@param aSource Source Address
+@param aDestination Destination Address
+@param aConnectionInfo Connection Data
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::DoDestinationAddressUpdate [%08x]"), this));
+
+	TConnectionInfoBuf* connInfo = (TConnectionInfoBuf*)aConnectionInfo.Ptr();
+	TUint32 iapId = (*connInfo)().iIapId;
+
+  	if( aSource.Family() != KAFUnspec && aDestination.Family() != KAFUnspec)
+		{
+		// If already have a open channel add this socket.  o/w create a new channel
+		if( iChannelId >= 0 )
+			{
+			TRAPD(ret,SendJoinL((TInetAddr)aSource, (TInetAddr)aDestination, iapId, aDataClient.ProtocolId()));
+			if( ret != KErrNone )
+				{
+				__IPCPRLOG(IpCprLog::Printf(_L("SendJoinL left with error: %d"), ret));
+				}
+			}
+		else
+			{
+			TRAPD(ret,SendCreateL((TInetAddr)aSource, (TInetAddr)aDestination, iapId, aDataClient.ProtocolId()));
+			if( ret != KErrNone )
+				{
+				__IPCPRLOG(IpCprLog::Printf(_L("SendCreateL left with error: %d"), ret));
+				}
+			}
+		}
+	else
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Data Client Routed contains invalid source or dest address")));
+		}
+	}
+
+
+void CIpSubConnectionProvider::DoParametersAboutToBeSetL(CSubConParameterBundle& aParameterBundle)
+/**
+Function called by the Connection Provider before the QoS Parameters are set by the client
+
+@param aParameterBundle Container holding pending QoS Parameters
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::DoParametersAboutToBeSetL [%08x]"), this));
+
+	iParameterRelease = KParameterRelInvalid;
+	ConvertParametersFromESockL( aParameterBundle );
+	iParametersSet = ETrue;
+
+  	if(iChannelId >= 0)
+		{
+		SendSetQoSL();
+		}
+	}
+
+
+TInt CIpSubConnectionProvider::DoControl(TUint /*aOptionLevel*/, TUint /*aOptionName*/, TDes8& /*aOption*/)
+/**
+@param aOptionLevel
+@param aOptionName
+@param aOption
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::DoControl [%08x]"), this));
+
+	return KErrNotSupported;
+	}
+
+
+void CIpSubConnectionProvider::DoStartL()
+	{
+	}
+
+void CIpSubConnectionProvider::DoStop()
+	{
+	}
+
+CSubConnectionProviderBase* CIpSubConnectionProvider::DoNextLayer()
+	{
+	return NULL;
+	}
+
+CConnDataTransfer& CIpSubConnectionProvider::DoDataTransferL()
+	{
+	User::Leave(KErrNotSupported);
+	//unreachable code
+	return iNextLayer->DataTransferL();
+//	return *((CConnDataTransfer*)this);
+	}
+
+//MConnectionDataClient
+void CIpSubConnectionProvider::ConnectionGoingDown(CConnectionProviderBase& /*aConnProvider*/)
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::ConnectionGoingDown [%08x]"), this));
+	iConnectionProvider = NULL;
+	DeleteMeNow();
+	}
+
+void CIpSubConnectionProvider::Notify(TNotify /*aNotifyType*/,  CConnectionProviderBase* /*aConnProvider*/, TInt /*aError*/, const CConNotificationEvent* /*aConNotificationEvent*/)
+	{
+	}
+
+void CIpSubConnectionProvider::AttachToNext(CSubConnectionProviderBase* /*aSubConnProvider*/)
+	{
+	}
+
+
+
+void CIpSubConnectionProvider::SendOpenExistingL(const TInetAddr &aSrcAddr, const TInetAddr &aDstAddr, TUint32 aIapId, TUint32 aProtocolId)
+/**
+Sends a Message to QoS PRT to open a QoS Channel
+
+@param aSrcAddr Source Address
+@param aDstAddr Destination Address
+@param aIapId IAP Id
+@param aProtocolId Protocol Id
+*/
+    {
+	__IPCPRLOG(IpCprLog::Printf(_L("Sending PRT Msg: EPfqosOpenExistingChannel")));
+
+    CQoSMsg* msg = CQoSMsg::NewL(EPfqosOpenExistingChannel);
+    msg->AddConnInfo(aProtocolId, iUid, aIapId);
+    msg->AddSrcAddr(aSrcAddr);
+    msg->AddDstAddr(aDstAddr);
+    msg->AddChannel(0);
+
+    iWriter->Send(msg);
+    }
+
+
+void CIpSubConnectionProvider::SendCreateL(const TInetAddr &aSrcAddr, const TInetAddr &aDstAddr, TUint32 aIapId, TUint32 aProtocolId)
+/**
+Sends a Message to QoS PRT to create a QoS Channel
+
+@param aSrcAddr Source Address
+@param aDstAddr Destination Address
+@param aIapId IAP Id
+@param aProtocolId Protocol Id
+*/
+    {
+	__IPCPRLOG(IpCprLog::Printf(_L("Sending PRT Msg: EPfqosCreateChannel")));
+
+    CQoSMsg* msg = CQoSMsg::NewL(EPfqosCreateChannel);
+    msg->AddConnInfo(aProtocolId, iUid, aIapId);
+    msg->AddSrcAddr(aSrcAddr);
+    msg->AddDstAddr(aDstAddr);
+    msg->AddChannel(0);
+
+    TQoSParameters qosParams;
+    ConvertCQoSIntoTQoSParamsL(qosParams);
+	msg->AddQoSParameters(qosParams);
+    msg->AddExtensionPolicy(iPrtExtensions);
+	//Now we need to write to the qos.prt asynchronously. This becuase the TCP/IP stack in CIp6Flow::Connect() calls Bearer() before RefreshFlow()
+    iAsyncWriter->Send(msg);
+    }
+
+
+void CIpSubConnectionProvider::SendCloseL()
+/**
+Sends a Message to QoS PRT to close a QoS Channel
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("Sending PRT Msg: EPfqosDeleteChannel")));
+
+    CQoSMsg* msg = CQoSMsg::NewL(EPfqosDeleteChannel);
+    msg->AddChannel(iChannelId);
+
+    iWriter->Send(msg);
+	}
+
+
+void CIpSubConnectionProvider::SendJoinL(const TInetAddr &aSrcAddr, const TInetAddr &aDstAddr, TUint32 aIapId, TUint32 aProtocolId)
+/**
+Sends a Message to QoS PRT to add a socket to a QoS Channel
+
+@param aSrcAddr Source Address
+@param aDstAddr Destination Address
+@param aIapId IAP Id
+@param aProtocolId Protocol Id
+*/
+    {
+	__IPCPRLOG(IpCprLog::Printf(_L("Sending PRT Msg: EPfqosJoin")));
+
+    CQoSMsg* msg = CQoSMsg::NewL(EPfqosJoin);
+    msg->AddConnInfo(aProtocolId, iUid, aIapId);
+    msg->AddSrcAddr(aSrcAddr);
+    msg->AddDstAddr(aDstAddr);
+    msg->AddChannel(iChannelId);
+
+    iWriter->Send(msg);
+    }
+
+
+void CIpSubConnectionProvider::SendLeaveL(const TInetAddr &aSrcAddr, const TInetAddr &aDstAddr, TUint32 aIapId, TUint32 aProtocolId)
+/**
+Sends a Message to QoS PRT to remove a socket from a QoS Channel
+
+@param aSrcAddr Source Address
+@param aDstAddr Destination Address
+@param aIapId IAP Id
+@param aProtocolId Protocol Id
+*/
+    {
+	__IPCPRLOG(IpCprLog::Printf(_L("Sending PRT Msg: EPfqosLeave")));
+
+    CQoSMsg* msg = CQoSMsg::NewL(EPfqosLeave);
+    msg->AddConnInfo(aProtocolId, iUid, aIapId);
+    msg->AddSrcAddr(aSrcAddr);
+    msg->AddDstAddr(aDstAddr);
+    msg->AddChannel(iChannelId);
+
+    iWriter->Send(msg);
+    }
+
+
+
+void CIpSubConnectionProvider::SendSetQoSL()
+/**
+Sends Message to QoS PRT to update the parameters for a QoS Channel
+*/
+    {
+	__IPCPRLOG(IpCprLog::Printf(_L("Sending PRT Msg: EPfqosConfigChannel")));
+
+    CQoSMsg* msg = CQoSMsg::NewL(EPfqosConfigChannel);
+    msg->AddChannel(iChannelId);
+
+    TQoSParameters qosParams;
+    ConvertCQoSIntoTQoSParamsL(qosParams);
+    msg->AddQoSParameters(qosParams);
+    msg->AddExtensionPolicy(iPrtExtensions);
+
+    iWriter->Send(msg);
+    }
+
+
+void CIpSubConnectionProvider::ProcessPRTMsg(TPfqosMessage& aMsg)
+/**
+Process Messages sent from the PRT to the SubConnection Provider
+Messages are either replies or events
+
+@param aMsg the message from the PRT
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::ProcessPRTMsg [%08x]"), this));
+
+    if( aMsg.iBase.iMsg == NULL )
+    	{
+		__IPCPRLOG(IpCprLog::Printf(_L("Received malformed message from PRT")));
+    	}
+    else
+    	{
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Msg: %d"), aMsg.iBase.iMsg->pfqos_msg_type));
+	    switch(aMsg.iBase.iMsg->pfqos_msg_type)
+			{
+		case EPfqosEvent:
+			{
+			TRAPD(ret, ProcessPRTEventL(aMsg) );
+			if( ret != KErrNone )
+				{
+				__IPCPRLOG(IpCprLog::Printf(_L("ProcessPRTEventL left with error: %d"), ret));
+				}
+			}
+			break;
+
+		case EPfqosUpdate:
+		case EPfqosDelete:
+		case EPfqosAdd:
+		case EPfqosGet:
+		case EPfqosReject:
+		case EPfqosDump:
+		case EPfqosConfigure:
+		case EPfqosJoin:
+		case EPfqosLeave:
+		case EPfqosCreateChannel:
+		case EPfqosOpenExistingChannel:
+		case EPfqosDeleteChannel:
+		case EPfqosConfigChannel:
+		case EPfqosLoadFile:
+		case EPfqosUnloadFile:
+			{
+			TRAPD(ret, ProcessPRTReplyL(aMsg) );
+			if( ret != KErrNone )
+				{
+				__IPCPRLOG(IpCprLog::Printf(_L("ProcessPRTReplyL left with error: %d"), ret));
+				}
+			}
+		    break;
+
+		default:
+			__IPCPRLOG(IpCprLog::Printf(_L("Received Unknown PRT Msg: %d"), aMsg.iBase.iMsg->pfqos_msg_type));
+		    break;
+			}
+    	}
+	}
+
+
+void CIpSubConnectionProvider::ProcessPRTEventL(TPfqosMessage& aMsg)
+/**
+Process Events sent from the PRT to the SubConnection Provider
+
+@param aMsg the message from the PRT
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::ProcessPRTEventL [%08x]"), this));
+
+	// Only interested in Channel Events
+    if (aMsg.iEvent.iExt == NULL || aMsg.iFlowSpec.iExt == NULL || aMsg.iChannel.iExt == NULL)
+    	{
+		__IPCPRLOG(IpCprLog::Printf(_L("Received malformed event message from PRT")));
+    	return;
+    	}
+
+	MSubConnectionDataClient* client = NULL;
+	TInt ret = DetermineClient(aMsg, client);
+	if( ret != KErrNone || client == NULL )
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Could not determine DataClient from message.  Error=%d"), ret));
+		}
+
+	switch (aMsg.iEvent.iExt->event_type)
+		{
+	case KPfqosEventFailure:
+		{
+/*		
+		EQoSOk,
+    EQoSPolicyExists = -5119,       //< -5119 Policy exists in database
+    EQoSNoModules,					//< -5118 No QoS modules available
+    EQoSInterface,			        //< -5117 Flows are using different interfaces
+	EQoSModules,					//< -5116 Flows use different QoS modules
+	EQoSModuleLoadFailed,			//< -5115 Loading of QoS module failed
+	EQoSMessageCorrupt,				//< -5114 Pfqos message corrupted
+	EQoSJoinFailure,				//< -5113 Join to QoS channel failed
+	EQoSLeaveFailure,				//< -5112 Leave from QoS channel failed
+	EQoSNoInterface,				//< -5111 Network interface deleted
+	EQoSChannelDeleted,				//< -5110 QoS channel deleted
+	EQoSDowngradeForced				//< -5109 QoS parameters downgraded by administrative policy
+*/
+		CSubConNotificationEvent* event = NULL;
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Event: KPfqosEventFailure.  Error=%d"),aMsg.iBase.iMsg->pfqos_msg_errno));
+
+#if defined(QOS_ERROR_REPORTING) //Awaiting code delivery for qos and guqos to support this functionality 		
+		switch(aMsg.iBase.iMsg->pfqos_msg_errno)
+			{
+				case EQoSJoinFailure:
+				
+					if( client )
+						{
+						__IPCPRLOG(IpCprLog::Printf(_L("Join failed Event")));
+						client->JoinFailed(*this,aMsg.iBase.iMsg->pfqos_msg_errno);
+						}
+					break;
+				
+				case EQoSLeaveFailure:
+					if( client )
+						{
+						__IPCPRLOG(IpCprLog::Printf(_L("Leave failed Event")));
+						//We don't particularly care that it failed - just pretend that it was successful
+						client->LeaveComplete(*this);
+						}
+					break;
+				case EQoSNoInterface:
+				case EQoSChannelDeleted:
+					{
+					CSubConGenEventSubConDown* scde = CSubConGenEventSubConDown::NewL();
+					scde->SetError(aMsg.iBase.iMsg->pfqos_msg_errno);
+					event = scde;
+					iChannelId = -1;	
+					break;
+					}
+				case EQoSDowngradeForced:
+					{
+					event = CSubConGenEventParamsChanged::NewL();
+					break;
+					}
+					
+				case EQoSChannelFailed:
+					if( client )
+						{
+						__IPCPRLOG(IpCprLog::Printf(_L("Join failed Event")));
+						client->JoinFailed(*this,aMsg.iBase.iMsg->pfqos_msg_errno);
+						}
+					// no break here we want to continue into the next case statement;
+				case EQoSParamsRejected:
+					{
+					CSubConGenEventParamsRejected* scde = CSubConGenEventParamsRejected::NewL();
+					scde->SetError(aMsg.iBase.iMsg->pfqos_msg_errno);
+					scde->SetFamilyId(KSubConQoSFamily);
+					event = scde;
+					break;	
+					}
+
+				default:
+					__IPCPRLOG(IpCprLog::Printf(_L("Unknown event sent ")));			
+			};
+#else
+			if( client )
+				{
+				__IPCPRLOG(IpCprLog::Printf(_L("Join failed Event")));
+				client->JoinFailed(*this,aMsg.iBase.iMsg->pfqos_msg_errno);
+				CSubConGenEventParamsRejected* scde = CSubConGenEventParamsRejected::NewL();
+				/**
+				There can be two set of parameters that are sent to QOS either as KSubConQoSFamily
+				or as KSubConAuthorisationFamily. Here we should differentiate, the QOS is rejected 
+				because of which parameter family. 
+				At present there is no indication comes from the lower layer why the QOS has failed, and in 
+				all the case the member *aMsg.iBase.iMsg->pfqos_msg_type* will return *EPfQoSReject*.
+				
+				At the time of writing this code any differentiation method was not available to differentiate
+				between events. i.e whether the event is SBLP or UMTS events. So this has not been done.
+				This needs to be done when the TPfqosMessage will have the differentiation
+				*/
+				scde->SetError(aMsg.iBase.iMsg->pfqos_msg_errno);
+				scde->SetFamilyId(KSubConQoSFamily);
+				event = scde;
+				}			
+#endif
+		
+		// Setting QoS Parameters Failed
+		/**
+		There can be two set of parameters that are sent to QOS either as KSubConQoSFamily
+		or as KSubConAuthorisationFamily. Here we should differentiate, the QOS is rejected
+		because of which parameter family.
+		At present there is no indication comes from the lower layer why the QOS has failed, and in
+		all the case the member *aMsg.iBase.iMsg->pfqos_msg_type* will return *EPfQoSReject*.
+
+		At the time of writing this code any differentiation method was not available to differentiate
+		between events. i.e whether the event is SBLP or UMTS events. So this has not been done.
+		This needs to be done when the TPfqosMessage will have the differentiation
+		*/
+		if (event)
+			{
+				
+			NotifyClientEvent(*event);
+			delete event;
+			}
+		}
+	    break;
+
+	case KPfqosEventConfirm:
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Event: KPfqosEventConfirm")));
+
+		// Setting QoS Parameters OK
+		CSubConGenEventParamsGranted* event = CSubConGenEventParamsGranted::NewL();
+		ConvertParametersFromQOSL(aMsg, event);
+
+		NotifyClientEvent(*event);
+		delete event;
+
+		if( client != NULL )
+			{
+			client->JoinComplete(*this);
+			}
+		}
+	    break;
+
+	case KPfqosEventAdapt:
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Event: KPfqosEventAdapt")));
+
+		// Available QoS Changed
+		CSubConGenEventParamsChanged* event = CSubConGenEventParamsChanged::NewL();
+		event->SetError(aMsg.iBase.iMsg->pfqos_msg_errno);
+		ConvertParametersFromQOSL(aMsg, event);
+
+		NotifyClientEvent(*event);
+		delete event;
+		}
+	    break;
+
+	case KPfqosEventJoin:
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Event: KPfqosEventJoin")));
+		if (aMsg.iBase.iMsg->pfqos_msg_errno)
+		   {
+		   ProcessPRTError( aMsg, aMsg.iBase.iMsg->pfqos_msg_errno );
+		   return;
+		   }
+
+
+		CSubConGenEventDataClientJoined* event = CSubConGenEventDataClientJoined::NewL();
+
+		if( client )
+			{
+			const TSockAddr* SrcAddr = NULL;
+			const TSockAddr* DstAddr = NULL;
+			const TDesC8* connInfo;
+			client->ReadAddressInformation(SrcAddr, DstAddr, connInfo);  // return can be would have errored above
+
+			TConnectionInfoBuf* connInfoBuf = (TConnectionInfoBuf*)connInfo->Ptr();
+			TUint32 iapId = (*connInfoBuf)().iIapId;
+
+			event->SetSourceAddress( *SrcAddr );
+			event->SetDestAddress( *DstAddr );
+			event->SetIap( iapId );
+
+			client->JoinComplete(*this);
+			}
+
+		NotifyClientEvent(*event);
+		delete event;
+		}
+	    break;
+
+	case KPfqosEventLeave:
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Event: KPfqosEventLeave")));
+	
+		CSubConGenEventDataClientLeft* event = CSubConGenEventDataClientLeft::NewL();
+
+		if( client )
+			{
+			const TSockAddr* SrcAddr = NULL;
+			const TSockAddr* DstAddr = NULL;
+			const TDesC8* connInfo;
+			client->ReadAddressInformation(SrcAddr, DstAddr, connInfo);  // return can be would have errored above
+
+			TConnectionInfoBuf* connInfoBuf = (TConnectionInfoBuf*)connInfo->Ptr();
+			TUint32 iapId = (*connInfoBuf)().iIapId;
+
+			event->SetSourceAddress( *SrcAddr );
+			event->SetDestAddress( *DstAddr );
+			event->SetIap( iapId );
+			}
+
+		NotifyClientEvent(*event);
+		delete event;
+		
+		if( client != NULL )
+			{
+			client->LeaveComplete(*this);
+			}
+		}
+	    break;
+
+	default:
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Event: Unknown - %d"), aMsg.iEvent.iExt->event_type));
+	    break;
+		}
+	}
+
+void CIpSubConnectionProvider::ProcessPRTReplyL(TPfqosMessage& aMsg)
+/**
+Process Replies sent from the PRT to the SubConnection Provider
+
+@param aMsg the message from the PRT
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::ProcessPRTReplyL [%08x]"), this));
+
+	if( aMsg.iChannel.iExt == NULL )
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Received malformed reply message from PRT")));
+		}
+	else if( aMsg.iBase.iMsg->pfqos_msg_errno != KErrNone )
+    	{
+    	ProcessPRTError( aMsg, aMsg.iBase.iMsg->pfqos_msg_errno );
+    	}
+	else
+    	{
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Reply: %d"), aMsg.iBase.iMsg->pfqos_msg_type));
+
+		MSubConnectionDataClient* client = NULL;
+		TInt ret = DetermineClient(aMsg, client);
+		if( ret != KErrNone || client == NULL )
+			{
+			__IPCPRLOG(IpCprLog::Printf(_L("Could not determine DataClient from message.  Error=%d"),ret));
+			}
+
+		switch (aMsg.iBase.iMsg->pfqos_msg_type)
+			{
+		case EPfqosOpenExistingChannel:
+			iChannelId = aMsg.iChannel.iExt->channel_id;
+			__IPCPRLOG(IpCprLog::Printf(_L("Processing Reply for message: EPfqosOpenExistingChannel")));
+			break;
+
+		case EPfqosCreateChannel:
+			iChannelId = aMsg.iChannel.iExt->channel_id;
+			__IPCPRLOG(IpCprLog::Printf(_L("Processing Reply for message: EPfqosCreateChannel")));
+			//Now you will expect to complete the join here. This will not work becuase
+			//qos.prt send a reply before finishing the join down to the nif level
+			//we will have to delay the response until the event is received
+			break;
+
+		case EPfqosJoin:
+			__IPCPRLOG(IpCprLog::Printf(_L("Processing Reply for message: EPfqosJoin")));
+			//Now you will expect to complete the join here. This will not work becuase
+			//qos.prt send a reply before finishing the join down to the nif level
+			//we will have to delay the response until the event is received
+			break;
+
+		case EPfqosLeave:
+			__IPCPRLOG(IpCprLog::Printf(_L("Processing Reply for message: EPfqosLeave")));
+			break;
+
+		case EPfqosConfigChannel:
+			{
+			__IPCPRLOG(IpCprLog::Printf(_L("Processing Reply for message: EPfqosConfigChannel")));
+			}
+			break;
+
+		case EPfqosDeleteChannel:
+			iChannelId = -1;
+			__IPCPRLOG(IpCprLog::Printf(_L("Processing Reply for message: EPfqosDeleteChannel")));
+			break;
+
+		default:
+			__IPCPRLOG(IpCprLog::Printf(_L("Ignoring Reply for unknown message: %d"), aMsg.iBase.iMsg->pfqos_msg_type));
+			break;
+			}
+    	}
+
+	__IPCPRLOG(IpCprLog::Printf(_L("Provider=0x%x Channel=%d"), this, iChannelId));
+	}
+
+
+#ifdef _DEBUG
+void CIpSubConnectionProvider::ProcessPRTError(TInt aMsgType, TInt __IPCPRLOG(aError))
+/**
+Process Errors that occur in communicating between the PRT and the
+SubConnection Provider
+
+@param aMsgType the type of message that encountered the error
+@param aError the error ththas occurred
+*/
+	{
+	switch (aMsgType)
+		{
+	case EPfqosOpenExistingChannel:
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Error %d on EPfqosOpenExistingChannel"), aError));
+		break;
+
+	case EPfqosCreateChannel:
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Error %d on EPfqosCreateChannel"), aError));
+		break;
+
+	case EPfqosDeleteChannel:
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Error %d on EPfqosDeleteChannel"), aError));
+		break;
+
+	case EPfqosJoin:
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Error %d on EPfqosJoin"), aError));
+		break;
+
+	case EPfqosLeave:
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Error %d on EPfqosLeave"), aError));
+		break;
+
+	case EPfqosConfigChannel:
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Error %d on EPfqosConfigChannel"), aError));
+		break;
+
+   case  EPfqosEvent:
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Error %d on EPfqosEvent"), aError));
+		break;
+
+	default:
+		__IPCPRLOG(IpCprLog::Printf(_L("Received PRT Error %d on Unknown Message"), aError));
+		break;
+		}
+	}
+#endif
+
+
+void CIpSubConnectionProvider::ProcessPRTError(TPfqosMessage& aMsg, TInt aError)
+/**
+Process Errors that occur in communicating between the PRT and the
+SubConnection Provider
+
+@param aMsg the message from the PRT
+@param aError the error ththas occurred
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::ProcessPRTError [%08x]"), this));
+
+	if( aError != KErrNone)
+		{
+		TInt msgType = aMsg.iBase.iMsg->pfqos_msg_type;
+
+#ifdef _DEBUG
+		ProcessPRTError(msgType, aError);
+#endif
+
+		MSubConnectionDataClient* client = NULL;
+		TInt ret = DetermineClient(aMsg, client);
+		if( ret != KErrNone || client == NULL )
+			{
+			__IPCPRLOG(IpCprLog::Printf(_L("Could not determine DataClient from message.  Error=%d"),ret));
+			}
+
+		if( msgType == EPfqosJoin ||
+		    msgType == EPfqosOpenExistingChannel ||
+		    msgType == EPfqosCreateChannel ||
+		    (msgType == EPfqosEvent && aMsg.iBase.iMsg->pfqos_msg_errno == EQoSJoinFailure))
+			{
+			if( client )
+				{
+				client->JoinFailed(*this,aError);
+				}
+			}
+		else if( msgType == EPfqosConfigChannel )
+			{
+			//This will send an error only if ECom successfuly constructs the event object
+			CSubConGenEventParamsRejected* event = NULL;
+			TRAP_IGNORE(event = CSubConGenEventParamsRejected::NewL());
+			if (event)
+				{
+				/**
+				comments give in case of *KPfqosEventFailure* in function *ProcessPRTEventL*
+				will also applicable here
+				*/
+				if (aMsg.iBase.iMsg->pfqos_msg_errno == RPacketContext::EEtelPcktPolicyControlRejectionCode)
+					{
+					event->SetFamilyId(KSubConAuthorisationFamily);
+					}
+				else
+					{
+					event->SetFamilyId(KSubConQoSFamily);
+					}
+
+				event->SetError(aError);
+
+				NotifyClientEvent(*event);
+				delete event;
+				}
+			}
+		else if( msgType == EPfqosLeave ||
+		   (msgType == EPfqosEvent && aMsg.iBase.iMsg->pfqos_msg_errno == EQoSLeaveFailure))
+			{
+			// Not Interested in whether the leave was successful.  Inform client regardless
+			if( client != NULL )
+				{
+				client->LeaveComplete(*this);
+				}
+			}
+		else
+			{
+			if( client )
+				{
+				client->SubConnectionError(*this, MSubConnectionDataClient::ESubConnection, aError);
+				}
+			}
+		}
+	}
+
+
+TInt CIpSubConnectionProvider::DetermineClient(const TPfqosMessage& aMsg, MSubConnectionDataClient*& aDataClient)
+/**
+Determines which Data Client a message from the QoS PRT is for based upon source and destination
+address; and Protocol Id.
+
+@param aMsg QoS PRT Response Message
+@param aDataClient Output Variable as Data Client that matches reponse.
+
+@return KErrNone on finding the required client.  Client passed back as argument.
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::DetermineClient [%08x]"), this));
+
+	aDataClient = NULL;
+
+	const TInetAddr* msgSrcAddr = aMsg.iSrcAddr.iAddr;
+	const TInetAddr* msgDstAddr = aMsg.iDstAddr.iAddr;
+
+	if( msgSrcAddr == NULL || msgDstAddr == NULL || aMsg.iSelector.iExt == NULL )
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Received malformed message from PRT")););
+    	}
+    else
+		{
+		TUint32 msgProtocol = aMsg.iSelector.iExt->protocol;
+
+		__IPCPRLOG(
+			THostName srcName;
+			msgSrcAddr->OutputWithScope(srcName);
+			THostName dstName;
+			msgDstAddr->OutputWithScope(dstName);
+		    IpCprLog::Printf(_L("Msg SAddr[%S][%d] DAddr[%S][%d] Prot[%d]"), &srcName, msgSrcAddr->Port(), &dstName, msgDstAddr->Port(), msgProtocol);
+	    );
+
+		// Compare message parameters with those from each client finding the one required
+		TInt numClients = iDataClients.Count();
+		for( TInt index=0; index<numClients; index++ )
+			{
+			MSubConnectionDataClient* client = iDataClients[index];
+			if( client != NULL )
+				{
+				const TSockAddr* cliSrcAddr = NULL;
+				const TSockAddr* cliDstAddr = NULL;
+				const TDesC8* connInfo;
+				TInt err = client->ReadAddressInformation(cliSrcAddr, cliDstAddr, connInfo);
+				if( err != KErrNone )
+					{
+					__IPCPRLOG(IpCprLog::Printf(_L("Unable to read Address Information")));
+					continue;
+					}
+
+				if( cliSrcAddr != NULL && cliDstAddr != NULL && connInfo != NULL )
+					{
+					TUint32 cliProtocol = client->ProtocolId();
+
+					TInetAddr srcInetAddr(*cliSrcAddr);
+					TInetAddr dstInetAddr(*cliDstAddr);
+
+					if (dstInetAddr.Family() == KAfInet)
+						{
+						dstInetAddr.ConvertToV4Mapped();
+						}
+
+					__IPCPRLOG(
+						srcInetAddr.OutputWithScope(srcName);
+						dstInetAddr.OutputWithScope(dstName);
+			    		IpCprLog::Printf(_L("Cli SAddr[%S][%d] DAddr[%S][%d] Prot[%d]"), &srcName, srcInetAddr.Port(), &dstName, dstInetAddr.Port(), cliProtocol);
+			    	);
+
+					if( (msgSrcAddr->Port() == srcInetAddr.Port() &&
+					    (msgDstAddr->CmpAddr(dstInetAddr) && msgDstAddr->Port() == dstInetAddr.Port())) &&
+						msgProtocol == cliProtocol )
+						{
+						// Have our required client
+						__IPCPRLOG(IpCprLog::Printf(_L("Client Matched [%08x]"), client));
+						aDataClient = client;
+						break;
+						}
+					}
+				}
+			}
+    	}
+
+	if( aDataClient != NULL )
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Client Found")));
+		}
+	else
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("Client Not Found!")));
+		}
+
+	return aDataClient != NULL ? KErrNone : KErrNotFound;
+	}
+
+
+void CIpSubConnectionProvider::MapGenericParamsFromESockToPRTL(const CSubConQosGenericParamSet& generic) const
+/**
+Mapping function to map the generic parameters from the ESock to QoS PRT equivalent
+@param Generic Input structure contains the generic parameters
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::MapGenericParamsFromESockToPRTL")));
+	/**
+	Get and Set Uplink Parameters
+	*/
+	iPrtParameters->SetUpLinkMaximumBurstSize(generic.GetUpLinkMaximumBurstSize());
+	iPrtParameters->SetUpLinkMaximumPacketSize(generic.GetUpLinkMaximumPacketSize());
+	iPrtParameters->SetUplinkBandwidth(generic.GetUplinkBandwidth());
+	iPrtParameters->SetUpLinkAveragePacketSize(generic.GetUpLinkAveragePacketSize());
+	iPrtParameters->SetUpLinkPriority(generic.GetUpLinkPriority());
+	iPrtParameters->SetUpLinkDelay(generic.GetUpLinkDelay());
+	/**
+	Get and Set Downlink Parameters
+	*/
+	iPrtParameters->SetDownLinkMaximumBurstSize(generic.GetDownLinkMaximumBurstSize());
+	iPrtParameters->SetDownLinkMaximumPacketSize(generic.GetDownLinkMaximumPacketSize());
+	iPrtParameters->SetDownlinkBandwidth(generic.GetDownlinkBandwidth());
+	iPrtParameters->SetDownLinkAveragePacketSize(generic.GetDownLinkAveragePacketSize());
+	iPrtParameters->SetDownLinkPriority(generic.GetDownLinkPriority());
+	iPrtParameters->SetDownLinkDelay(generic.GetDownLinkDelay());
+	/**
+	Get and Set rest of the Parameters
+	*/
+	iPrtParameters->SetHeaderMode(generic.GetHeaderMode());
+	TName name = generic.GetName();
+	iPrtParameters->SetName(name);
+	}
+
+void CIpSubConnectionProvider::MapGenericParamsFromPRTToESockL(CSubConQosGenericParamSet& generic) const
+/**
+Map generic parameters from QoS PRT to the ESock Equivalents
+
+@param params input structure that contains the QoS PRT generic parameters
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::MapGenericParamsFromPRTToESockL")));
+	/**
+	Get and Set Uplink Parameters
+	*/
+	generic.SetUpLinkMaximumBurstSize(iPrtParameters->GetUpLinkMaximumBurstSize());
+	generic.SetUpLinkMaximumPacketSize(iPrtParameters->GetUpLinkMaximumPacketSize());
+	generic.SetUplinkBandwidth(iPrtParameters->GetUplinkBandwidth());
+	generic.SetUpLinkAveragePacketSize(iPrtParameters->GetUpLinkAveragePacketSize());
+	generic.SetUpLinkPriority(iPrtParameters->GetUpLinkPriority());
+	generic.SetUpLinkDelay(iPrtParameters->GetUpLinkDelay());
+	/**
+	Get and Set Downlink Parameters
+	*/
+	generic.SetDownLinkMaximumBurstSize(iPrtParameters->GetDownLinkMaximumBurstSize());
+	generic.SetDownLinkMaximumPacketSize(iPrtParameters->GetDownLinkMaximumPacketSize());
+	generic.SetDownlinkBandwidth(iPrtParameters->GetDownlinkBandwidth());
+	generic.SetDownLinkAveragePacketSize(iPrtParameters->GetDownLinkAveragePacketSize());
+	generic.SetDownLinkPriority(iPrtParameters->GetDownLinkPriority());
+	generic.SetDownLinkDelay(iPrtParameters->GetDownLinkDelay());
+	/**
+	Get and Set rest of the Parameters
+	*/
+	generic.SetHeaderMode(iPrtParameters->GetHeaderMode());
+	TName name = iPrtParameters->GetName();
+	generic.SetName(name);
+	}
+
+void CIpSubConnectionProvider::ConvertTQoSIntoCQoSParamsL(const TQoSParameters& aParameters)
+/**
+This function will copy the aParameters into the class CQoSParameters
+using member access functions
+@param aParameters input parameters that needs to be copied
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::ConvertTQoSIntoCQoSParamsL")));
+	/**
+	Get and Set Uplink Parameters
+	*/
+	iPrtParameters->SetUplinkBandwidth(aParameters.GetUplinkBandwidth());
+	iPrtParameters->SetUpLinkMaximumBurstSize(aParameters.GetUpLinkMaximumBurstSize());
+	iPrtParameters->SetUpLinkMaximumPacketSize(aParameters.GetUpLinkMaximumPacketSize());
+	iPrtParameters->SetUpLinkAveragePacketSize(aParameters.GetUpLinkAveragePacketSize());
+	iPrtParameters->SetUpLinkDelay(aParameters.GetUpLinkDelay());
+	iPrtParameters->SetUpLinkPriority(aParameters.GetUpLinkPriority());
+	/**
+	Get and Set Downlink Parameters
+	*/
+	iPrtParameters->SetDownlinkBandwidth(aParameters.GetDownlinkBandwidth());
+	iPrtParameters->SetDownLinkMaximumBurstSize(aParameters.GetDownLinkMaximumBurstSize());
+	iPrtParameters->SetDownLinkMaximumPacketSize(aParameters.GetDownLinkMaximumPacketSize());
+	iPrtParameters->SetDownLinkAveragePacketSize(aParameters.GetDownLinkAveragePacketSize());
+	iPrtParameters->SetDownLinkDelay(aParameters.GetDownLinkDelay());
+	iPrtParameters->SetDownLinkPriority(aParameters.GetDownLinkPriority());
+
+	iPrtParameters->SetAdaptMode(aParameters.AdaptMode());
+	iPrtParameters->SetHeaderMode(aParameters.GetHeaderMode());
+	const TName name = aParameters.GetName();
+	iPrtParameters->SetName(name);
+	}
+
+void CIpSubConnectionProvider::ConvertCQoSIntoTQoSParamsL(TQoSParameters& aParameters) const
+/**
+This function will copy the iParameters (CQoSParameters) into aParameters
+using member access functions
+@param aParameters output parameters that iParameters will be copied into
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::ConvertCQoSIntoTQoSParamsL")));
+	/**
+	Get and Set Uplink Parameters
+	*/
+	aParameters.SetUplinkBandwidth(iPrtParameters->GetUplinkBandwidth());
+	aParameters.SetUpLinkMaximumBurstSize(iPrtParameters->GetUpLinkMaximumBurstSize());
+	aParameters.SetUpLinkMaximumPacketSize(iPrtParameters->GetUpLinkMaximumPacketSize());
+	aParameters.SetUpLinkAveragePacketSize(iPrtParameters->GetUpLinkAveragePacketSize());
+	aParameters.SetUpLinkDelay(iPrtParameters->GetUpLinkDelay());
+	aParameters.SetUpLinkPriority(iPrtParameters->GetUpLinkPriority());
+
+	/**
+	Get and Set Downlink Parameters
+	*/
+	aParameters.SetDownlinkBandwidth(iPrtParameters->GetDownlinkBandwidth());
+	aParameters.SetDownLinkMaximumBurstSize(iPrtParameters->GetDownLinkMaximumBurstSize());
+	aParameters.SetDownLinkMaximumPacketSize(iPrtParameters->GetDownLinkMaximumPacketSize());
+	aParameters.SetDownLinkAveragePacketSize(iPrtParameters->GetDownLinkAveragePacketSize());
+	aParameters.SetDownLinkDelay(iPrtParameters->GetDownLinkDelay());
+	aParameters.SetDownLinkPriority(iPrtParameters->GetDownLinkPriority());
+
+	aParameters.SetAdaptMode(iPrtParameters->AdaptMode());
+	aParameters.SetHeaderMode(iPrtParameters->GetHeaderMode());
+	const TName name = iPrtParameters->GetName();
+	aParameters.SetName(name);
+	}
+
+
+void CIpSubConnectionProvider::MapExtensionParamsFromESockToPRTL(const CSubConQosIPLinkR99ParamSet& extension, TUmtsQoSParameters& params)
+/**
+Map extension parameters from QoS PRT to the ESock Equivalents
+
+@param extension input structure that contains the ESock extension parameters
+@param params structure updated to contains the equivalent QoS PRT extension parameters
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("MapExtensionParamsFromESockToPRTL")));
+
+	RPacketQoS::TTrafficClass trafficClass = extension.GetTrafficClass();
+	User::LeaveIfError(params.SetTrafficClass((TUmtsTrafficClass)trafficClass));
+
+	RPacketQoS::TDeliveryOrder deliveryOrder = extension.GetDeliveryOrder();
+	User::LeaveIfError(params.SetDeliveryOrder((TUmtsDeliveryOrder)deliveryOrder));
+
+	RPacketQoS::TErroneousSDUDelivery sduDelivery = extension.GetErroneousSDUDelivery();
+	User::LeaveIfError(params.SetDeliveryOfErroneusSdu((TUmtsErroneousSDUDelivery)sduDelivery));
+
+	RPacketQoS::TBitErrorRatio bitErrorRate = extension.GetResidualBitErrorRatio();
+	User::LeaveIfError(params.SetResidualBer((TUmtsBitErrorRatio)bitErrorRate));
+
+	RPacketQoS::TSDUErrorRatio sduErrorRatio = extension.GetSDUErrorRatio();
+	User::LeaveIfError(params.SetErrorRatio((TUmtsSDUErrorRatio)sduErrorRatio));
+
+	RPacketQoS::TTrafficHandlingPriority trafficHandlingPriority = extension.GetTrafficHandlingPriority();
+	User::LeaveIfError(params.SetPriority((TUmtsTrafficHandlingPriority)trafficHandlingPriority));
+
+	TInt transferDelay = extension.GetTransferDelay();
+	User::LeaveIfError(params.SetTransferDelay(transferDelay));
+
+	TInt maxSduSize = extension.GetMaxSduSize();
+	User::LeaveIfError(params.SetMaxSduSize(maxSduSize));
+
+	TInt maxBitRateUp = extension.GetMaxBitrateUplink();
+	User::LeaveIfError(params.SetMaxBitrateUplink(maxBitRateUp));
+
+	TInt maxBitRateDown = extension.GetMaxBitrateDownlink();
+	User::LeaveIfError(params.SetMaxBitrateDownlink(maxBitRateDown));
+
+	TInt guaBitRateUp = extension.GetGuaBitrateUplink();
+	User::LeaveIfError(params.SetGuaranteedBitrateUplink(guaBitRateUp));
+
+	TInt guaBitRateDown = extension.GetGuaBitrateDownlink();
+	User::LeaveIfError(params.SetGuaranteedBitrateDownlink(guaBitRateDown));
+
+    iParameterRelease = KParameterRel4Rel99;
+	}
+
+void CIpSubConnectionProvider::MapExtensionParamsFromESockToPRTL(const CSubConSBLPR5ExtensionParamSet& extension, CSblpParameters& params) const
+	{
+	TAuthToken authToken = extension.GetMAT();
+	params.SetMAT(authToken);
+
+	/**
+	Get Flow Identifires And store that into the RArray of Flow Ids
+	of SBLP Paramters
+	*/
+	RArray<CSblpParameters::TFlowIdentifier> arrFlowIds;
+	CleanupClosePushL(arrFlowIds);
+
+	TInt nrOfFlows = extension.GetNumberOfFlowIds();
+	for ( TInt i = 0; i < nrOfFlows; i ++ )
+	{
+	    const TFlowId & Fid = extension.GetFlowIdAt(i);
+		CSblpParameters::TFlowIdentifier FlowId;
+		FlowId.iMediaComponentNumber = Fid.GetMediaComponentNumber();
+		FlowId.iIPFlowNumber = Fid.GetIPFlowNumber();
+		arrFlowIds.AppendL(FlowId);
+	}
+	params.SetFlowIds(arrFlowIds);
+	CleanupStack::Pop(&arrFlowIds);
+	arrFlowIds.Close();
+	}
+
+void MapExtensionParamsFromPRTToESockL(TUmtsQoSParameters& params, CSubConQosIPLinkR99ParamSet& extension)
+/**
+Map extension parameters from ESock to the QoS PRT Equivalents
+
+@param params input structure that contains the QoS PRT extension parameters
+@param extension structure updated to contain the ESock equivalent extension parameters
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("MapExtensionParamsFromPRTToESockL")));
+
+	TUmtsTrafficClass trafficClass = params.TrafficClass();
+	extension.SetTrafficClass((RPacketQoS::TTrafficClass) trafficClass);
+
+	TUmtsDeliveryOrder deliveryOrder = params.DeliveryOrder();
+	extension.SetDeliveryOrder((RPacketQoS::TDeliveryOrder) deliveryOrder);
+
+	TUmtsErroneousSDUDelivery deliveryOfErroneusSdu = params.DeliveryOfErroneusSdu();
+	extension.SetErroneousSDUDelivery((RPacketQoS::TErroneousSDUDelivery) deliveryOfErroneusSdu);
+
+	TUmtsBitErrorRatio residualBer = params.ResidualBer();
+	extension.SetResidualBitErrorRatio((RPacketQoS::TBitErrorRatio) residualBer);
+
+	TUmtsSDUErrorRatio errorRatio = params.ErrorRatio();
+	extension.SetSDUErrorRatio((RPacketQoS::TSDUErrorRatio) errorRatio);
+
+	TUmtsTrafficHandlingPriority priority = params.Priority();
+	extension.SetTrafficHandlingPriority((RPacketQoS::TTrafficHandlingPriority) priority);
+
+	TInt transferDelay = params.TransferDelay();
+	extension.SetTransferDelay(transferDelay);
+
+	TInt maxSduSize = params.MaxSduSize();
+	extension.SetMaxSduSize(maxSduSize);
+
+	TInt maxBitrateUplink = params.MaxBitrateUplink();
+	extension.SetMaxBitrateUplink(maxBitrateUplink);
+
+	TInt maxBitrateDownlink = params.MaxBitrateDownlink();
+	extension.SetMaxBitrateDownlink(maxBitrateDownlink);
+
+	TInt guaBitrateUplink = params.GuaranteedBitrateUplink();
+	extension.SetGuaBitrateUplink(guaBitrateUplink);
+
+	TInt guaBitrateDownlink = params.GuaranteedBitrateDownlink();
+	extension.SetGuaBitrateDownlink(guaBitrateDownlink);
+	}
+
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5  	
+void CIpSubConnectionProvider::MapExtensionParamsFromESockToPRTL(const CSubConQosR5ParamSet& aExtension, TUmtsR5QoSParameters& aParams)
+/**
+Map extension parameters from QoS PRT to the ESock Equivalents
+
+@param extension input structure that contains the ESock extension parameters
+@param params structure updated to contains the equivalent QoS PRT extension parameters
+*/
+	{
+		
+	__IPCPRLOG(IpCprLog::Printf(_L("MapExtensionParamsFromESockToPRTL")));				
+	
+	MapExtensionParamsFromESockToPRTL(static_cast<const CSubConQosIPLinkR99ParamSet&>(aExtension), static_cast<TUmtsQoSParameters&>(aParams));
+		
+	TBool signallingIndicator = aExtension.GetSignallingIndicator();
+	User::LeaveIfError(aParams.SetSignallingIndicator(signallingIndicator));
+	
+	RPacketQoS::TSourceStatisticsDescriptor sourceStatisticsDescriptor = aExtension.GetSourceStatisticsDescriptor();
+	User::LeaveIfError(aParams.SetSourceStatisticsDescriptor(reinterpret_cast<TUmtsSourceStatisticsDescriptor&>(sourceStatisticsDescriptor)));
+
+    iParameterRelease = KParameterRel5;
+	}
+	
+void MapExtensionParamsFromPRTToESockL(TUmtsR5QoSParameters& aParams, CSubConQosR5ParamSet& aExtension)
+/**
+Map extension parameters from ESock to the QoS PRT Equivalents
+
+@param params input structure that contains the QoS PRT extension parameters
+@param extension structure updated to contain the ESock equivalent extension parameters
+*/
+	{
+	
+	__IPCPRLOG(IpCprLog::Printf(_L("MapExtensionParamsFromPRTToESockL")));
+		
+	MapExtensionParamsFromPRTToESockL(static_cast<TUmtsQoSParameters&>(aParams),static_cast<CSubConQosIPLinkR99ParamSet&>(aExtension));
+	
+	TBool signallingprtIndicator = aParams.SignallingIndicator();
+	aExtension.SetSignallingIndicator(signallingprtIndicator);
+	
+	TUmtsSourceStatisticsDescriptor sourceStatisticsprtDescriptor = aParams.SourceStatisticsDescriptor();
+	aExtension.SetSourceStatisticsDescriptor(reinterpret_cast<RPacketQoS::TSourceStatisticsDescriptor&>(sourceStatisticsprtDescriptor));
+	
+	}
+
+void CIpSubConnectionProvider::MapExtensionParamsFromESockToPRTL(const CSubConImsExtParamSet& aExtension, TImsParameter& aParams)
+/**
+Map extension parameters from QoS PRT to the ESock Equivalents
+
+@param extension input structure that contains the ESock extension parameters
+@param params structure updated to contains the equivalent QoS PRT extension parameters
+*/
+	{
+
+		
+	__IPCPRLOG(IpCprLog::Printf(_L("MapExtensionParamsFromESockToPRTL")));
+	
+	TBool IMSSignallingIndicator = aExtension.GetImsSignallingIndicator();
+	aParams.SetIMSSigallingIndicator(IMSSignallingIndicator);
+		
+	}
+	
+void MapExtensionParamsFromPRTToESockL(TImsParameter& aParams, CSubConImsExtParamSet& aExtension)
+/**
+Map extension parameters from ESock to the QoS PRT Equivalents
+
+@param params input structure that contains the QoS PRT extension parameters
+@param extension structure updated to contain the ESock equivalent extension parameters
+*/
+	{
+	
+	__IPCPRLOG(IpCprLog::Printf(_L("MapExtensionParamsFromPRTToESockL")));
+		
+	TBool IMSSignallingIndicator = aParams.GetIMSSigallingIndicator();
+	aExtension.SetImsSignallingIndicator(IMSSignallingIndicator);
+	
+	}
+
+#endif 
+// SYMBIAN_NETWORKING_UMTSR5 
+
+void CIpSubConnectionProvider::ResetPrtExtensions()
+	{
+	TQoSExtensionQueueIter iter(iPrtExtensions);
+	CExtensionBase *ext;
+	ext = iter++;
+	while (ext)
+		{
+		delete ext;
+		ext = iter++;
+		}
+	iPrtExtensions.Reset();
+	}
+
+void CIpSubConnectionProvider::ConvertParametersFromESockL(CSubConParameterBundle& aParameterBundle)
+/**
+Covert QoS Parameters sent from ESock to QoS PRT values and cache the values
+
+@param aParameterBundle the bundle that contains all of ESock's QoS Variables
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::ConvertParametersFromESockL [%08x]"), this));
+
+    ResetPrtExtensions();
+
+	CSubConParameterFamily* family = aParameterBundle.FindFamily(KSubConQoSFamily);
+	if(family)
+		{
+		CUmtsQoSPolicy* policy = CUmtsQoSPolicy::NewL();
+		CleanupStack::PushL(policy);
+		TBool policySet = EFalse;
+
+		// Map Requested Generic Parameters from ESock to PRT Values
+		CSubConQosGenericParamSet* generic = (CSubConQosGenericParamSet*)family->GetGenericSet(CSubConParameterFamily::ERequested);
+		if(generic)
+			{
+			TRAPD(err, MapGenericParamsFromESockToPRTL(*generic));
+			if( err != KErrNone )
+				{
+				__IPCPRLOG(IpCprLog::Printf(_L("Failed to convert from ESock to PRT Generic Parameters (Requested) with Error: %d"),err));
+				}
+			}
+
+		// Map Requested UMTS Parameters from ESock to PRT values
+		CSubConQosIPLinkR99ParamSet* extension = (CSubConQosIPLinkR99ParamSet*)family->FindExtensionSet(
+				STypeId::CreateSTypeId(KSubConIPParamsUid,KSubConQosIPLinkR99ParamsType), CSubConParameterFamily::ERequested);
+		if(extension)
+			{
+			TUmtsQoSParameters params;
+
+			TRAPD(err, MapExtensionParamsFromESockToPRTL(*extension, params));
+			if( err != KErrNone )
+				{
+				__IPCPRLOG(IpCprLog::Printf(_L("Failed to convert from ESock to PRT Extension Parameters (Requested) with Error: %d"),err));
+				}
+
+			policy->SetQoSRequested(params);
+			policySet = ETrue;
+			}
+
+		// Map Minimum UMTS Parameters from ESock to PRT values
+		extension = (CSubConQosIPLinkR99ParamSet*)family->FindExtensionSet(
+				STypeId::CreateSTypeId(KSubConIPParamsUid,KSubConQosIPLinkR99ParamsType), CSubConParameterFamily::EAcceptable);
+		if(extension)
+			{
+			TUmtsQoSParameters params;
+			TRAPD(err, MapExtensionParamsFromESockToPRTL(*extension,params));
+			if( err != KErrNone )
+				{
+				__IPCPRLOG(IpCprLog::Printf(_L("Failed to convert from ESock to PRT Extension Parameters (Minimum) with Error: %d"),err));
+				}
+
+			policy->SetQoSMinimum(params);
+			policySet = ETrue;
+			}
+
+		if(policySet)
+			{
+			iPrtExtensions.AddFirst(*policy);
+			CleanupStack::Pop();
+			}
+		else
+			{
+		    CleanupStack::PopAndDestroy(policy);
+			}
+		
+#ifdef SYMBIAN_NETWORKING_UMTSR5  
+
+		CUmtsR5QoSPolicy* policyR5 = CUmtsR5QoSPolicy::NewL();
+		CleanupStack::PushL(policyR5);
+		TBool policySetR5 = EFalse;
+		// Map Requested UMTS Parameters from ESock to PRT values
+		CSubConQosR5ParamSet* extensionR5 = static_cast<CSubConQosR5ParamSet*>(family->FindExtensionSet(STypeId::CreateSTypeId(KSubConIPParamsUid,KSubConQosR5ParamsType), CSubConParameterFamily::ERequested));
+		if(extensionR5)
+			{
+			 TUmtsR5QoSParameters paramsR5;
+	         TRAPD(err, MapExtensionParamsFromESockToPRTL(*extensionR5, paramsR5));
+			 if( err != KErrNone )
+				{
+				__IPCPRLOG(IpCprLog::Printf(_L("Failed to convert from ESock to PRT Extension Parameters (Requested) with Error: %d"),err));
+				}
+
+			policyR5->SetQoSRequested(paramsR5);
+			policySetR5 = ETrue;
+			}
+		// Map Minimum UMTS Parameters from ESock to PRT values
+		extensionR5 = static_cast<CSubConQosR5ParamSet*>(family->FindExtensionSet(STypeId::CreateSTypeId(KSubConIPParamsUid,KSubConQosR5ParamsType), CSubConParameterFamily::EAcceptable));
+		if(extensionR5)
+			{
+			TUmtsR5QoSParameters paramsR5;
+			TRAPD(err, MapExtensionParamsFromESockToPRTL(*extensionR5,paramsR5));
+			if( err != KErrNone )
+				{
+				__IPCPRLOG(IpCprLog::Printf(_L("Failed to convert from ESock to PRT Extension Parameters (Minimum) with Error: %d"),err));
+				}
+
+			policyR5->SetQoSMinimum(paramsR5);
+			policySetR5 = ETrue;
+			}
+
+		if(policySetR5)
+			{
+			iPrtExtensions.AddFirst(*policyR5);
+			CleanupStack::Pop();
+			}
+		else
+			{
+		    CleanupStack::PopAndDestroy(policyR5);
+			}
+		
+			
+			CImsPolicy* policyIms = CImsPolicy ::NewL();
+			CleanupStack::PushL(policyIms);
+			TBool policySetIms = EFalse;
+			// Map Requested UMTS IMS Parameters from ESock to PRT values
+			CSubConImsExtParamSet* extensionIms = static_cast<CSubConImsExtParamSet*>(family->FindExtensionSet(STypeId::CreateSTypeId(KSubConIPParamsUid,KSubConImsExtParamsType), CSubConParameterFamily::ERequested));
+		if(extensionIms)
+			{
+			TImsParameter paramsIms;
+
+			TRAPD(err, MapExtensionParamsFromESockToPRTL(*extensionIms, paramsIms));
+			if( err != KErrNone )
+				{
+				__IPCPRLOG(IpCprLog::Printf(_L("Failed to convert from ESock to PRT Extension Parameters (Requested) with Error: %d"),err));
+				}
+			
+			policyIms->SetImsParameter(paramsIms); 
+			policySetIms = ETrue;
+			}
+	
+		if(policySetIms)
+			{
+			iPrtExtensions.AddFirst(*policyIms);
+			CleanupStack::Pop();
+			}
+		else
+			{
+		    CleanupStack::PopAndDestroy(policyIms);
+			}
+		
+#endif 
+// SYMBIAN_NETWORKING_UMTSR5 
+	
+	}
+
+	// Convert SBLP set if present
+	// Check for the presence of the family in the bundle
+	CSubConParameterFamily* sblpFamily = aParameterBundle.FindFamily(KSubConAuthorisationFamily);
+	if (sblpFamily)
+		{
+		CSblpPolicy* policy = CSblpPolicy::NewL();
+		CleanupStack::PushL(policy);
+		TBool policySet = EFalse;
+
+		/**
+		Extract the generic and extension Parmaters of the Family. At present the generic
+		parameters will just contains a dummy , and will not be used. The code is commented
+		and can be enabled sometimes when any parameter varification at the code is required
+		*/
+		// CSubConAuthorisationGenericParamSet* generic = (CSubConAuthorisationGenericParamSet*)SblpFamily->GetGenericSet(CSubConParameterFamily::ERequested);
+		/**
+		There can be more than one extension set containing multiple MATs, as a requirement for the R6.
+		currently the APIs in CSubConParameterFamily is not able to extract multiple parameters. once this
+		is done, the code below must be changed to run on a loop on number of extensions
+		*/
+
+		// Map Requested UMTS Parameters from ESock to PRT values
+		CSubConSBLPR5ExtensionParamSet* extension = (CSubConSBLPR5ExtensionParamSet*)sblpFamily->FindExtensionSet(
+				STypeId::CreateSTypeId(KSubConIPParamsUid,KSubConnSBLPR5ExtensionParamsType), CSubConParameterFamily::ERequested);
+		if(extension)
+			{
+			CSblpParameters* params = new (ELeave)CSblpParameters;
+			CleanupStack::PushL(params);
+			TRAPD(err, MapExtensionParamsFromESockToPRTL(*extension,*params));
+			if( err != KErrNone )
+				{
+				__IPCPRLOG(IpCprLog::Printf(_L("Failed to convert from ESock to PRT Extension Parameters (Requested) with Error: %d"),err));
+				}
+
+			policy->SetSblpParameters(*params); //does a bitwise copy therefore we must still delete params afterwards
+			policySet = ETrue;
+			CleanupStack::Pop(params);
+			delete params;
+			}
+
+		if( policySet )
+			{
+			iPrtExtensions.AddFirst(*policy);
+			CleanupStack::Pop();
+			}
+		else
+    		{
+		    CleanupStack::PopAndDestroy(policy);
+	    	}
+		}
+	}
+
+
+void CIpSubConnectionProvider::ConvertParametersFromQOSL(TPfqosMessage& aMsg, CSubConGenEventParamsGranted* aEvent)
+/**
+Convert parameters from a PRT response to ESock equivalents.  PRT parameters are cached
+
+@param aMsg QoS PRT Response Message
+@param aEvent ESock event to contain changed QoS Parameters
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CIpSubConnectionProvider::ConvertParametersFromQOSL [%08x]"), this));
+
+	/** Changed as per usase of CQosParamaters instead of
+	TQoSParameter
+	*/
+
+    TQoSParameters qosParams;
+	aMsg.SetQoSParameters(qosParams);
+
+    // Copy qosParams into the iPrtParameters
+	ConvertTQoSIntoCQoSParamsL(qosParams);
+	aEvent->SetFamily(KSubConQoSFamily);
+
+	CSubConQosGenericParamSet* generic = CSubConQosGenericParamSet::NewL();
+	MapGenericParamsFromPRTToESockL(*generic);
+	aEvent->SetGenericSet(generic);
+
+
+
+    TSglQueIter<CPfqosPolicyData> iter(aMsg.iExtensions);
+	CPfqosPolicyData* data = NULL;
+	
+	// for each pfqos extension that exists in aMsg
+	while ((data = iter++) != NULL)
+		{
+	    const TUint8 *p = data->Data().Ptr();
+	    TInt length = data->Data().Length();
+	    const struct pfqos_configure* pfqosExtConfig = reinterpret_cast<const struct pfqos_configure*>(p);
+
+	    if (length > (TInt)sizeof(pfqos_configure) &&
+		    pfqosExtConfig->pfqos_configure_len * 8 == length &&
+		    pfqosExtConfig->pfqos_ext_type == EPfqosExtExtension)
+	    	{
+	    	
+	    	// pfqos_extension struct is located straight after pfqos_configure struct
+		    p += sizeof(struct pfqos_configure);
+		    const struct pfqos_extension* pfqosExtension = reinterpret_cast<const struct pfqos_extension*>(p);
+			TInt extType = pfqosExtension->pfqos_extension_type;
+
+			CExtensionBase* scPfqosExtension = NULL;
+			TQoSExtensionQueueIter iter2(iPrtExtensions);
+			
+			// for each pfqos extension that has been configured in this subconnection
+			while ((scPfqosExtension = iter2++) != NULL)
+				{
+				if (scPfqosExtension->Type() == extType)
+					{
+					// the extension in the message matches an extension that is configured on the
+					// subconnection, now we can parse it
+					scPfqosExtension->ParseMessage(data->Data());
+
+                    CSubConExtensionParameterSet* extension = NULL;
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+                    switch (extType)
+                        {
+						case KPfqosExtensionUmts:                   
+#endif
+						    {
+							CUmtsQoSPolicy *policy = static_cast<CUmtsQoSPolicy*>(scPfqosExtension);
+							TNegotiatedUmtsQoSParameters grantedQoS;
+							policy->GetQoSNegotiated(grantedQoS);
+							extension = CSubConQosIPLinkR99ParamSet::NewL();
+                            CleanupStack::PushL(extension);
+							MapExtensionParamsFromPRTToESockL(grantedQoS,*static_cast<CSubConQosIPLinkR99ParamSet*>(extension));
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+                            break;
+						    }
+                        case KPfqosR5ExtensionUmts:
+                            extension = MapFromUmtsR5ExtensionL(static_cast<CUmtsR5QoSPolicy*>(scPfqosExtension));
+                            CleanupStack::PushL(extension);
+                            break;
+
+                        case KPfqosExtensionIMS:
+                            extension = MapFromImsExtensionL(static_cast<CImsPolicy*>(scPfqosExtension));
+                            CleanupStack::PushL(extension);
+                            break;
+#endif
+                        }
+
+                    if (extension)
+                        {
+                        // Need to add it to the cleanup stack so we don't lose the ptr
+                        // in the event that AddExtensionSetL leaves
+	                    aEvent->AddExtensionSetL(extension);
+	                    CleanupStack::Pop(extension);
+                        }
+
+					// Next extension from aMsg
+					break;
+					}
+				}
+			}
+		}
+	}
+	
+
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+CSubConExtensionParameterSet* CIpSubConnectionProvider::MapFromUmtsR5ExtensionL (const CUmtsR5QoSPolicy* aPolicy)
+    {
+    ASSERT(aPolicy);
+    
+	TNegotiatedUmtsR5QoSParameters grantedR5QoS;
+	aPolicy->GetQoSNegotiated(grantedR5QoS);
+	
+	CSubConExtensionParameterSet* paramSet;
+
+    switch (iParameterRelease)
+        {
+        case KParameterRel5:
+    		paramSet = CSubConQosR5ParamSet::NewL();
+    		CleanupStack::PushL(paramSet);
+    		MapExtensionParamsFromPRTToESockL(static_cast<TUmtsR5QoSParameters&>(grantedR5QoS),
+    		    *static_cast<CSubConQosR5ParamSet*>(paramSet));
+    		CleanupStack::Pop(paramSet);
+            break;
+
+        case KParameterRel4Rel99:
+    		paramSet = CSubConQosR99ParamSet::NewL();
+    		CleanupStack::PushL(paramSet);
+    		MapExtensionParamsFromPRTToESockL(static_cast<TUmtsQoSParameters&>(grantedR5QoS),
+    		    *static_cast<CSubConQosR99ParamSet*>(paramSet));
+            CleanupStack::Pop(paramSet);
+            break;
+    
+        default:
+            // Break in debug builds
+            ASSERT(EFalse);
+            return NULL;
+        }
+    
+    return paramSet;
+    }
+
+
+CSubConExtensionParameterSet* CIpSubConnectionProvider::MapFromImsExtensionL (const CImsPolicy* aPolicy)
+    {
+    ASSERT(aPolicy);
+    
+	TImsParameter grantedImsQoS; 
+	aPolicy->GetImsParameter(grantedImsQoS); 
+
+	CSubConImsExtParamSet* extensionIms = CSubConImsExtParamSet::NewL();
+	CleanupStack::PushL(extensionIms);
+	MapExtensionParamsFromPRTToESockL(grantedImsQoS, *extensionIms);
+	CleanupStack::Pop(extensionIms);
+	
+	return extensionIms;
+    }
+#endif
+// SYMBIAN_NETWORKING_UMTSR5
+
+#endif
+// BASIC_IPSCPR
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/src/ipscprlog.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,73 @@
+// 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 "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:
+// Implementation file for the IP CPR Logger
+// 
+//
+
+/**
+ @file ipcprlog.cpp
+*/
+
+#ifdef _DEBUG
+
+#include <e32std.h>
+#include "ipscprlog.h"
+#include "comms-infras/commsdebugutility.h"
+
+/**
+Comms Debug Utility Folder Name
+@internalComponent
+*/
+_LIT(KQFrameLogFolder, "SubConn");
+
+/**
+Comms Debug Utilitiy File Name
+@internalComponent
+*/
+_LIT(KQFrameLogFile, "ipscpr");
+
+void IpCprLog::Printf(TRefByValue<const TDesC> aFmt,...)
+/**
+Write arguments in supplied format to log file
+*/
+	{
+#if defined __FLOG_ACTIVE
+	VA_LIST list;
+	VA_START(list,aFmt);
+	RFileLogger::WriteFormat(KQFrameLogFolder(), KQFrameLogFile(), EFileLoggingModeAppend, aFmt, list);
+#else // stop variable not used message
+	(void)aFmt;
+	(void)KQFrameLogFolder();
+	(void)KQFrameLogFile();
+#endif
+	}
+
+void IpCprLog::Printf(TRefByValue<const TDesC8> aFmt,...)
+/**
+Write arguments in supplied format to log file
+*/
+	{
+#if defined __FLOG_ACTIVE
+	VA_LIST list;
+	VA_START(list,aFmt);
+	RFileLogger::WriteFormat(KQFrameLogFolder(), KQFrameLogFile(), EFileLoggingModeAppend, aFmt, list);
+#else
+	(void)aFmt;
+	(void)KQFrameLogFolder();
+	(void)KQFrameLogFile();
+#endif
+	}
+
+#endif // _DEBUG
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/src/ipscprlog.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,62 @@
+/**
+* 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 "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:
+* Header file for the IP CPR Logger
+* 
+*
+*/
+
+
+
+/**
+ @file ipcprlog.h
+*/
+
+#ifndef __IPCPRLOG_H__
+#define __IPCPRLOG_H__
+
+#include <e32std.h>
+
+#ifdef _DEBUG
+
+/**
+@internalComponent
+*/
+#define __IPCPRLOG(x) x
+
+
+class IpCprLog
+/**
+Provides a wrapper around use of Comms Debug Utility for the the
+IP Connection Provider.  Calls are usuallly enclosed with the use
+of the LOG macro.  This will thus remove calls to logging in
+release builds.
+
+@internalComponent
+
+@released Since v9.0
+*/
+	{
+public:
+	static void Printf(TRefByValue<const TDesC8> aFmt, ...);
+	static void Printf(TRefByValue<const TDesC> aFmt, ...);
+	};
+
+#else
+
+#define __IPCPRLOG(x)
+
+#endif
+
+#endif // __IPCPRLOG_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/src/qos_msg.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,393 @@
+// 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 "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:
+// Implementation file for the QoS Mapping Messages
+// 
+//
+
+/**
+ @file qos_msg.cpp
+*/
+
+#include "pfqos_stream.h"
+#include "pfqoslib.h"
+#include "ipscpr.h"
+#include "qos_msg.h"
+#include "ipscprlog.h"
+
+
+const TIp6Addr KInet6AddrMask = {{{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+                                  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}}};
+
+const TInt KQoSDefaultBufSize = 8000;
+
+
+CQoSMsg* CQoSMsg::NewL( TPfqosMessages aMsgType )
+/**
+Create a new QoS PRT Message
+
+@param aMsgType Message Type
+*/
+	{
+	CQoSMsg* msg = new (ELeave) CQoSMsg();
+
+	CleanupStack::PushL( msg );
+	msg->ConstructL( aMsgType );
+	CleanupStack::Pop();
+
+	return msg;
+	}
+
+
+CQoSMsg::~CQoSMsg()
+/**
+Destructor
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsg::Destroy [%08x] Type=%d"), this, iType));
+
+	delete iMsg;
+	iMsg = NULL;
+	}
+
+
+CQoSMsg::CQoSMsg()
+/**
+Constructor
+*/
+	{
+	}
+
+
+void CQoSMsg::ConstructL( TPfqosMessages aMsgType )
+/**
+QoS PRT Message second phase construction
+
+@param aMsgType Message Type
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsg::Construct [%08x] Type=%d"), this, aMsgType));
+
+	iMsg = CPfqosStream::NewL(KQoSDefaultBufSize);
+	iMsg->Init((TUint8)aMsgType);
+	iType = aMsgType;
+	}
+
+
+void CQoSMsg::AddSrcAddr(const TInetAddr &aAddr)
+/**
+Adds Source Address Information to the QoS PRT Message
+
+@param aAddr Source Address
+*/
+	{
+	TInetAddr srcInetAddr(aAddr);
+	srcInetAddr.SetFamily(KAFUnspec);
+	srcInetAddr.SetAddress(KInet6AddrNone);
+
+	TInetAddr mask;
+	mask.SetAddress(KInet6AddrMask);
+	iMsg->AddSrcAddress(srcInetAddr, mask, (TUint16)srcInetAddr.Port()); 
+	}
+
+
+void CQoSMsg::AddDstAddr(const TInetAddr &aAddr)
+/**
+Adds Destination Address Information to the QoS PRT Message
+
+@param aAddr Destination Address
+*/
+	{
+	TInetAddr dstInetAddr(aAddr);
+	if (dstInetAddr.Family() == KAfInet)
+		{
+		dstInetAddr.ConvertToV4Mapped();
+		}
+
+	TInetAddr mask;
+	mask.SetAddress(KInet6AddrMask);
+	iMsg->AddDstAddress(dstInetAddr, mask, (TUint16)dstInetAddr.Port()); 
+	}
+
+
+void CQoSMsg::AddExtensionPolicy(TQoSExtensionQueue& aExtensions)
+/**
+Add QoS Extension Parameters to the QoS Message
+
+@param aExtensions Collection of Extensions Parameters
+*/
+	{
+	TQoSExtensionQueueIter iter(aExtensions);
+	CExtensionBase* extension;
+	while ((extension=iter++) != NULL)
+		{
+		TDesC8& extData = extension->Data();
+		iMsg->AddExtensionPolicy(extData);
+		}
+	}
+
+
+void CQoSMsg::Send(RInternalSocket &aSocket, TRequestStatus& aStatus)
+/** 
+Sends the current message to the QoS PRT
+
+@param aSocket Internal Socket over which to send a message
+@param aStatus Request Status
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsg::Send [%08x] Type=%d"), this, iType));
+	
+	iMsg->Send(aSocket, aStatus);
+	}
+
+
+// ###########################################################
+
+
+CQoSMsgWriter* CQoSMsgWriter::NewL(CIpSubConnectionProvider* aOwner, RInternalSocket& aSocket)
+/**
+Create QoS PRT Message Writer
+
+@param aOwner The IP SubConnection Provider that creates this object
+@param aSocket reference to an Internal Socket owned by the IP SubConnection Provider
+*/
+	{
+	return new (ELeave) CQoSMsgWriter(aOwner, aSocket);
+	}
+
+
+CQoSMsgWriter::CQoSMsgWriter(CIpSubConnectionProvider* aOwner, RInternalSocket& aSocket)
+/**
+Constructor
+
+@param aOwner The IP SubConnection Provider that creates this object
+@param aSocket reference to an Internal Socket owned by the IP SubConnection Provider
+*/
+	: CActive(EPriorityStandard)
+	, iOwner(aOwner)
+	, iSocket(aSocket)
+	, iClosing(EFalse)
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsgWriter::Construct [%08x]"), this));
+
+	CActiveScheduler::Add(this);
+	iPendingMsg.SetOffset(_FOFF(CQoSMsg, iLink));
+	}
+
+
+CQoSMsgWriter::~CQoSMsgWriter()
+/**
+Destructor
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsgWriter::Destroy [%08x]"), this));
+
+	if (IsActive())
+		{
+		Cancel();
+		}
+
+	iClosing = ETrue;
+
+	if (iCurrentMsg)
+		{
+		delete iCurrentMsg;
+		iCurrentMsg = NULL;
+		}
+
+	while (!iPendingMsg.IsEmpty())
+		{
+		CQoSMsg* msg = iPendingMsg.First();
+		iPendingMsg.Remove(*msg);
+		delete msg;
+		}
+
+	iPendingMsg.Reset();
+	}
+
+
+void CQoSMsgWriter::Send(CQoSMsg* aMsg)
+/**
+Sends a Message to the QoS PRT
+
+@param aMsg The message to send
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsgWriter::Send [%08x]"), this));
+
+	// Can only process one message at a time.
+	if (IsActive())
+		{
+		iPendingMsg.AddLast(*aMsg);
+		}
+	else
+		{
+		iCurrentMsg = aMsg;
+		iCurrentMsg->Send(iSocket, iStatus);
+		SetActive();
+		}
+	}
+
+
+void CQoSMsgWriter::RunL()
+/**
+Active Object main processing function
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsgWriter::RunL [%08x] - Enter"), this));
+
+	TInt err = iStatus.Int();
+	if (err != KErrNone && iOwner)
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsgWriter::RunL [%08x] - Process Error"), this));
+#ifdef _DEBUG
+		TInt msgType = EPfqosReserved;
+		if( iCurrentMsg )
+			{
+			msgType = iCurrentMsg->iType;
+			}
+		iOwner->ProcessPRTError(msgType, err);
+#endif
+		}
+
+	delete iCurrentMsg;
+	iCurrentMsg = NULL;
+
+	if (!iClosing && !iPendingMsg.IsEmpty())
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsgWriter::RunL [%08x] - Send next message"), this));
+		CQoSMsg* msg = iPendingMsg.First();
+		iPendingMsg.Remove(*msg);
+		iCurrentMsg = msg;
+		iCurrentMsg->Send(iSocket, iStatus);
+		SetActive();
+		}
+
+	__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsgWriter::RunL [%08x] - Exit"), this));
+	}
+
+
+// ###########################################################
+
+
+CQoSMsgReader* CQoSMsgReader::NewL( CIpSubConnectionProvider *aOwner, RInternalSocket& aSocket)
+/**
+Create QoS PRT Message Reader
+
+@param aOwner The IP SubConnection Provider that creates this object
+@param aSocket reference to an Internal Socket owned by the IP SubConnection Provider
+*/
+	{
+	CQoSMsgReader* reader = new (ELeave) CQoSMsgReader(aOwner, aSocket);
+
+	CleanupStack::PushL( reader );
+	reader->ConstructL();
+	CleanupStack::Pop();
+
+	return reader;
+	}
+
+
+CQoSMsgReader::CQoSMsgReader(CIpSubConnectionProvider *aOwner, RInternalSocket& aSocket)
+/**
+Constructor
+
+@param aOwner The IP SubConnection Provider that creates this object
+@param aSocket reference to an Internal Socket owned by the IP SubConnection Provider
+*/
+	: CActive(EPriorityStandard)
+	, iOwner(aOwner)
+	, iSocket(aSocket)
+	, iRecvPtr(0,0)
+	, iClosing(EFalse)
+	{
+	CActiveScheduler::Add(this);
+	}
+
+
+CQoSMsgReader::~CQoSMsgReader()
+/**
+Destructor
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsgReader::Destruct [%08x]"), this));
+
+	if (IsActive())
+		{
+		Cancel();
+		}
+
+	iClosing = ETrue;
+
+	if (iRecvBuf)
+		{
+		delete iRecvBuf;
+		iRecvBuf = NULL;
+		}
+	}
+
+
+void CQoSMsgReader::ConstructL()
+/**
+QoS PRT Message Reader second phase construction
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsgReader::Construct [%08x]"), this));
+
+	iRecvBuf = HBufC8::NewL(KQoSDefaultBufSize);
+	TPtr8 tmp(iRecvBuf->Des());
+	iRecvPtr.Set(tmp);
+
+	iRecvPtr.Zero();
+	iRecvPtr.SetLength(KQoSDefaultBufSize);
+	iSocket.Recv(iRecvPtr, 0, iStatus);
+	SetActive();
+	}
+
+
+void CQoSMsgReader::RunL()
+/**
+Active Object main processing function
+*/
+	{
+	__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsgReader::RunL [%08x] - Enter"), this));
+
+	if (iStatus.Int() == KErrNone && iRecvPtr.Length() > 0 )
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsgReader::RunL [%08x] - Process Response"), this));
+		TPfqosMessage msg(iRecvPtr);
+		if (msg.iError == KErrNone)
+			{
+			iOwner->ProcessPRTMsg(msg);
+			}
+#ifdef _DEBUG
+		else
+			{
+			TInt msgType = EPfqosReserved;
+			iOwner->ProcessPRTError(msgType, msg.iError);
+			}
+#endif
+		}
+
+	if (!iClosing)
+		{
+		__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsgReader::RunL [%08x] - Wait for next message"), this));
+		iRecvPtr.Zero();
+		iRecvPtr.SetLength(KQoSDefaultBufSize);
+		iSocket.Recv(iRecvPtr, 0, iStatus);
+		SetActive();
+		}
+
+	__IPCPRLOG(IpCprLog::Printf(_L("CQoSMsgReader::RunL [%08x] - Exit"), this));
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/src/qos_msg.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,168 @@
+/**
+* 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 "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:
+* Header file for the QoS Mapping Messages
+* 
+*
+*/
+
+
+
+/**
+ @file qos_msg.h
+*/
+
+#ifndef __QOS_MSG_H__
+#define __QOS_MSG_H__
+
+#include <e32base.h>
+#include <e32std.h>
+#include <comms-infras/eintsock.h>
+
+class CPfqosStream;
+
+
+NONSHARABLE_CLASS(CQoSMsg) : public CBase
+/**
+Encapsulation of a QoS PRT Message that can be stored in a 
+link list of messages.
+
+@internalComponent
+
+@released Since v9.0
+*/
+	{
+public:
+	// Construction
+	static CQoSMsg* NewL( TPfqosMessages aMsgType );
+	~CQoSMsg();
+
+	// Message Content
+	inline void AddConnInfo(TUint32 aProtocol, const TUidType& aUid, TUint32 aIapId );
+	void AddSrcAddr(const TInetAddr &aAddr);
+	void AddDstAddr(const TInetAddr &aAddr);
+	inline void AddChannel(TInt aChannelId);
+	inline void AddQoSParameters(const TQoSParameters& aParameters);
+	void AddExtensionPolicy(TQoSExtensionQueue& aExtensions);
+
+	// Send Message to PRT
+	void Send(RInternalSocket &aSocket, TRequestStatus& aStatus);
+
+protected:
+	// Construction
+	CQoSMsg();
+	void ConstructL( TPfqosMessages aMsgType );
+
+public:
+	/** QoS PRT formatted Message */
+	CPfqosStream* iMsg;
+
+	/** Message Type */
+	TPfqosMessages iType;
+
+	/** Link to next item */
+	TSglQueLink iLink;
+	};
+
+
+class CIpSubConnectionProvider;
+
+
+NONSHARABLE_CLASS(CQoSMsgWriter) : public CActive
+/**
+Active Object that sends messages from IP Connection Provider to the QoS PRT
+
+@internalComponent
+
+@released Since v9.0
+*/
+	{
+public:
+	// Construction
+	static CQoSMsgWriter* NewL(CIpSubConnectionProvider* aOwner, RInternalSocket& aSocket);
+	~CQoSMsgWriter();
+
+	// Send Message over Internal Socket
+	void Send(CQoSMsg* aMsg);
+
+protected:
+	// Construction
+	CQoSMsgWriter(CIpSubConnectionProvider* aOwner, RInternalSocket& aSocket);
+
+	// Active Object Implementation
+	void RunL();
+	inline void DoCancel();
+
+private:
+	/** Message Owner */
+	CIpSubConnectionProvider* iOwner;
+
+	/** Reference to an Internal Socket */
+	RInternalSocket& iSocket;
+
+	/** Current Message */
+	CQoSMsg* iCurrentMsg;
+
+	/** List of Pending Messages */
+	TSglQue<CQoSMsg> iPendingMsg;
+
+	/** Flag Set when Active Object is shuttin down */
+	TBool iClosing;
+	};
+
+
+NONSHARABLE_CLASS(CQoSMsgReader) : public CActive
+/**
+Active Object that receives messages from the QoS PRT and forwards them to the
+IP Connection Provider
+
+@internalComponent
+
+@released Since v9.0
+*/
+	{
+public:
+	// Construction
+	static CQoSMsgReader* NewL(CIpSubConnectionProvider *aOwner, RInternalSocket& aSocket);
+	~CQoSMsgReader();
+
+protected:
+	// Construction
+	CQoSMsgReader(CIpSubConnectionProvider* aOwner, RInternalSocket& aSocket);
+	void ConstructL();
+
+	// Active Object Implmentation
+	void RunL();
+	inline void DoCancel();
+
+private:
+	/** Message Owner */
+	CIpSubConnectionProvider* iOwner;
+
+	/** Reference of Internal Socket */
+	RInternalSocket& iSocket;
+
+	/** Pointer to Buffer to receive data from QoS PRT */
+	TPtr8 iRecvPtr;
+
+	/** Buffer to receive data from QoS PRT */
+	HBufC8* iRecvBuf;
+
+	/** Flag Set when Active Object is shuttin down */
+	TBool iClosing;
+	};
+
+#include "qos_msg.inl"
+
+#endif // __QOS_MSG_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/src/qos_msg.inl	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,86 @@
+/**
+* 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 "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:
+* Inline functions file for the QoS Mapping Messages
+* 
+*
+*/
+
+
+
+/**
+ @file qos_msg.inl
+*/
+
+#ifndef __QOS_MSG_INL__
+#define __QOS_MSG_INL__
+
+inline void CQoSMsg::AddConnInfo(TUint32 aProtocol, const TUidType& aUid, TUint32 aIapId )
+/**
+Add Connection Information to the QoS PRT Message
+
+@param aProtocol Protocol Id
+@param aUid Process UID Type
+@param aIapId Internet Access Point Id
+*/
+	{
+    iMsg->AddSelector((TUint8)aProtocol, aUid, EPfqosFlowspecPolicy, aIapId, EPfqosApplicationPriority, TPtr(0,0));
+	}
+
+
+inline void CQoSMsg::AddChannel(TInt aChannelId)
+	{
+/**
+Adds QoS Channel Id to the QoS PRT Message
+
+@param aChannelId QoS Channel Id
+*/
+    iMsg->AddChannel(aChannelId); 
+	}
+
+inline void CQoSMsg::AddQoSParameters(const TQoSParameters& aParameters)
+/** 
+Adds Standard QoS Parameters to the QoS PRT Message
+
+@param aParameters QoS Parameters
+*/
+	{
+    iMsg->AddQoSParameters(aParameters);
+	}
+
+
+// ###########################################################
+
+
+inline void CQoSMsgWriter::DoCancel()
+/**
+Cancel Writing to internal socket
+*/
+    {
+    iSocket.CancelWrite();
+    }
+
+
+// ###########################################################
+
+
+inline void CQoSMsgReader::DoCancel()
+/**
+Cancel Reading from internal socket
+*/
+	{
+    iSocket.CancelRecv();
+	}
+
+#endif // __QOS_MSG_INL__
--- a/networkcontrol/iptransportlayer/src/ipcprups_activities.cpp	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkcontrol/iptransportlayer/src/ipcprups_activities.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -70,8 +70,8 @@
 	LAST_NODEACTIVITY_ENTRY(KErrorTag, TDoNothing)
 NODEACTIVITY_END()
 
-DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityClientLeave, IpCprClientLeave, TNodeSignal::TNullMessageId, CClientLeaveActivity::NewL)
-	FIRST_NODEACTIVITY_ENTRY(CoreStates::TAwaitingClientLeave, MeshMachine::TNoTag)
+DECLARE_DEFINE_RESERVED_CUSTOM_NODEACTIVITY(ECFActivityClientLeave, IpCprClientLeave, Messages::TEPeer::TLeaveRequest, CClientLeaveActivity::New)
+	FIRST_NODEACTIVITY_ENTRY(MeshMachine::TAwaitingMessageState<TEPeer::TLeaveRequest>, MeshMachine::TNoTag)
 	THROUGH_NODEACTIVITY_ENTRY(KNoTag, IpCprStates::TSendUpsStatusChange, MeshMachine::TNoTag)
 	THROUGH_NODEACTIVITY_ENTRY(KNoTag, CClientLeaveActivity::TRemoveClientAndDestroyOrphanedDataClients, CClientLeaveActivity::TNoTagOrSendPriorityToCtrlProvider)
 	NODEACTIVITY_ENTRY(CprStates::KSendPriorityToCtrlProvider, CClientLeaveActivity::TUpdatePriorityForControlProvider, CoreStates::TAwaitingJoinComplete, CClientLeaveActivity::TNoTagOrSendPriorityToServProvider)
--- a/networkcontrol/iptransportlayer/src/ipdeftbasescpr.cpp	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkcontrol/iptransportlayer/src/ipdeftbasescpr.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -246,7 +246,7 @@
     	}
 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 	iContext.iNodeActivity->PostRequestTo(*iContext.Node().ServiceProvider(),
-		TCFScpr::TGetParamsRequest(RCFParameterFamilyBundleC()).CRef());
+		TCFScpr::TSetParamsRequest(RCFParameterFamilyBundleC()).CRef());
 #else
  	iContext.iNodeActivity->PostRequestTo(*iContext.Node().ServiceProvider(),
 		TCFScpr::TParamsRequest(RCFParameterFamilyBundleC()).CRef());
@@ -260,7 +260,9 @@
 DECLARE_DEFINE_NODEACTIVITY(ECFActivityStartDataClient, IPDeftBaseSCprDataClientStart, TCFDataClient::TStart )
     FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingDataClientStart, MeshMachine::TNoTag)
 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
-	NODEACTIVITY_ENTRY(KNoTag, IPDeftBaseSCprDataClientStartActivity::TGetParams, CoreNetStates::TAwaitingParamResponse, CoreNetStates::TNoTagOrNoDataClients)
+	//NODEACTIVITY_ENTRY(KNoTag, IPDeftBaseSCprDataClientStartActivity::TGetParams, CoreNetStates::TAwaitingParamResponse, CoreNetStates::TNoTagOrNoDataClients)
+	NODEACTIVITY_ENTRY(KNoTag, IPDeftBaseSCprDataClientStartActivity::TGetParams, CoreNetStates::TAwaitingParamResponse, MeshMachine::TNoTag)
+	THROUGH_NODEACTIVITY_ENTRY(KNoTag, PRStates::TStoreParams, CoreNetStates::TNoTagOrNoDataClients)
 #else
 	NODEACTIVITY_ENTRY(KNoTag, IPDeftBaseSCprDataClientStartActivity::TGetParams, CoreNetStates::TAwaitingParamResponse, MeshMachine::TNoTag)
 	THROUGH_NODEACTIVITY_ENTRY(KNoTag, SCprStates::TStoreParams, CoreNetStates::TNoTagOrNoDataClients)
--- a/networkcontrol/iptransportlayer/src/netmcpr.cpp	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkcontrol/iptransportlayer/src/netmcpr.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -33,6 +33,8 @@
 
 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 #include <tcpdfltrecvwin.h>
+// Custom type for WLAN bearer
+const TUint32 KNetMcprWlanBearer = 0x3C;
 #endif //SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 #include <commsdattypeinfov1_1_internal.h>
 
@@ -477,8 +479,11 @@
    	//TCP receive window size for ethernet
    	iBearerInfoMap.Insert(KEthernetBearer,KBearerEthernetWinSize);
 
+    //TCP receive window size for WLAN bearer
+    iBearerInfoMap.Insert(KNetMcprWlanBearer,KBearerWlanWinSize);
+   	
    	//TCP receive window size for other bearer
-   	iBearerInfoMap.Insert(KDefaultBearer,KBearerWlanWinSize);
+   	iBearerInfoMap.Insert(KDefaultBearer,KBearerDefaultWinSize);
 	}
 
 void CDfltTCPReceiveWindowSize::SetTcpWin(TUint aBearerType)
@@ -486,8 +491,20 @@
  * Set TCP receive window 
  */
 	{
-	//Set the TCP Receive Window.
-	iWinSize = *static_cast<TUint*>(iBearerInfoMap.Find(aBearerType));
+    // Get bearer window size from hash table
+    TUint* iWinSizePtr = static_cast<TUint*>(iBearerInfoMap.Find(aBearerType));
+
+    // Check whether bearer type was known 
+    if ( iWinSizePtr != NULL )
+        {
+        // Set the TCP Receive Window
+        iWinSize = *iWinSizePtr;
+        }
+    else
+        {
+        // Use default window
+        iWinSize = KBearerDefaultWinSize;
+        }
 	  
 	//Set the Max TCP receive Window.
 	SetMaxWinSize(aBearerType);
@@ -511,12 +528,16 @@
 		//
 			iMaxWinSize = KBearerHsdpaWinSize; 
 			break; 
-		case KEthernetBearer:
-			iMaxWinSize = KEthernetMaxWinSize;
+		case KNetMcprWlanBearer:
+			iMaxWinSize = KBearerWlanWinSize;
 			break;
    
+        case KEthernetBearer:
+            iMaxWinSize = KEthernetMaxWinSize;
+            break;
+			
 		default:
-			iMaxWinSize = KEthernetMaxWinSize;
+			iMaxWinSize = KBearerDefaultMaxWinSize;
 			break;
 		}
 	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/dialogcreator/bwins/ipupsdialogu.def	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,5 @@
+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
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/dialogcreator/eabi/ipupsdialogu.def	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,5 @@
+EXPORTS
+	_Z24ImplementationGroupProxyRi @ 1 NONAME
+	KNotifierImplementationId @ 2 NONAME DATA 4
+	KTestNotifierImplementationId @ 3 NONAME DATA 4
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/dialogcreator/group/bld.inf	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,25 @@
+// 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/dialogcreator/group/ipupsdialog.iby	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,51 @@
+/*
+* 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/dialogcreator/group/ipupsdialog.mmp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,59 @@
+// 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/dialogcreator/inc/ipupsconst.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,33 @@
+// 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/dialogcreator/inc/ipupsdialog.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,98 @@
+// 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
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/dialogcreator/resource/10285A7B.rss	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,46 @@
+// 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 = "";
+					}
+				};
+			}
+		};
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/dialogcreator/source/ipupsconst.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,28 @@
+// 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;
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/dialogcreator/source/ipupsdialog.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,440 @@
+// 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", &notifierUidVal);
+
+   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);
+   }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/group/bld.inf	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,40 @@
+// 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/group/networking_ipups.mrp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,25 @@
+#
+# 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/policyfile/ups_101F7989_10281DD8.rss	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,44 @@
+// 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;
+			}
+		
+		};
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/data/te_ipups.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,274 @@
+// Copyright (c) 2003-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:
+
+//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
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/group/te_ipups.iby	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,42 @@
+// 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/group/te_ipups.mmp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,86 @@
+// 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/inc/te_ipups_delete_decision_db.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,42 @@
+// 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/inc/te_ipups_notify_count.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,41 @@
+// 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/inc/te_ipups_server.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,36 @@
+// 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/inc/te_ipups_stepbase.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,36 @@
+// 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/inc/te_ipups_ups_step.h	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,93 @@
+// 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/policyfile/ups_10285B91_10281DD8.rss	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,43 @@
+// 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;
+			}
+		
+		};
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/policyfile/ups_test_always_101F7989_10281DD8.rss	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,44 @@
+// 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;
+			}
+		
+		};
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/scripts/te_ipups.script	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,372 @@
+// 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/src/te_ipups_delete_decision_db.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,82 @@
+// 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();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/src/te_ipups_notify_count.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,113 @@
+// 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();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/src/te_ipups_server.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,111 @@
+// 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;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/src/te_ipups_stepbase.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,47 @@
+// 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()
+	{	
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipupsplugins/test/te_ipups/src/te_ipups_ups_step.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,613 @@
+// 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.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/qosfwconfig/qostest/te_qos/configs/te_qossuite_mesh_pdpcpr.cfg	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,1477 @@
+############################################################
+## HAND-GENERATED CONFIGURATION FILE
+## 
+## Start at the GlobalSettings table and ConnectionPreferences table
+############################################################
+
+############################################################
+## Network
+## 
+[Network]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Intranet
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## ModemBearer
+## 
+[ModemBearer]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Loopback Modem
+	IfName=PPP
+	PortName=PKTLOOPBACK::502
+	TSYName=SIM
+	CSYName=PKTLOOPBACK
+	LastSocketActivityTimeout=6
+	LastSessionClosedTimeout=180
+	LastSocketClosedTimeout=10
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=AFTERDIALUNTILANSWER
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	Agent=NULLAGT
+	FIELD_COUNT=63
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Loopback_RawIP_1
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::502
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Loopback_RawIP_3
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::508
+	FIELD_COUNT=3
+END_ADD
+
+
+
+############################################################
+## LANBearer
+## 
+[LANBearer]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Assabet on-board Ethernet
+	IfName=ethint
+	LDDName=not used
+	PDDName=not used
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=nullagent.agt
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## Location
+## 
+[Location]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Location
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Office
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=171
+	DialOutCode=9,
+	Mobile=FALSE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Office Direct Dial
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=171
+	Mobile=FALSE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=Mobile
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=Home
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=181
+	Mobile=FALSE
+	UsePulseDial=TRUE
+	WaitForDialTone=TRUE
+	PauseAfterDialout=0
+	FIELD_COUNT=10
+END_ADD
+
+
+############################################################
+## Chargecard
+## 
+[Chargecard]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dummy BT Chargecard
+	AccountNumber=144,12345678
+	Pin=0000
+	LocalRule=HG
+	NatRule=HFG
+	IntlRule=HEFG
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Dummy Mercury Chargecard
+	AccountNumber=0500800800,,12345678
+	Pin=****
+	LocalRule=HG
+	NatRule=J,K,0FG
+	IntlRule=HEFG
+	FIELD_COUNT=7
+END_ADD
+
+############################################################
+## GlobalSettings
+## 
+## links to Tier table
+## DefaultTier = 271064536 Tier1 ESock_IP NetworkTierManager
+## No defaultSnap - therefore 399 selection chosen
+##
+[GlobalSettings]
+ADD_TEMPLATE
+	DefaultTier=Link.TierTable.2048
+	FIELD_COUNT=1
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	ConnectionAttempts=2
+	RedialAttempts=3
+	SmsBearer=0
+	SmsReceiveMode=2
+	GPRSAttachMode=1
+	AcceptIncomingGprs=1
+	GPRSClassCBearer=GSM
+	ModemForDataAndFax=1
+	ModemForPhoneServicesAndSMS=1
+	LocationForDataAndFax=1
+	LocationForPhoneServicesAndSMS=1
+	MaxMBufHeap=41877760
+	DefaultNetwork=1
+	BearerAvailabilityCheckTSY=SIM
+	FIELD_COUNT=16
+END_ADD
+
+############################################################
+## DialOutISP
+## 
+[DialOutISP]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Dial Out ISP
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=TRUE
+	DisplayPCT=FALSE
+	IfPromptForAuth=TRUE
+	IfCallbackEnabled=FALSE
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=28
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=NT RAS
+	Type=INTERNETONLY
+	DialResolution=TRUE
+	UseLoginScript=TRUE
+	LoginScript=CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND "CLIENT"+<0x0d>\nWAIT 3\n{\n"SERVER" OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n
+	PromptForLogin=FALSE
+	LoginName=RasUser
+	DisplayPCT=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=44
+END_ADD
+
+
+############################################################
+## DialInISP
+## 
+[DialInISP]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Dial In ISP
+	UseLoginScript=FALSE
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=10
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dial In CS ISP
+	UseLoginScript=FALSE
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=10
+END_ADD
+
+
+############################################################
+## OutgoingGPRS
+## 
+[OutgoingGPRS]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Outgoing GPRS
+	APN=Test
+	PDPType=IPV4
+	ReqPrecedence=2
+	ReqDelay=4
+	ReqReliability=3
+	ReqPeakThroughput=3
+	ReqMeanThroughput=31
+	MinPrecedence=2
+	MinDelay=4
+	MinReliability=3
+	MinPeakThroughput=3
+	MinMeanThroughput=31
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=194.72.6.1
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.1.1
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=194.72.6.51
+	IpNameServer2=194.72.6.51
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=32
+END_TEMPLATE
+
+ADD_SECTION
+##
+## Links from IAP table
+## Links to
+##
+# COMMDB_ID = 1
+	Id=1
+	Name=SPUD
+	PDPType=IPV4
+	IfParams=lowernif=RawIP
+	IfPromptForAuth=FALSE
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.1.1
+	IpDNSAddrFromServer=FALSE
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## IncomingGPRS
+## 
+[IncomingGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dummy Incoming GPRS Settings
+	APN=Test
+	PDPType=IPV4
+	PDPAddress=0.0.0.0
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=1
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.1.1
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=194.72.6.51
+	IpNameServer2=194.72.6.51
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	FIELD_COUNT=30
+END_ADD
+
+
+############################################################
+## DefaultGPRS
+## 
+[DefaultGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dummy Default GPRS Settings
+	Usage=1
+	APN=Access point name
+	PDPType=IPV6
+	PDPAddress=www.wid.com
+	Precedence=1
+	Delay=1
+	Reliability=1
+	PeakThroughput=1
+	MeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=TRUE
+	HeaderCompression=TRUE
+	GprsUseEdge=FALSE
+	AnonymousAccess=TRUE
+	FIELD_COUNT=20
+END_ADD
+
+
+############################################################
+## CDMA2000PacketServiceTable
+## 
+[CDMA2000PacketServiceTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=test name cdma2000
+	IwfName=Test2000
+	ServiceOption=HIGHSPEEDCDMA2000DATA
+	PDPType=IPV4
+	ReqFwdPriority=PRIORITY04
+	ReqRevPriority=PRIORITY04
+	ReqFwdBitrate=32KBPS
+	ReqRevBitrate=32KBPS
+	ReqFwdLoss=LOSS1
+	ReqRevLoss=LOSS1
+	ReqFwdMaxdelay=40MS
+	ReqRevMaxdelay=40MS
+	MinFwdBitrate=8KBPS
+	MinRevBitrate=8KBPS
+	AccptFwdLoss=LOSS2
+	AccptRevLoss=LOSS2
+	AccptFwdMaxdelay=120MS
+	AccptRevMaxdelay=120MS
+	DataCompression=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=1
+	IpNetMask=0.255.255.255
+	IpGateway=10.0.0.1
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=TRUE
+	DisablePlainTextAuth=TRUE
+	ApType=2
+	RlpMode=UNKNOWN
+	CDMAMobileIP=FALSE
+	CDMAMobileIPTimeout=10000000
+	FIELD_COUNT=36
+END_ADD
+
+
+############################################################
+## LANService
+## 
+[LANService]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Ethernet
+	IfNetworks=ip,ip6
+	IpNetMask=255.255.255.0
+	IpGateway=194.72.6.1
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.0.100
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=194.72.6.51
+	IpNameServer2=194.72.6.52
+	FIELD_COUNT=10
+END_ADD
+
+############################################################
+## APPrioritySelectionPolicyTable
+## 
+## Links from AccessPointTable
+## Links to the next layer in the AccessPointTable
+##
+[APPrioritySelectionPolicyTable]
+ADD_SECTION
+# COMMDB_ID = 1
+  	Id=1
+	Name=SelectionPolicy1
+	AP1=Link.AccessPointTable.10001
+	APCOUNT=1
+	FIELD_COUNT=4
+END_ADD
+
+############################################################
+## AccessPointTable
+## 
+## Links from TierTable
+## When 399 selection selected in GlobalSettings this Links to APPrioritySelectionPolicyTable
+## Bearer tier links to IAP table
+##
+[AccessPointTable]
+
+ADD_SECTION
+##
+## Links to IAP table
+## Links to nodes in bearer layer
+##  Id = 1 is IAP1
+##  SelectionPolicy zero marks the end of the 399 selection process
+## Consistent with spud-rawip BearerTypeTable entry
+##
+# COMMDB_ID = 251
+	Id=1
+	Name=MappedFromIAP1
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.8
+	CprConfig=1
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+	
+ADD_SECTION
+## 
+## Links to AccessPointTable next layer
+##	SelectionPolicy AccessPointTable entry 1 and IAP table entry 1
+##
+# COMMDB_ID = 253
+	Id=10001
+	Name=IPProtoDefault
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.2
+	CprConfig=1
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CustomSelectionPolicy=1
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+##
+## Links from TierTable
+## When 399 selection selected in GlobalSettings this Links to APPrioritySelectionPolicyTable
+##	Id 10000 linked from TierTable
+##	SelectionPolicy APPrioritySelectionPolicyTable entry 1
+##
+# COMMDB_ID = 254
+	Id=10000
+	Name=NetworkDefault
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	AccessPointSelectionPolicy=APPrioritySelectionPolicyTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.1
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## BearerTypeTable
+## 
+## Links from ModemBearer table
+## Links to the bearer layer nodes
+## Consistent with the selected AccessPointTable
+##
+##
+[BearerTypeTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ethint
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=tunnelnif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.6
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.6
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=qosppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.7
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.7
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=dummynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=hungrynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.9
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.9
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=spud-ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+##
+## Links from ModemBearer table
+## Links to bearer layer nodes
+## Consistent with the selected AccessPointTable
+##
+# COMMDB_ID = 9
+	Id=9
+	Name=spud-rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=7
+END_ADD
+
+##This record here is the template record for the IPProto level APs generated by CommsDat.
+ADD_SECTION
+# COMMDB_ID = 10
+	##This name is a predefined name for the template for the IPProto APs.
+	##Please don't change it!
+	Name=IPProtoDefaultTemplate
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## IAP
+## 
+## Linked from ConnectionPreferences
+## Links to several tables
+## OutgoingGPRS entry SPUD
+## ModemBearer entry 1 Null Modem 115200bps
+## 
+##
+[IAP]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=Location.1
+	FIELD_COUNT=9
+END_ADD
+
+############################################################
+## Proxies
+## 
+[Proxies]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	ISP=1
+	ProxyServiceType=DialOutISP
+	UseProxyServer=TRUE
+	ProxyServerName=www.dummyproxy.com
+	ProtocolName=http
+	PortNumber=80
+	Exceptions=www.dummyproxy.com/exception
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## WAPAccessPoint
+## 
+[WAPAccessPoint]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Dial In ISP
+	CurrentBearer=WAPIPBearer
+	FIELD_COUNT=3
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dummy WAP Settings
+	CurrentBearer=WAPIPBearer
+	StartPage=www.wapstart.com
+	FIELD_COUNT=4
+END_ADD
+
+
+############################################################
+## WAPIPBearer
+## 
+[WAPIPBearer]
+ADD_TEMPLATE
+	Id=0
+	Name=DefaultRecordName-1
+	AccessPointId=0
+	IAP=0
+	WSPOption=CONNECTIONLESS
+	Security=FALSE
+	ProxyPortNumber=0
+	FIELD_COUNT=7
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-2
+	AccessPointId=58654976
+	GatewayAddress=www.wapgateway.com
+	IAP=50266624
+	WSPOption=CONNECTIONORIENTED
+	Security=FALSE
+	ProxyPortNumber=1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## WAPSMSBearer
+## 
+[WAPSMSBearer]
+ADD_TEMPLATE
+	Id=0
+	Name=DefaultRecordName-1
+	AccessPointId=0
+	WSPOption=CONNECTIONLESS
+	Security=FALSE
+	FIELD_COUNT=5
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-2
+	AccessPointId=1
+	GatewayAddress=+442079460221
+	ServiceCentreAddress=+442079460223
+	WSPOption=CONNECTIONORIENTED
+	Security=FALSE
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## SecureSocketTable
+## 
+[SecureSocketTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	ProtocolName=ssl3.0
+	ProtoLibrary=ssladaptor.dll
+	FIELD_COUNT=4
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=DefaultRecordName-2
+	ProtocolName=tls1.0
+	ProtoLibrary=ssladaptor.dll
+	FIELD_COUNT=4
+END_ADD
+
+############################################################
+## TierTable
+## 
+## Links from GlobalSettings
+## Links to AccessPointTable
+##
+[TierTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=2048
+	TierImplUid=271064536
+	Name=Tier1
+	TierThreadName=ESock_IP
+	TierManagerName=NetworkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=271064560
+	TierImplUid=271064560
+	Name=Tier2
+	TierThreadName=ESock_IP
+	TierManagerName=ProtoTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10001
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=271064565
+	TierImplUid=271064565
+	Name=Tier3
+	TierThreadName=ESock_IP
+	TierManagerName=LinkTierManager
+##NB defaultAccessPoint not present in this layer. This is only needed here to satisfy the check
+##on the link layer. However important that once this field has a value it has to be linked to a
+##correct accesspoint record in the accesspoint table because this will be checked either.
+	DefaultAccessPoint=Link.AccessPointTable.1
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## MCprTable
+## 
+[MCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=netmcpr
+	MCprUid=271009095
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotomcpr
+	MCprUid=271064558
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=pppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=ethmcpr
+	MCprUid=271064572
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=rawipmcpr
+	MCprUid=271064576
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=tunnelmcpr
+	MCprUid=271064578
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qospppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=dummynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=hungrynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Id=10
+	Name=pdpmcpr
+	MCprUid=271065840
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Id=11
+	Name=sipmcpr
+	MCprUid=536887801
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Id=12
+	Name=btgenericmcpr
+	MCprUid=271070577
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Id=13
+	Name=panethermcpr
+	MCprUid=271070626
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## CprTable
+## 
+[CprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipcpr
+	CprUid=270561519
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotocpr
+	CprUid=271064531
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentcpr
+	CprUid=271064552
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=vanillacpr
+	CprUid=271065843
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=sipcpr
+	CprUid=271010872
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=avctpcpr
+	CprUid=271030184
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=tunnelagentcpr
+	CprUid=271080968
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=pdpcpr
+	CprUid=271065826
+	FIELD_COUNT=3
+END_ADD
+
+############################################################
+## SCprTable
+## 
+[SCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipscpr
+	SCprUid=271065811
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotoscpr
+	SCprUid=271064529
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentscpr
+	SCprUid=271064554
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=pdpscpr
+	SCprUid=271065824
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=pppscpr
+	SCprUid=271065852
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=vanillascpr
+	SCprUid=271065844
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qosscpr
+	SCprUid=271065811
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=sipscpr
+	SCprUid=271010839
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=avctpsaplinksmgr
+	SCprUid=271030185
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Id=10
+	Name=avctpmuxer
+	SCprUid=271030186
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## ProtocolTable
+## 
+[ProtocolTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=sapshim
+	ProtocolUid=270496898
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipshim4
+	ProtocolUid=271064118
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=ppp
+	ProtocolUid=271064143
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=ethernet
+	ProtocolUid=271064539
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=rawip
+	ProtocolUid=271064562
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=tunnel
+	ProtocolUid=271064567
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qosppp
+	ProtocolUid=271064148
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=dummynif
+	ProtocolUid=271064123
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=hungrynif
+	ProtocolUid=271064125
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Id=10
+	Name=panether
+	ProtocolUid=271070627
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## ConnectionPreferences
+## 
+## Links to 
+## IAP = 1 - GPRS - IAPService = SPUD - ModemBearer - Null Modem 115200bps - IAPNetwork = 1
+## BearerSet=PSD
+##
+[ConnectionPreferences]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	Ranking=0
+	Direction=INCOMING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=1
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=DefaultRecordName-2
+	Ranking=1
+	Direction=OUTGOING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=1
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## UmtsR99QoSAndOn
+## 
+[UmtsR99QoSAndOn]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=PRIMARY1
+	ReqTrafficClass=1
+	MinTrafficClass=1
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=1
+	MinDeliverErroneousSDU=1
+	ReqMaxSDUSize=0
+	MinAcceptableMaxSDUSize=0
+	ReqMaxUplinkRate=0
+	ReqMinUplinkRate=0
+	ReqMaxDownlinkRate=0
+	ReqMinDownlinkRate=0
+	ReqBER=1
+	MaxBER=1
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=0
+	MaxTransferDelay=0
+	ReqGuaranteedUplinkRate=0
+	MinGuaranteedUplinkRat=0
+	ReqGuaranteedDownlinkRate=0
+	MinGuaranteedDownlinkRate=0
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=SECONDARY1
+	ReqTrafficClass=4
+	MinTrafficClass=4
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=8
+	MinDeliverErroneousSDU=8
+	ReqMaxSDUSize=768
+	MinAcceptableMaxSDUSize=512
+	ReqMaxUplinkRate=1024
+	ReqMinUplinkRate=1024
+	ReqMaxDownlinkRate=1024
+	ReqMinDownlinkRate=1024
+	ReqBER=0
+	MaxBER=0
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=250
+	MaxTransferDelay=250
+	ReqGuaranteedUplinkRate=1024
+	MinGuaranteedUplinkRat=1024
+	ReqGuaranteedDownlinkRate=1024
+	MinGuaranteedDownlinkRate=1024
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+############################################################
+## PolicySelectorTable
+## 
+[PolicySelectorTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	PolicyId=1
+	SrcAddress=0.0.0.0
+	SrcMask=255.255.255.255
+	DstAddress=192.168.1.1
+	DstMask=255.255.255.255
+	SrcPort=0
+	DstPort=3461
+	SrcPortMax=1031
+	DstPortMax=3461
+	ProtocolId=17
+	IAPid=2
+	Priority=1
+	FIELD_COUNT=13
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	PolicyId=2
+	SrcPort=0
+	SrcPortMax=0
+	ProtocolId=1
+	IAPid=2
+	Priority=1
+	FIELD_COUNT=7
+END_ADD
+
+
+
--- a/networkcontrol/qosfwconfig/qostest/te_qos/group/bld.inf	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkcontrol/qosfwconfig/qostest/te_qos/group/bld.inf	Thu Jul 22 16:48:06 2010 +0100
@@ -17,7 +17,11 @@
 
 PRJ_TESTEXPORTS
 
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+../configs/te_QoSSuite_Mesh_pdpcpr.cfg       z:/testdata/configs/te_qossuite_mesh.cfg
+#else
 ../configs/te_QoSSuite_Mesh.cfg         z:/testdata/configs/te_qossuite_mesh.cfg
+#endif //#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 ../configs/te_QoSSuite_simtsy.txt		z:/testdata/configs/te_QoSSuite_simtsy.txt
 ../configs/te_QoSSuite_LoopbackCsy.ini		z:/testdata/configs/te_QoSSuite_loopbackcsy.ini
 
--- a/networkcontrol/qosipscpr/inc/ip_subconparams.h	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkcontrol/qosipscpr/inc/ip_subconparams.h	Thu Jul 22 16:48:06 2010 +0100
@@ -27,7 +27,7 @@
 #define __IP_SUBCONPARAMS_H__
 
 #include <es_sock.h>
-#include <networking/Qos3GPP_subconparams.h>
+#include <networking/qos3gpp_subconparams.h>
 
  
 // NOTE: This Uid may be changed - See #ifdef at bottom of the file
--- a/networkingsrv_info/networkingrom/group/NetworkTest.iby	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingsrv_info/networkingrom/group/NetworkTest.iby	Thu Jul 22 16:48:06 2010 +0100
@@ -131,7 +131,7 @@
 #endif //NW_TEST_ROM_2
 
 // FTP Tests
-#include <tftp_e.iby>
+//#include <tftp_e.iby>
 
 // IntegrationTest framework
 #ifdef NW_TEST_ROM_1
@@ -259,13 +259,14 @@
 // Needed by several tests
 #include <simtsy.iby>
 
-#include <te_AnvlClient.iby>
+// Commenting anvl as no one is using it. can uncomment when needed . need to update networktest.iby also
+// #include <te_AnvlClient.iby>
 
 REM ---------- WAP-Stack ----------
 
 // SWS test
 #ifdef NW_TEST_ROM_3
-#include <wapstacksuite.iby>
+//#include <wapstacksuite.iby>
 #endif
 
 REM --- NEEDED FOR THE SECURITY TESTS ---
--- a/networkingtestandutils/ipprobe/group/bld.inf	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingtestandutils/ipprobe/group/bld.inf	Thu Jul 22 16:48:06 2010 +0100
@@ -1,35 +1,30 @@
-// Copyright (c) 2005-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:
-// bld.inf - probe support
-// probe support
-//
+/*
+* Copyright (c) 2009-2010 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: Build information file for project probe
+*
+*/
 
-
-
-/**
- @file
- @internalComponent
-*/
+#include <platform_paths.hrh>
 
 PRJ_PLATFORMS
 
 PRJ_TESTEXPORTS
+../data/probe.esk       /epoc32/data/z/private/101f7989/esock/ip.probe.esk
+../data/probe.esk       /epoc32/winscw/c/private/101f7989/Esock/ip.probe.esk
+../data/probe.esk       /epoc32/data/c/private/101f7989/Esock/ip.probe.esk
+../group/probe.iby	/epoc32/rom/include/probe.iby
 
-../data/probe.esk       /epoc32/data/z/private/101f7989/esock/ip.probe.esk
-../data/probe.esk       /epoc32/winscw/c/private/101f7989/esock/ip.probe.esk
-
-../group/probe.iby	/epoc32/rom/include/probe.iby
 
 PRJ_MMPFILES
 
--- a/networkingtestandutils/ipprobe/group/networking_probe.mrp	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingtestandutils/ipprobe/group/networking_probe.mrp	Thu Jul 22 16:48:06 2010 +0100
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# Copyright (c) 2009-2010 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"
--- a/networkingtestandutils/ipprobe/group/probe.iby	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingtestandutils/ipprobe/group/probe.iby	Thu Jul 22 16:48:06 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 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"
--- a/networkingtestandutils/ipprobe/group/probe.mmp	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingtestandutils/ipprobe/group/probe.mmp	Thu Jul 22 16:48:06 2010 +0100
@@ -1,24 +1,18 @@
-// Copyright (c) 2006-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:
-// probe.mmp - probe support MMP file
-// probe support
-//
-
-
-
-/**
- @file
+/*
+* Copyright (c) 2009-2010 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: The project specification file for probe
+*
 */
 
 MACRO       EPOC_SDK=0x08000000
@@ -29,6 +23,8 @@
 
 UID		0x10003D38 0x10000895
 
+CAPABILITY      CommDD PowerMgmt ReadDeviceData WriteDeviceData TrustedUI ProtServ NetworkControl NetworkServices LocalServices ReadUserData WriteUserData // as c32 process 
+
 SOURCEPATH	../src
 
 SOURCE		family.cpp prt.cpp sap.cpp
@@ -42,10 +38,9 @@
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 #endif
 
+LIBRARY		euser.lib esock.lib inhook6.lib nifman.lib 
+LIBRARY		efsrv.lib esocksvr.lib mbufmgr.lib
 
-LIBRARY		euser.lib esocksvr.lib mbufmgr.lib inhook6.lib
-
-CAPABILITY CommDD PowerMgmt ReadDeviceData WriteDeviceData TrustedUI ProtServ NetworkControl NetworkServices LocalServices ReadUserData WriteUserData
 
 MACRO		TCPIP6_CAPABILITY
 
--- a/networkingtestandutils/ipprobe/inc/family.h	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingtestandutils/ipprobe/inc/family.h	Thu Jul 22 16:48:06 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 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"
@@ -19,6 +19,7 @@
 /**
  @internalComponent
 */
+
 #ifndef __PROBE_FAMILY_H
 #define __PROBE_FAMILY_H
 
--- a/networkingtestandutils/ipprobe/inc/prt.h	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingtestandutils/ipprobe/inc/prt.h	Thu Jul 22 16:48:06 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 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"
@@ -19,13 +19,16 @@
 /**
  @internalComponent
 */
+
 #ifndef __PROBE_PRT_H
 #define __PROBE_PRT_H
 
 #include <e32std.h>
+#include <f32file.h>
 #include <es_sock.h>
 #include <nifman.h>
 
+
 #include "family.h"
 #include "in_bind.h"
 #include "posthook.h"
@@ -49,11 +52,27 @@
 	virtual void Process(RMBufChain &aPacket, CProtocolBase* aSrc);
 	
 	virtual CServProviderBase* NewSAPL(TUint aProtocol);
-	void CancelSAP(const CServProviderBase* aSAP);
+	void CancelSAP(const CServProviderBase *aSAP);
 protected:
-	void Deliver(RMBufChain &aPacket);
+	void Dump(RMBufChain &aPacket);
+	void LibcapDumpFileHeader();
+	void LibcapDump(const TDesC8& aBuffer, TUint32 aTimeStampSecs, TUint32 aTimeStampMicros);
+	void Queue(RMBufChain &aPacket);
+	static TInt DumpCb(TAny* aThisPtr);
+	void DumpQueuedPackets();
+
+protected:
+	TTime iTimeOrigin;
 	const TUint iId;
 	CProviderProbe *iList;
+	CAsyncCallBack iDumpCb;
+	RMBufPktQ iQueue;
+	RFs iFs;
+	RFile iFile;
+	RBuf8 iBuf;
+	TBool iFileServerOpen;
+	TBool iFileOpen;
+	TBool iBufCreated;
 };
 
 #endif
--- a/networkingtestandutils/ipprobe/inc/sap.h	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingtestandutils/ipprobe/inc/sap.h	Thu Jul 22 16:48:06 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 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"
@@ -19,6 +19,7 @@
 /**
  @internalComponent
 */
+
 #ifndef __PROBE_SAP_H
 #define __PROBE_SAP_H
 
--- a/networkingtestandutils/ipprobe/src/family.cpp	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingtestandutils/ipprobe/src/family.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 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"
@@ -20,6 +20,10 @@
 //
 // Nothing interesting here...
 //
+GLDEF_C TInt E32Dll()
+	{
+	return KErrNone;
+	}
 
 class CProtocolFamilyProbe : public CProtocolFamilyBase
 	{
@@ -32,10 +36,12 @@
 	CProtocolBase* NewProtocolL(TUint /*aSockType*/, TUint aProtocol);
 	};
 
-extern "C" { IMPORT_C CProtocolFamilyBase* Install(void); }
+extern "C" { IMPORT_C CProtocolFamilyBase* Install(); }
 EXPORT_C CProtocolFamilyBase* Install()
 	{
-	return new (ELeave) CProtocolFamilyProbe;
+	// Due to naming convention this cannot leave
+	// However null return value handled correctly in the caller...
+	return new CProtocolFamilyProbe;
 	}
 
 //----------------------------------------------------------------------
@@ -63,7 +69,9 @@
 
 TUint CProtocolFamilyProbe::ProtocolList(TServerProtocolDesc *& aList)
 	{
-	aList = new TServerProtocolDesc[2];
+	// This function might leave, but it has been taken care of in the calling function
+	const TInt index =2;
+	aList = new TServerProtocolDesc[index];
 	if (aList == NULL)
 		return 0;
 	
--- a/networkingtestandutils/ipprobe/src/prt.cpp	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingtestandutils/ipprobe/src/prt.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -1,34 +1,50 @@
-// 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 "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:
-// prt.cpp - Packet Probe Hook
-//
+/*
+* Copyright (c) 2009-2010 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: Packet probe hook
+*
+*/
 
 #include <e32std.h>
 #include <e32base.h>
+#include <f32file.h>
+#include <e32svr.h>
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include <es_prot_internal.h>
 #endif
 
+
 #include "family.h"
 #include "prt.h"
 #include "sap.h"
 #include "inet6log.h"
+_LIT(KTcpDumpFolder, "tcpdump\\");
+_LIT(KProbeDumpFile, "probe.cap");
+_LIT(KLogFolder,     "c:\\logs\\");
 
 
-CProtocolProbe::CProtocolProbe(TUint aId) : iId(aId)
+CProtocolProbe::CProtocolProbe(TUint aId) : 
+iId(aId), 
+iDumpCb(CActive::EPriorityStandard),
+iFileServerOpen(EFalse),
+iFileOpen(EFalse),
+iBufCreated(EFalse)
 	{
 	LOG(Log::Printf(_L("Probe::CProtocolProbe()\r\n"));)
+	iTimeOrigin.UniversalTime();
+
+	TCallBack cbFunc(DumpCb, this);
+	iDumpCb.Set(cbFunc);
 	}
 
 void CProtocolProbe::InitL(TDesC& aTag)
@@ -37,7 +53,6 @@
 	CProtocolBase::InitL(aTag);
 	}
 
-
 void CProtocolProbe::StartL()
 	{
 	//	__ASSERT_DEBUG(iProtocol != NULL, User::Leave(KErrGeneral));
@@ -45,20 +60,39 @@
 
 CProtocolProbe::~CProtocolProbe()
 	{
-	LOG(Log::Printf(_L("Probe::~CProtocolProbe()\r\n"));)
+	LOG(Log::Printf(_L("Probe::~CProtocolProbe()\r\n"));)	
+	if(iFileOpen)
+	    {
+		iFile.Close();
+		iFileOpen = EFalse;
+	    }
+	if(iFileServerOpen)
+		{
+		iFs.Close();
+		iFileServerOpen = EFalse;
+		}	
+    if(iBufCreated)
+        {
+        iBuf.Close();
+        iBufCreated = EFalse;
+        }
 	}
 
-
 CProtocolProbe *CProtocolProbe::NewL(TUint aId)
 	{
+
 	return new (ELeave) CProtocolProbe(aId);
 	}
 
 void CProtocolProbe::FillIdentification(TServerProtocolDesc& anEntry, TUint aId)
 	{
+
 	anEntry.iName=_S("probe");
 	if (aId > 1)
+		{
 		anEntry.iName.AppendNum(aId-1);
+		}
+
 	anEntry.iAddrFamily = KAfProbe;
 	anEntry.iSockType = KSockDatagram;
 	anEntry.iProtocol = aId;
@@ -83,7 +117,10 @@
 	LOG(Log::Printf(_L("Probe::NewSAPL(%d)\r\n"), aProtocol);)
 
 	if (aProtocol != KSockDatagram)
+		{
 		User::Leave(KErrNotSupported);
+		}
+
 	CProviderProbe* sap = new (ELeave) CProviderProbe(this);
 	sap->iNext = iList;
 	iList = sap;
@@ -97,6 +134,7 @@
 //
 void CProtocolProbe::CancelSAP(const CServProviderBase* aSAP)
 	{
+	
 	CProviderProbe **h, *sap;
 	for (h = &iList; (sap = *h) != NULL; h = &sap->iNext)
 		if (sap == aSAP)
@@ -106,49 +144,218 @@
 			}
 	}
 
-
 // CProtocolProbe::NetworkAttachedL
 // ********************************
 // When network becomes available, do the hooking!
 //
 void CProtocolProbe::NetworkAttachedL()
 	{
+
 	NetworkService()->BindL(this, MIp6Hook::BindPostHook());
 	NetworkService()->BindL(this, MIp6Hook::BindPostHook()+1);
+
+	// initialise dump file
+	if(iFileOpen)
+		{
+		iFile.Close();
+		iFileOpen = EFalse;
+		}
+	if(iFileServerOpen)
+		{
+		iFs.Close();
+		iFileServerOpen = EFalse;
+		}
+
+	User::LeaveIfError(iFs.Connect());
+    iFileServerOpen = ETrue;
+    TBuf<50> filename;
+    filename.Append(KLogFolder);
+    filename.Append(KTcpDumpFolder);
+    filename.Append(KProbeDumpFile);
+	User::LeaveIfError(iFile.Replace(iFs, filename, EFileWrite));
+    iFileOpen = ETrue;
+
+    // allocate buffer
+    if(!iBufCreated)
+        {
+		const TInt KMaxBufferSize = 65535;
+        iBuf.CreateL(KMaxBufferSize);
+        iBufCreated = ETrue;
+        }
+    
+	LibcapDumpFileHeader();
 	}
 
+void CProtocolProbe::Queue(RMBufChain &aPacket)
 //
-//	CProtocolProbe::Deliver
-//	***********************
-//	Generate a copy of the packet to every bound provider
+//  Takes a copy of aPacket, adds it to the queue and triggers the callback
 //
-void CProtocolProbe::Deliver(RMBufChain &aPacket)
 	{
-	const RMBufPktInfo *const info = RMBufPacketBase::PeekInfoInChain(aPacket);
+
+	RMBufPacketBase copy;
+	TRAPD(err, copy.CopyPackedL(aPacket));
+	if (err == KErrNone)
+		{
+
+		//
+		// Calculate packet time-stamp
+		//
+		TTime newTime;
+		newTime.UniversalTime();
+		TTimeIntervalMicroSeconds interval = newTime.MicroSecondsFrom(iTimeOrigin);
+
+		const TInt KMicrosInASecond = 1000000;
 
-	for (CProviderProbe* sap = iList; sap != NULL; sap = sap->iNext)
+		//TUint32 micros = interval.Int64().Low();
+		TUint32 micros = I64LOW(interval.Int64());//.Low();  x.Low() -> I64LOW(x)
+		TUint32 secs = micros / KMicrosInASecond;
+		micros -= (secs * KMicrosInASecond);
+
+		//
+		// Reuse the protocol and flags fields of
+		// RMBufPktInfo to store the time-stamp
+		//
+		RMBufPktInfo* info = RMBufPacket::PeekInfoInChain(copy);
+		info->iProtocol = static_cast<TInt>(secs);
+		info->iFlags = static_cast<TUint>(micros);
+
+		iQueue.Append(copy);
+		iDumpCb.CallBack();
+		}
+	else
 		{
-		if (sap->IsReceiving(*info))
-			{
-			RMBufPacketBase copy;
-			TRAPD(err, copy.CopyPackedL(aPacket));
-			if (err == KErrNone)
-				sap->Process(copy, this);
-			else
-				copy.Free();
-			}
+		copy.Free();
 		}
 	}
 
 
+//
+//	CProtocolProbe::Dump
+//	***********************
+//	Log the packet to file
+//
+void CProtocolProbe::Dump(RMBufChain &aPacket)
+	{
+
+	RMBufPacket packet;
+	packet.Assign(aPacket);
+	RMBufPktInfo* info = packet.Unpack();
+
+	TUint32 secs = static_cast<TUint32>(info->iProtocol);
+	TUint32 micros = static_cast<TUint32>(info->iFlags);
+
+    iBuf.SetMax();
+    packet.CopyOut(iBuf, 0);
+    if(iBuf.Length() != info->iLength)
+        {
+        iBuf.SetLength(info->iLength);
+        }
+	LibcapDump(iBuf, secs, micros);
+	packet.Free();
+	}
+
 TInt CProtocolProbe::Send(RMBufChain &aPacket, CProtocolBase* aSrc)
 	{
-	Deliver(aPacket);
+
+	Queue(aPacket);
 	return CProtocolPosthook::Send(aPacket, aSrc);
 	}
 
 void CProtocolProbe::Process(RMBufChain &aPacket, CProtocolBase* aSrc)
 	{
-	Deliver(aPacket);
+
+	Queue(aPacket);
 	CProtocolPosthook::Process(aPacket, aSrc);
 	}
+
+void CProtocolProbe::LibcapDumpFileHeader()
+//
+//  Dump file header in a format compatible with Libcap
+//
+//  Format is:
+//  
+//  struct FileHeader
+//      {
+//	    TUint32 magic; 
+//	    TUint16 version_major;
+//	    TUint16 version_minor;
+//	    TUint32 thiszone;	/* gmt to local correction */
+//	    TUint32 sigfigs;	/* accuracy of timestamps */
+//	    TUint32 snaplen;	/* max length saved portion of each pkt */
+//	    TUint32 linktype;	/* data link type (LINKTYPE_*) */
+//      };
+//
+//  Note LINKTYPE specified in libpcap/bpf/net/bpf.h (see www.tcpdump.org)
+//
+	{
+
+	TBuf8<sizeof(TUint32)*5+sizeof(TUint16)*2> fileHeader;
+	*((TUint32*) &(fileHeader.Ptr()[0])) = 0xa1b2c3d4;
+	*((TUint16*) &(fileHeader.Ptr()[4])) = 0x02; 
+	*((TUint16*) &(fileHeader.Ptr()[6])) = 0x04; 
+	*((TUint32*) &(fileHeader.Ptr()[8])) = 0x00;
+	*((TUint32*) &(fileHeader.Ptr()[12])) = 0x00;
+	*((TUint32*) &(fileHeader.Ptr()[16])) = 0xffff;
+	*((TUint32*) &(fileHeader.Ptr()[20])) = 12;       // DLT_RAW		12	/* raw IP */
+	fileHeader.SetLength(fileHeader.MaxLength());
+
+	iFile.Write(fileHeader);
+	}
+
+void CProtocolProbe::LibcapDump(const TDesC8& aBuffer, TUint32 aTimeStampSecs, TUint32 aTimeStampMicros)
+//
+//  Dumps a packet in a format compatbible with Libcap
+//
+//  For each record the format is:
+//
+//  struct record 
+//      {
+//      TUint32 sec;	/* time stamp - secs*/
+//      TUint32 usec;	/* time stamp - microsecs*/
+//      TUint32 captureLen;	/* length packet captured */
+//      TUint32 packetLen;	/* total length of packet*/
+//      };
+//
+//  Byte ordering of the header is little endian
+//  Byte ordering of the packet is network byte order (big endian)
+//
+	{
+	
+	TBuf8<sizeof(TUint32)*4> recordHeader;
+	recordHeader.FillZ();
+
+	*((TUint32*) &(recordHeader.Ptr()[0])) = aTimeStampSecs;
+	*((TUint32*) &(recordHeader.Ptr()[4])) = aTimeStampMicros;
+	*((TUint32*) &(recordHeader.Ptr()[8])) = aBuffer.Length();
+	*((TUint32*) &(recordHeader.Ptr()[12])) = aBuffer.Length();
+	recordHeader.SetLength(recordHeader.MaxLength());
+
+	iFile.Write(recordHeader);
+	iFile.Write(aBuffer);
+	}
+
+
+
+TInt CProtocolProbe::DumpCb(TAny* aThisPtr)
+//
+//  Callback function - calls DumpQueuedPackets()
+//
+	{
+
+	CProtocolProbe* self = static_cast<CProtocolProbe*>(aThisPtr);
+	self->DumpQueuedPackets();
+	return KErrNone;
+	}
+
+void CProtocolProbe::DumpQueuedPackets()
+//
+//  Dumps all packets on the queue to the log file
+//
+	{
+
+	RMBufPacketBase packet;
+	while(iQueue.Remove(packet))
+		{
+		Dump(packet);
+		}
+	}
--- a/networkingtestandutils/ipprobe/src/sap.cpp	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingtestandutils/ipprobe/src/sap.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -1,21 +1,23 @@
-// 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 "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:
-// sap.cpp - Packet Probe Hook
-//
+/*
+* Copyright (c) 2009-2010 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: Packet probe hook
+*
+*/
 
 #include "sap.h"
 
+
 CProviderProbe::CProviderProbe(CProtocolProbe* aProtocol) : iProtocol(aProtocol)
 	{
 	__DECLARE_NAME(_S("CProviderProbe"));
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkingtestandutils/networkingintegrationtest/te_DedicatedSignalling1ryCtx/configs/te_dedicatedsignalling1ryctx_changedsid_pdpcpr.cfg	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,1043 @@
+############################################################
+## AUTO-GENERATED CONFIGURATION FILE
+## CommsDat Database Dump Utility
+## 1.1
+############################################################
+
+############################################################
+## Network
+## 
+[Network]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Intranet
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Intranet2
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## ModemBearer
+## 
+[ModemBearer]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Loopback Modem
+	TSYName=SIM
+	CSYName=PKTLOOPBACK
+	LastSocketActivityTimeout=180
+	LastSessionClosedTimeout=4
+	LastSocketClosedTimeout=6
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageValidityPeriod=0
+	MessageDeliveryReport=FALSE
+	CommRole=0
+	Agent=NULLAGT
+	BCAStack=C32Bca
+	FIELD_COUNT=66
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Loopback_RawIP_1
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::501
+	CSYName=PKTLOOPBACK
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Loopback_SPUD_2
+	IfName=SPUD
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=Loopback_RawIP_3
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::503
+	CSYName=PKTLOOPBACK
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=Loopback_SPUD_4
+	IfName=SPUD
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=WinTunnel_SPUD_5
+	IfName=SPUD
+	Agent=NULLAGT
+	FIELD_COUNT=4
+END_ADD
+
+
+############################################################
+## Location
+## 
+[Location]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Location
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Office
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=171
+	DialOutCode=9,
+	Mobile=FALSE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Mobile
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## GlobalSettings
+## 
+[GlobalSettings]
+ADD_TEMPLATE
+	DefaultTier=Link.TierTable.2048
+	FIELD_COUNT=1
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	ConnectionAttempts=2
+	RedialAttempts=3
+	SmsReceiveMode=2
+	GPRSAttachMode=1
+	AcceptIncomingGprs=1
+	GPRSClassCBearer=GSM
+	ModemForDataAndFax=2
+	ModemForPhoneServicesAndSMS=2
+	LocationForDataAndFax=41878016
+	LocationForPhoneServicesAndSMS=41878016
+	MaxMBufHeap=41878016
+	DefaultNetwork=33489152
+	BearerAvailabilityCheckTSY=mm
+	FIELD_COUNT=15
+END_ADD
+
+
+############################################################
+## OutgoingGPRS
+## 
+[OutgoingGPRS]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Outgoing GPRS
+	APN=Test
+	PDPType=IPV4
+	ReqPrecedence=2
+	ReqDelay=4
+	ReqReliability=3
+	ReqPeakThroughput=3
+	ReqMeanThroughput=31
+	MinPrecedence=2
+	MinDelay=4
+	MinReliability=3
+	MinPeakThroughput=3
+	MinMeanThroughput=31
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	AuthRetries=1
+	IpGateway=0.0.0.1
+	IpAddrFromServer=FALSE
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=194.72.6.51
+	IpNameServer2=194.72.6.51
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=30
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=RawIP_Bounce_1
+	PDPType=IPV4
+	IfPromptForAuth=FALSE
+	IpNetMask=255.255.255.0
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.1.1
+	IpDNSAddrFromServer=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=SPUD_Echo_2
+	PDPType=IPV4
+	IfParams=lowernif=RAWIP
+	IfPromptForAuth=FALSE
+	IpNetMask=255.255.255.0
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.2
+	IpDNSAddrFromServer=TRUE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=RawIP_Bounce_3
+	PDPType=IPV4
+	IfPromptForAuth=FALSE
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.2.3
+	IpDNSAddrFromServer=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=SPUD_Echo_4
+	PDPType=IPV4
+	IfParams=lowernif=RAWIP
+	IfPromptForAuth=FALSE
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.2.4
+	IpDNSAddrFromServer=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## DefaultGPRS
+## 
+[DefaultGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dummy Default GPRS Settings
+	Usage=1
+	APN=Access point name
+	PDPType=IPV6
+	PDPAddress=www.wid.com
+	Precedence=1
+	Delay=1
+	Reliability=1
+	PeakThroughput=1
+	MeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=TRUE
+	HeaderCompression=TRUE
+	GprsUseEdge=FALSE
+	AnonymousAccess=TRUE
+	FIELD_COUNT=20
+END_ADD
+
+
+############################################################
+## APPrioritySelectionPolicyTable
+## 
+[APPrioritySelectionPolicyTable]
+ADD_SECTION
+# COMMDB_ID = 1
+  	Id=1
+	Name=SelectionPolicy1
+	AP1=Link.AccessPointTable.10001
+	APCOUNT=1
+	FIELD_COUNT=4
+END_ADD
+
+############################################################
+## AccessPointTable
+## 
+[AccessPointTable]
+ADD_SECTION
+# COMMDB_ID = 243
+	Id=5
+	Name=rawipMappedFromIAP5
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.3
+	CprConfig=5
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 245
+	Id=4
+	Name=spud-rawipMappedFromIAP4
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.5
+	CprConfig=4
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 247
+	Id=3
+	Name=rawipMappedFromIAP3
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.3
+	CprConfig=3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 249
+	Id=2
+	Name=spud-rawipMappedFromIAP2
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.5
+	CprConfig=2
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 251
+	Id=1
+	Name=rawipMappedFromIAP1
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.3
+	CprConfig=1
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 253
+	Id=10001
+	Name=IPProtoDefault
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	CustomSelectionPolicy=2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=10000
+	Name=NetworkDefault
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## BearerTypeTable
+## 
+[BearerTypeTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ethint
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=tunnelnif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.6
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.6
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=qosppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.7
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.7
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=dummynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=hungrynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.9
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.9
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=spud-ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.5
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=spud-rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.5
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=7
+END_ADD
+
+##This record here is the template record for the IPProto level APs generated by CommsDat.
+ADD_SECTION
+# COMMDB_ID = 10
+	##This name is a predefined name for the template for the IPProto APs.
+	##Please don't change it!
+	Name=IPProtoDefaultTemplate
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## IAP
+## 
+[IAP]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Loopback_GRPS_1
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Loopback_GRPS_2
+	IAPServiceType=OutgoingGPRS
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=Location.2
+	IAPAppSid=538984447
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=Loopback_GRPS_3
+	IAPServiceType=OutgoingGPRS
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=Loopback_GRPS_4
+	IAPServiceType=OutgoingGPRS
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=4
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=Loopback_GRPS_5
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## ConnectionPreferences
+## 
+[ConnectionPreferences]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	Ranking=1
+	Direction=OUTGOING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=2
+	FIELD_COUNT=7
+END_ADD
+
+############################################################
+## UmtsR99QoSAndOn
+## 
+[UmtsR99QoSAndOn]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=R99Default1
+	ReqTrafficClass=1
+	MinTrafficClass=1
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=1
+	MinDeliverErroneousSDU=1
+	ReqMaxSDUSize=0
+	MinAcceptableMaxSDUSize=0
+	ReqMaxUplinkRate=0
+	ReqMinUplinkRate=0
+	ReqMaxDownlinkRate=0
+	ReqMinDownlinkRate=0
+	ReqBER=1
+	MaxBER=1
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=0
+	MaxTransferDelay=0
+	ReqGuaranteedUplinkRate=0
+	MinGuaranteedUplinkRat=0
+	ReqGuaranteedDownlinkRate=0
+	MinGuaranteedDownlinkRate=0
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=29
+END_ADD
+
+############################################################
+## TierTable
+## 
+[TierTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=2048
+	TierImplUid=271064536
+	Name=Tier1
+	TierThreadName=ESock_IP
+	TierManagerName=NetworkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=271064560
+	TierImplUid=271064560
+	Name=Tier2
+	TierThreadName=ESock_IP
+	TierManagerName=ProtoTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10001
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=271064565
+	TierImplUid=271064565
+	Name=Tier3
+	TierThreadName=ESock_IP
+	TierManagerName=LinkTierManager
+	##NB defaultAccessPoint not present in this layer. This is only needed here to satisfy the check
+	##on the link layer. However important that once this field has a value it has to be linked to a
+	##correct accesspoint record in the accesspoint table because this will be checked either.
+	DefaultAccessPoint=Link.AccessPointTable.1
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## MCprTable
+## 
+[MCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=netmcpr
+	MCprUid=271009095
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotomcpr
+	MCprUid=271064558
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=pppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=ethmcpr
+	MCprUid=271064572
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=rawipmcpr
+	MCprUid=271064576
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=tunnelmcpr
+	MCprUid=271064578
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qospppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=dummynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=hungrynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Id=10
+	Name=pdpmcpr
+	MCprUid=271065840
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## CprTable
+## 
+[CprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipcpr
+	CprUid=270561519
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotocpr
+	CprUid=271064531
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentcpr
+	CprUid=271064552
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=vanillacpr
+	CprUid=271065843
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=pdpcpr
+	CprUid=271065826
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## SCprTable
+## 
+[SCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipscpr
+	SCprUid=0xFFFFFFFF
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotoscpr
+	SCprUid=271064529
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentscpr
+	SCprUid=271064554
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=pdpscpr
+	SCprUid=271065824
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=pppscpr
+	SCprUid=271065852
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=vanillascpr
+	SCprUid=271065844
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qosscpr
+	SCprUid=271065811
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=ipqosprotoscpr
+	SCprUid=271065816
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## ProtocolTable
+## 
+[ProtocolTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=sapshim
+	ProtocolUid=270496898
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipshim4
+	ProtocolUid=271064118
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=ppp
+	ProtocolUid=271064143
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=ethernet
+	ProtocolUid=271064539
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=rawip
+	ProtocolUid=271064562
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=tunnel
+	ProtocolUid=271064567
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qosppp
+	ProtocolUid=271064148
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=dummynif
+	ProtocolUid=271064123
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=hungrynif
+	ProtocolUid=271064125
+	FIELD_COUNT=3
+END_ADD
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkingtestandutils/networkingintegrationtest/te_DedicatedSignalling1ryCtx/configs/te_dedicatedsignalling1ryctx_imssi_pdpcpr.cfg	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,1041 @@
+############################################################
+## AUTO-GENERATED CONFIGURATION FILE
+## CommsDat Database Dump Utility
+## 1.1
+############################################################
+
+############################################################
+## Network
+## 
+[Network]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Intranet
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Intranet2
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## ModemBearer
+## 
+[ModemBearer]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Loopback Modem
+	TSYName=SIM
+	CSYName=PKTLOOPBACK
+	LastSocketActivityTimeout=180
+	LastSessionClosedTimeout=4
+	LastSocketClosedTimeout=6
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageValidityPeriod=0
+	MessageDeliveryReport=FALSE
+	CommRole=0
+	Agent=NULLAGT
+	BCAStack=C32Bca
+	FIELD_COUNT=66
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Loopback_RawIP_1
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::501
+	CSYName=PKTLOOPBACK
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Loopback_SPUD_2
+	IfName=SPUD
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=Loopback_RawIP_3
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::503
+	CSYName=PKTLOOPBACK
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=Loopback_SPUD_4
+	IfName=SPUD
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=WinTunnel_SPUD_5
+	IfName=SPUD
+	Agent=NULLAGT
+	FIELD_COUNT=4
+END_ADD
+
+
+############################################################
+## Location
+## 
+[Location]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Location
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Office
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=171
+	DialOutCode=9,
+	Mobile=FALSE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Mobile
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## GlobalSettings
+## 
+[GlobalSettings]
+ADD_TEMPLATE
+	DefaultTier=Link.TierTable.2048
+	FIELD_COUNT=1
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	ConnectionAttempts=2
+	RedialAttempts=3
+	SmsReceiveMode=2
+	GPRSAttachMode=1
+	AcceptIncomingGprs=1
+	GPRSClassCBearer=GSM
+	ModemForDataAndFax=2
+	ModemForPhoneServicesAndSMS=2
+	LocationForDataAndFax=41878016
+	LocationForPhoneServicesAndSMS=41878016
+	MaxMBufHeap=41878016
+	DefaultNetwork=33489152
+	BearerAvailabilityCheckTSY=mm
+	FIELD_COUNT=15
+END_ADD
+
+
+############################################################
+## OutgoingGPRS
+## 
+[OutgoingGPRS]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Outgoing GPRS
+	APN=Test
+	PDPType=IPV4
+	ReqPrecedence=2
+	ReqDelay=4
+	ReqReliability=3
+	ReqPeakThroughput=3
+	ReqMeanThroughput=31
+	MinPrecedence=2
+	MinDelay=4
+	MinReliability=3
+	MinPeakThroughput=3
+	MinMeanThroughput=31
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	AuthRetries=1
+	IpGateway=0.0.0.1
+	IpAddrFromServer=FALSE
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=194.72.6.51
+	IpNameServer2=194.72.6.51
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=30
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=RawIP_Bounce_1
+	PDPType=IPV4
+	IfPromptForAuth=FALSE
+	IpNetMask=255.255.255.0
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.1.1
+	IpDNSAddrFromServer=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=SPUD_Echo_2
+	PDPType=IPV4
+	IfParams=lowernif=RAWIP
+	IfPromptForAuth=FALSE
+	IpNetMask=255.255.255.0
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.2
+	IpDNSAddrFromServer=TRUE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=RawIP_Bounce_3
+	PDPType=IPV4
+	IfPromptForAuth=FALSE
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.2.3
+	IpDNSAddrFromServer=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=SPUD_Echo_4
+	PDPType=IPV4
+	IfParams=lowernif=RAWIP
+	IfPromptForAuth=FALSE
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.2.4
+	IpDNSAddrFromServer=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## DefaultGPRS
+## 
+[DefaultGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dummy Default GPRS Settings
+	Usage=1
+	APN=Access point name
+	PDPType=IPV6
+	PDPAddress=www.wid.com
+	Precedence=1
+	Delay=1
+	Reliability=1
+	PeakThroughput=1
+	MeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=TRUE
+	HeaderCompression=TRUE
+	GprsUseEdge=FALSE
+	AnonymousAccess=TRUE
+	FIELD_COUNT=20
+END_ADD
+
+############################################################
+## APPrioritySelectionPolicyTable
+## 
+[APPrioritySelectionPolicyTable]
+ADD_SECTION
+# COMMDB_ID = 1
+  	Id=1
+	Name=SelectionPolicy1
+	AP1=Link.AccessPointTable.10001
+	APCOUNT=1
+	FIELD_COUNT=4
+END_ADD
+
+############################################################
+## AccessPointTable
+## 
+[AccessPointTable]
+ADD_SECTION
+# COMMDB_ID = 243
+	Id=5
+	Name=rawipMappedFromIAP5
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.3
+	CprConfig=5
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 245
+	Id=4
+	Name=spud-rawipMappedFromIAP4
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.5
+	CprConfig=4
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 247
+	Id=3
+	Name=rawipMappedFromIAP3
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.3
+	CprConfig=3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 249
+	Id=2
+	Name=spud-rawipMappedFromIAP2
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.5
+	CprConfig=2
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 251
+	Id=1
+	Name=rawipMappedFromIAP1
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.3
+	CprConfig=1
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 253
+	Id=10001
+	Name=IPProtoDefault
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	CustomSelectionPolicy=2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=10000
+	Name=NetworkDefault
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## BearerTypeTable
+## 
+[BearerTypeTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ethint
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=tunnelnif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.6
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.6
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=qosppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.7
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.7
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=dummynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=hungrynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.9
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.9
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=spud-ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.5
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=spud-rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.5
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=7
+END_ADD
+
+##This record here is the template record for the IPProto level APs generated by CommsDat.
+ADD_SECTION
+# COMMDB_ID = 10
+	##This name is a predefined name for the template for the IPProto APs.
+	##Please don't change it!
+	Name=IPProtoDefaultTemplate
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## IAP
+## 
+[IAP]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Loopback_GRPS_1
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Loopback_GRPS_2
+	IAPServiceType=OutgoingGPRS
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=Loopback_GRPS_3
+	IAPServiceType=OutgoingGPRS
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=Loopback_GRPS_4
+	IAPServiceType=OutgoingGPRS
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=4
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=Loopback_GRPS_5
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## ConnectionPreferences
+## 
+[ConnectionPreferences]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	Ranking=1
+	Direction=OUTGOING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=2
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## UmtsR99QoSAndOn
+## 
+[UmtsR99QoSAndOn]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=R99Default1
+	ReqTrafficClass=1
+	MinTrafficClass=1
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=1
+	MinDeliverErroneousSDU=1
+	ReqMaxSDUSize=0
+	MinAcceptableMaxSDUSize=0
+	ReqMaxUplinkRate=0
+	ReqMinUplinkRate=0
+	ReqMaxDownlinkRate=0
+	ReqMinDownlinkRate=0
+	ReqBER=1
+	MaxBER=1
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=0
+	MaxTransferDelay=0
+	ReqGuaranteedUplinkRate=0
+	MinGuaranteedUplinkRat=0
+	ReqGuaranteedDownlinkRate=0
+	MinGuaranteedDownlinkRate=0
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=TRUE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=29
+END_ADD
+
+############################################################
+## TierTable
+## 
+[TierTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=2048
+	TierImplUid=271064536
+	Name=Tier1
+	TierThreadName=ESock_IP
+	TierManagerName=NetworkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=271064560
+	TierImplUid=271064560
+	Name=Tier2
+	TierThreadName=ESock_IP
+	TierManagerName=ProtoTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10001
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=271064565
+	TierImplUid=271064565
+	Name=Tier3
+	TierThreadName=ESock_IP
+	TierManagerName=LinkTierManager
+##NB defaultAccessPoint not present in this layer. This is only needed here to satisfy the check
+##on the link layer. However important that once this field has a value it has to be linked to a
+##correct accesspoint record in the accesspoint table because this will be checked either.
+	DefaultAccessPoint=Link.AccessPointTable.1
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## MCprTable
+## 
+[MCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=netmcpr
+	MCprUid=271009095
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotomcpr
+	MCprUid=271064558
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=pppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=ethmcpr
+	MCprUid=271064572
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=rawipmcpr
+	MCprUid=271064576
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=tunnelmcpr
+	MCprUid=271064578
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qospppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=dummynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=hungrynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Id=10
+	Name=pdpmcpr
+	MCprUid=271065840
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## CprTable
+## 
+[CprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipcpr
+	CprUid=270561519
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotocpr
+	CprUid=271064531
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentcpr
+	CprUid=271064552
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=vanillacpr
+	CprUid=271065843
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=pdpcpr
+	CprUid=271065826
+	FIELD_COUNT=3
+END_ADD
+
+############################################################
+## SCprTable
+## 
+[SCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipscpr
+	SCprUid=0xFFFFFFFF
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotoscpr
+	SCprUid=271064529
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentscpr
+	SCprUid=271064554
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=pdpscpr
+	SCprUid=271065824
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=pppscpr
+	SCprUid=271065852
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=vanillascpr
+	SCprUid=271065844
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qosscpr
+	SCprUid=271065811
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=ipqosprotoscpr
+	SCprUid=271065816
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## ProtocolTable
+## 
+[ProtocolTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=sapshim
+	ProtocolUid=270496898
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipshim4
+	ProtocolUid=271064118
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=ppp
+	ProtocolUid=271064143
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=ethernet
+	ProtocolUid=271064539
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=rawip
+	ProtocolUid=271064562
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=tunnel
+	ProtocolUid=271064567
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qosppp
+	ProtocolUid=271064148
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=dummynif
+	ProtocolUid=271064123
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=hungrynif
+	ProtocolUid=271064125
+	FIELD_COUNT=3
+END_ADD
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkingtestandutils/networkingintegrationtest/te_DedicatedSignalling1ryCtx/configs/te_dedicatedsignalling1ryctx_nosid_pdpcpr.cfg	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,1042 @@
+############################################################
+## AUTO-GENERATED CONFIGURATION FILE
+## CommsDat Database Dump Utility
+## 1.1
+############################################################
+
+############################################################
+## Network
+## 
+[Network]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Intranet
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Intranet2
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## ModemBearer
+## 
+[ModemBearer]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Loopback Modem
+	TSYName=SIM
+	CSYName=PKTLOOPBACK
+	LastSocketActivityTimeout=180
+	LastSessionClosedTimeout=4
+	LastSocketClosedTimeout=6
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageValidityPeriod=0
+	MessageDeliveryReport=FALSE
+	CommRole=0
+	Agent=NULLAGT
+	BCAStack=C32Bca
+	FIELD_COUNT=66
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Loopback_RawIP_1
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::501
+	CSYName=PKTLOOPBACK
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Loopback_SPUD_2
+	IfName=SPUD
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=Loopback_RawIP_3
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::503
+	CSYName=PKTLOOPBACK
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=Loopback_SPUD_4
+	IfName=SPUD
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=WinTunnel_SPUD_5
+	IfName=SPUD
+	Agent=NULLAGT
+	FIELD_COUNT=4
+END_ADD
+
+
+############################################################
+## Location
+## 
+[Location]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Location
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Office
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=171
+	DialOutCode=9,
+	Mobile=FALSE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Mobile
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## GlobalSettings
+## 
+[GlobalSettings]
+ADD_TEMPLATE
+	DefaultTier=Link.TierTable.2048
+	FIELD_COUNT=1
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	ConnectionAttempts=2
+	RedialAttempts=3
+	SmsReceiveMode=2
+	GPRSAttachMode=1
+	AcceptIncomingGprs=1
+	GPRSClassCBearer=GSM
+	ModemForDataAndFax=2
+	ModemForPhoneServicesAndSMS=2
+	LocationForDataAndFax=41878016
+	LocationForPhoneServicesAndSMS=41878016
+	MaxMBufHeap=41878016
+	DefaultNetwork=33489152
+	BearerAvailabilityCheckTSY=mm
+	FIELD_COUNT=15
+END_ADD
+
+
+############################################################
+## OutgoingGPRS
+## 
+[OutgoingGPRS]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Outgoing GPRS
+	APN=Test
+	PDPType=IPV4
+	ReqPrecedence=2
+	ReqDelay=4
+	ReqReliability=3
+	ReqPeakThroughput=3
+	ReqMeanThroughput=31
+	MinPrecedence=2
+	MinDelay=4
+	MinReliability=3
+	MinPeakThroughput=3
+	MinMeanThroughput=31
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	AuthRetries=1
+	IpGateway=0.0.0.1
+	IpAddrFromServer=FALSE
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=194.72.6.51
+	IpNameServer2=194.72.6.51
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=30
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=RawIP_Bounce_1
+	PDPType=IPV4
+	IfPromptForAuth=FALSE
+	IpNetMask=255.255.255.0
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.1.1
+	IpDNSAddrFromServer=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=SPUD_Echo_2
+	PDPType=IPV4
+	IfParams=lowernif=RAWIP
+	IfPromptForAuth=FALSE
+	IpNetMask=255.255.255.0
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.2
+	IpDNSAddrFromServer=TRUE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=RawIP_Bounce_3
+	PDPType=IPV4
+	IfPromptForAuth=FALSE
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.2.3
+	IpDNSAddrFromServer=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=SPUD_Echo_4
+	PDPType=IPV4
+	IfParams=lowernif=RAWIP
+	IfPromptForAuth=FALSE
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.2.4
+	IpDNSAddrFromServer=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## DefaultGPRS
+## 
+[DefaultGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dummy Default GPRS Settings
+	Usage=1
+	APN=Access point name
+	PDPType=IPV6
+	PDPAddress=www.wid.com
+	Precedence=1
+	Delay=1
+	Reliability=1
+	PeakThroughput=1
+	MeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=TRUE
+	HeaderCompression=TRUE
+	GprsUseEdge=FALSE
+	AnonymousAccess=TRUE
+	FIELD_COUNT=20
+END_ADD
+
+############################################################
+## APPrioritySelectionPolicyTable
+## 
+[APPrioritySelectionPolicyTable]
+ADD_SECTION
+# COMMDB_ID = 1
+  	Id=1
+	Name=SelectionPolicy1
+	AP1=Link.AccessPointTable.10001
+	APCOUNT=1
+	FIELD_COUNT=4
+END_ADD
+
+############################################################
+## AccessPointTable
+## 
+[AccessPointTable]
+ADD_SECTION
+# COMMDB_ID = 243
+	Id=5
+	Name=rawipMappedFromIAP5
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.3
+	CprConfig=5
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 245
+	Id=4
+	Name=spud-rawipMappedFromIAP4
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.5
+	CprConfig=4
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 247
+	Id=3
+	Name=rawipMappedFromIAP3
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.3
+	CprConfig=3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 249
+	Id=2
+	Name=spud-rawipMappedFromIAP2
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.5
+	CprConfig=2
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 251
+	Id=1
+	Name=rawipMappedFromIAP1
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.3
+	CprConfig=1
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 253
+	Id=10001
+	Name=IPProtoDefault
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	CustomSelectionPolicy=2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=10000
+	Name=NetworkDefault
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## BearerTypeTable
+## 
+[BearerTypeTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ethint
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=tunnelnif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.6
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.6
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=qosppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.7
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.7
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=dummynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=hungrynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.9
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.9
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=spud-ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.5
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=spud-rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.5
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=7
+END_ADD
+
+##This record here is the template record for the IPProto level APs generated by CommsDat.
+ADD_SECTION
+# COMMDB_ID = 10
+	##This name is a predefined name for the template for the IPProto APs.
+	##Please don't change it!
+	Name=IPProtoDefaultTemplate
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## IAP
+## 
+[IAP]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Loopback_GRPS_1
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Loopback_GRPS_2
+	IAPServiceType=OutgoingGPRS
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=Loopback_GRPS_3
+	IAPServiceType=OutgoingGPRS
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=Loopback_GRPS_4
+	IAPServiceType=OutgoingGPRS
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=4
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=Loopback_GRPS_5
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## ConnectionPreferences
+## 
+[ConnectionPreferences]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	Ranking=1
+	Direction=OUTGOING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=2
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## UmtsR99QoSAndOn
+## 
+[UmtsR99QoSAndOn]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=R99Default1
+	ReqTrafficClass=1
+	MinTrafficClass=1
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=1
+	MinDeliverErroneousSDU=1
+	ReqMaxSDUSize=0
+	MinAcceptableMaxSDUSize=0
+	ReqMaxUplinkRate=0
+	ReqMinUplinkRate=0
+	ReqMaxDownlinkRate=0
+	ReqMinDownlinkRate=0
+	ReqBER=1
+	MaxBER=1
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=0
+	MaxTransferDelay=0
+	ReqGuaranteedUplinkRate=0
+	MinGuaranteedUplinkRat=0
+	ReqGuaranteedDownlinkRate=0
+	MinGuaranteedDownlinkRate=0
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=29
+END_ADD
+
+
+############################################################
+## TierTable
+## 
+[TierTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=2048
+	TierImplUid=271064536
+	Name=Tier1
+	TierThreadName=ESock_IP
+	TierManagerName=NetworkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=271064560
+	TierImplUid=271064560
+	Name=Tier2
+	TierThreadName=ESock_IP
+	TierManagerName=ProtoTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10001
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=271064565
+	TierImplUid=271064565
+	Name=Tier3
+	TierThreadName=ESock_IP
+	TierManagerName=LinkTierManager
+##NB defaultAccessPoint not present in this layer. This is only needed here to satisfy the check
+##on the link layer. However important that once this field has a value it has to be linked to a
+##correct accesspoint record in the accesspoint table because this will be checked either.
+	DefaultAccessPoint=Link.AccessPointTable.1
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## MCprTable
+## 
+[MCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=netmcpr
+	MCprUid=271009095
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotomcpr
+	MCprUid=271064558
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=pppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=ethmcpr
+	MCprUid=271064572
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=rawipmcpr
+	MCprUid=271064576
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=tunnelmcpr
+	MCprUid=271064578
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qospppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=dummynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=hungrynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Id=10
+	Name=pdpmcpr
+	MCprUid=271065840
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## CprTable
+## 
+[CprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipcpr
+	CprUid=270561519
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotocpr
+	CprUid=271064531
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentcpr
+	CprUid=271064552
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=vanillacpr
+	CprUid=271065843
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=pdpcpr
+	CprUid=271065826
+	FIELD_COUNT=3
+END_ADD
+
+############################################################
+## SCprTable
+## 
+[SCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipscpr
+	SCprUid=0xFFFFFFFF
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotoscpr
+	SCprUid=271064529
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentscpr
+	SCprUid=271064554
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=pdpscpr
+	SCprUid=271065824
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=pppscpr
+	SCprUid=271065852
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=vanillascpr
+	SCprUid=271065844
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qosscpr
+	SCprUid=271065811
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=ipqosprotoscpr
+	SCprUid=271065816
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## ProtocolTable
+## 
+[ProtocolTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=sapshim
+	ProtocolUid=270496898
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipshim4
+	ProtocolUid=271064118
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=ppp
+	ProtocolUid=271064143
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=ethernet
+	ProtocolUid=271064539
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=rawip
+	ProtocolUid=271064562
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=tunnel
+	ProtocolUid=271064567
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qosppp
+	ProtocolUid=271064148
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=dummynif
+	ProtocolUid=271064123
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=hungrynif
+	ProtocolUid=271064125
+	FIELD_COUNT=3
+END_ADD
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkingtestandutils/networkingintegrationtest/te_DedicatedSignalling1ryCtx/configs/te_dedicatedsignalling1ryctx_pdpcpr.cfg	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,1044 @@
+############################################################
+## AUTO-GENERATED CONFIGURATION FILE
+## CommsDat Database Dump Utility
+## 1.1
+############################################################
+
+############################################################
+## Network
+## 
+[Network]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Intranet
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Intranet2
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## ModemBearer
+## 
+[ModemBearer]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Loopback Modem
+	TSYName=SIM
+	CSYName=PKTLOOPBACK
+	LastSocketActivityTimeout=180
+	LastSessionClosedTimeout=4
+	LastSocketClosedTimeout=6
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageValidityPeriod=0
+	MessageDeliveryReport=FALSE
+	CommRole=0
+	Agent=NULLAGT
+	BCAStack=C32Bca
+	FIELD_COUNT=66
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Loopback_RawIP_1
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::501
+	CSYName=PKTLOOPBACK
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Loopback_SPUD_2
+	IfName=SPUD
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=Loopback_RawIP_3
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::503
+	CSYName=PKTLOOPBACK
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=Loopback_SPUD_4
+	IfName=SPUD
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=WinTunnel_SPUD_5
+	IfName=SPUD
+	Agent=NULLAGT
+	FIELD_COUNT=4
+END_ADD
+
+
+############################################################
+## Location
+## 
+[Location]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Location
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Office
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=171
+	DialOutCode=9,
+	Mobile=FALSE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Mobile
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## GlobalSettings
+## 
+[GlobalSettings]
+ADD_TEMPLATE
+	DefaultTier=Link.TierTable.2048
+	FIELD_COUNT=1
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	ConnectionAttempts=2
+	RedialAttempts=3
+	SmsReceiveMode=2
+	GPRSAttachMode=1
+	AcceptIncomingGprs=1
+	GPRSClassCBearer=GSM
+	ModemForDataAndFax=2
+	ModemForPhoneServicesAndSMS=2
+	LocationForDataAndFax=41878016
+	LocationForPhoneServicesAndSMS=41878016
+	MaxMBufHeap=41878016
+	DefaultNetwork=33489152
+	BearerAvailabilityCheckTSY=mm
+	FIELD_COUNT=15
+END_ADD
+
+
+############################################################
+## OutgoingGPRS
+## 
+[OutgoingGPRS]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Outgoing GPRS
+	APN=Test
+	PDPType=IPV4
+	ReqPrecedence=2
+	ReqDelay=4
+	ReqReliability=3
+	ReqPeakThroughput=3
+	ReqMeanThroughput=31
+	MinPrecedence=2
+	MinDelay=4
+	MinReliability=3
+	MinPeakThroughput=3
+	MinMeanThroughput=31
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	AuthRetries=1
+	IpGateway=0.0.0.1
+	IpAddrFromServer=FALSE
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=194.72.6.51
+	IpNameServer2=194.72.6.51
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=30
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=RawIP_Bounce_1
+	PDPType=IPV4
+	IfPromptForAuth=FALSE
+	IpNetMask=255.255.255.0
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.1.1
+	IpDNSAddrFromServer=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=SPUD_Echo_2
+	PDPType=IPV4
+	IfParams=lowernif=RAWIP
+	IfPromptForAuth=FALSE
+	IpNetMask=255.255.255.0
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.2
+	IpDNSAddrFromServer=TRUE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=RawIP_Bounce_3
+	PDPType=IPV4
+	IfPromptForAuth=FALSE
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.2.3
+	IpDNSAddrFromServer=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=SPUD_Echo_4
+	PDPType=IPV4
+	IfParams=lowernif=RAWIP
+	IfPromptForAuth=FALSE
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.2.4
+	IpDNSAddrFromServer=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## DefaultGPRS
+## 
+[DefaultGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dummy Default GPRS Settings
+	Usage=1
+	APN=Access point name
+	PDPType=IPV6
+	PDPAddress=www.wid.com
+	Precedence=1
+	Delay=1
+	Reliability=1
+	PeakThroughput=1
+	MeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=TRUE
+	HeaderCompression=TRUE
+	GprsUseEdge=FALSE
+	AnonymousAccess=TRUE
+	FIELD_COUNT=20
+END_ADD
+
+############################################################
+## APPrioritySelectionPolicyTable
+## 
+[APPrioritySelectionPolicyTable]
+ADD_SECTION
+# COMMDB_ID = 1
+  	Id=1
+	Name=SelectionPolicy1
+	AP1=Link.AccessPointTable.10001
+	APCOUNT=1
+	FIELD_COUNT=4
+END_ADD
+
+############################################################
+## AccessPointTable
+## 
+[AccessPointTable]
+ADD_SECTION
+# COMMDB_ID = 243
+	Id=5
+	Name=rawipMappedFromIAP5
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.3
+	CprConfig=5
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 245
+	Id=4
+	Name=spud-rawipMappedFromIAP4
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.5
+	CprConfig=4
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 247
+	Id=3
+	Name=rawipMappedFromIAP3
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.3
+	CprConfig=3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 249
+	Id=2
+	Name=spud-rawipMappedFromIAP2
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.5
+	CprConfig=2
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 251
+	Id=1
+	Name=rawipMappedFromIAP1
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.3
+	CprConfig=1
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 253
+	Id=10001
+	Name=IPProtoDefault
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	CustomSelectionPolicy=2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=10000
+	Name=NetworkDefault
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## BearerTypeTable
+## 
+[BearerTypeTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ethint
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=tunnelnif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.6
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.6
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=qosppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.7
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.7
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=dummynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=hungrynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.9
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.9
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=spud-ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.5
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=spud-rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.5
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=7
+END_ADD
+
+##This record here is the template record for the IPProto level APs generated by CommsDat.
+ADD_SECTION
+# COMMDB_ID = 10
+	##This name is a predefined name for the template for the IPProto APs.
+	##Please don't change it!
+	Name=IPProtoDefaultTemplate
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## IAP
+## 
+[IAP]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Loopback_GRPS_1
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=Location.2
+	IAPAppSid=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Loopback_GRPS_2
+	IAPServiceType=OutgoingGPRS
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=Location.2
+	IAPAppSid=270548991
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=Loopback_GRPS_3
+	IAPServiceType=OutgoingGPRS
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=Loopback_GRPS_4
+	IAPServiceType=OutgoingGPRS
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=4
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=Loopback_GRPS_5
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=Location.2
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## ConnectionPreferences
+## 
+[ConnectionPreferences]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	Ranking=1
+	Direction=OUTGOING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=2
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## UmtsR99QoSAndOn
+## 
+[UmtsR99QoSAndOn]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=R99Default1
+	ReqTrafficClass=1
+	MinTrafficClass=1
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=1
+	MinDeliverErroneousSDU=1
+	ReqMaxSDUSize=0
+	MinAcceptableMaxSDUSize=0
+	ReqMaxUplinkRate=0
+	ReqMinUplinkRate=0
+	ReqMaxDownlinkRate=0
+	ReqMinDownlinkRate=0
+	ReqBER=1
+	MaxBER=1
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=0
+	MaxTransferDelay=0
+	ReqGuaranteedUplinkRate=0
+	MinGuaranteedUplinkRat=0
+	ReqGuaranteedDownlinkRate=0
+	MinGuaranteedDownlinkRate=0
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=29
+END_ADD
+
+
+############################################################
+## TierTable
+## 
+[TierTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=2048
+	TierImplUid=271064536
+	Name=Tier1
+	TierThreadName=ESock_IP
+	TierManagerName=NetworkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=271064560
+	TierImplUid=271064560
+	Name=Tier2
+	TierThreadName=ESock_IP
+	TierManagerName=ProtoTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10001
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=271064565
+	TierImplUid=271064565
+	Name=Tier3
+	TierThreadName=ESock_IP
+	TierManagerName=LinkTierManager
+	##NB defaultAccessPoint not present in this layer. This is only needed here to satisfy the check
+	##on the link layer. However important that once this field has a value it has to be linked to a
+	##correct accesspoint record in the accesspoint table because this will be checked either.
+	DefaultAccessPoint=Link.AccessPointTable.1
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## MCprTable
+## 
+[MCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=netmcpr
+	MCprUid=271009095
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotomcpr
+	MCprUid=271064558
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=pppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=ethmcpr
+	MCprUid=271064572
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=rawipmcpr
+	MCprUid=271064576
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=tunnelmcpr
+	MCprUid=271064578
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qospppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=dummynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=hungrynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Id=10
+	Name=pdpmcpr
+	MCprUid=271065840
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## CprTable
+## 
+[CprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipcpr
+	CprUid=270561519
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotocpr
+	CprUid=271064531
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentcpr
+	CprUid=271064552
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=vanillacpr
+	CprUid=271065843
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=pdpcpr
+	CprUid=271065826
+	FIELD_COUNT=3
+END_ADD
+
+############################################################
+## SCprTable
+## 
+[SCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipscpr
+	SCprUid=0xFFFFFFFF
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotoscpr
+	SCprUid=271064529
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentscpr
+	SCprUid=271064554
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=pdpscpr
+	SCprUid=271065824
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=pppscpr
+	SCprUid=271065852
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=vanillascpr
+	SCprUid=271065844
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qosscpr
+	SCprUid=271065811
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=ipqosprotoscpr
+	SCprUid=271065816
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## ProtocolTable
+## 
+[ProtocolTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=sapshim
+	ProtocolUid=270496898
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipshim4
+	ProtocolUid=271064118
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=ppp
+	ProtocolUid=271064143
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=ethernet
+	ProtocolUid=271064539
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=rawip
+	ProtocolUid=271064562
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=tunnel
+	ProtocolUid=271064567
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qosppp
+	ProtocolUid=271064148
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=dummynif
+	ProtocolUid=271064123
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=hungrynif
+	ProtocolUid=271064125
+	FIELD_COUNT=3
+END_ADD
+
--- a/networkingtestandutils/networkingintegrationtest/te_DedicatedSignalling1ryCtx/group/bld.inf	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingtestandutils/networkingintegrationtest/te_DedicatedSignalling1ryCtx/group/bld.inf	Thu Jul 22 16:48:06 2010 +0100
@@ -42,10 +42,18 @@
 ../scripts/CIT_P635_Setup_QosPolicies2.script z:/testdata/scripts/cit_p635_setup_qospolicies2.script
 ../scripts/Restore_QosPolicies.script z:/testdata/scripts/restore_qospolicies.script
 #ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+../configs/te_dedicatedsignalling1ryctx_pdpcpr.cfg z:/testdata/configs/te_dedicatedsignalling1ryctx.cfg
+../configs/te_dedicatedsignalling1ryctx_changedsid_pdpcpr.cfg z:/testdata/configs/te_dedicatedsignalling1ryctx_changedsid.cfg
+../configs/te_dedicatedsignalling1ryctx_imssi_pdpcpr.cfg z:/testdata/configs/te_dedicatedsignalling1ryctx_imssi.cfg
+../configs/te_dedicatedsignalling1ryctx_nosid_pdpcpr.cfg z:/testdata/configs/te_dedicatedsignalling1ryctx_nosid.cfg
+#else
 ../configs/te_dedicatedsignalling1ryctx.cfg z:/testdata/configs/te_dedicatedsignalling1ryctx.cfg
 ../configs/te_dedicatedsignalling1ryctx_changedsid.cfg z:/testdata/configs/te_dedicatedsignalling1ryctx_changedsid.cfg
 ../configs/te_dedicatedsignalling1ryctx_imssi.cfg z:/testdata/configs/te_dedicatedsignalling1ryctx_imssi.cfg
 ../configs/te_dedicatedsignalling1ryctx_nosid.cfg z:/testdata/configs/te_dedicatedsignalling1ryctx_nosid.cfg
+#endif //#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 
 ../scripts/te_dedicatedsignalling1ryctx_post401.script z:/testdata/scripts/te_dedicatedsignalling1ryctx.script
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkingtestandutils/networkingintegrationtest/te_Sblp/configs/te_sblp_mesh_pdpcpr.cfg	Thu Jul 22 16:48:06 2010 +0100
@@ -0,0 +1,1477 @@
+############################################################
+## HAND-GENERATED CONFIGURATION FILE
+## 
+## Start at the GlobalSettings table and ConnectionPreferences table
+############################################################
+
+############################################################
+## Network
+## 
+[Network]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Intranet
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## ModemBearer
+## 
+[ModemBearer]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Loopback Modem
+	IfName=PPP
+	PortName=PKTLOOPBACK::502
+	TSYName=SIM
+	CSYName=PKTLOOPBACK
+	LastSocketActivityTimeout=6
+	LastSessionClosedTimeout=180
+	LastSocketClosedTimeout=10
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=AFTERDIALUNTILANSWER
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	Agent=NULLAGT
+	FIELD_COUNT=63
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Loopback_RawIP_1
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::502
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Loopback_RawIP_3
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::508
+	FIELD_COUNT=3
+END_ADD
+
+
+
+############################################################
+## LANBearer
+## 
+[LANBearer]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Assabet on-board Ethernet
+	IfName=ethint
+	LDDName=not used
+	PDDName=not used
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=nullagent.agt
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## Location
+## 
+[Location]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Location
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Office
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=171
+	DialOutCode=9,
+	Mobile=FALSE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Office Direct Dial
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=171
+	Mobile=FALSE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=Mobile
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=Home
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=181
+	Mobile=FALSE
+	UsePulseDial=TRUE
+	WaitForDialTone=TRUE
+	PauseAfterDialout=0
+	FIELD_COUNT=10
+END_ADD
+
+
+############################################################
+## Chargecard
+## 
+[Chargecard]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dummy BT Chargecard
+	AccountNumber=144,12345678
+	Pin=0000
+	LocalRule=HG
+	NatRule=HFG
+	IntlRule=HEFG
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Dummy Mercury Chargecard
+	AccountNumber=0500800800,,12345678
+	Pin=****
+	LocalRule=HG
+	NatRule=J,K,0FG
+	IntlRule=HEFG
+	FIELD_COUNT=7
+END_ADD
+
+############################################################
+## GlobalSettings
+## 
+## links to Tier table
+## DefaultTier = 271064536 Tier1 ESock_IP NetworkTierManager
+## No defaultSnap - therefore 399 selection chosen
+##
+[GlobalSettings]
+ADD_TEMPLATE
+	DefaultTier=Link.TierTable.2048
+	FIELD_COUNT=1
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	ConnectionAttempts=2
+	RedialAttempts=3
+	SmsBearer=0
+	SmsReceiveMode=2
+	GPRSAttachMode=1
+	AcceptIncomingGprs=1
+	GPRSClassCBearer=GSM
+	ModemForDataAndFax=1
+	ModemForPhoneServicesAndSMS=1
+	LocationForDataAndFax=1
+	LocationForPhoneServicesAndSMS=1
+	MaxMBufHeap=41877760
+	DefaultNetwork=1
+	BearerAvailabilityCheckTSY=SIM
+	FIELD_COUNT=16
+END_ADD
+
+############################################################
+## DialOutISP
+## 
+[DialOutISP]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Dial Out ISP
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=TRUE
+	DisplayPCT=FALSE
+	IfPromptForAuth=TRUE
+	IfCallbackEnabled=FALSE
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=28
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=NT RAS
+	Type=INTERNETONLY
+	DialResolution=TRUE
+	UseLoginScript=TRUE
+	LoginScript=CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND "CLIENT"+<0x0d>\nWAIT 3\n{\n"SERVER" OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n
+	PromptForLogin=FALSE
+	LoginName=RasUser
+	DisplayPCT=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=44
+END_ADD
+
+
+############################################################
+## DialInISP
+## 
+[DialInISP]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Dial In ISP
+	UseLoginScript=FALSE
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=10
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dial In CS ISP
+	UseLoginScript=FALSE
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=10
+END_ADD
+
+
+############################################################
+## OutgoingGPRS
+## 
+[OutgoingGPRS]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Outgoing GPRS
+	APN=Test
+	PDPType=IPV4
+	ReqPrecedence=2
+	ReqDelay=4
+	ReqReliability=3
+	ReqPeakThroughput=3
+	ReqMeanThroughput=31
+	MinPrecedence=2
+	MinDelay=4
+	MinReliability=3
+	MinPeakThroughput=3
+	MinMeanThroughput=31
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=194.72.6.1
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.1.1
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=194.72.6.51
+	IpNameServer2=194.72.6.51
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=32
+END_TEMPLATE
+
+ADD_SECTION
+##
+## Links from IAP table
+## Links to
+##
+# COMMDB_ID = 1
+	Id=1
+	Name=SPUD
+	PDPType=IPV4
+	IfParams=lowernif=RawIP
+	IfPromptForAuth=FALSE
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.1.1
+	IpDNSAddrFromServer=FALSE
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## IncomingGPRS
+## 
+[IncomingGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dummy Incoming GPRS Settings
+	APN=Test
+	PDPType=IPV4
+	PDPAddress=0.0.0.0
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=1
+	IpAddrFromServer=FALSE
+	IpAddr=192.168.1.1
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=194.72.6.51
+	IpNameServer2=194.72.6.51
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	FIELD_COUNT=30
+END_ADD
+
+
+############################################################
+## DefaultGPRS
+## 
+[DefaultGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dummy Default GPRS Settings
+	Usage=1
+	APN=Access point name
+	PDPType=IPV6
+	PDPAddress=www.wid.com
+	Precedence=1
+	Delay=1
+	Reliability=1
+	PeakThroughput=1
+	MeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=TRUE
+	HeaderCompression=TRUE
+	GprsUseEdge=FALSE
+	AnonymousAccess=TRUE
+	FIELD_COUNT=20
+END_ADD
+
+############################################################
+## CDMA2000PacketServiceTable
+## 
+[CDMA2000PacketServiceTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=test name cdma2000
+	IwfName=Test2000
+	ServiceOption=HIGHSPEEDCDMA2000DATA
+	PDPType=IPV4
+	ReqFwdPriority=PRIORITY04
+	ReqRevPriority=PRIORITY04
+	ReqFwdBitrate=32KBPS
+	ReqRevBitrate=32KBPS
+	ReqFwdLoss=LOSS1
+	ReqRevLoss=LOSS1
+	ReqFwdMaxdelay=40MS
+	ReqRevMaxdelay=40MS
+	MinFwdBitrate=8KBPS
+	MinRevBitrate=8KBPS
+	AccptFwdLoss=LOSS2
+	AccptRevLoss=LOSS2
+	AccptFwdMaxdelay=120MS
+	AccptRevMaxdelay=120MS
+	DataCompression=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=1
+	IpNetMask=0.255.255.255
+	IpGateway=10.0.0.1
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=TRUE
+	DisablePlainTextAuth=TRUE
+	ApType=2
+	RlpMode=UNKNOWN
+	CDMAMobileIP=FALSE
+	CDMAMobileIPTimeout=10000000
+	FIELD_COUNT=36
+END_ADD
+
+
+############################################################
+## LANService
+## 
+[LANService]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Ethernet
+	IfNetworks=ip,ip6
+	IpNetMask=255.255.255.0
+	IpGateway=194.72.6.1
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.0.100
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=194.72.6.51
+	IpNameServer2=194.72.6.52
+	FIELD_COUNT=10
+END_ADD
+
+############################################################
+## APPrioritySelectionPolicyTable
+## 
+## Links from AccessPointTable
+## Links to the next layer in the AccessPointTable
+##
+[APPrioritySelectionPolicyTable]
+ADD_SECTION
+# COMMDB_ID = 1
+  	Id=1
+	Name=SelectionPolicy1
+	AP1=Link.AccessPointTable.10001
+	APCOUNT=1
+	FIELD_COUNT=4
+END_ADD
+
+############################################################
+## AccessPointTable
+## 
+## Links from TierTable
+## When 399 selection selected in GlobalSettings this Links to APPrioritySelectionPolicyTable
+## Bearer tier links to IAP table
+##
+[AccessPointTable]
+
+ADD_SECTION
+##
+## Links to IAP table
+## Links to nodes in bearer layer
+##  Id = 1 is IAP1
+##  SelectionPolicy zero marks the end of the 399 selection process
+## Consistent with spud-rawip BearerTypeTable entry
+##
+# COMMDB_ID = 251
+	Id=1
+	Name=MappedFromIAP1
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.8
+	CprConfig=1
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	AppSID=0
+	FIELD_COUNT=10
+END_ADD
+	
+ADD_SECTION
+## 
+## Links to AccessPointTable next layer
+##	SelectionPolicy AccessPointTable entry 1 and IAP table entry 1
+##
+# COMMDB_ID = 253
+	Id=10001
+	Name=IPProtoDefault
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.2
+	CprConfig=1
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CustomSelectionPolicy=1
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+##
+## Links from TierTable
+## When 399 selection selected in GlobalSettings this Links to APPrioritySelectionPolicyTable
+##	Id 10000 linked from TierTable
+##	SelectionPolicy APPrioritySelectionPolicyTable entry 1
+##
+# COMMDB_ID = 254
+	Id=10000
+	Name=NetworkDefault
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	AccessPointSelectionPolicy=APPrioritySelectionPolicyTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.1
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## BearerTypeTable
+## 
+## Links from ModemBearer table
+## Links to the bearer layer nodes
+## Consistent with the selected AccessPointTable
+##
+##
+[BearerTypeTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ethint
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=tunnelnif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.6
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.6
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=qosppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.7
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.7
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=dummynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=hungrynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.9
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.9
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=spud-ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.4
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+##
+## Links from ModemBearer table
+## Links to bearer layer nodes
+## Consistent with the selected AccessPointTable
+##
+# COMMDB_ID = 9
+	Id=9
+	Name=spud-rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=7
+END_ADD
+
+##This record here is the template record for the IPProto level APs generated by CommsDat.
+ADD_SECTION
+# COMMDB_ID = 10
+	##This name is a predefined name for the template for the IPProto APs.
+	##Please don't change it!
+	Name=IPProtoDefaultTemplate
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## IAP
+## 
+## Linked from ConnectionPreferences
+## Links to several tables
+## OutgoingGPRS entry SPUD
+## ModemBearer entry 1 Null Modem 115200bps
+## 
+##
+[IAP]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=Location.1
+	FIELD_COUNT=9
+END_ADD
+
+############################################################
+## Proxies
+## 
+[Proxies]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	ISP=1
+	ProxyServiceType=DialOutISP
+	UseProxyServer=TRUE
+	ProxyServerName=www.dummyproxy.com
+	ProtocolName=http
+	PortNumber=80
+	Exceptions=www.dummyproxy.com/exception
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## WAPAccessPoint
+## 
+[WAPAccessPoint]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Dial In ISP
+	CurrentBearer=WAPIPBearer
+	FIELD_COUNT=3
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dummy WAP Settings
+	CurrentBearer=WAPIPBearer
+	StartPage=www.wapstart.com
+	FIELD_COUNT=4
+END_ADD
+
+
+############################################################
+## WAPIPBearer
+## 
+[WAPIPBearer]
+ADD_TEMPLATE
+	Id=0
+	Name=DefaultRecordName-1
+	AccessPointId=0
+	IAP=0
+	WSPOption=CONNECTIONLESS
+	Security=FALSE
+	ProxyPortNumber=0
+	FIELD_COUNT=7
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-2
+	AccessPointId=58654976
+	GatewayAddress=www.wapgateway.com
+	IAP=50266624
+	WSPOption=CONNECTIONORIENTED
+	Security=FALSE
+	ProxyPortNumber=1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## WAPSMSBearer
+## 
+[WAPSMSBearer]
+ADD_TEMPLATE
+	Id=0
+	Name=DefaultRecordName-1
+	AccessPointId=0
+	WSPOption=CONNECTIONLESS
+	Security=FALSE
+	FIELD_COUNT=5
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-2
+	AccessPointId=1
+	GatewayAddress=+4412345678901
+	ServiceCentreAddress=+442071234567
+	WSPOption=CONNECTIONORIENTED
+	Security=FALSE
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## SecureSocketTable
+## 
+[SecureSocketTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	ProtocolName=ssl3.0
+	ProtoLibrary=ssladaptor.dll
+	FIELD_COUNT=4
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=DefaultRecordName-2
+	ProtocolName=tls1.0
+	ProtoLibrary=ssladaptor.dll
+	FIELD_COUNT=4
+END_ADD
+
+############################################################
+## TierTable
+## 
+## Links from GlobalSettings
+## Links to AccessPointTable
+##
+[TierTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=2048
+	TierImplUid=271064536
+	Name=Tier1
+	TierThreadName=ESock_IP
+	TierManagerName=NetworkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=271064560
+	TierImplUid=271064560
+	Name=Tier2
+	TierThreadName=ESock_IP
+	TierManagerName=ProtoTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10001
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=271064565
+	TierImplUid=271064565
+	Name=Tier3
+	TierThreadName=ESock_IP
+	TierManagerName=LinkTierManager
+##NB defaultAccessPoint not present in this layer. This is only needed here to satisfy the check
+##on the link layer. However important that once this field has a value it has to be linked to a
+##correct accesspoint record in the accesspoint table because this will be checked either.
+	DefaultAccessPoint=Link.AccessPointTable.1
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## MCprTable
+## 
+[MCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=netmcpr
+	MCprUid=271009095
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotomcpr
+	MCprUid=271064558
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=pppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=ethmcpr
+	MCprUid=271064572
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=rawipmcpr
+	MCprUid=271064576
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=tunnelmcpr
+	MCprUid=271064578
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qospppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=dummynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=hungrynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Id=10
+	Name=pdpmcpr
+	MCprUid=271065840
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Id=11
+	Name=sipmcpr
+	MCprUid=536887801
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Id=12
+	Name=btgenericmcpr
+	MCprUid=271070577
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Id=13
+	Name=panethermcpr
+	MCprUid=271070626
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## CprTable
+## 
+[CprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipcpr
+	CprUid=270561519
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotocpr
+	CprUid=271064531
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentcpr
+	CprUid=271064552
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=vanillacpr
+	CprUid=271065843
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=sipcpr
+	CprUid=271010872
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=avctpcpr
+	CprUid=271030184
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=tunnelagentcpr
+	CprUid=271080968
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=pdpcpr
+	CprUid=271065826
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## SCprTable
+## 
+[SCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipscpr
+	SCprUid=271065811
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotoscpr
+	SCprUid=271064529
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentscpr
+	SCprUid=271064554
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=pdpscpr
+	SCprUid=271065824
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=pppscpr
+	SCprUid=271065852
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=vanillascpr
+	SCprUid=271065844
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qosscpr
+	SCprUid=271065811
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=sipscpr
+	SCprUid=271010839
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=avctpsaplinksmgr
+	SCprUid=271030185
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Id=10
+	Name=avctpmuxer
+	SCprUid=271030186
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## ProtocolTable
+## 
+[ProtocolTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=sapshim
+	ProtocolUid=270496898
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipshim4
+	ProtocolUid=271064118
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=ppp
+	ProtocolUid=271064143
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=ethernet
+	ProtocolUid=271064539
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=rawip
+	ProtocolUid=271064562
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=tunnel
+	ProtocolUid=271064567
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qosppp
+	ProtocolUid=271064148
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=dummynif
+	ProtocolUid=271064123
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=hungrynif
+	ProtocolUid=271064125
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Id=10
+	Name=panether
+	ProtocolUid=271070627
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## ConnectionPreferences
+## 
+## Links to 
+## IAP = 1 - GPRS - IAPService = SPUD - ModemBearer - Null Modem 115200bps - IAPNetwork = 1
+## BearerSet=PSD
+##
+[ConnectionPreferences]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	Ranking=0
+	Direction=INCOMING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=1
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=DefaultRecordName-2
+	Ranking=1
+	Direction=OUTGOING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=1
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## UmtsR99QoSAndOn
+## 
+[UmtsR99QoSAndOn]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=PRIMARY1
+	ReqTrafficClass=1
+	MinTrafficClass=1
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=1
+	MinDeliverErroneousSDU=1
+	ReqMaxSDUSize=0
+	MinAcceptableMaxSDUSize=0
+	ReqMaxUplinkRate=0
+	ReqMinUplinkRate=0
+	ReqMaxDownlinkRate=0
+	ReqMinDownlinkRate=0
+	ReqBER=1
+	MaxBER=1
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=0
+	MaxTransferDelay=0
+	ReqGuaranteedUplinkRate=0
+	MinGuaranteedUplinkRat=0
+	ReqGuaranteedDownlinkRate=0
+	MinGuaranteedDownlinkRate=0
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=SECONDARY1
+	ReqTrafficClass=4
+	MinTrafficClass=4
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=8
+	MinDeliverErroneousSDU=8
+	ReqMaxSDUSize=768
+	MinAcceptableMaxSDUSize=512
+	ReqMaxUplinkRate=1024
+	ReqMinUplinkRate=1024
+	ReqMaxDownlinkRate=1024
+	ReqMinDownlinkRate=1024
+	ReqBER=0
+	MaxBER=0
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=250
+	MaxTransferDelay=250
+	ReqGuaranteedUplinkRate=1024
+	MinGuaranteedUplinkRat=1024
+	ReqGuaranteedDownlinkRate=1024
+	MinGuaranteedDownlinkRate=1024
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+############################################################
+## PolicySelectorTable
+## 
+[PolicySelectorTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	PolicyId=1
+	SrcAddress=0.0.0.0
+	SrcMask=255.255.255.255
+	DstAddress=192.168.1.1
+	DstMask=255.255.255.255
+	SrcPort=0
+	DstPort=3461
+	SrcPortMax=1031
+	DstPortMax=3461
+	ProtocolId=17
+	IAPid=2
+	Priority=1
+	FIELD_COUNT=13
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	PolicyId=2
+	SrcPort=0
+	SrcPortMax=0
+	ProtocolId=1
+	IAPid=2
+	Priority=1
+	FIELD_COUNT=7
+END_ADD
+
+
+
--- a/networkingtestandutils/networkingintegrationtest/te_Sblp/group/bld.inf	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingtestandutils/networkingintegrationtest/te_Sblp/group/bld.inf	Thu Jul 22 16:48:06 2010 +0100
@@ -17,19 +17,27 @@
 
 PRJ_TESTEXPORTS
 
+
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+../configs/te_Sblp_Mesh_pdpcpr.cfg	/epoc32/release/wins/udeb/z/testdata/configs/te_sblp_mesh.cfg
+../configs/te_Sblp_Mesh_pdpcpr.cfg	/epoc32/release/wins/urel/z/testdata/configs/te_sblp_mesh.cfg
+../configs/te_Sblp_Mesh_pdpcpr.cfg	/epoc32/release/winscw/udeb/z/testdata/configs/te_sblp_mesh.cfg
+../configs/te_Sblp_Mesh_pdpcpr.cfg	/epoc32/release/winscw/urel/z/testdata/configs/te_sblp_mesh.cfg
+#else
 ../configs/te_Sblp_Mesh.cfg	/epoc32/release/wins/udeb/z/testdata/configs/te_sblp_mesh.cfg
 ../configs/te_Sblp_Mesh.cfg	/epoc32/release/wins/urel/z/testdata/configs/te_sblp_mesh.cfg
 ../configs/te_Sblp_Mesh.cfg	/epoc32/release/winscw/udeb/z/testdata/configs/te_sblp_mesh.cfg
 ../configs/te_Sblp_Mesh.cfg	/epoc32/release/winscw/urel/z/testdata/configs/te_sblp_mesh.cfg
+#endif //#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 
 ../configs/te_SblpSuite_simtsy.txt	/epoc32/release/wins/udeb/z/testdata/configs/te_sblpsuite_simtsy.txt
 ../configs/te_SblpSuite_simtsy.txt	/epoc32/release/wins/urel/z/testdata/configs/te_sblpsuite_simtsy.txt
 ../configs/te_SblpSuite_simtsy.txt	/epoc32/release/winscw/udeb/z/testdata/configs/te_sblpsuite_simtsy.txt
 ../configs/te_SblpSuite_simtsy.txt	/epoc32/release/winscw/urel/z/testdata/configs/te_sblpsuite_simtsy.txt
-../configs/te_Sblp_loopbackcsy.ini	/epoc32/release/wins/udeb/z/testdata/configs/te_Sblp_loopbackcsy.ini
-../configs/te_Sblp_loopbackcsy.ini	/epoc32/release/wins/urel/z/testdata/configs/te_Sblp_loopbackcsy.ini
-../configs/te_Sblp_loopbackcsy.ini	/epoc32/release/winscw/udeb/z/testdata/configs/te_Sblp_loopbackcsy.ini
-../configs/te_Sblp_loopbackcsy.ini	/epoc32/release/winscw/urel/z/testdata/configs/te_Sblp_loopbackcsy.ini
+../configs/te_Sblp_loopbackcsy.ini	/epoc32/release/wins/udeb/z/testdata/configs/te_sblp_loopbackcsy.ini
+../configs/te_Sblp_loopbackcsy.ini	/epoc32/release/wins/urel/z/testdata/configs/te_sblp_loopbackcsy.ini
+../configs/te_Sblp_loopbackcsy.ini	/epoc32/release/winscw/udeb/z/testdata/configs/te_sblp_loopbackcsy.ini
+../configs/te_Sblp_loopbackcsy.ini	/epoc32/release/winscw/urel/z/testdata/configs/te_sblp_loopbackcsy.ini
 ../scripts/te_SblpSuite.script	/epoc32/release/wins/udeb/z/testdata/scripts/te_sblpsuite.script
 ../scripts/te_SblpSuite.script	/epoc32/release/wins/urel/z/testdata/scripts/te_sblpsuite.script
 ../scripts/te_SblpSuite.script	/epoc32/release/winscw/udeb/z/testdata/scripts/te_sblpsuite.script
--- a/networkingtestandutils/networkingintegrationtest/te_Sblp/group/te_SblpSuite.iby	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkingtestandutils/networkingintegrationtest/te_Sblp/group/te_SblpSuite.iby	Thu Jul 22 16:48:06 2010 +0100
@@ -22,6 +22,7 @@
 #include <te_esockteststepssuite.iby>
 
 data=EPOCROOT##Epoc32\release\winscw\udeb\z\TestData\configs\te_Sblp_Mesh.cfg TestData\Configs\te_Sblp_Mesh.cfg
+
 data=EPOCROOT##Epoc32\release\winscw\udeb\z\TestData\configs\te_sblpsuite_simtsy.txt TestData\Configs\te_sblpsuite_simtsy.txt
 data=EPOCROOT##Epoc32\release\winscw\udeb\z\TestData\configs\te_Sblp_loopbackcsy.ini TestData\Configs\te_Sblp_loopbackcsy.ini
 
--- a/networkprotocols/tcpipv4v6prt/inc/tcp.h	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/inc/tcp.h	Thu Jul 22 16:48:06 2010 +0100
@@ -236,6 +236,7 @@
 	void SetRecvWin(TUint aRecvWin) { iRecvBuf = aRecvWin;}
 	TUint GetRecvWinSize()			{ return iRecvBuf;	 }
 	TUint RecvMaxWnd()              { return iTcpMaxRecvWin;}
+	TUint RecvBufFromIniFile()      { return iRecvBufFromIniFile; }
 #endif //SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 
 #ifdef _LOG
@@ -295,6 +296,7 @@
 	RMBufAllocator iBufAllocator;
 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 	TUint iTcpMaxRecvWin;
+	TUint iRecvBufFromIniFile;
 #endif //SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 	};
 
@@ -442,6 +444,8 @@
 	TUint32 iShrinkedWindowSize;
 	// Window size set by user. This will override the default values for the bearers
 	TBool   iWindowSetByUser;
+	//Flag for socket startup case. No tcp window expand/shrink in this case.
+	TBool iSocketStartupCase;
 #endif //SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 
 	// Maximum Segment Sizes
--- a/networkprotocols/tcpipv4v6prt/src/tcp.cpp	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/src/tcp.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -92,6 +92,11 @@
 	iRecvBuf = GetIniValue(TCPIP_INI_TCP, TCPIP_INI_TCP_RECV_BUF,
 			KTcpDefaultRcvWnd, KTcpMinimumWindow, KTcpMaximumWindow, ETrue); 
 	
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+	iRecvBufFromIniFile = GetIniValue(TCPIP_INI_TCP, TCPIP_INI_TCP_RECV_BUF,
+            KTcpDefaultRcvWnd, KTcpMinimumWindow, KTcpMaximumWindow, ETrue); 
+#endif //SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+	
 	iSendBuf = GetIniValue(TCPIP_INI_TCP, TCPIP_INI_TCP_SEND_BUF,
 			KTcpDefaultSndWnd, KTcpMinimumWindow, KTcpMaximumWindow, ETrue);
 
--- a/networkprotocols/tcpipv4v6prt/src/tcp_sap.cpp	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/src/tcp_sap.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -260,6 +260,13 @@
 	iRetransTimer->InitL();
 	iLingerTimer->InitL();
 	iSockInBufSize        = Protocol()->RecvBuf();
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+	if(iSockInBufSize == Protocol()->RecvBufFromIniFile())
+	    iSocketStartupCase = ETrue;
+	else
+	    iSocketStartupCase = EFalse;
+#endif //SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW    	
+	
 	iSockOutBufSize       = Protocol()->SendBuf();
 	iSsthresh		= KMaxTInt32;
 	iRTO			= Protocol()->InitialRTO();
@@ -619,48 +626,137 @@
                 iSockInBufSize = KTcpMinimumWindow;
             else
                 {
-
-		        //If new TCP window is larger then the previous window, increase the 
-		        //iSockInBufSize right now. TCP recv function takes  care of
-		        //advertising a new effective TCP window. 
-		            if (intValue >= iSockInBufSize)
-		                {
-		                //Make it Zero so TCP could avoid the
-		                //TCP window shrinking processing in Recv.  
-		                iNewTcpWindow = 0;
-		                //FreeWindow has to be increased at the same time.
-		                iFreeWindow += intValue - iSockInBufSize;
-		                // Make the new TCP receive buffer change effective now.
-		                iSockInBufSize = intValue;                                                          
-		                }
-		            else
-		                {
-		                //This sets iNewTcpWindow to a non-zero value, which indicates 
-		                //to the TCP that window is shrunk and process TCP segments
-		                //which are in air before setting a new TCP receive buffer.         
-		                //TCP Receive window starts moving only when TCP hidden window
-		                //size exceeds the size of the shrunk window.
-		                   
-		                iNewTcpWindow = intValue;
-		                //Even in case of window shrink we can set the receive buffer size
-		                //immediately. This will be helpful, for processing SYN-ACK and other
-		                //receiver side processing.
-		                //For already connected sockets iNewTcpWindow will be taking care
-		                //of shrinking the window size for that TCP session.
-		                iSockInBufSize = iNewTcpWindow;
-		                if( iAdvertisedWindow > iNewTcpWindow )
-		                    {
-		                    iShrinkedWindowSize = iAdvertisedWindow - iNewTcpWindow;
-		                    }
-		                else
-		                    {
-		                    // No Need to process TCP receive window processing.
-		                    iNewTcpWindow = 0;
-		                    }
-		                }
-					
-                } 
-
+                //If its the startup case, then there should be no algorithm used to shrink
+				//or expand the window size from the default value provided in the ini file
+                //the new value should be set directly
+                if(iSocketStartupCase)
+                    {
+					//Add the extra window to free window pool
+					//if the window being set is greater than what is specified in ini file (startup case), then just overwrite the new window.
+					//Add difference to free window
+					//else set free window to zero
+					if(intValue > iSockInBufSize)
+						iFreeWindow += intValue - iSockInBufSize;
+					else
+						iFreeWindow = 0;
+					//set the buffer
+                    iSockInBufSize = intValue;
+					//disable startup flag.
+                    iSocketStartupCase = EFalse;
+                    }
+                else 
+                {
+					// Check for minimum value
+	                if (intValue < STATIC_CAST(TInt, KTcpMinimumWindow))
+	                    {
+	                    intValue = STATIC_CAST(TInt, KTcpMinimumWindow);
+	                    }
+	                // Handle the situation where the connection has been established and 
+	                // window scaling is not in use
+	                if ( InState( ETcpSynReceived | ETcpEstablished ) && !iRcvWscale )
+	                    {
+	                    // Do not allow window sizes larger than 0xFFFF
+	                    intValue = Min ( intValue, 0xFFFF );
+	                    }
+
+	                // Check whether we are increasing or decreasing window size
+	                if ( intValue >= iSockInBufSize )
+	                    {
+	                    // New window is larger than current one, check if a
+	                    // shrinking process is active
+	                    if ( !iNewTcpWindow )
+	                        {
+	                        // Mark new "space" as free, it will be updated to
+	                        // peer on next operation.
+	                        iFreeWindow += intValue - iSockInBufSize;
+	                        }
+	                    else
+	                        {
+	                        // In the middle of shrinking process.
+                      if ( iShrinkedWindowSize <= ( intValue - iSockInBufSize ))
+	                            {
+	                            // Increment to window size is enough to complete
+	                            // shrinking process. Update variables and exit
+	                            // from shrinking process.
+                          iFreeWindow = ( intValue - iSockInBufSize ) - iShrinkedWindowSize;
+	                            iShrinkedWindowSize = 0;
+	                            iNewTcpWindow = 0;
+	                            }
+	                        else
+	                            {
+	                            // Not quite there yet but closer. Less to shrink,
+	                            // update this, but do not exit from shrinking
+	                            // process
+                          iShrinkedWindowSize -= intValue - iSockInBufSize;
+	                            iNewTcpWindow = intValue;
+	                            }
+	                        }
+	                    }
+	                else
+	                    {
+	                    // Requested window is smaller than current one. Start or
+	                    // continue shrinking process. RCV window can be occupied
+	                    // for two different purpose at the moment
+	                    // 1. Client data in iSockInQ not read by application
+	                    // 2. Free window "opened" to peer (iAdvertisedWindow)
+	                    // When shrinking, we must ensure that when reopening
+	                    // the window to client there must be truly empty space
+	                    // in the window. Thus, freeze the right edge of the
+	                    // window (iRCV.NXT + iRCV.WND stays constant) until
+	                    // shrinking is completed.
+	                
+	                    if ( iNewTcpWindow )
+	                        {
+	                        // There is an ongoing shrink process, add the
+	                        // change to the amount to be shrinked
+	                        iShrinkedWindowSize += iSockInBufSize - intValue;
+	                        iNewTcpWindow = intValue;
+	                        }
+	                    else
+	                        {
+	                        // This is a new shrinking process, count how much
+	                        // needs to be shrinked
+                      iShrinkedWindowSize = iSockInQLen + iRCV.WND;
+	                        if ( iShrinkedWindowSize >= intValue )
+	                            {
+	                            // We need to shrink since the currently occupied
+	                            // window does not fit to new one
+	                            iShrinkedWindowSize -= intValue;
+	                            // There is now free space in the window
+	                            iFreeWindow = 0;
+	                            // iNewTcpWindow is used as a state variable for
+	                            // shrinking
+	                            iNewTcpWindow = intValue;
+	                            }
+	                        else
+	                            {
+	                            // No need to shrink since we can fit the current
+	                            // contents to the new window, update free window
+	                            // If TCP connection is not yet setup, the free
+	                            // window will be updated on connection setup, 
+	                            // for existing connection it will be used
+	                            // next time application reads data
+	                            if ( iFreeWindow >= ( iSockInBufSize - intValue ))
+	                                {
+	                                iFreeWindow -= iSockInBufSize - intValue;
+	                                }
+	                            else 
+	                                {
+	                                // Something wrong. Try to reevaluate...
+	                                iFreeWindow = intValue - iShrinkedWindowSize;
+	                                }
+	                            iShrinkedWindowSize = 0;
+	                            }
+	                        }
+	                    }
+	                // Even in case of window shrink we can set the receive buffer size
+	                // immediately. This will be helpful, for processing SYN-ACK and other
+	                // receiver side processing.
+	                // For already connected sockets iNewTcpWindow will be taking care
+	                // of shrinking the window size for that TCP session.
+	                iSockInBufSize = intValue;
+	                }
+	            } 
 		    }
 		    break;
 #endif //SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
@@ -1362,32 +1458,23 @@
 	//if This is true, then it is a case of TCP window shrink and we need 
 	//to handle it.
 	if ( iNewTcpWindow )
-		{
-	   	//Log  this message for information, that Window is shrinked
-	   	LOG(Log::Printf(_L("\ttcp SAP[%u] TCP window shrinking mode on"), (TInt)this));
-	   
-	   	//Increase the hidden free TCP receive window.
-	   	iHiddenFreeWindow += aLength;
-	   
-	   	if (iHiddenFreeWindow >= iShrinkedWindowSize)
-			{
-			//Disable window shrink processing, so that TCP could switch
-			//to the normal processing.    
-			iSockInBufSize = iNewTcpWindow;
-			
-			//Add the usable window to the free window.
-			iFreeWindow += iHiddenFreeWindow - iShrinkedWindowSize;
-			
-			//There are chances that TCP receive window might further shrink.
-			iHiddenFreeWindow = 0;
-			
-			//TCP Receive window shrink phase is over.
-			iNewTcpWindow = 0;
-			
-			//Log  this message for information, that Window is shrinked
-			LOG(Log::Printf(_L("\ttcp SAP[%u] TCP window shrinking mode off"), (TInt)this));
-			}
-		}
+	    {
+	    // Check if we can complete shrinking process
+	    if ( aLength > iShrinkedWindowSize )
+	        {
+	        // We can exit from the shrinking process. Reset variables and
+	        // update free window.
+	        iFreeWindow = aLength - iShrinkedWindowSize;
+	        iShrinkedWindowSize = 0;
+	        iNewTcpWindow = 0;
+	        }
+	    else
+	        {
+	        // Substract the needed shrinking amount by the amount of bytes client
+	        // read from the buffer
+	        iShrinkedWindowSize -= aLength;
+	        }
+	    }
 	else
 #endif //SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 	
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/tcpip6adapwnd_config_edge.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/tcpip6adapwnd_config_edge.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/tcpip6adapwnd_config_gprs.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/tcpip6adapwnd_config_gprs.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/tcpip6adapwnd_config_hsdpa.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/tcpip6adapwnd_config_hsdpa.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/tcpip6adapwnd_config_umts.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/tcpip6adapwnd_config_umts.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_edge_gprs_config.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_edge_gprs_config.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
@@ -167,11 +167,11 @@
 #NotifyContextStatusChange = SECONDARY1, 0, 5
 
 #Edge
-NetworkMode= 2,2
-DynamicCaps= 2,1024
+NetworkMode= 5,2
+DynamicCaps= 5,1024
 
 #Gprs
-NetworkMode= 12,2
-DynamicCaps= 2,1
+NetworkMode= 10,2
+DynamicCaps= 10,1
 # DynamicCaps= <Duration>, <DynamicCaps>
 # Note: <DynamicCaps> is a bitmap of RPacketService::TDynamicCaps flags. 
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_edge_hsdpa_config.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_edge_hsdpa_config.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
@@ -167,12 +167,12 @@
 #NotifyContextStatusChange = SECONDARY1, 0, 5
 
 #Edge
-NetworkMode= 2,2
-DynamicCaps= 2,1024
+NetworkMode= 5,2
+DynamicCaps= 5,1024
 
 #Hsdpa
-NetworkMode= 12,6
-DynamicCaps= 2,512
+NetworkMode= 10,6
+DynamicCaps= 10,512
 
 # DynamicCaps= <Duration>, <DynamicCaps>
 # Note: <DynamicCaps> is a bitmap of RPacketService::TDynamicCaps flags. 
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_edge_umts_config.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_edge_umts_config.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
@@ -167,11 +167,11 @@
 #NotifyContextStatusChange = SECONDARY1, 0, 5
 
 #Edge
-NetworkMode= 2,2
-DynamicCaps= 2,1024
+NetworkMode= 5,2
+DynamicCaps= 5,1024
 
 #Umts
-NetworkMode= 12,6
-DynamicCaps= 2,1  
+NetworkMode= 10,6
+DynamicCaps= 10,1  
 # DynamicCaps= <Duration>, <DynamicCaps>
 # Note: <DynamicCaps> is a bitmap of RPacketService::TDynamicCaps flags. 
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_gprs_edge_config.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_gprs_edge_config.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
@@ -167,12 +167,12 @@
 #NotifyContextStatusChange = SECONDARY1, 0, 5
 
 #Gprs
-NetworkMode= 2,2
-DynamicCaps= 2,1
+NetworkMode= 5,2
+DynamicCaps= 5,1
 
 #Edge
-NetworkMode= 12,2
-DynamicCaps= 2,1024  
+NetworkMode= 10,2
+DynamicCaps= 10,1024  
 
 # DynamicCaps= <Duration>, <DynamicCaps>
 # Note: <DynamicCaps> is a bitmap of RPacketService::TDynamicCaps flags. 
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_gprs_hsdpa_config.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_gprs_hsdpa_config.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
@@ -167,11 +167,11 @@
 #NotifyContextStatusChange = SECONDARY1, 0, 5
 
 #Gprs
-NetworkMode= 2,2
-DynamicCaps= 2,1
+NetworkMode= 5,2
+DynamicCaps= 5,1
 
 #Hsdpa
-NetworkMode= 12,6
-DynamicCaps= 2,512  
+NetworkMode= 10,6
+DynamicCaps= 10,512  
 # DynamicCaps= <Duration>, <DynamicCaps>
 # Note: <DynamicCaps> is a bitmap of RPacketService::TDynamicCaps flags. 
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_gprs_umts_config.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_gprs_umts_config.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
@@ -167,12 +167,12 @@
 #NotifyContextStatusChange = SECONDARY1, 0, 5
 
 #Gprs
-NetworkMode= 2,2
-DynamicCaps= 2,1
+NetworkMode= 5,2
+DynamicCaps= 5,1
 
 #Umts
-NetworkMode= 12,6
-DynamicCaps= 2,1 
+NetworkMode= 10,6
+DynamicCaps= 10,1 
 
 # DynamicCaps= <Duration>, <DynamicCaps>
 # Note: <DynamicCaps> is a bitmap of RPacketService::TDynamicCaps flags. 
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_hsdpa_edge_config.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_hsdpa_edge_config.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
@@ -167,11 +167,11 @@
 #NotifyContextStatusChange = SECONDARY1, 0, 5
 
 #Hsdpa
-NetworkMode= 2,6
-DynamicCaps= 2,512
+NetworkMode= 5,6
+DynamicCaps= 5,512
 
 #Edge
-NetworkMode= 12,2
-DynamicCaps= 2,1024
+NetworkMode= 10,2
+DynamicCaps= 10,1024
 # DynamicCaps= <Duration>, <DynamicCaps>
 # Note: <DynamicCaps> is a bitmap of RPacketService::TDynamicCaps flags. 
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_hsdpa_gprs_config.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_hsdpa_gprs_config.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
@@ -167,11 +167,11 @@
 #NotifyContextStatusChange = SECONDARY1, 0, 5
 
 #Hsdpa
-NetworkMode= 2,2
-DynamicCaps= 2,512
+NetworkMode= 5,2
+DynamicCaps= 5,512
 
 #Gprs
-NetworkMode= 12,2
-DynamicCaps= 2,1  
+NetworkMode= 10,2
+DynamicCaps= 10,1  
 # DynamicCaps= <Duration>, <DynamicCaps>
 # Note: <DynamicCaps> is a bitmap of RPacketService::TDynamicCaps flags. 
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_hsdpa_umts_config.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_hsdpa_umts_config.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
@@ -167,11 +167,11 @@
 #NotifyContextStatusChange = SECONDARY1, 0, 5
 
 #Hsdpa
-NetworkMode= 2,2
-DynamicCaps= 2,512
+NetworkMode= 5,2
+DynamicCaps= 5,512
 
 #Umts
-NetworkMode= 12,6
-DynamicCaps= 2,1
+NetworkMode= 10,6
+DynamicCaps= 10,1
 # DynamicCaps= <Duration>, <DynamicCaps>
 # Note: <DynamicCaps> is a bitmap of RPacketService::TDynamicCaps flags. 
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_umts_edge_config.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_umts_edge_config.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
@@ -167,12 +167,12 @@
 #NotifyContextStatusChange = SECONDARY1, 0, 5
 
 #Umts
-NetworkMode= 2,6
-DynamicCaps= 2,1
+NetworkMode= 5,6
+DynamicCaps= 5,1
 
 #Edge
-NetworkMode= 12,2
-DynamicCaps= 2,1024  
+NetworkMode= 10,2
+DynamicCaps= 10,1024  
 
 # DynamicCaps= <Duration>, <DynamicCaps>
 # Note: <DynamicCaps> is a bitmap of RPacketService::TDynamicCaps flags. 
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_umts_gprs_config.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_umts_gprs_config.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
@@ -167,11 +167,11 @@
 #NotifyContextStatusChange = SECONDARY1, 0, 5
 
 #Umts
-NetworkMode= 2,6
-DynamicCaps= 2,1
+NetworkMode= 5,6
+DynamicCaps= 5,1
 
 #Gprs
-NetworkMode= 12,2
-DynamicCaps= 2,1  
+NetworkMode= 10,2
+DynamicCaps= 10,1  
 # DynamicCaps= <Duration>, <DynamicCaps>
 # Note: <DynamicCaps> is a bitmap of RPacketService::TDynamicCaps flags. 
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_umts_hsdpa_config.txt	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/configs/te_tcpip6adapwnd_modulation_umts_hsdpa_config.txt	Thu Jul 22 16:48:06 2010 +0100
@@ -14,7 +14,7 @@
 # ContextConfigGPRS = <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <PdpDataCompression>, <TAnonymousAccess>, <TUseEdge>
 # ProtocolConfigOption = <Authentication Protocol>, <Username>, <Password>, <Challenge>, 
 # <Response>, <PrimaryDNS>, <SecondaryDNS>, <TUint iId>
-SetContextConfigGPRS= 0,orangeinternet,,0, 2, 0, 0,web,web,,,192.168.20.2,192.168.10.2,0,0
+SetContextConfigGPRS = 0,orangeinternet,,0,2,0,1,web,web,,,192.168.20.2,192.168.10.2,1,0
 
 
 #SetContextConfigR5= <TProtocolType>, <TGSNAddress>, <TProtocolAddress>, <TUseEdge>, <Authentication Protocol>, <Username>, <Password>, <Challenge>,
@@ -167,11 +167,11 @@
 #NotifyContextStatusChange = SECONDARY1, 0, 5
 
 #Umts
-NetworkMode= 2,6
-DynamicCaps= 2,1
+NetworkMode= 5,6
+DynamicCaps= 5,1
 
 #Hsdpa
-NetworkMode= 12,6
-DynamicCaps= 2,512 
+NetworkMode= 10,6
+DynamicCaps= 10,512 
 # DynamicCaps= <Duration>, <DynamicCaps>
 # Note: <DynamicCaps> is a bitmap of RPacketService::TDynamicCaps flags. 
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_edge_gprs.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_edge_gprs.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for EDGE
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketEGPRS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for GPRS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketGPRS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_edge_gprs_user_set.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_edge_gprs_user_set.script	Thu Jul 22 16:48:06 2010 +0100
@@ -84,7 +84,7 @@
 //User does a SetOpt( ) with own value
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketSetOptionStep  z:\testdata\configs\te_tcpip6AdapWnd.ini UserSetOptOnSocketEGPRS
 
-DELAY 20000
+DELAY 7000
 //Bearer changing to GPRS
 PRINT Bearer changing to GPRS
 
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_edge_hsdpa.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_edge_hsdpa.script	Thu Jul 22 16:48:06 2010 +0100
@@ -80,7 +80,7 @@
 //Retrieve the TCP Window size for EDGE
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketEGPRS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for HSDPA
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketHSDPA
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_edge_umts.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_edge_umts.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for EDGE
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketEGPRS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for UMTS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketUMTS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_gprs_edge.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_gprs_edge.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for GPRS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketGPRS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for EDGE
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketEGPRS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_gprs_hsdpa.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_gprs_hsdpa.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for GPRS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketGPRS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for HSDPA
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketHSDPA
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_gprs_umts.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_gprs_umts.script	Thu Jul 22 16:48:06 2010 +0100
@@ -80,7 +80,7 @@
 //Retrieve the TCP Window size for GPRS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketGPRS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for UMTS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketUMTS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_hsdpa_edge.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_hsdpa_edge.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for HSDPA
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketHSDPA
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for EDGE
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketEGPRS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_hsdpa_gprs.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_hsdpa_gprs.script	Thu Jul 22 16:48:06 2010 +0100
@@ -80,7 +80,7 @@
 //Retrieve the TCP Window size for HSDPA
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketHSDPA
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for GPRS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketGPRS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_hsdpa_umts.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_hsdpa_umts.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for HSDPA
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketHSDPA
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for UMTS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketUMTS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_umts_edge.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_umts_edge.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for UMTS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketUMTS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for EDGE
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketEGPRS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_umts_gprs.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_umts_gprs.script	Thu Jul 22 16:48:06 2010 +0100
@@ -80,7 +80,7 @@
 //Retrieve the TCP Window size for UMTS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketUMTS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for GPRS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketGPRS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_umts_hsdpa.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_modulation_umts_hsdpa.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for UMTS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketUMTS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for HSDPA
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketHSDPA
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_edge_gprs.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_edge_gprs.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for GPRS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketEGPRS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for EDGE
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketGPRS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_edge_hsdpa.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_edge_hsdpa.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for EDGE
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketEGPRS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for HSDPA
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketHSDPA
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_edge_umts.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_edge_umts.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for Edge
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketEGPRS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for Umts
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketUMTS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_gprs_edge.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_gprs_edge.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for GPRS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketGPRS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for EDGE
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketEGPRS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_gprs_hsdpa.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_gprs_hsdpa.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for GPRS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketGPRS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for HSDPA
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketHSDPA
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_gprs_umts.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_gprs_umts.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for GPRS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketGPRS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for UMTS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketUMTS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_hsdpa_edge.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_hsdpa_edge.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for HSDPA
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketHSDPA
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for EDGE
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketEGPRS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_hsdpa_gprs.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_hsdpa_gprs.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for HSDPA
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketHSDPA
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for GPRS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketGPRS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_hsdpa_umts.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_hsdpa_umts.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for HSDPA
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketHSDPA
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for UMTS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketUMTS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_umts_edge.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_umts_edge.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for UMTS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketUMTS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for EDGE
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketEGPRS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_umts_gprs.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_umts_gprs.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for UMTS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketUMTS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for GPRS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketGPRS
--- a/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_umts_hsdpa.script	Mon Jun 21 22:44:36 2010 +0100
+++ b/networkprotocols/tcpipv4v6prt/te_tcpip6/scripts/te_tcpip6adapwnd_vpnmodulation_umts_hsdpa.script	Thu Jul 22 16:48:06 2010 +0100
@@ -81,7 +81,7 @@
 //Retrieve the TCP Window size for UMTS
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketUMTS
 
-DELAY 20000
+DELAY 7000
 
 //Retrieve the TCP Window size for HSDPA
 RUN_TEST_STEP 150 te_esockteststepsSuite SocketGetOptionStep z:\testdata\configs\te_tcpip6AdapWnd.ini GetOptOnSocketHSDPA
Binary file networksecurity/tls/test/te_tlsunittest/configs/te_tlsunittest.ini has changed
--- a/networksecurity/tls/test/te_tlsunittest/group/bld.inf	Mon Jun 21 22:44:36 2010 +0100
+++ b/networksecurity/tls/test/te_tlsunittest/group/bld.inf	Thu Jul 22 16:48:06 2010 +0100
@@ -17,7 +17,7 @@
 
 ../scripts/te_tlsunittest.script 	z:/testdata/scripts/te_tlsunittest.script
 ../configs/te_tlsunittest.ini	z:/testdata/configs/te_tlsunittest.ini
-../configs/CACerts_clientauth.dat	z:/testdata/configs/CACerts_clientauth.dat
+../configs/CACerts_clientauth.dat	z:/testdata/configs/cacerts_clientauth.dat
 ../configs/certclients_clientauth.dat	z:/testdata/configs/certclients_clientauth.dat
 ../configs/keys_clientauth.dat	z:/testdata/configs/keys_clientauth.dat
 ../configs/t_secdlg_in.dat	z:/testdata/configs/t_secdlg_in.dat
--- a/networksecurity/tls/ts_tls/scripts/TLS_PSK_WITH_3DES_EDE_CBC_SHA.ini	Mon Jun 21 22:44:36 2010 +0100
+++ b/networksecurity/tls/ts_tls/scripts/TLS_PSK_WITH_3DES_EDE_CBC_SHA.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -19,7 +19,7 @@
 CipherSuite1=008b
 ExpectedFinalCipherSuit=008b
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=ETrue
--- a/networksecurity/tls/ts_tls/scripts/TLS_PSK_WITH_AES_128_CBC_SHA.ini	Mon Jun 21 22:44:36 2010 +0100
+++ b/networksecurity/tls/ts_tls/scripts/TLS_PSK_WITH_AES_128_CBC_SHA.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -19,7 +19,7 @@
 CipherSuite1=008c
 ExpectedFinalCipherSuit=008c
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=ETrue
--- a/networksecurity/tls/ts_tls/scripts/TLS_PSK_WITH_AES_128_CBC_SHA_NOCALLBACK.ini	Mon Jun 21 22:44:36 2010 +0100
+++ b/networksecurity/tls/ts_tls/scripts/TLS_PSK_WITH_AES_128_CBC_SHA_NOCALLBACK.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -19,7 +19,7 @@
 CipherSuite1=008c
 ExpectedFinalCipherSuit=0035
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 ExpectedSetCipherError=-5
--- a/networksecurity/tls/ts_tls/scripts/TLS_PSK_WITH_AES_256_CBC_SHA.ini	Mon Jun 21 22:44:36 2010 +0100
+++ b/networksecurity/tls/ts_tls/scripts/TLS_PSK_WITH_AES_256_CBC_SHA.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -19,7 +19,7 @@
 CipherSuite1=008d
 ExpectedFinalCipherSuit=008d
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=ETrue
--- a/networksecurity/tls/ts_tls/scripts/TLS_PSK_WITH_RC4_128_SHA.ini	Mon Jun 21 22:44:36 2010 +0100
+++ b/networksecurity/tls/ts_tls/scripts/TLS_PSK_WITH_RC4_128_SHA.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -19,7 +19,7 @@
 CipherSuite1=008a
 ExpectedFinalCipherSuit=008a
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=ETrue
--- a/networksecurity/tls/ts_tls/scripts/TLS_RSA_WITH_NULL_MD5.ini	Mon Jun 21 22:44:36 2010 +0100
+++ b/networksecurity/tls/ts_tls/scripts/TLS_RSA_WITH_NULL_MD5.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -20,7 +20,7 @@
 ExpectedFinalCipherSuit=0001
 UseNullCipher=True
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=ETrue
--- a/networksecurity/tls/ts_tls/scripts/TLS_RSA_WITH_NULL_SHA.ini	Mon Jun 21 22:44:36 2010 +0100
+++ b/networksecurity/tls/ts_tls/scripts/TLS_RSA_WITH_NULL_SHA.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -19,7 +19,7 @@
 CipherSuite1=0002
 ExpectedFinalCipherSuit=0002
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=True
--- a/networksecurity/tls/ts_tls/scripts/TLS_SNE_MULTIPLE_SERVER.ini	Mon Jun 21 22:44:36 2010 +0100
+++ b/networksecurity/tls/ts_tls/scripts/TLS_SNE_MULTIPLE_SERVER.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -19,7 +19,7 @@
 CipherSuite1=002f
 ExpectedFinalCipherSuit=002f
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
--- a/networksecurity/tls/ts_tls/scripts/TLS_SNE_SINGLE_SERVER.ini	Mon Jun 21 22:44:36 2010 +0100
+++ b/networksecurity/tls/ts_tls/scripts/TLS_SNE_SINGLE_SERVER.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -18,7 +18,7 @@
 NumCipherSuites=0
 ExpectedFinalCipherSuit=008D
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=True
--- a/networksecurity/tls/ts_tls/scripts/TLS_SNE_SINGLE_SERVER_NEG.ini	Mon Jun 21 22:44:36 2010 +0100
+++ b/networksecurity/tls/ts_tls/scripts/TLS_SNE_SINGLE_SERVER_NEG.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -21,7 +21,7 @@
 
 UseNullCipher=True
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
--- a/networksecurity/tlsprovider/Test/tlstest2/scripts/tls_smoke.ini	Mon Jun 21 22:44:36 2010 +0100
+++ b/networksecurity/tlsprovider/Test/tlstest2/scripts/tls_smoke.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -19,7 +19,7 @@
 CipherSuite1=008c
 ExpectedFinalCipherSuit=008c
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=ETrue
@@ -30,7 +30,7 @@
 CipherSuite1=008c
 ExpectedFinalCipherSuit=0035
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 ExpectedSetCipherError=-5
@@ -43,7 +43,7 @@
 CipherSuite1=008b
 ExpectedFinalCipherSuit=008b
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=ETrue
@@ -54,7 +54,7 @@
 CipherSuite1=008a
 ExpectedFinalCipherSuit=008a
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=ETrue
@@ -65,7 +65,7 @@
 CipherSuite1=008d
 ExpectedFinalCipherSuit=008d
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=ETrue
@@ -77,7 +77,7 @@
 CipherSuite1=0003
 ExpectedFinalCipherSuit=0003
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -88,7 +88,7 @@
 CipherSuite1=0004
 ExpectedFinalCipherSuit=0004
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -98,7 +98,7 @@
 CipherSuite1=0005
 ExpectedFinalCipherSuit=0005
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -109,7 +109,7 @@
 CipherSuite1=0008
 ExpectedFinalCipherSuit=0008
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -119,7 +119,7 @@
 CipherSuite1=0009
 ExpectedFinalCipherSuit=0009
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -130,7 +130,7 @@
 CipherSuite1=000a
 ExpectedFinalCipherSuit=000a
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -140,7 +140,7 @@
 CipherSuite1=0011
 ExpectedFinalCipherSuit=0011
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -150,7 +150,7 @@
 CipherSuite1=0012
 ExpectedFinalCipherSuit=0012
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -161,7 +161,7 @@
 CipherSuite1=0013
 ExpectedFinalCipherSuit=0013
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -171,7 +171,7 @@
 CipherSuite1=0014
 ExpectedFinalCipherSuit=0014
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -182,7 +182,7 @@
 CipherSuite1=0016
 ExpectedFinalCipherSuit=0016
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -193,7 +193,7 @@
 CipherSuite1=002f
 ExpectedFinalCipherSuit=002f
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -204,7 +204,7 @@
 CipherSuite1=0035
 ExpectedFinalCipherSuit=0035
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -216,7 +216,7 @@
 NumCipherSuites=0
 ExpectedFinalCipherSuit=008D
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=True
@@ -233,7 +233,7 @@
 CipherSuite1=002f
 ExpectedFinalCipherSuit=002f
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -252,7 +252,7 @@
 
 UseNullCipher=True
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -272,7 +272,7 @@
 ExpectedFinalCipherSuit=0001
 UseNullCipher=True
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=ETrue
@@ -283,7 +283,7 @@
 CipherSuite1=0002
 ExpectedFinalCipherSuit=0002
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 UsePsk=True
@@ -297,7 +297,7 @@
 ExpectedSetCipherError=-5
 
 ExpectedFinalCipherSuit=0035
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 
@@ -308,7 +308,7 @@
 CipherSuite1=0002
 ExpectedFinalCipherSuit=0035
 
-WebAddress=10.253.27.250
+WebAddress=10.225.171.71
 WebPage=hello.html
 PortNum=1666
 ExpectedSetCipherError=-5
--- a/tcpiputils/dhcp/src/DHCPStateMachine.cpp	Mon Jun 21 22:44:36 2010 +0100
+++ b/tcpiputils/dhcp/src/DHCPStateMachine.cpp	Thu Jul 22 16:48:06 2010 +0100
@@ -420,10 +420,29 @@
 	// how could we attempt to handle it anyway?...keep trying??? i think not...
 	// ensure that we have a socket to write down	
 	iSocket.Close();	
-	(void)iSocket.Open(iEsock, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection);
-	(void)iSocket.SetOpt(KSoInetConfigInterface, KSolInetIfCtrl, configInfo);	
-	// make socket invisible for interface counting
-	(void)iSocket.SetOpt(KSoKeepInterfaceUp, KSolInetIp, 0);
+	TInt error = iSocket.Open(iEsock, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection);
+	
+	if(error == KErrNone)
+	    {
+        error = iSocket.SetOpt(KSoInetConfigInterface, KSolInetIfCtrl, configInfo);
+        if(error == KErrNone)
+            {
+            // make socket invisible for interface counting
+            iSocket.SetOpt(KSoKeepInterfaceUp, KSolInetIp, 0);
+            if(error != KErrNone)
+                {
+                __CFLOG_VAR((KLogSubSysDHCP, KLogCode, _L("CDHCPStateMachine::RemoveConfiguredAddress, SetOpt Failed to set KSoKeepInterfaceUp")));
+                }
+            }
+        else
+            {
+            __CFLOG_VAR((KLogSubSysDHCP, KLogCode, _L("CDHCPStateMachine::RemoveConfiguredAddress, SetOpt Failed to set KSoInetConfigInterface")));
+            }
+	    }
+	else
+	    {
+        __CFLOG_VAR((KLogSubSysDHCP, KLogCode, _L("CDHCPStateMachine::RemoveConfiguredAddress, Socket Open Failed: Due to KErrNotReady")));
+	    }
 	}
 
 void CDHCPStateMachine::ConfigureInterfaceL( const TSoInet6InterfaceInfo& aInterfaceInfo )
--- a/tcpiputils/networkaddressandporttranslation/TE_Napt/configs/Te_NaptConnection_target.xml	Mon Jun 21 22:44:36 2010 +0100
+++ b/tcpiputils/networkaddressandporttranslation/TE_Napt/configs/Te_NaptConnection_target.xml	Thu Jul 22 16:48:06 2010 +0100
@@ -822,7 +822,7 @@
 		<IfNetworks>ip</IfNetworks>
 		<IpNetMask>255.255.255.0</IpNetMask>
 		<IpGateway>10.32.194.254</IpGateway>
-		<IpAddr>10.225.164.209</IpAddr>
+		<IpAddr>10.225.171.70</IpAddr>
 		<IpAddrFromServer>TRUE</IpAddrFromServer>
 		<IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
 		<IpNameServer1>194.72.6.51</IpNameServer1>
--- a/tcpiputils/networkaddressandporttranslation/TE_Napt/configs/Te_NaptConnection_winscw.xml	Mon Jun 21 22:44:36 2010 +0100
+++ b/tcpiputils/networkaddressandporttranslation/TE_Napt/configs/Te_NaptConnection_winscw.xml	Thu Jul 22 16:48:06 2010 +0100
@@ -822,7 +822,7 @@
 		<IfNetworks>ip</IfNetworks>
 		<IpNetMask>255.255.255.0</IpNetMask>
 		<IpGateway>10.32.194.254</IpGateway>
-		<IpAddr>10.253.27.249</IpAddr>
+		<IpAddr>10.225.171.70</IpAddr>
 		<IpAddrFromServer>TRUE</IpAddrFromServer>
 		<IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
 		<IpNameServer1>194.72.6.51</IpNameServer1>
--- a/tcpiputils/networkaddressandporttranslation/TE_Napt/configs/te_naptconfig_target.ini	Mon Jun 21 22:44:36 2010 +0100
+++ b/tcpiputils/networkaddressandporttranslation/TE_Napt/configs/te_naptconfig_target.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -4,7 +4,7 @@
 
 [General]
 NaptStatus=On
-NaptTestServer=10.225.164.210
+NaptTestServer=10.225.171.71
 NaptTestServerPort=48555
 EthIPAddr=10.192.192.79
 EchoPort = 7
--- a/tcpiputils/networkaddressandporttranslation/TE_Napt/configs/te_naptconfig_winscw.ini	Mon Jun 21 22:44:36 2010 +0100
+++ b/tcpiputils/networkaddressandporttranslation/TE_Napt/configs/te_naptconfig_winscw.ini	Thu Jul 22 16:48:06 2010 +0100
@@ -4,7 +4,7 @@
 
 [General]
 NaptStatus=On
-NaptTestServer=10.253.27.250
+NaptTestServer=10.225.171.71
 NaptTestServerPort=48555
 EthIPAddr=10.192.192.79
 EchoPort = 7