Winsock 3 PC Arch Contribution
authorrajpuroh
Wed, 21 Apr 2010 10:32:25 +0530
changeset 2 82fb8aa91b2c
parent 1 ac50fd48361b
child 3 ba779db5b8c5
Winsock 3 PC Arch Contribution
sdkcreationmw/sdkruntimes/new_wsock_3pc/.project
sdkcreationmw/sdkruntimes/new_wsock_3pc/data/meshpreface1.cfg
sdkcreationmw/sdkruntimes/new_wsock_3pc/data/wsock.esk
sdkcreationmw/sdkruntimes/new_wsock_3pc/group/ABLD.BAT
sdkcreationmw/sdkruntimes/new_wsock_3pc/group/bld.inf
sdkcreationmw/sdkruntimes/new_wsock_3pc/group/wsock_3pc.mmp
sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockBinders.h
sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockUid.h
sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockagenthandler.h
sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockflow.h
sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockflowfactory.h
sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockmcpr.h
sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockmcprfactory.h
sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockprovision.h
sdkcreationmw/sdkruntimes/new_wsock_3pc/src/10281DE7.rss
sdkcreationmw/sdkruntimes/new_wsock_3pc/src/ecom_impl.cpp
sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winscokmcprfactory.cpp
sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winsockbinders.cpp
sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winsockflow.cpp
sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winsockflowfactory.cpp
sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winsockmcpr.cpp
sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winsockmcprfactory.cpp
sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winsockprovision.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/.project	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>wsock_3pc</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.nokia.carbide.cdt.builder.carbideCPPBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>com.nokia.carbide.cdt.builder.carbideCPPBuilderNature</nature>
+		<nature>com.nokia.carbide.cdt.builder.carbideSBSv2BuilderNature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/data/meshpreface1.cfg	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,614 @@
+##
+##	Purpose of this file is to provide default configuration options for the new,
+##	access point aware code for all legacy configuration files which do not have
+##	it on their own.
+##	According to its purpose this file is being used only(!) ever (!) with legacy,
+##	non access point aware (or as it is also called in CommsDat: non mesh compatible)
+##	configurations.
+##	This means that for these configurations the only preferences used for selection
+##	are the link layer ones (IAP + connection preference ranking on implicit).
+##	None of the new preferences will ever make any sense on any system that does not
+##	provide the new configuration and will always be rejected!
+##
+
+############################################################
+## GlobalSettings
+##
+## 	A new setting has been added to indicate the default Tier that should be referred to 
+##	whenever a Tier setting is required but has not been specified.
+##	The deprecated global settings "DefaultSnap" and "PromptForSnap" are now held in the 
+##	default tier record not in the global settings table itself 
+##
+##
+
+[GlobalSettings]
+ADD_TEMPLATE
+	DefaultTier=Link.TierTable.2048
+	FIELD_COUNT=1
+END_TEMPLATE
+
+
+############################################################
+## AccessPointTable
+##
+##	Generally all of our (Symbian's) network layer providers (tier id == 2048)
+##	interpret their selection policy ids as records in the APPrioritySelectionPolicyTable.
+##	However, in this particular case below (and when using this file) we are always
+##	dealing with a legacy, link layer preferences and selection (please also see
+##	the comment above).
+##	Since none of the link preferences can ever be understood by the network layer
+##	selector, they always override the provider's own selection policy (as specified
+##	in the network layer access point, i.e. in the "NetworkDefault" record below this text).
+##	This is why the default network layer access point below does not need to have
+##	a APPrioritySelectionPolicyTable entry orresponding to its selection poincy id
+##	(this really is only an excepti on from the rule, it can never happen on a system
+##	configured to be access point aware!!!).
+##
+
+[AccessPointTable]
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=10000
+	Name=NetworkDefault
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.20000
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=8
+END_ADD
+
+##This record here is the default record for the IPProto level APs generated by 
+##CommsDat. This record used as it is if the config file, which is processed
+## after this config file, doesn't contain any ConnectionPreferences or 
+##IAPPrioritySelectionPolicy tables.
+ADD_SECTION
+# COMMDB_ID = 253
+	Id=10001
+	Name=IPProtoDefault
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	##this field value here is an indication that the config file doesn't have
+	##any generated IPProto APs which means that there is no ConnPref or 
+	##IAPPrioritySelPol records.
+	CustomSelectionPolicy=-1
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 252
+	Id=10002
+	Name=SIPDefault
+	Tier=Link.TierTable.536887799
+	MCpr=MCprTable.11
+	AccessPointSelectionPolicy=0
+	Cpr=CprTable.5
+	SCpr=SCprTable.8
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## APPrioritySelectionPolicyTable
+## 
+
+[APPrioritySelectionPolicyTable]
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=20000
+	Name=APSelPolNetworkDefault
+	##This will be modified by CommsDat to point to the correct IPProto level APs
+    ##in the ranking order of IAPs in the ConnectionPreferences table, if there
+    ##is any.
+	AP1=Link.AccessPointTable.10001
+	APCOUNT=1
+	FIELD_COUNT=4
+END_ADD
+
+
+############################################################
+## TierTable
+##
+
+[TierTable]
+
+## Id=0x10281DD8 == 271064536
+
+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
+
+## Id=0x10281DF0 == 271064560
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=271064560
+	TierImplUid=271064560
+	Name=Tier2
+	TierThreadName= ESock_IP
+	TierManagerName= ProtoTierManager
+	##By default this is linked to the default AP on the IPProto layer
+	DefaultAccessPoint=Link.AccessPointTable.10001
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+## Id=0x10281DF5 == 271064565
+
+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.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=536887799
+	TierImplUid=536887799
+	Name=Tier4
+	TierThreadName= ESock_SIP
+	TierManagerName= SIPTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10002
+	PromptUser= 0
+	FIELD_COUNT=7
+END_ADD
+
+############################################################
+## MCprTable
+## 
+[MCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=netmcpr
+	MCprUid=0x10274547
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotomcpr
+	MCprUid=0x10281DEE
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=pppmcpr
+	MCprUid=0x10281DEC
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=ethmcpr
+	MCprUid=0x10281DFC
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=rawipmcpr
+	MCprUid=0x10281E00
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=tunnelmcpr
+	MCprUid=0x10281E02
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qospppmcpr
+	MCprUid=0x10281DEC
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=dummynifmcpr
+	MCprUid=0x10281E04
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=hungrynifmcpr
+	MCprUid=0x10281E04
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=pdpmcpr
+	MCprUid=0x102822F0
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=sipmcpr
+	MCprUid=0x200041F9
+	FIELD_COUNT=2
+END_ADD
+
+## PAN Ether MCpr Uid = 271070626 (0x102835A2)
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=panethermcpr
+	MCprUid=271070626
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## CprTable
+## 
+[CprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=ipcpr
+	CprUid=0x102070EF
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotocpr
+	CprUid=0x10281DD3
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=agentcpr
+	CprUid=0x10281DE8
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=vanillacpr
+	CprUid=0x102822F3
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=sipcpr
+	CprUid=0x10274C38
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=tunnelagentcpr
+	CprUid=271080968
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=pdpcpr
+	CprUid=0x102822E2
+	FIELD_COUNT=2
+END_ADD
+############################################################
+## SCprTable
+## 
+[SCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=qosipscpr
+	SCprUid=0x10204308
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotoscpr
+	SCprUid=0x10281DD1
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=agentscpr
+	SCprUid=0x10281DEA
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=pdpscpr
+	SCprUid=0x102822E0
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=pppscpr
+	SCprUid=0x102822FC
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=vanillascpr
+	SCprUid=0x102822F4
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qosscpr
+	SCprUid=0x102822D3
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=sipscpr
+	SCprUid=0x10274C17
+	FIELD_COUNT=2
+END_ADD
+
+############################################################
+## ProtocolTable
+## 
+[ProtocolTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=sapshim
+	ProtocolUid=0x101F7482
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipshim4
+	ProtocolUid=0x10281C36
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=w3sock
+	ProtocolUid=0x10206FF4    #0x10206FF6
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=ethernet
+	ProtocolUid=0x10281DDB
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=rawip
+	ProtocolUid=0x10281DF2
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=tunnel
+	ProtocolUid=0x10281DF7
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qosppp
+	ProtocolUid=0x10281C54
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=dummynif
+	ProtocolUid=0x10281C3B
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=hungrynif
+	ProtocolUid=0x10281C3D
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=panether
+	ProtocolUid=271070627
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=rawip2
+	ProtocolUid=0x10286AF8
+	FIELD_COUNT=2
+END_ADD
+
+############################################################
+## BearerTypeTable
+## 
+[BearerTypeTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=wsock
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ethint
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=tunnelnif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.6
+	Cpr=CprTable.7
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.6
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=qosppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.7
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.7
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=dummynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=hungrynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.9
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.9
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=spud-ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.3
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=spud-rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.3
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=6
+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
+
+##This record here is the template record for the Network level AP generated by CommsDat.
+##It's used when processing SNAP config files
+ADD_SECTION
+# COMMDB_ID = 11
+    ##This name is a predefined name for the template for the Network APs.
+	##Please don't change it!
+	Name=NetworkDefaultTemplate
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=rawip2
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.11	
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=spud-rawip2
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.11
+	FIELD_COUNT=6
+END_ADD
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/data/wsock.esk	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,40 @@
+[sockman]
+protocols= tcp,udp,icmp,icmp6,tcp.ip6,udp.ip6,icmp.ip6,icmp6.ip6
+
+[tcp]
+filename= wsock.prt
+index= 1
+
+[udp]
+filename= wsock.prt
+index= 2
+
+[icmp]
+filename= wsock.prt
+index= 3
+
+[icmp6]
+filename= wsock.prt
+index= 4
+
+[tcp.ip6]
+filename= wsock6.prt
+index= 1
+
+[udp.ip6]
+filename= wsock6.prt
+index= 2
+
+[icmp.ip6]
+filename= wsock6.prt
+index= 3
+
+[icmp6.ip6]
+filename= wsock6.prt
+index= 4
+
+[nifman]
+default= wsocka
+
+[interfaces]
+wsocki= wsocki.nif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/group/ABLD.BAT	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,15 @@
+@ECHO OFF
+
+REM Bldmake-generated batch file - ABLD.BAT
+REM ** DO NOT EDIT **
+
+perl -w -S ABLD.PL "\PublicSDK\sdkcreationmw\sdkruntimes\new_wsock_3pc\group\\" %1 %2 %3 %4 %5 %6 %7 %8 %9
+if errorlevel==1 goto CheckPerl
+goto End
+
+:CheckPerl
+perl -v >NUL
+if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?
+goto End
+
+:End
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/group/bld.inf	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,28 @@
+// 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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRJ_PLATFORMS
+WINSCW
+
+PRJ_EXPORTS
+..\data\wsock.esk \epoc32\WINSCW\c\private\101f7989\ESock\ip.tcpip.esk 
+
+..\data\meshpreface1.cfg \epoc32\release\winscw\udeb\z\system\data\meshpreface1.cfg
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+
+PRJ_MMPFILES
+wsock_3pc.mmp
+
+#endif  //SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/group/wsock_3pc.mmp	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,46 @@
+
+TARGET          w3sock.dll
+TARGETTYPE       PLUGIN
+
+#include "../inc/WinsockUid.h"
+
+UID 0x10009D8D KW3sockProtocolUid
+
+SOURCEPATH      ..\src
+SOURCE             winsockflow.cpp 
+SOURCE             winsockmcpr.cpp
+SOURCE  	       winsockbinders.cpp
+SOURCE             winsockmcprfactory.cpp
+SOURCE             winsockflowfactory.cpp
+SOURCE		       winsockprovision.cpp
+SOURCE             ecom_impl.cpp
+
+USERINCLUDE     ../inc
+USERINCLUDE	    ../../../../sf/os/networkingsrv/linklayercontrol/networkinterfacemgr/agentprcore/inc
+USERINCLUDE	    ../../../../sf/os/networkingsrv/linklayercontrol/networkinterfacemgr/agentpr/inc
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+
+LIBRARY mbufmgr.lib
+LIBRARY euser.lib 
+LIBRARY esocksvr.lib
+LIBRARY serverden.lib
+LIBRARY netmeta.lib
+LIBRARY coreproviders.lib
+LIBRARY commsfw.lib
+LIBRARY agentprcore.lib
+LIBRARY insock.lib
+LIBRARY nodemessages.lib
+LIBRARY meshmachine.lib
+LIBRARY netinterfaces.lib
+LIBRARY virtualconstructors.lib
+LIBRARY factories.lib
+
+START RESOURCE 10281DE7.rss
+TARGET w3sock.rsc
+END
+
+CAPABILITY CommDD PowerMgmt ReadDeviceData WriteDeviceData TrustedUI ProtServ NetworkControl NetworkServices LocalServices ReadUserData WriteUserData
+UNPAGED
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockBinders.h	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,127 @@
+// 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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// tunnelnif.h 
+// 
+//
+
+/**
+ @file 
+ @internalComponent
+*/
+
+#ifndef WINSOCKBINDERS_H__
+#define WINSOCKBINDERS_H__
+
+#include <comms-infras/nifif.h>
+#include <in6_if.h>
+#include <eui_addr.h>	// TE64Addr
+#include <comms-infras/ss_flowbinders.h>
+#include <comms-infras/ss_nodemessages.h>
+#include "winsockflow.h"				// for CTunnelNcp::Info()
+
+using namespace ESock;
+
+const TInt KWinsockMtu = 1500;
+
+class CWinsockFlow;
+
+NONSHARABLE_CLASS(CWinsockNcp) : public CBase, public ESock::MLowerDataSender, public ESock::MLowerControl
+	{
+public:
+	// from MLowerControl
+	virtual TInt GetName(TDes& aName);
+	virtual TInt BlockFlow(ESock::MLowerControl::TBlockOption /*aOption*/);
+
+	// from MLowerDataSender
+	virtual ESock::MLowerDataSender::TSendResult Send(RMBufChain& aPdu);
+
+	// Utility functions called from CTunnelFlow
+	ESock::MLowerDataSender* Bind(ESock::MUpperDataReceiver* aUpperReceiver, ESock::MUpperControl* aUpperControl);
+	void Unbind(ESock::MUpperDataReceiver* aUpperReceiver, ESock::MUpperControl* aUpperControl);
+	TBool MatchesUpperControl(const ESock::MUpperControl* aUpperControl);
+	void StartSending();
+
+protected:
+	CWinsockNcp(CWinsockFlow& aFlow);
+	inline const TWinsockInfo* Info();
+
+protected:
+    CWinsockFlow* iFlow;
+	
+    TInetAddr iNameSer1;
+	TInetAddr iNameSer2;
+
+	ESock::MUpperControl* iUpperControl;
+	ESock::MUpperDataReceiver* iUpperReceiver;
+	};
+
+// ======================================================================================
+
+NONSHARABLE_CLASS(CWinsockNcp4) : public CWinsockNcp
+	{
+public:
+	static CWinsockNcp4* ConstructL(CWinsockFlow& aLink);
+
+	// from MLowerDataSender
+	virtual TInt GetConfig(TBinderConfig& aConfig);
+	virtual TInt Control(TUint, TUint, TDes8&);
+	//
+
+	virtual TInt Notification(TWinsockAgentMessage::TTunnelSetAddress& aMessage);
+
+private:
+    CWinsockNcp4(CWinsockFlow& aLink);
+
+	TUint32 iLocalAddress;
+	};
+
+// ======================================================================================
+
+NONSHARABLE_CLASS(CWinsockNcp6) : public CWinsockNcp
+	{
+public:
+	static CWinsockNcp6* ConstructL(CWinsockFlow& aLink);
+
+	// from MLowerDataSender
+	virtual TInt GetConfig(TBinderConfig& aConfig);
+	virtual TInt Control(TUint, TUint, TDes8&);
+	//
+
+	virtual TInt Notification(TWinsockAgentMessage::TTunnelSetAddress& aMessage);
+
+private:
+    CWinsockNcp6(CWinsockFlow& aLink);
+
+	TInetAddr iLocalAddress;
+	};
+
+// ======================================================================================
+
+class CWinsockNcpLog : public CBase
+	{
+public:
+	static void Write(const TDesC& aDes);
+	static void Printf(TRefByValue<const TDesC> aFmt, ...);
+	};
+
+//
+// Inline functions
+//
+
+inline const TWinsockInfo* CWinsockNcp::Info()
+	{
+	return iFlow->Info();
+	}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockUid.h	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#ifndef _W3SOCK_UID_H_
+#define _W3SOCK_UID_H_
+
+
+#define KWinsockFlowUid                 0x10206FF4
+#define KWinsockMcprUid                 0x10206FF5
+#define KW3sockProtocolUid             0x10206FF4
+#define KWinsockIPv6ProtocolUid         0x10274A0A
+
+/*#define KW3sockProtocolUid              0xA000EEB0   ///New UID Given By shrinivas
+#define KWinsockFlowUid                 0xA000EEB0 
+#define KWinsockMcprUid                 0xA000EEB1*/
+
+/*
+#define KWinsockAgentUid                0x10206FF4
+#define KWinsockInterfaceUid            0x10206FF5
+#define KWinsockProtocolUid             0x10206FF6
+#define KWinsockIPv6ProtocolUid         0x10274A0A
+*/
+
+#endif // _WSOCK_UID_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockagenthandler.h	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,118 @@
+/**
+* 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 the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Header file declaring the RawIP Provisioning structures.
+* 
+*
+*/
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef WINSOCKAGENTHANDLER_H_
+#define WINSOCKAGENTHANDLER_H_
+
+#include <comms-infras/agentmessages.h>
+#include <comms-infras/linkmessages.h>
+#include <in_sock.h>
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <comms-infras/nifprvar_internal.h>
+#endif
+
+struct TWinsockInfo;
+
+NONSHARABLE_CLASS(CWinsockAgentHandler) : public CAgentNotificationHandler
+	{
+public:
+    CWinsockAgentHandler(const TWinsockInfo& aTunnelInfo);
+
+private:
+	virtual void ServiceStarted();
+	virtual TInt NotificationFromAgent(TAgentToFlowEventType aEvent, TAny* aInfo);
+
+private:
+	// Pointer to Tunnel provisioning information in AccessPointConfig.  Should remain valid
+	// whilst TunnelMCPr instance is valid - TunnelMCPr has a longer lifetime that this
+	// Tunnel Agent Handler class (which TunnelMCPr created/deletes).
+	const TWinsockInfo& iTunnelInfo;
+	};
+
+class TSigTunnelAddressParams : public Messages::TSignatureBase
+/**
+Parameters that communicate the IP Address that the Tunnel CFProtocol should use.
+
+iIsUpdate is EFalse when the address is setup for the first time.  Address changes are
+signified by iIsUpdate being set to ETrue.  This replaces the old notifications
+EAgentToNifEventTypeSetAddress and EAgentToNifEventTypeUpdateAddress in the old
+Networking architecture.
+*/
+	{
+protected:
+  	inline TSigTunnelAddressParams() {}
+	explicit TSigTunnelAddressParams(const Messages::TNodeSignal::TMessageId& aMessageId,
+			TBool aIsUpdate, TInetAddr aAddress, TInetAddr aNameSer1, TInetAddr aNameSer2)
+		: Messages::TSignatureBase(aMessageId), iIsUpdate(aIsUpdate), iAddress(aAddress),
+		iNameSer1(aNameSer1), iNameSer2(aNameSer2)
+	    {}
+
+public:
+	DECLARE_MVIP_CTR( TSigTunnelAddressParams )
+	DATA_VTABLE
+
+	TInetAddr iAddress;
+	TInetAddr iNameSer1;
+	TInetAddr iNameSer2;
+	TBool	iIsUpdate;
+
+	};
+
+template<TInt id, TInt32 realm>
+struct TWinsockAddressMessage : public TSigTunnelAddressParams, public Messages::TSignatureBase::TTypeToMessageId<id, realm>
+/**
+Template class specialising TCFUmtsIfMessageSig against the operation subid.
+
+@internalComponent
+*/
+    {
+	explicit TWinsockAddressMessage(
+			TBool aIsUpdate, TInetAddr aAddress, TInetAddr aNameSer1, TInetAddr aNameSer2)
+	    :TSigTunnelAddressParams(Messages::TNodeSignal::TMessageId(id, realm),
+	    aIsUpdate, aAddress, aNameSer1, aNameSer2)
+	    {}
+    };
+
+class TWinsockAgentMessage
+    {
+public:
+    enum { ERealmId = 0x10281DF6 };
+
+private:
+    enum
+    	{
+    	ETunnelSetAddress  = Messages::KNullMessageId + 1,
+    	};
+public:
+    typedef TWinsockAddressMessage<ETunnelSetAddress, TWinsockAgentMessage::ERealmId> TTunnelSetAddress;
+
+    static void RegisterL();
+    static void DeRegister();
+	};
+
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockflow.h	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,156 @@
+// 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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// tunnelnif.h
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#if (!defined WINSOCKFLOW_H__)
+#define WINSOCKFLOW_H__
+
+#include <comms-infras/nifif.h> 
+#include <nifutl.h>
+#include <in6_if.h>
+
+#include <comms-infras/ss_subconnflow.h>
+#include <comms-infras/ss_flowbinders.h>
+#include "winsockprovision.h"
+#include "winsockagenthandler.h"
+
+
+enum TTunnelPanic
+	{
+	ETunnelPanic_ObjectNotDeleted,
+	ETunnelPanic_BadState,
+	ETunnelPanic_UnexpectedMessage,
+	ETunnelPanic_BadBind,
+	ETunnelPanic_BadUnbind
+	};
+
+void Panic(TTunnelPanic aPanic);
+
+class CWinsockNcp4;
+class CWinsockNcp6;
+//struct TTunnelInfo;
+
+/**
+ *  The link controller.
+ *  The purpose of this class in our case is to communicate with
+ *  the agent.
+ *  It is also responsible for creating and maintaining the NCP
+ */
+NONSHARABLE_CLASS(CWinsockFlow) : public ESock::CSubConnectionFlowBase, public ESock::MFlowBinderControl
+	{
+
+public:
+	CWinsockFlow(ESock::CSubConnectionFlowFactoryBase& aFactory, const Messages::TNodeId& aSubConnId, ESock::CProtocolIntfBase* aProtocolIntf);
+	~CWinsockFlow();
+
+	//
+	// from CSubConnectionFlowBase
+	//
+	virtual ESock::MFlowBinderControl* DoGetBinderControlL();
+
+	//
+	// from MFlowBinderControl
+	//
+	virtual ESock::MLowerControl* GetControlL(const TDesC8& aProtocol);
+	virtual ESock::MLowerDataSender* BindL(const TDesC8& aProtocol, ESock::MUpperDataReceiver* aReceiver, ESock::MUpperControl* aControl);
+	virtual void Unbind( ESock::MUpperDataReceiver* aReceiver, ESock::MUpperControl* aControl);
+	virtual ESock::CSubConnectionFlowBase* Flow();
+
+    //
+    // Other Utility functions
+    //
+    inline const TWinsockInfo* Info();
+	
+
+protected:
+	//
+	// from CSubConnectionFlowBase
+	//
+	virtual void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage);
+
+private:
+	//
+	// Utility functions for processing incoming SCPR messages:  As per our understanding, need to implement AgentSCPR to load and manage the agent
+	//
+	void StartFlowL();
+	void StopFlow(TInt aError);
+	void ProvisionConfig(const ESock::RMetaExtensionContainerC& aConfigData);
+	void Destroy();
+	TInt Notification(TWinsockAgentMessage::TTunnelSetAddress& aMessage);
+
+	//
+	// Utility functions for sending messages to SCPR : As per our understanding, need to implement AgentSCPR to load and manage the agent
+	//
+	void PostProgressMessage(TInt aStage, TInt aError);
+	inline void PostDataClientStartedMessage();				// inline as only used once
+	inline void PostFlowDownMessage(TInt aError);	// inline as only used once
+	void MaybePostDataClientIdle();
+
+private:
+    CWinsockNcp4* iNifIf4;                       // IP4 binder
+    CWinsockNcp6* iNifIf6;                       // IP6 binder
+  	enum TMeshMachineFlowState
+      	{
+      	EStopped,
+      	EStarting,
+      	EStarted,
+      	EStopping,
+      	};
+	TMeshMachineFlowState iMMState;
+
+	// Provisioning information
+	const TWinsockInfo* iProvisionInfo;			// pointer to Tunnel provisioning information in AccessPointConfig
+
+	TInt iSavedError;							// an errors saved from processing ProvisionConfig message (until StartFlow)
+	};
+
+// ===========================================================================================
+//
+// Inline functions
+//
+
+inline void CWinsockFlow::PostDataClientStartedMessage()
+/**
+Post a FlowUp message to the SCPR
+*/
+	{
+	iSubConnectionProvider.PostMessage(Id(), ESock::TCFDataClient::TStarted().CRef());
+	}
+
+inline void CWinsockFlow::PostFlowDownMessage(TInt aError)
+/**
+Post a FlowDown message to the SCPR
+*/
+	{
+	iSubConnectionProvider.PostMessage(Id(), ESock::TCFDataClient::TStopped(aError).CRef());
+	iMMState = EStopped;
+	}
+
+inline const TWinsockInfo* CWinsockFlow::Info()
+/**
+Retrieve the provisioning information
+*/
+    {
+    ASSERT(iProvisionInfo);
+    return iProvisionInfo;
+    }
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockflowfactory.h	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,52 @@
+// 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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Defines the factory class which is used to instantiate the RAW IP.
+// 
+//
+
+/**
+ @file
+*/
+
+#ifndef WINSCOKFLOWFACTORY_H__
+#define WINSCOKFLOWFACTORY_H__
+
+#include <e32base.h>
+#include <e32std.h>
+#include <comms-infras/ss_subconnflow.h>
+#include <comms-infras/ss_protflow.h>
+#include "WinsockUid.h"
+
+
+
+/**
+Winsock Flow Implementation UID  : Find the 
+*/
+const TInt KWinsockFlowImplUid = KWinsockFlowUid;
+
+
+class CWinsockFlowFactory : public ESock::CSubConnectionFlowFactoryBase
+	{
+public:
+	static CWinsockFlowFactory* NewL(TAny* aConstructionParameters);
+
+protected:
+	CWinsockFlowFactory(TUid aFactoryId, ESock::CSubConnectionFlowFactoryContainer& aParentContainer);
+	virtual ESock::CSubConnectionFlowBase* DoCreateFlowL(ESock::CProtocolIntfBase* aProtocol, ESock::TFactoryQueryBase& aQuery);
+
+private:
+	//CBttLogger* iTheLogger;		// only here to allow use of _LOG_LnCn() macros within factory
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockmcpr.h	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,139 @@
+// 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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalTechnology
+ @prototype
+*/
+
+
+#ifndef WINSOCK_AGENTMCPR_H
+#define WINSOCK_AGENTMCPR_H
+
+#include <comms-infras/coremcpr.h>
+#include <comms-infras/nifagt.h>
+#include <comms-infras/agentmessages.h>
+#include <metadatabase.h>		// for TMDBElementId
+//#include "agentmcpr.h"
+#include <comms-infras/agentmcpr.h>
+#include <comms-infras/ss_commsdataobject.h>
+#include <comms-infras/ss_nodemessages_legacy.h>
+#include <comms-infras/ss_nodemessages_legacy_internal.h>
+#include <comms-infras/ss_legacyinterfaces.h>
+
+class TIp6Addr;
+class CAgentNotificationHandler;
+class CAvailabilitySubscriber;
+class CAgentQueryConnSettingsImpl;
+class CAgentProvisionInfo;
+
+namespace ESock
+	{
+	class CCommsDatIapView;
+	}
+
+
+/*class CWinsockMetaConnectionProvider : public CCoreMetaConnectionProvider, private ESock::MLinkMCprLegacyDataAccessApiExt,
+    public ITFHIERARCHY_LINK_2(CWinsockMetaConnectionProvider, CCoreMetaConnectionProvider,
+		ESock::MQueryConnSettingsApiExt,
+    	ESock::MLinkMCprLegacyDataAccessApiExt)*/
+class CWinsockMetaConnectionProvider : public CAgentMetaConnectionProvider
+	{
+//public:
+	/*typedef ITFHIERARCHY_LINK_2(CWinsockMetaConnectionProvider, CCoreMetaConnectionProvider,
+		ESock::MQueryConnSettingsApiExt,
+    	ESock::MLinkMCprLegacyDataAccessApiExt) TIfStaticFetcherNearestInHierarchy;*/
+    //typedef CWinsockMetaConnectionProviderFactory FactoryType;
+public:
+    static CWinsockMetaConnectionProvider* NewL(ESock::CMetaConnectionProviderFactoryBase& aFactory, const ESock::TProviderInfo& aProviderInfo);
+	IMPORT_C ~CWinsockMetaConnectionProvider();
+
+	void ReturnInterfacePtrL(ESock::MLinkMCprLegacyDataAccessApiExt*& aInterface);
+	void ReturnInterfacePtrL(ESock::MQueryConnSettingsApiExt*& aInterface);
+	
+	// Methods for retrieving and decoding CommsDat fields containing IPv4/v6 addresses.
+	//
+	// These methods could have been in CCommsDatIapView, but that would have meant ESockSvr
+	// linking against insock.lib (IP specific and takes up RAM, even if ESockSvr isn't used
+	// for IP at all).  If CCommsDatIapView is moved out of ESockSvr, then these
+	// methods should be moved into CCommsDatIapView.
+	IMPORT_C static void GetIp4AddrL(ESock::CCommsDatIapView* aIapView, CommsDat::TMDBElementId aElementId, TUint32& aAddr);
+	IMPORT_C static TInt GetIp4Addr(ESock::CCommsDatIapView* aIapView, CommsDat::TMDBElementId aElementId, TUint32& aAddr);
+	IMPORT_C static void GetIp6AddrL(ESock::CCommsDatIapView* aIapView, CommsDat::TMDBElementId aElementId, TIp6Addr& aAddr);
+	IMPORT_C static TInt GetIp6Addr(ESock::CCommsDatIapView* aIapView, CommsDat::TMDBElementId aElementId, TIp6Addr& aAddr);
+
+	
+	// From MLinkCprLegacyDataAccessExtApi Interface
+	
+#if 0
+	IMPORT_C virtual void GetIntSettingL(const TDesC& aSettingName, TUint32& aValue, ESock::MPlatsecApiExt* aPlatsecItf);
+	IMPORT_C virtual void GetBoolSettingL(const TDesC& aSettingName, TBool& aValue, ESock::MPlatsecApiExt* aPlatsecItf);
+	IMPORT_C virtual void GetDes8SettingL(const TDesC& aSettingName, TDes8& aValue, ESock::MPlatsecApiExt* aPlatsecItf);
+	IMPORT_C virtual void GetDes16SettingL(const TDesC& aSettingName, TDes16& aValue, ESock::MPlatsecApiExt* aPlatsecItf);
+	IMPORT_C virtual void GetLongDesSettingL(const TDesC& aSettingName, HBufC*& aValue, ESock::MPlatsecApiExt* aPlatsecItf);
+#endif 
+	// Utility method
+	TMDBElementId MapFieldNameL(const TDesC& aSettingName, ESock::MPlatsecApiExt* aPlatsecItf);
+    TMDBElementId SecondChanceModemBearerLegacyMapFieldNameL(const TDesC& aSettingName, ESock::MPlatsecApiExt* aPlatsecItf);
+
+protected:
+	const CAgentProvisionInfo* AgentProvisionInfo();
+
+	IMPORT_C static void CleanupCloseIapView(TAny* aThis);
+
+	 CWinsockMetaConnectionProvider(ESock::CMetaConnectionProviderFactoryBase& aFactory, const ESock::TProviderInfo& aProviderInfo);
+
+	IMPORT_C ESock::CCommsDatIapView* OpenIapViewL();
+	IMPORT_C ESock::CCommsDatIapView* OpenIapViewLC();
+	IMPORT_C void CloseIapView();
+	IMPORT_C ESock::CCommsDatIapView* IapView();
+	void DestroyIapView();
+
+	IMPORT_C void SetAgentNotificationHandlerL(CAgentNotificationHandler* aNotificationHandler);
+    IMPORT_C void ConstructL();
+
+    // Messages::ANode Interface - To be implemented by the deriving MCPr
+    // virtual TInt ReceivedL(Messages::TSignatureBase& aCFMessage);
+
+	IMPORT_C void StartAvailabilityMonitoringL(const Messages::TNodeCtxId& aAvailabilityActivity);
+	IMPORT_C void CancelAvailabilityMonitoring();
+	virtual void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage);
+
+private:
+    void ProvisionAgentInfoL ();
+    CCredentialsConfig* CreateCredentialsInfoL();
+
+private:
+    ESock::CCommsDatIapView* iIapView;
+    TBool iAgentMCPrDoneWithIapView:1;
+    TInt32 iIapViewRefCount;
+
+public:
+#ifdef _DEBUG
+	CAvailabilitySubscriber* iAvailabilitySubscriber;
+#else
+	TAny* iReserved; //Place holder to avoid BC between udeb/urel
+#endif
+
+	
+protected:
+    CAgentQueryConnSettingsImpl* iQueryConnSettingsImpl;
+	};
+
+
+#endif
+// SYMBIAN_AGENTMCPR_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockmcprfactory.h	Wed Apr 21 10:32:25 2010 +0530
@@ -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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// RawIP MCPR Factory
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef SYMBIAN_WINSCOKMCPR_FACTORY_H
+#define SYMBIAN_WINSCOKMCPR_FACTORY_H
+
+#include <comms-infras/ss_metaconnprov.h>
+
+class CWinsockMetaConnectionProviderFactory : public ESock::CMetaConnectionProviderFactoryBase
+	{
+public:
+    enum { iUid = 0x10281e00 };
+	static CWinsockMetaConnectionProviderFactory* NewL(TAny* aParentContainer);
+
+protected:
+    CWinsockMetaConnectionProviderFactory(TUid aFactoryId, ESock::CMetaConnectionFactoryContainer& aParentContainer);
+	ESock::ACommsFactoryNodeId* DoCreateObjectL(ESock::TFactoryQueryBase& aQuery);
+	};
+
+#endif
+//SYMBIAN_RAWIPMCPR_FACTORY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/inc/winsockprovision.h	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,81 @@
+// 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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Definitions of Tunnel Provisioning classes.
+// 
+//
+
+/**
+ @file 
+ @internalComponent
+*/
+
+#if (!defined WINSOCKPROVISION_H__)
+#define WINSOCKPROVISION_H__
+
+#include <e32cmn.h>
+#include <comms-infras/metadata.h>
+#include <in_iface.h>
+
+namespace ESock
+	{
+	class CCommsDatIapView;
+	}
+	
+struct TWinsockInfo
+/**
+Provisioning class embedded within the main TTunnelProvision class
+*/
+	{
+public:
+	// Rationale: iIfName is effectively TBuf<32> and not an RBuf because Tunnel interface
+	// names are typically 26-28 characters.
+	TInterfaceName iIfName;
+	TUint32 iLocalIap;
+	TUint32 iLocalNetwork;
+	};
+
+class TWinsockProvision : public Meta::SMetaData
+/**
+Structure passed to CFProtocol in a ProvisionConfig() message.
+*/
+	{
+public:
+	enum
+		{
+		EUid = 0x10206FF4,		// same as Winsock Flow UID (arbitrary convention only)
+		ETypeId = 1 
+		};
+
+public:
+	void InitialiseConfigL(ESock::CCommsDatIapView* aIapView);
+
+public:
+	TWinsockInfo iInfo;
+
+	// No serialisation takes place in CFProtocol - we only cast an SMetaData* to
+	// TTunnelProvision* hence DATA_VTABLE is enough.
+	DATA_VTABLE
+	};
+
+class TWinsockMessages
+/**
+Methods used to register the Tunnel message virtual constructors
+*/
+	{
+public:
+	static void RegisterL();
+	static void DeRegister();
+	};
+
+#endif // TUNNELPROVISION_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/src/10281DE7.rss	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,60 @@
+// 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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Registry info for RawIP providers ECOM plug-in
+// 
+//
+
+/**
+ @file 10281DF1.RSS
+*/
+
+#include "ecom/registryinfo.rh"
+
+RESOURCE REGISTRY_INFO theInfo
+{
+dll_uid = 0x10206FF4;
+interfaces = 
+    {
+    INTERFACE_INFO
+        {
+        interface_uid = 0x10281C33;
+        implementations = 
+            {
+           	IMPLEMENTATION_INFO
+                {
+                implementation_uid = 0x10206FF4;  // 
+                version_no = 1;
+                display_name = "Winscok Flow Factory";
+                default_data = "w3sock";
+                opaque_data = "";
+                }
+            };
+		},
+	INTERFACE_INFO
+        {
+        interface_uid =  0x10274546;
+        implementations = 
+            {
+           IMPLEMENTATION_INFO
+                {
+                implementation_uid = 0x10206FF5;  // 0x10206FF4 is UID of Winscok Agent in old arch
+                version_no = 1;
+                display_name = "Winsock Meta Connection Provider Factory";
+                default_data = "WinsockMCprFactory";
+                opaque_data = "";
+                }
+            };
+        } 
+    };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/src/ecom_impl.cpp	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,52 @@
+// 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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// ECOM Implementation for the Winsock Provider Factories
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+
+#include <ecom/implementationproxy.h>
+#include <ecom/ecom.h>
+
+//#include "winsockcprfactory.h"
+//#include "winsockscprfactory.h"
+//#include "winsocktiermanagerfactory.h"
+
+#include "winsockflowfactory.h"
+#include "winsockmcprfactory.h"
+#include "../inc/winsockuid.h"
+
+
+//#include "tunnelagentcprfactory.h"
+// ---------------- ECOM Implementation ----------------
+
+const TImplementationProxy ImplementationTable[] =
+    {
+   IMPLEMENTATION_PROXY_ENTRY(KWinsockFlowUid, CWinsockFlowFactory::NewL),
+   IMPLEMENTATION_PROXY_ENTRY(KWinsockMcprUid, CWinsockMetaConnectionProviderFactory::NewL)
+    };
+
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+    return ImplementationTable;
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winscokmcprfactory.cpp	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,64 @@
+// 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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// RawIP MCPR Factory
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "winsockmcprfactory.h"
+#include "winsockmcpr.h"
+#include <comms-infras/ss_log.h>
+#include <ss_glob.h>
+
+#include <comms-infras/ss_msgintercept.h>
+#include <comms-infras/ss_metaconnprov.h>
+
+#ifdef __CFLOG_ACTIVE
+#define KRawIPMCprFactoryTag KESockMetaConnectionTag
+// _LIT8(KRawIPMCprFactorySubTag, "rawipmcprfactory");
+#endif // __CFLOG_ACTIVE
+
+using namespace ESock;
+
+//-=========================================================
+//
+// CWinsockMetaConnectionProviderFactory methods
+//
+//-=========================================================	
+CWinsockMetaConnectionProviderFactory* CWinsockMetaConnectionProviderFactory::NewL(TAny* aParentContainer)
+	{
+	__CFLOG_VAR((KRawIPMCprFactoryTag, KRawIPMCprFactorySubTag, _L8("CWinsockMetaConnectionProviderFactory ::\tNewL(%08x)"), aParentContainer));
+ 	return new (ELeave) CWinsockMetaConnectionProviderFactory(TUid::Uid(CWinsockMetaConnectionProviderFactory::iUid), *(reinterpret_cast<CMetaConnectionFactoryContainer*>(aParentContainer)));
+	}
+
+CWinsockMetaConnectionProviderFactory::CWinsockMetaConnectionProviderFactory(TUid aFactoryId, CMetaConnectionFactoryContainer& aParentContainer)
+	: CMetaConnectionProviderFactoryBase(aFactoryId,aParentContainer)
+	{
+	__CFLOG_VAR((KRawIPMCprFactoryTag, KRawIPMCprFactorySubTag, _L8("CWinsockMetaConnectionProviderFactory %08x:\tCWinsockMetaConnectionProviderFactory Constructor"), this));
+	}
+
+ACommsFactoryNodeId* CWinsockMetaConnectionProviderFactory::DoCreateObjectL(ESock::TFactoryQueryBase& aQuery)
+	{
+	const TMetaConnectionFactoryQuery& query = static_cast<const TMetaConnectionFactoryQuery&>(aQuery);
+	CWinscokMetaConnectionProvider* provider = CWinscokMetaConnectionProvider::NewL(*this, query.iProviderInfo);	
+	
+	//ESOCK_DEBUG_REGISTER_GENERAL_NODE(iUid, provider);
+
+	return provider;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winsockbinders.cpp	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,332 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// tunnelnif.cpp
+// 
+//
+
+#include <es_mbuf.h>
+//#include <flogger.h>
+
+#include <agenterrors.h>
+
+//#include "tunnelnifvar.h"
+#include "winsockBinders.h"
+#include <comms-infras/es_protbinder.h>
+//#include "TunnelAgentHandler.h"
+#include <comms-infras/commsdebugutility.h>
+/*
+ * This sections defines a whole load of constants etc... not very exciting
+ */
+#if defined (_DEBUG) 
+	#define LOG(a) a
+	_LIT(KTunnelIfLogFolder, "Winsock");
+	_LIT(KTunnelIfLogFile, "Winsock");
+#else
+	#define LOG(a)
+#endif
+
+const TUint KConnNifConfig = (1 | KConnReadUserDataBit);
+
+CWinsockNcp::CWinsockNcp(CWinsockFlow& aFlow)
+    : iFlow(&aFlow)
+    {
+    }
+
+//
+// from ESock::MLowerControl
+//
+
+TInt CWinsockNcp::GetName(TDes& aName)
+/**
+Return binder name.
+
+Called from upper layer.
+
+@param aName return descriptor filled in with binder name 
+*/
+	{
+	aName.Copy(Info()->iIfName);  //  Need to Written for Winsock Interface name  
+	return KErrNone;
+	}
+
+TInt CWinsockNcp::BlockFlow(MLowerControl::TBlockOption /*aOption*/)
+	{
+	return KErrNotSupported;
+	}
+
+//
+// Utility functions called from CTunnelFlow
+//
+
+MLowerDataSender* CWinsockNcp::Bind(MUpperDataReceiver* aUpperReceiver, MUpperControl* aUpperControl)
+/**
+ * Binds TCP/IP protocol to Flow
+ *
+ * @param aUpperReceiver A pointer to Upper layer Receive class
+ * @param aUpperControl A pointer to Upper layer control class
+ */
+	{
+   // CWinsockNcpLog::Printf(_L("CWinsockNcp:\tBind()"));
+
+	iUpperReceiver = aUpperReceiver;
+	iUpperControl = aUpperControl;
+	return this;
+	}
+
+void CWinsockNcp::Unbind(MUpperDataReceiver* aUpperReceiver, MUpperControl* aUpperControl)
+    {
+	//CWinsockNcpLog::Printf(_L("CWinsockNcp:\tUnbind()"));
+
+	(void)aUpperReceiver;
+	(void)aUpperControl;
+	ASSERT(aUpperReceiver == iUpperReceiver);
+	ASSERT(aUpperControl == iUpperControl);
+	iUpperReceiver = NULL;
+	iUpperControl = NULL;
+	}
+
+void CWinsockNcp::StartSending()
+/**
+ * Indicates to the protocol layer that the NIF is ready to send packets.
+ *
+ * @param aProtocol A pointer to a protocol
+ */
+	{
+	//CWinsockNcpLog::Printf(_L("CWinsockNcp:\tStartSending()"));
+
+	// Default implementation.
+	// Uses iProtocol instead aProtocol.
+	iUpperControl->StartSending();
+	}
+
+TBool CWinsockNcp::MatchesUpperControl(const ESock::MUpperControl* aUpperControl)
+	{
+	return iUpperControl == aUpperControl;
+	}
+
+MLowerDataSender::TSendResult CWinsockNcp::Send(RMBufChain& aPdu)
+    {
+   // CWinsockNcpLog::Printf(_L("Illegal CWinsockNcp::Send Called, Dropping packet"));
+    aPdu.Free();
+	return MLowerDataSender::ESendAccepted;
+    }
+
+// ===================================================================================
+//
+//	NCP4 specific functions
+//
+
+CWinsockNcp4::CWinsockNcp4(CWinsockFlow& aFlow)
+    : CWinsockNcp(aFlow)
+    {
+    }
+
+CWinsockNcp4* CWinsockNcp4::ConstructL(CWinsockFlow& aFlow)
+    {
+  //  CWinsockNcpLog::Printf(_L("CWinsockNcp4::ConstructL()"));
+    
+    CWinsockNcp4* self = new(ELeave) CWinsockNcp4(aFlow);
+    CleanupStack::PushL(self);
+
+ //   CWinsockNcpLog::Printf(_L("CWinsockNcp4::ConstructL() - Created Nif %S"), &self->Info()->iIfName);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+TInt CWinsockNcp4::GetConfig(TBinderConfig& aConfig)
+	{
+    TBinderConfig4* config = TBinderConfig::Cast<TBinderConfig4>(aConfig);
+    
+   	if(config == NULL)
+   		{
+   		return KErrNotSupported;
+   		}
+
+	config->iFamily = KAfInet;		/* KAfInet - selects TBinderConfig4 */
+	
+	config->iInfo.iFeatures = KIfCanBroadcast | KIfCanMulticast;		/* Feature flags */
+	config->iInfo.iMtu = KWinsockMtu;							/* Maximum transmission unit. */
+	config->iInfo.iRMtu = KWinsockMtu;						/* Maximum transmission unit for receiving. */
+	config->iInfo.iSpeedMetric = 0;							/* approximation of the interface speed in Kbps. */
+	
+	config->iNetMask.SetAddress(0);							/* IP netmask. */
+	config->iBrdAddr.SetAddress(0);							/* IP broadcast address. */
+	
+	// do this only if we have a valid address
+	if(iLocalAddress == 0)
+		{
+		TInetAddr unspec(KAFUnspec);
+		config->iAddress = unspec;
+		config->iDefGate = unspec;
+		}
+	else
+		{
+		config->iAddress.SetAddress(iLocalAddress);		/* Interface IP address. */
+		config->iDefGate.SetAddress(iLocalAddress);		/* IP default gateway or peer address (if known). */
+		config->iNameSer1 = iNameSer1;					/* IP primary name server (if any). */
+		config->iNameSer2 = iNameSer2;					/* IP secondary name server (if any). */
+		}
+		
+	return KErrNone;
+    }
+
+TInt CWinsockNcp4::Control(TUint aLevel, TUint aName, TDes8& aOption)
+    {
+    CWinsockNcpLog::Printf(_L("CWinsockNcp4::Control(aLevel %x, aName %x, ...)"), aLevel, aName);
+
+    if (aLevel == KCOLInterface)
+	{
+	if (aName == KConnNifConfig)
+	    {
+	    TInetIfConfig& opt = *(TInetIfConfig*)aOption.Ptr();
+	    iLocalAddress = opt.iAddress.Address();
+	    iNameSer1 = opt.iNameSer1;
+	    iNameSer2 = opt.iNameSer2;
+	    return KErrNone;
+	    }
+	}
+    return KErrNotSupported;
+    }
+
+TInt CWinsockNcp4::Notification(TWinsockAgentMessage::TTunnelSetAddress& aMessage)
+    {
+    iLocalAddress = aMessage.iAddress.Address() ;
+    iNameSer1 = aMessage.iNameSer1;
+    iNameSer2 = aMessage.iNameSer2;
+    if ( aMessage.iIsUpdate )
+		{
+		ASSERT(iUpperControl);
+		iUpperControl->Error(KErrLinkConfigChanged);
+//	        iLink->Notify()->BinderLayerDown((CNifIfBase*)this, KErrLinkConfigChanged, MNifIfNotify::EReconnect);
+		}
+	return KErrNone;
+    }
+
+// ===================================================================================
+//
+//	NCP6 specific functions
+//
+
+CWinsockNcp6::CWinsockNcp6(CWinsockFlow& aFlow)
+    : CWinsockNcp(aFlow)
+    {
+    }
+
+CWinsockNcp6* CWinsockNcp6::ConstructL(CWinsockFlow& aLink)
+    {
+    CWinsockNcpLog::Printf(_L("CWinsockNcp6::ConstructL()"));
+    
+    CWinsockNcp6* self = new(ELeave) CWinsockNcp6(aLink);
+    CleanupStack::PushL(self);
+
+   // CWinsockNcpLog::Printf(_L("CWinsockNcp::ConstructL() - Created Nif %S"), &self->Info()->iIfName);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+TInt CWinsockNcp6::GetConfig(TBinderConfig& aConfig)
+/**
+Return the configuration information for the binder (e.g. IP address)
+
+Called from upper layer.
+
+@param aConfig base class of structure to fill in with configuration information.
+*/
+	{
+	if(TBinderConfig::Cast<TBinderConfig6>(aConfig) == NULL)
+		{
+		return KErrNotSupported;
+		}
+
+	TBinderConfig6& config = static_cast<TBinderConfig6&>(aConfig);
+		
+	config.iFamily = KAfInet6;		/* KAfInet - selects TBinderConfig4 */
+	
+	config.iInfo.iFeatures = KIfCanBroadcast | KIfCanMulticast;		/* Feature flags */
+	config.iInfo.iMtu = KWinsockMtu;							/* Maximum transmission unit. */
+	config.iInfo.iRMtu = KWinsockMtu;						/* Maximum transmission unit for receiving. */
+	config.iInfo.iSpeedMetric = 0;							/* approximation of the interface speed in Kbps. */
+	
+	config.iLocalId = iLocalAddress;
+	//opt.iRemoteId.SetAddress(iLocalAddress);
+	// Setup static DNS address if required
+	if (!iNameSer1.IsUnspecified())
+		{
+		config.iNameSer1 = iNameSer1;
+		if (!iNameSer1.IsUnspecified())
+			config.iNameSer2 = iNameSer2;
+		}
+
+	return KErrNone;
+    }
+
+TInt CWinsockNcp6::Control(TUint aLevel, TUint aName, TDes8& aOption)
+    {
+  //  CWinsockNcpLog::Printf(_L("CWinsockNcp6::Control(aLevel %x, aName %x, ...)"), aLevel, aName);
+
+	if (aLevel == KCOLInterface)
+		{
+		if (aName == KConnNifConfig)
+			{
+			TSoInet6IfConfig& opt = *(TSoInet6IfConfig*)aOption.Ptr();
+			iLocalAddress = opt.iLocalId;
+			iNameSer1 = opt.iNameSer1;
+			iNameSer2 = opt.iNameSer2;
+			return KErrNone;
+			}
+		}
+
+    return KErrNotSupported;
+    }
+
+TInt CWinsockNcp6::Notification(TWinsockAgentMessage::TTunnelSetAddress& aMessage)
+    {
+    iLocalAddress = aMessage.iAddress;
+    iNameSer1 = aMessage.iNameSer1;
+    iNameSer2 = aMessage.iNameSer2;
+    if ( aMessage.iIsUpdate )
+		{
+		ASSERT(iUpperControl);
+		iUpperControl->Error(KErrLinkConfigChanged);
+        // iLink->Notify()->BinderLayerDown((CNifIfBase*)this, KErrLinkConfigChanged, MNifIfNotify::EReconnect);
+		}
+	return KErrNone;
+    }
+
+
+void CWinsockNcpLog::Write(const TDesC& aDes)
+//
+// Write aText to the log
+//
+    {
+    LOG(RFileLogger::Write(KTunnelIfLogFolder(), KTunnelIfLogFile(), EFileLoggingModeAppend, aDes);)
+	(void)aDes;
+    }
+
+void CWinsockNcpLog::Printf(TRefByValue<const TDesC> aFmt,...)
+//
+// Write a mulitple argument list to the log, trapping and ignoring any leave
+//
+    {
+	/*LOG(
+		VA_LIST list;
+		VA_START(list,aFmt);
+		RFileLogger::WriteFormat(KTunnelIfLogFolder(), KTunnelIfLogFile(), EFileLoggingModeAppend, aFmt, list);
+		)*/
+	(void)aFmt;
+    }
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winsockflow.cpp	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,358 @@
+#if 1
+#include <es_mbuf.h>
+#include <agenterrors.h>
+#include "winsockbinders.h"
+#include "winsockflow.h"
+#include <comms-infras/linkmessages.h>
+#include <comms-infras/ss_metaconnprov.h>					// for SAccessPointConfig
+#include <comms-infras/commsdebugutility.h>
+#include <elements/nm_messages_base.h>
+#include <elements/nm_messages_child.h>
+
+using namespace Messages;
+using namespace MeshMachine;
+using namespace ESock;
+
+
+#endif
+
+
+class CWinsockNcp4;
+class CWinsockNcp6;
+struct TWinsockInfo;
+#if 1
+/*
+ * This sections defines a whole load of constants etc... not very exciting
+ */
+#if defined (WINSOCK_DEBUG)
+	#define LOG(a) 
+#else
+	#define LOG(a)
+#endif
+
+_LIT8(KDescIp6, "ip6");
+_LIT8(KDescIp, "ip");
+
+// Note: The "tunnel" logging string has been repeated here but should be unified throughout
+// the Tunnel CFProtocol.  The main logging relies on 16-bit RFileLogger calls whereas the
+// CFNode logging requires an 8-bit string.  An attempt to make everything 8-bit resulted
+// in undefined RFileLogger symbols.
+#ifdef SYMBIAN_TRACE_ENABLE
+_LIT8(KWinsockLog, "W3sock");
+#endif
+
+/*
+ * The Link class
+ */
+
+CWinsockFlow::CWinsockFlow(CSubConnectionFlowFactoryBase& aFactory, const TNodeId& aSubConnId, CProtocolIntfBase* aProtocolIntf)
+	: CSubConnectionFlowBase(aFactory, aSubConnId, aProtocolIntf)
+/**
+Constructor.
+
+@param aFactory Reference to the factory which created this object.
+@param aSubConnId Id of SubConnection Provider - for sending messages to it.
+@param aProtocolIntf Protocol Interface corresponding to the Flow.
+*/
+    {
+    LOG_NODE_CREATE(KWinsockLog, CWinsockFlow); 
+   
+    }
+
+CWinsockFlow::~CWinsockFlow()
+    {
+    LOG_NODE_DESTROY(KWinsockLog, CWinsockFlow); 
+    }
+
+TInt CWinsockFlow::Notification(TWinsockAgentMessage::TTunnelSetAddress& aMessage)
+    {
+	if (iNifIf4)
+		{
+		return iNifIf4->Notification(aMessage);
+		}
+	if (iNifIf6)
+		{
+		return iNifIf6->Notification(aMessage);
+		}
+	return KErrNotSupported;
+	}
+
+
+// =====================================================================================
+// CSubConnectionFlowBase
+// =====================================================================================
+
+MFlowBinderControl* CWinsockFlow::DoGetBinderControlL()
+	{
+	return this;
+	}
+
+// =====================================================================================
+// MFlowBinderControl methods
+// =====================================================================================
+
+MLowerControl* CWinsockFlow::GetControlL(const TDesC8& aProtocol)
+	{
+
+	if (aProtocol.CompareF(KDescIp6) == 0)
+		{
+		if ( iNifIf6 )
+			{
+			//CTunnelNcpLog::Printf(_L("CWinsockFlow:\tGetControlL already bound to %S"), &aProtocol);
+			User::Leave(KErrInUse);
+			return NULL;
+			}
+		iNifIf6 = CWinsockNcp6::ConstructL(*this);
+		return iNifIf6;
+        }
+	else if (aProtocol.CompareF(KDescIp) == 0)
+	    {
+		if ( iNifIf4 )
+            {
+        //    CTunnelNcpLog::Printf(_L("CWinsockFlow:\tGetControlL already bound to %S"), &aProtocol);
+			User::Leave(KErrInUse);
+            return NULL;
+            }
+        iNifIf4 = CWinsockNcp4::ConstructL(*this);
+		return iNifIf4;
+        }
+	Panic(ETunnelPanic_BadBind);
+	return NULL;
+	}
+
+MLowerDataSender* CWinsockFlow::BindL(const TDesC8& aProtocol, MUpperDataReceiver* aReceiver, MUpperControl* aControl)
+/**
+ * Binds upper CFProtocol to this CFProtocol
+ *
+ * @param aUpperReceiver A pointer to Upper layer Receive class
+ * @param aUpperControl A pointer to Upper layer control class
+ */
+	{
+	MLowerDataSender* lowerDataSender = NULL;
+	if (aProtocol.CompareF(KDescIp6) == 0)
+		{
+		ASSERT(iNifIf6);
+		lowerDataSender = iNifIf6->Bind(aReceiver, aControl);
+        }
+	else if (aProtocol.CompareF(KDescIp) == 0)
+		{
+		ASSERT(iNifIf4);
+		lowerDataSender = iNifIf4->Bind(aReceiver, aControl);
+		}
+	else
+		{
+		// GetControlL() should already have been called.
+		Panic(ETunnelPanic_BadBind);
+		}
+
+	if (lowerDataSender)
+    	{
+    	iSubConnectionProvider.PostMessage(Id(), TCFControlProvider::TActive().CRef());
+    	}
+
+	return lowerDataSender;
+	}
+
+void CWinsockFlow::Unbind(MUpperDataReceiver* aUpperReceiver, MUpperControl* aUpperControl)
+    {
+	if (iNifIf4 && iNifIf4->MatchesUpperControl(aUpperControl))
+		{
+		iNifIf4->Unbind(aUpperReceiver, aUpperControl);
+		delete iNifIf4;
+		iNifIf4 = NULL;
+		}
+	else
+	if (iNifIf6 && iNifIf6->MatchesUpperControl(aUpperControl))
+		{
+		iNifIf6->Unbind(aUpperReceiver, aUpperControl);
+		delete iNifIf6;
+		iNifIf6 = NULL;
+		}
+	else
+		{
+		Panic(ETunnelPanic_BadUnbind);
+		}
+	MaybePostDataClientIdle();
+    }
+
+CSubConnectionFlowBase* CWinsockFlow::Flow()
+/**
+Return the Flow corresponding to the MFlowBinderControl
+*/
+	{
+	return this;
+	}
+
+// =====================================================================================
+// Messages::ANode
+// =====================================================================================
+
+void CWinsockFlow::ReceivedL(const TRuntimeCtxId& aSender, const TNodeId& aRecipient, TSignatureBase& aMessage)
+    {
+  
+
+    CSubConnectionFlowBase::ReceivedL(aSender, aRecipient, aMessage);
+
+	if (aMessage.IsMessage<TEBase::TError>())
+		{
+		}
+	else if (TEChild::ERealmId == aMessage.MessageId().Realm())
+		{
+		switch (aMessage.MessageId().MessageId())
+			{
+		case TEChild::TDestroy::EId :
+			Destroy();
+			break;
+		default:
+//TODO - logging
+			ASSERT(EFalse);
+			}
+		}
+	else if (TCFDataClient::ERealmId == aMessage.MessageId().Realm())
+		{
+		switch (aMessage.MessageId().MessageId())
+			{
+		case TCFDataClient::TStart::EId :
+			StartFlowL();
+			break;
+		case TCFDataClient::TStop::EId :
+			StopFlow(static_cast<TCFDataClient::TStop&>(aMessage).iValue);
+			break;
+		case TCFDataClient::TBindTo::EId:
+            {
+			TCFDataClient::TBindTo& bindToReq = message_cast<TCFDataClient::TBindTo>(aMessage);
+			if (!bindToReq.iNodeId.IsNull())
+				{
+				User::Leave(KErrNotSupported);
+				}
+			RClientInterface::OpenPostMessageClose(Id(), aSender, TCFDataClient::TBindToComplete().CRef());
+            }
+			break;
+		case TCFDataClient::TProvisionConfig::EId:
+			ProvisionConfig(static_cast<TCFDataClient::TProvisionConfig&>(aMessage).iConfig);
+			break;
+		default:
+//TODO - logging
+			ASSERT(EFalse);
+			}
+		}
+	else	// realm is not TCFMessage or TTunnelAgentMessage
+		{
+		Panic(ETunnelPanic_UnexpectedMessage);
+		}
+		
+
+    }
+
+// =====================================================================================
+//
+// Methods for handling incoming SCPR messages
+//
+
+void CWinsockFlow::StartFlowL()
+    {
+    // NOTE: according to the NAF docs the sequence should really be StartSending(), then LinkLayerUp() then Progress()
+    // for DNS to work.  However, this tunnel NIF doesn't support DNS.
+    //
+	//CTunnelNcpLog::Write(_L("CWinsockFlow:\tStartFlow()"));
+
+	// Process any errors that may have occurred during processing of the ProvisionConfig message earlier.
+	// ProvisionConfig has no response, so error the StartFlow here.
+	User::LeaveIfError(iSavedError);
+
+
+	PostDataClientStartedMessage();
+	if (iNifIf4)
+		{
+		iNifIf4->StartSending();
+		}
+	if (iNifIf6)
+		{
+		iNifIf6->StartSending();
+		}
+	iMMState = EStarted;
+	
+
+    }
+
+void CWinsockFlow::StopFlow(TInt aError)
+    {
+  //  CTunnelNcpLog::Printf(_L("CWinsockFlow:\tStop(aError %d)"), aError);
+   
+    PostFlowDownMessage(aError);
+    }
+
+void CWinsockFlow::MaybePostDataClientIdle()
+    {
+	if (iNifIf4 == NULL && iNifIf4 == NULL)
+		{
+   		iSubConnectionProvider.RNodeInterface::PostMessage(Id(), TCFControlProvider::TIdle().CRef());
+		}
+    }
+/*
+Provisioning description for Tunnel CFProtocol Flow:
+
+- on receipt of the TProvisionConfig message, the provisioning information contained within
+  the AccessPointConfig array is validated:
+	- TTunnelProvision must be present.  It is added by the Tunnel MCPr and populated from CommsDat.  A pointer to it
+	  is stored in iProvisionInfo. If missing, TError(TCFDataClient::TStart, KErrCorrupt) message is signalled back
+  	  to the SCPr on the next StartFlow message (ProvisionConfig has no response message).
+*/
+
+
+void CWinsockFlow::ProvisionConfig(const ESock::RMetaExtensionContainerC& aConfigData)
+/**
+Handle ProvisionConfig message from SCPR.
+*/
+	{
+	
+
+	iSavedError = KErrNone;
+	//CTunnelNcpLog::Printf(_L("CWinsockFlow:\tProvisionConfig message received"));
+	
+	AccessPointConfig().Close();
+	AccessPointConfig().Open(aConfigData);
+
+	
+#if 0  // Need to Writen for Winsock
+	/* Look into Agent MCPR to find the correct class for winscok */
+    const TWinsockProvision* provision = static_cast<const TWinsockProvision*>(AccessPointConfig().FindExtension(STypeId::CreateSTypeId(TWinsockProvision::EUid, TWinsockProvision::ETypeId)));
+    if (provision == NULL)
+        {
+        //CTunnelNcpLog::Printf(_L("CWinsockFlow:\tProcessProvisionConfigL() - no Winsock configuration"));
+		iSavedError = KErrCorrupt;
+        }
+
+	ASSERT(iProvisionInfo == NULL);
+	iProvisionInfo = &provision->iInfo;
+	ASSERT(iProvisionInfo);
+	
+	#endif // #if 1
+	}
+
+void CWinsockFlow::Destroy()
+/**
+Handle Destroy message from SCPR.
+*/
+	{
+	ASSERT(iNifIf4 == NULL);		// must not still be bound from above before being destroyed
+	ASSERT(iNifIf6 == NULL);
+	DeleteThisFlow();
+	}
+
+//
+// Utility functions
+//
+
+void CWinsockFlow::PostProgressMessage(TInt aStage, TInt aError)
+	{
+	iSubConnectionProvider.RNodeInterface::PostMessage(Id(), TCFMessage::TStateChange(Elements::TStateChange(aStage, aError)).CRef());
+	}
+
+void Panic(TTunnelPanic aPanic)
+	{
+	_LIT(KWinsockLogPanicTag, "Winsock");
+	User::Panic(KWinsockLogPanicTag, aPanic);
+	}
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winsockflowfactory.cpp	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,68 @@
+// 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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implements the factory class which is used to instantiate the WINSOCK NIF.
+// 
+//
+
+/**
+ @file
+*/
+
+#include "WinsockFlowFactory.h"
+#include "WinsockFlow.h"
+#include "../inc/winsockUid.h"
+#include <es_mbuf.h>
+//#include "bttlog.h"
+
+using namespace ESock;
+
+// =====================================================================================
+//
+// RawIP Flow Factory
+//
+
+CWinsockFlowFactory* CWinsockFlowFactory::NewL(TAny* aConstructionParameters)
+/**
+Constructs a Default SubConnection Flow Factory
+
+@param aConstructionParameters construction data passed by ECOM
+
+@returns pointer to a constructed factory
+*/
+	{
+	
+		CWinsockFlowFactory* ptr = new (ELeave) CWinsockFlowFactory(TUid::Uid(KWinsockFlowUid), *(reinterpret_cast<CSubConnectionFlowFactoryContainer*>(aConstructionParameters)));
+	return ptr;
+	}
+
+
+CWinsockFlowFactory::CWinsockFlowFactory(TUid aFactoryId, CSubConnectionFlowFactoryContainer& aParentContainer)
+	: CSubConnectionFlowFactoryBase(aFactoryId, aParentContainer)
+/**
+Default SubConnection Flow Factory Constructor
+
+@param aFactoryId ECOM Implementation Id
+@param aParentContainer Object Owner
+*/
+	{
+	}
+
+
+CSubConnectionFlowBase* CWinsockFlowFactory::DoCreateFlowL(ESock::CProtocolIntfBase* aProtocol, ESock::TFactoryQueryBase& aQuery)
+	{
+    const TDefaultFlowFactoryQuery& query = static_cast<const TDefaultFlowFactoryQuery&>(aQuery);
+    CWinsockFlow* s = new (ELeave) CWinsockFlow(*this, query.iSCprId, aProtocol);
+    return s;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winsockmcpr.cpp	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,663 @@
+// 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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalTechnology
+ @prototype
+*/
+
+#if 0
+#include <comms-infras/ss_log.h>
+#include <elements/sm_core.h>
+#include <in_sock.h>
+#include <comms-infras/ss_tiermanagerutils.h>
+#include <comms-infras/ss_nodeinterfaces.h>
+#include <comms-infras/ss_coreactivities.h>
+#else
+#include <comms-infras/ss_log.h>
+#include <comms-infras/ss_tiermanagerutils.h>
+#include <comms-infras/coremcpractivities.h>
+#include <comms-infras/agentmcpractivities.h>
+#include "winsockprovision.h"
+#include "winsockagenthandler.h"
+#include "winsockmcpr.h"
+#include <comms-infras/ss_msgintercept.h>
+
+#endif
+
+using namespace Messages;
+using namespace MeshMachine;
+using namespace ESock;
+using namespace NetStateMachine;
+using namespace MCprActivities;
+
+
+#ifdef _DEBUG
+// Panic category for "absolutely impossible!" vanilla ASSERT()-type panics from this module
+// (if it could happen through user error then you should give it an explicit, documented, category + code)
+_LIT(KSpecAssert_NifManAgtPrCgntm, "NifManAgtPrCgntm");
+#endif
+
+
+#ifdef _DEBUG
+#define KWinSockMCprTag KESockMetaConnectionTag
+_LIT8(KWinSockMCprSubTag, "winsockmcpr");
+#endif
+
+// No Bearer Activity
+namespace WinsockMCPRNoBearerActivity
+{
+DECLARE_DEFINE_NODEACTIVITY(ECFActivityNoBearer, activity, TCFControlProvider::TNoBearer)
+    FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingNoBearer, MeshMachine::TNoTag)
+    LAST_NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendBearer)
+NODEACTIVITY_END()
+}
+
+// Activity Map
+namespace WinsockMCprStates
+{
+DECLARE_DEFINE_ACTIVITY_MAP(stateMap)
+   ACTIVITY_MAP_ENTRY(WinsockMCPRNoBearerActivity, activity)
+ACTIVITY_MAP_END_BASE(AgentMCprActivities, agentMCprActivities)
+} // namespace RawIPMCprStates
+
+using namespace ESock;
+using namespace Messages;
+using namespace NetStateMachine;
+using namespace CommsDat;
+using namespace PRActivities;
+
+
+CWinsockMetaConnectionProvider* CWinsockMetaConnectionProvider::NewL(ESock::CMetaConnectionProviderFactoryBase& aFactory, const ESock::TProviderInfo& aProviderInfo)
+    {
+    // coverity[alloc_fn] coverity[alias] coverity[assign]
+    CWinsockMetaConnectionProvider* winmcpr = new (ELeave) CWinsockMetaConnectionProvider (aFactory, aProviderInfo);
+    // coverity[push]
+    CleanupStack::PushL(winmcpr);
+    // coverity[alias] coverity[double_push]
+    winmcpr->ConstructL();
+    CleanupStack::Pop(winmcpr);
+    return winmcpr;
+    }
+
+/**
+Constructor for the Agent Meta Connection Provider
+@param aFactory The parent factory which created this MCPr
+*/
+EXPORT_C CWinsockMetaConnectionProvider::CWinsockMetaConnectionProvider(CMetaConnectionProviderFactoryBase& aFactory, const ESock::TProviderInfo& aProviderInfo)
+:CAgentMetaConnectionProvider(aFactory, aProviderInfo, WinsockMCprStates::stateMap::Self())                                                                                                                            	
+	{
+   LOG_NODE_CREATE(KWinSockMCprSubTag, CWinsockMetaConnectionProvider);
+	//iQueryConnSettingsImpl = NULL;
+	}
+
+
+/**
+D'tor
+*/
+EXPORT_C CWinsockMetaConnectionProvider::~CWinsockMetaConnectionProvider()
+	{
+	CWinsockMetaConnectionProvider::CancelAvailabilityMonitoring(); //Don't call virtual for obvious reasons!
+    DestroyIapView();
+	//delete iQueryConnSettingsImpl;
+    LOG_NODE_DESTROY(KWinSockMCprSubTag, CWinsockMetaConnectionProvider);
+	}
+
+EXPORT_C void CWinsockMetaConnectionProvider::ConstructL()
+	{
+	CAgentMetaConnectionProvider::ConstructL();
+	//CCoreMetaConnectionProvider::ConstructL();
+    ProvisionAgentInfoL();
+	}
+
+
+void CWinsockMetaConnectionProvider::ReceivedL(const TRuntimeCtxId& aSender, const TNodeId& aRecipient, TSignatureBase& aMessage)
+    {
+    __CFLOG_VAR((KWinSockMCprTag, KWinSockMCprSubTag, _L8("CWinsockMetaConnectionProvider %08x:\tReceivedL() aCFMessage=%d"),
+       this, aMessage.MessageId()));
+
+    ESOCK_DEBUG_MESSAGE_INTERCEPT(aSender, aMessage, aRecipient);
+
+    TNodeContext<CWinsockMetaConnectionProvider> ctx(*this, aMessage, aSender, aRecipient);
+    CCoreMetaConnectionProvider::Received(ctx);
+    User::LeaveIfError(ctx.iReturn);
+    }
+/**
+*/
+void CWinsockMetaConnectionProvider::ProvisionAgentInfoL()
+    {
+    __CFLOG_VAR((KAgentMCprTag, KAgentMCprSubTag, _L8("CWinsockMetaConnectionProvider %08x:\tProvisionAgentInfoL()"), this));
+
+    // It is possible that an AgentProvisionInfo structure has previously been allocated
+    // We create a new one anyway and override it, meaning the reference on the old one can
+    // possibly be released (handled for us) resulting in its deletion 
+#if 0
+    RMetaExtensionContainer mec;
+    mec.Open(AccessPointConfig());
+    CleanupClosePushL(mec);
+
+    CAgentProvisionInfo* agentProvisionInfo = new (ELeave) CAgentProvisionInfo;
+    CleanupStack::PushL(agentProvisionInfo);
+    mec.AppendExtensionL(agentProvisionInfo);
+	CleanupStack::Pop(agentProvisionInfo);
+
+    HBufC* agentName(NULL);
+
+    OpenIapViewL();
+    IapView()->GetTextL(KCDTIdBearerAgent, agentName);
+    __ASSERT_DEBUG(agentName, User::Panic(KSpecAssert_NifManAgtPrCgntm, 1));
+
+
+    agentProvisionInfo->SetAgentName(*agentName);
+    delete agentName;
+
+    agentProvisionInfo->SetIapId(IapView()->IapId());
+    TUint32 netId;
+    IapView()->GetIntL(KCDTIdIAPNetwork,netId);
+    agentProvisionInfo->SetNetworkId(netId);
+    agentProvisionInfo->SetBearerSet(0xFF);
+
+    TUint32 reconnectAttempts = 0;
+    IapView()->GetIntL(KCDTIdMaxConnectionAttempts, reconnectAttempts);
+    agentProvisionInfo->SetReconnectAttempts(reconnectAttempts);
+
+
+    agentProvisionInfo->SetCredentials(CreateCredentialsInfoL());
+    iAgentMCPrDoneWithIapView = ETrue;
+    CloseIapView();
+    
+    // Safely reached the end, commit the changes
+	AccessPointConfig().Close();
+    AccessPointConfig().Open(mec);
+    CleanupStack::PopAndDestroy(&mec);
+    
+#endif
+    }
+
+
+/**
+Create the Credentials structure in the Agent Provisioning Info, and populate it
+with initial values from CommsDat.
+
+Assumes that IapView() has been setup.
+*/
+CCredentialsConfig* CWinsockMetaConnectionProvider::CreateCredentialsInfoL()
+	{
+	__ASSERT_DEBUG(IapView(), User::Panic(KSpecAssert_NifManAgtPrCgntm, 2));
+	CCredentialsConfig* pCredentialsConfig = CCredentialsConfig::NewLC(IapView());
+	CleanupStack::Pop(pCredentialsConfig);
+	return pCredentialsConfig;
+	}
+
+
+/**
+Opens a ref counted Iap View. This must be closed with a call to CloseIapView
+once the view has been finished with.
+@return A pointer to the populated CCommsDatIapView.
+*/
+EXPORT_C CCommsDatIapView* CWinsockMetaConnectionProvider::OpenIapViewL()
+	{
+	if (iIapView == NULL)
+    	{
+    	iIapView = CCommsDatIapView::NewL(ProviderInfo().APId());
+    	}
+
+    iIapViewRefCount++;
+
+	return iIapView;
+	}
+
+
+/**
+Opens a ref counted Iap View adding the returned object to the cleanup stack.
+This must be closed with a call to CloseIapView once the view has been finished
+with.
+@return A pointer to the populated CCommsDatIapView.
+*/
+EXPORT_C CCommsDatIapView* CWinsockMetaConnectionProvider::OpenIapViewLC()
+	{
+	CCommsDatIapView* iapView = OpenIapViewL();
+	CleanupStack::PushL(TCleanupItem(CleanupCloseIapView, this));
+	return iapView;
+	}
+
+
+/**
+The cleanup stack method used to cleanly release the Iap View
+@note Removal of the item from the cleanup stack may not always cause deletion
+of the object. It still remains ref counted, and is only releasable once both
+the ref count has reached zero and the AgentMCPr base class has had a chance
+to use it for Provisioning.
+*/
+EXPORT_C void CWinsockMetaConnectionProvider::CleanupCloseIapView(TAny* aThis)
+	{
+	reinterpret_cast<CWinsockMetaConnectionProvider*>(aThis)->CloseIapView();
+	}
+
+
+/**
+Closes a reference to the Iap View.
+@note The Iap View may not be deleted after this call. It is only deleted once
+both the ref count has reached zero and the AgentMCPr base class has had a
+chance to use it for Provisioning.
+*/
+EXPORT_C void CWinsockMetaConnectionProvider::CloseIapView()
+	{
+	if (iAgentMCPrDoneWithIapView && --iIapViewRefCount == 0)
+    	{
+    	DestroyIapView();
+        }
+	}
+
+void CWinsockMetaConnectionProvider::DestroyIapView()
+	{
+	delete iIapView;
+	iIapView = NULL;
+	}
+
+
+/**
+Gets a pointer to the current Iap View.
+@return A pointer to the current Iap View.
+@note A call to OpenIapViewL or OpenIapViewLC must be made prior to calling
+this method to ensure the returned value is valid.
+*/
+EXPORT_C CCommsDatIapView* CWinsockMetaConnectionProvider::IapView()
+	{
+	__ASSERT_DEBUG(iIapView, User::Panic(KSpecAssert_NifManAgtPrCgntm, 4));
+	return iIapView;
+	}
+
+/**
+Sets the Agent Notification Handler to be used by the AgentSCPr
+@param aNotificationHandler - Pointer to an implementation of the
+CAgentNotificationHandler class. This must exist for the lifetime of the MCPr.
+*/
+EXPORT_C void CWinsockMetaConnectionProvider::SetAgentNotificationHandlerL (CAgentNotificationHandler* aNotificationHandler)
+   {
+#if 0
+	CAgentProvisionInfo* agentProvisionInfo = const_cast<CAgentProvisionInfo*>(static_cast<const CAgentProvisionInfo*>(AccessPointConfig().FindExtension(CAgentProvisionInfo::TypeId())));
+	if (aNotificationHandler || agentProvisionInfo)
+	    {
+       	if (agentProvisionInfo==NULL)
+       		{
+       		RMetaExtensionContainer mec;
+       		mec.Open(AccessPointConfig());
+       		CleanupClosePushL(mec);
+       		
+       	    agentProvisionInfo = new (ELeave) CAgentProvisionInfo;
+       	    CleanupStack::PushL(agentProvisionInfo);
+       		mec.AppendExtensionL(agentProvisionInfo);
+       		CleanupStack::Pop(agentProvisionInfo);
+       		
+       		AccessPointConfig().Close();
+       		AccessPointConfig().Open(mec);
+       		
+            CleanupStack::PopAndDestroy(&mec);
+       		}
+
+        agentProvisionInfo->SetAgentNotificationHandler(aNotificationHandler);
+	    }
+	
+#endif
+    }
+
+/**
+Retreives an IPv4 address from a CCommsDatIapView
+@param aIapView - A pointer to a CCommsDatIapView to obtain the field from
+@param aElementId - The commsdat element Id of the field containing the IPv4 address
+@param aAddr - The variable to receive the IPv4 address
+*/
+EXPORT_C void CWinsockMetaConnectionProvider::GetIp4AddrL(CCommsDatIapView* aIapView, TMDBElementId aElementId, TUint32& aAddr)
+	{
+    User::LeaveIfError(GetIp4Addr(aIapView, aElementId, aAddr));
+	}
+
+
+/**
+Non-leaving version of GetIp4AddrL. Retreives an IPv4 address from a CCommsDatIapView.
+@param aIapView - A pointer to a CCommsDatIapView to obtain the field from
+@param aElementId - The commsdat element Id of the field containing the IPv4 address
+@param aAddr - The variable to receive the IPv4 address
+@return A system-wide error code. KErrNone on success.
+*/
+EXPORT_C TInt CWinsockMetaConnectionProvider::GetIp4Addr(CCommsDatIapView* aIapView, TMDBElementId aElementId, TUint32& aAddr)
+    {
+    aAddr = KInetAddrNone;
+    HBufC* buf = NULL;
+    TInt err = aIapView->GetText(aElementId, buf);
+    if (err == KErrNone)
+		{
+		__ASSERT_DEBUG(buf, User::Panic(KSpecAssert_NifManAgtPrCgntm, 5));
+
+		TInetAddr addr;
+		if ((err = addr.Input(*buf)) == KErrNone)
+		    {
+		    aAddr = addr.Address();
+		    }
+    	delete buf;
+    	}
+
+#ifdef _DEBUG
+	if (err != KErrNone)
+		{
+		__CFLOG_VAR((KAgentMCprTag, KAgentMCprSubTag, _L8("CWinsockMetaConnectionProvider:\tGetIp4Addr(): error %d reading CommsDat field %08x"),
+					 err, aElementId));
+    	}
+#endif
+
+    return err;
+    }
+
+
+/**
+Retreives an IPv6 address from a CCommsDatIapView.
+@param aIapView - A pointer to a CCommsDatIapView to obtain the field from
+@param aElementId - The commsdat element Id of the field containing the IPv6 address
+@param aAddr - The variable to receive the IPv6 address
+*/
+EXPORT_C void CWinsockMetaConnectionProvider::GetIp6AddrL(CCommsDatIapView* aIapView, TMDBElementId aElementId, TIp6Addr& aAddr)
+	{
+    User::LeaveIfError(GetIp6Addr(aIapView, aElementId, aAddr));
+	}
+
+
+/**
+Non-leaving version of GetIp6AddrL. Retreives an IPv6 address from a CCommsDatIapView.
+@param aIapView - A pointer to a CCommsDatIapView to obtain the field from
+@param aElementId - The commsdat element Id of the field containing the IPv6 address
+@param aAddr - The variable to receive the IPv6 address
+@return A system-wide error code. KErrNone on success.
+*/
+EXPORT_C TInt CWinsockMetaConnectionProvider::GetIp6Addr(CCommsDatIapView* aIapView, TMDBElementId aElementId, TIp6Addr& aAddr)
+	{
+	aAddr = KInet6AddrNone;
+	HBufC* buf = NULL;
+	TInt err = aIapView->GetText(aElementId, buf);
+	if (err == KErrNone)
+    	{
+    	__ASSERT_DEBUG(buf, User::Panic(KSpecAssert_NifManAgtPrCgntm, 6));
+
+    	TInetAddr ip6Addr;
+    	if ((err = ip6Addr.Input(*buf)) == KErrNone)
+        	{
+        	aAddr = ip6Addr.Ip6Address();
+        	}
+    	delete buf;
+    	}
+
+#ifdef _DEBUG
+	if (err != KErrNone)
+		{
+		__CFLOG_VAR((KAgentMCprTag, KAgentMCprSubTag, _L8("CWinsockMetaConnectionProvider:\tGetIp6Addr(): error %d reading CommsDat field %08x"),
+					 err, aElementId));
+    	}
+#endif
+
+    return err;
+	}
+
+
+#ifdef _DEBUG
+EXPORT_C void CWinsockMetaConnectionProvider::StartAvailabilityMonitoringL(const TNodeCtxId& aAvailabilityActivity)
+	{
+	__ASSERT_DEBUG(iAvailabilitySubscriber==NULL, User::Panic(KSpecAssert_NifManAgtPrCgntm, 7)); //Only one start allowed from the availability activity!
+//	iAvailabilitySubscriber = CAvailabilitySubscriber::NewL(aAvailabilityActivity, ProviderInfo().APId());
+//	AddClientL(iAvailabilitySubscriber->Id(), TClientType(TClientType::ERegistrar, TCFClientType::EAvailabilityProvider));
+#else
+EXPORT_C void CWinsockMetaConnectionProvider::StartAvailabilityMonitoringL(const Messages::TNodeCtxId& /*aAvailabilityActivity*/)
+	{
+#endif
+	}
+
+EXPORT_C void CWinsockMetaConnectionProvider::CancelAvailabilityMonitoring()
+	{
+#ifdef _DEBUG
+	if (iAvailabilitySubscriber)
+		{
+	//	RemoveClient(iAvailabilitySubscriber->Id());
+		iAvailabilitySubscriber = NULL; //iAvailabilitySubscriber will delete itself when cancelled from the availability activity
+		}
+#endif
+	}
+
+/**
+Retrieves the MLinkCprLegacyDataAccessExtApi implementation
+@param aInterface Pointer to the interface implementation.
+*/
+void CWinsockMetaConnectionProvider::ReturnInterfacePtrL(MLinkMCprLegacyDataAccessApiExt*& aInterface)
+    {
+    //aInterface = this;
+    }
+
+/**
+Retrieves the MQueryConnSettingsApiExt implementation
+@param aInterface Pointer to the interface implementation.
+
+*/
+
+void CWinsockMetaConnectionProvider::ReturnInterfacePtrL(MQueryConnSettingsApiExt*& aInterface)
+    {
+    
+#if 0 // Need to be written for winsock   
+    if (!iQueryConnSettingsImpl)
+    	{
+    	const CAgentProvisionInfo* provisionInfo = AgentProvisionInfo();
+    	iQueryConnSettingsImpl = new (ELeave)CAgentQueryConnSettingsImpl(*provisionInfo, AccessPointConfig());
+    	}
+    aInterface = iQueryConnSettingsImpl;
+#endif
+    }
+
+
+#if 0
+EXPORT_C void CWinsockMetaConnectionProvider::GetIntSettingL(const TDesC& aSettingName, TUint32& aValue, MPlatsecApiExt* aPlatsecItf)
+    {
+    const CAgentProvisionInfo* provisionInfo = AgentProvisionInfo();
+    if (!provisionInfo)
+        {
+        User::Leave (KErrNotReady);
+        }
+
+    TMDBElementId elementId = MapFieldNameL(aSettingName, aPlatsecItf);
+    MQueryConnSettingsApiExt* queryItf;
+    ReturnInterfacePtrL(queryItf);
+
+    TInt err = queryItf->GetInt(elementId, aValue, aPlatsecItf);
+    if (err == KErrNotFound)
+        {
+        elementId = SecondChanceModemBearerLegacyMapFieldNameL(aSettingName, aPlatsecItf);
+        err = queryItf->GetInt(elementId, aValue, aPlatsecItf);
+        }
+    User::LeaveIfError(err);
+    }
+
+
+EXPORT_C void CWinsockMetaConnectionProvider::GetBoolSettingL(const TDesC& aSettingName, TBool& aValue, MPlatsecApiExt* aPlatsecItf)
+    {
+    const CAgentProvisionInfo* provisionInfo = AgentProvisionInfo();
+    if (!provisionInfo)
+        {
+        User::Leave (KErrNotReady);
+        }
+
+    TMDBElementId elementId = MapFieldNameL(aSettingName, aPlatsecItf);
+    MQueryConnSettingsApiExt* queryItf;
+    ReturnInterfacePtrL(queryItf);
+
+    TInt err = queryItf->GetBool(elementId, aValue, aPlatsecItf);
+    if (err == KErrNotFound)
+        {
+        elementId = SecondChanceModemBearerLegacyMapFieldNameL(aSettingName, aPlatsecItf);
+        err = queryItf->GetBool(elementId, aValue, aPlatsecItf);
+        }
+    User::LeaveIfError(err);
+    }
+
+
+EXPORT_C void CWinsockMetaConnectionProvider::GetDes8SettingL(const TDesC& aSettingName, TDes8& aValue, MPlatsecApiExt* aPlatsecItf)
+    {
+    const CAgentProvisionInfo* provisionInfo = AgentProvisionInfo();
+    if (!provisionInfo)
+        {
+        User::Leave (KErrNotReady);
+        }
+
+    TMDBElementId elementId = MapFieldNameL(aSettingName, aPlatsecItf);
+    MQueryConnSettingsApiExt* queryItf;
+    ReturnInterfacePtrL(queryItf);
+
+    HBufC8* value;
+    TInt err = queryItf->GetText(elementId, value, aPlatsecItf);
+    if (err == KErrNotFound)
+        {
+        elementId = SecondChanceModemBearerLegacyMapFieldNameL(aSettingName, aPlatsecItf);
+        err = queryItf->GetText(elementId, value, aPlatsecItf);
+        }
+    User::LeaveIfError(err);
+    aValue = *value;
+    delete value;
+    }
+
+
+EXPORT_C void CWinsockMetaConnectionProvider::GetDes16SettingL(const TDesC& aSettingName, TDes16& aValue, MPlatsecApiExt* aPlatsecItf)
+    {
+    const CAgentProvisionInfo* provisionInfo = AgentProvisionInfo();
+    if (!provisionInfo)
+        {
+        User::Leave (KErrNotReady);
+        }
+
+    TMDBElementId elementId = MapFieldNameL(aSettingName, aPlatsecItf);
+    MQueryConnSettingsApiExt* queryItf;
+    ReturnInterfacePtrL(queryItf);
+
+    HBufC* value;
+    TInt err = queryItf->GetText(elementId, value, aPlatsecItf);
+    if (err == KErrNotFound)
+        {
+        elementId = SecondChanceModemBearerLegacyMapFieldNameL(aSettingName, aPlatsecItf);
+        err = queryItf->GetText(elementId, value, aPlatsecItf);
+        }
+    User::LeaveIfError(err);
+    aValue = *value;
+    delete value;
+    }
+
+
+EXPORT_C void CWinsockMetaConnectionProvider::GetLongDesSettingL(const TDesC& aSettingName, HBufC*& aValue, MPlatsecApiExt* aPlatsecItf)
+    {
+    aValue = NULL;
+
+    const CAgentProvisionInfo* provisionInfo = AgentProvisionInfo();
+    if (!provisionInfo)
+        {
+        User::Leave (KErrNotReady);
+        }
+
+    TMDBElementId elementId = MapFieldNameL(aSettingName, aPlatsecItf);
+    MQueryConnSettingsApiExt* queryItf;
+    ReturnInterfacePtrL(queryItf);
+
+    TInt err = queryItf->GetText(elementId, aValue, aPlatsecItf);
+    if (err == KErrNotFound)
+        {
+        elementId = SecondChanceModemBearerLegacyMapFieldNameL(aSettingName, aPlatsecItf);
+        err = queryItf->GetText(elementId, aValue, aPlatsecItf);
+        }
+    User::LeaveIfError(err);
+
+    }
+
+#endif
+TMDBElementId CWinsockMetaConnectionProvider::MapFieldNameL(const TDesC& aSettingName, MPlatsecApiExt* aPlatsecItf)
+    {
+    _LIT(KSlash, "\\");
+    TInt pos = aSettingName.Find(KSlash);
+    if (pos != KErrNotFound)
+        {
+      //  return CommDbShimUtil::GetElementIdFromFieldNameL(aSettingName);
+        }
+
+    MQueryConnSettingsApiExt* queryItf;
+    ReturnInterfacePtrL(queryItf);
+
+    HBufC16* serviceTable;
+    User::LeaveIfError(queryItf->GetText(KCDTIdIAPServiceType, serviceTable, aPlatsecItf));
+
+    const TInt KMaxFieldSize = 2*KCommsDbSvrMaxFieldLength + 1;
+    TBuf<KMaxFieldSize> field;
+
+    field = *serviceTable;
+    delete serviceTable;
+
+    field.Append(KSlash);
+    field.Append(aSettingName);
+    //return CommDbShimUtil::GetElementIdFromFieldNameL(field);
+    }
+
+TMDBElementId CWinsockMetaConnectionProvider::SecondChanceModemBearerLegacyMapFieldNameL(const TDesC& aSettingName, MPlatsecApiExt* aPlatsecItf)
+    {
+    //This nasty looking method re-implements the lagacy behaviour whereat, despite the current IAP not
+    //featuring the ModemBearer table (because it represnts LAN for instance) would still serve queries
+    //addressed to "ModemBearer\\<field>>" assuming the local equivallent of the ModemBearer (e.g: LanBearer)
+    //table is actually meant.
+    _LIT(KSlash, "\\");
+    TInt pos = aSettingName.Find(KSlash);
+    if (pos != KErrNotFound)
+        {
+        TPtrC left = aSettingName.Left(pos);
+        TPtrC right = aSettingName.Mid(pos+1);
+        if (left.CompareC(TPtrC(MODEM_BEARER)) == 0)
+            {
+            HBufC16* bearerTable;
+
+            MQueryConnSettingsApiExt* queryItf;
+            ReturnInterfacePtrL(queryItf);
+
+            User::LeaveIfError(queryItf->GetText(KCDTIdIAPBearerType, bearerTable, aPlatsecItf));
+
+            const TInt KMaxFieldSize = 2*KCommsDbSvrMaxFieldLength + 1;
+            TBuf<KMaxFieldSize> field;
+
+            field = *bearerTable;
+            delete bearerTable;
+
+            field.Append(KSlash);
+            field.Append(right);
+            return MapFieldNameL(field, aPlatsecItf);
+            }
+        }
+    User::Leave(KErrNotFound);
+    return 0;
+    }
+
+/**
+Retrieves the Agent Provider specific provisioning information as given by the MCpr
+transition.
+
+@internalTechnology
+*/
+const CAgentProvisionInfo* CWinsockMetaConnectionProvider::AgentProvisionInfo()
+    {
+#if 0
+    }
+    const CAgentProvisionInfo* agentProvisionInfo = static_cast<const CAgentProvisionInfo*>(AccessPointConfig().FindExtension(CAgentProvisionInfo::TypeId()));
+	__ASSERT_DEBUG(agentProvisionInfo, User::Panic(KSpecAssert_NifManAgtPrCgntm, 8));
+    return agentProvisionInfo;
+#endif
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winsockmcprfactory.cpp	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,64 @@
+// 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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// RawIP MCPR Factory
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "winsockmcprfactory.h"
+#include "winsockmcpr.h"
+#include <comms-infras/ss_log.h>
+#include <ss_glob.h>
+
+#include <comms-infras/ss_msgintercept.h>
+#include <comms-infras/ss_metaconnprov.h>
+
+#ifdef __CFLOG_ACTIVE
+#define KRawIPMCprFactoryTag KESockMetaConnectionTag
+// _LIT8(KRawIPMCprFactorySubTag, "rawipmcprfactory");
+#endif // __CFLOG_ACTIVE
+
+using namespace ESock;
+
+//-=========================================================
+//
+// CWinsockMetaConnectionProviderFactory methods
+//
+//-=========================================================	
+CWinsockMetaConnectionProviderFactory* CWinsockMetaConnectionProviderFactory::NewL(TAny* aParentContainer)
+	{
+	//__CFLOG_VAR((KRawIPMCprFactoryTag, KRawIPMCprFactorySubTag, _L8("CWinsockMetaConnectionProviderFactory ::\tNewL(%08x)"), aParentContainer));
+ 	return new (ELeave) CWinsockMetaConnectionProviderFactory(TUid::Uid(CWinsockMetaConnectionProviderFactory::iUid), *(reinterpret_cast<CMetaConnectionFactoryContainer*>(aParentContainer)));
+	}
+
+CWinsockMetaConnectionProviderFactory::CWinsockMetaConnectionProviderFactory(TUid aFactoryId, CMetaConnectionFactoryContainer& aParentContainer)
+	: CMetaConnectionProviderFactoryBase(aFactoryId,aParentContainer)
+	{
+	__CFLOG_VAR((KRawIPMCprFactoryTag, KRawIPMCprFactorySubTag, _L8("CWinsockMetaConnectionProviderFactory %08x:\tCWinsockMetaConnectionProviderFactory Constructor"), this));
+	}
+
+ACommsFactoryNodeId* CWinsockMetaConnectionProviderFactory::DoCreateObjectL(ESock::TFactoryQueryBase& aQuery)
+	{
+	const TMetaConnectionFactoryQuery& query = static_cast<const TMetaConnectionFactoryQuery&>(aQuery);
+	CWinsockMetaConnectionProvider* provider = CWinsockMetaConnectionProvider::NewL(*this, query.iProviderInfo);	
+	
+	//ESOCK_DEBUG_REGISTER_GENERAL_NODE(iUid, provider);
+
+	return provider;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sdkcreationmw/sdkruntimes/new_wsock_3pc/src/winsockprovision.cpp	Wed Apr 21 10:32:25 2010 +0530
@@ -0,0 +1,60 @@
+// 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 the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TunnelMCPR.CPP
+// Tunnel MCPR
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "winsockprovision.h"
+#include <comms-infras/ss_tiermanagerutils.h>
+#include <commsdattypeinfov1_1.h>
+
+using namespace ESock;
+using namespace CommsDat;
+
+void TWinsockProvision::InitialiseConfigL(CCommsDatIapView* aIapView)
+    {
+	iInfo.iLocalIap = aIapView->IapId();					// IAP
+
+	TUint32 val;
+
+    aIapView->GetIntL(KCDTIdIAPNetwork, val);					// Network Id
+	iInfo.iLocalNetwork = val;
+
+    TInt err;
+	err = aIapView->GetInt(KCDTIdVPNIAPRecord, val); // VPN IAP
+    if(err == KErrNotFound)
+    	val = 0; /* Hard code to 0 for SNAP, should be backed up by appropriate configuration*/
+    else if(err != KErrNone)
+    	User::Leave(err);
+    val = (val & KCDMaskShowRecordId) >> 8;
+    
+	// form the Tunnel CFProtocol name
+	_LIT(KNifNameFormat, "tunnelnif[0x%08x][%d:%d]");
+	
+	iInfo.iIfName.Format(KNifNameFormat, this, iInfo.iLocalIap, val);
+    }
+
+//
+// Attribute table for provisioning structure passed to CFProtocol
+//
+
+START_ATTRIBUTE_TABLE(TWinsockProvision, TWinsockProvision::EUid, TWinsockProvision::ETypeId)
+// No attributes defined - no serialisation performed
+END_ATTRIBUTE_TABLE()