201037_01 PDK_4.0.a
authorhgs
Thu, 23 Sep 2010 10:22:55 +0100
changeset 78 dd4909eb54cd
parent 77 c9776eadbffd
201037_01
commsfw_info/commsinfrastructuredocs/doc_pub/Comms-Infras_Subsystem_How_to_implement_a_layer.doc
commsfw_info/commsinfrastructuredocs/doc_pub/Selection Fundamentals.doc
commsfwtools/preparedefaultcommsdatabase/Tools/ced/doc_pub/Commdb_Configuration_Editor.doc
commsfwtools/preparedefaultcommsdatabase/doc_pub/Comms Database Data Schema Description.doc
commsfwtools/preparedefaultcommsdatabase/doc_pub/CommsDatAPI.doc
commsfwtools/preparedefaultcommsdatabase/doc_pub/HowTo_Access_Points.doc
commsfwutils/commsbufs/doc_pub/CommsBufsDesign.doc
commsfwutils/commsbufs/group/bld.inf
commsfwutils/commsbufs/mbufgobblerlayer/bwins/mbufgobbleru.def
commsfwutils/commsbufs/mbufgobblerlayer/data/dummy_static_normal.cfg
commsfwutils/commsbufs/mbufgobblerlayer/data/dummy_static_with_mbufgobbler.cfg
commsfwutils/commsbufs/mbufgobblerlayer/group/bld.inf
commsfwutils/commsbufs/mbufgobblerlayer/group/mbufgobblerproviders.iby
commsfwutils/commsbufs/mbufgobblerlayer/group/mbufgobblerproviders.mmp
commsfwutils/commsbufs/mbufgobblerlayer/how to clone this component.txt
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobbler_panic.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerconnprovider.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerconnprovideractivities.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerconnproviderfactory.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerconnprovidermessages.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerconnproviderstates.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerflow.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerflowfactory.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerhelper.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerlog.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblermetaconnprovider.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblermetaconnprovideractivities.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblermetaconnproviderfactory.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblermetaconnproviderstates.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerproviderselector.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerpubsub.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblersubconnprovider.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblersubconnprovideractivities.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblersubconnproviderfactory.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblersubconnproviderstates.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblertestflags.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblertiermanager.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblertiermanageractivities.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblertiermanagerfactory.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblertiermanagerstates.h
commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobbleruids.h
commsfwutils/commsbufs/mbufgobblerlayer/src/10272f97.rss
commsfwutils/commsbufs/mbufgobblerlayer/src/ecom_impl.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerconnprovider.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerconnprovideractivities.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerconnproviderfactory.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerconnprovidermessages.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerconnproviderstates.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerflow.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerflowfactory.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerhelper.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblermetaconnprovider.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblermetaconnprovideractivities.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblermetaconnproviderfactory.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblermetaconnproviderstates.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerproviderselector.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblersubconnprovider.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblersubconnprovideractivities.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblersubconnproviderfactory.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblersubconnproviderstates.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblertiermanager.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblertiermanageractivities.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblertiermanagerfactory.cpp
commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblertiermanagerstates.cpp
commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/group/bld.inf
commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/group/te_mbufgobbler.iby
commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/group/te_mbufgobbler.mmp
commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/inc/te_mbufgobblerserver.h
commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/inc/te_mbufgobblertest.h
commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/scripts/te_mbufgobbler.script
commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/src/te_mbufgobblerserver.cpp
commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/src/te_mbufgobblertest.cpp
commsfwutils/commsbufs/mbufgobblerlayer/updatecontentandfilenames.ini
commsfwutils/commsbufs/mbufgobblerlayer/updatecontentandfilenames.py
commsfwutils/commsbufs/mbufmgr/src/mb_chn.cpp
commsprocess/commsrootserverconfig/doc_pub/Comms Process Startup-Config Design Document.doc
commsprocess/commsrootserverconfig/doc_pub/Root Server API Reference.doc
commsprocess/commsrootserverconfig/doc_pub/Root Server Design Document.doc
datacommsserver/esockserver/doc_pub/Design for Flexible Comms Stack.doc
datacommsserver/esockserver/doc_pub/ESock_Design.doc
datacommsserver/esockserver/doc_pub/ESock_HowTo.doc
datacommsserver/esockserver/doc_pub/HOWTO install an esock protocol after market.doc
datacommsserver/esockserver/doc_pub/NonSeamlessBearerMobility_ClientSideAPIs.doc
datacommsserver/esockserver/doc_pub/NonSeamlessBearerMobility_ServerSideAPIs.doc
datacommsserver/esockserver/doc_pub/RConnection API for Connection Management.doc
datacommsserver/esockserver/doc_pub/RConnection_API.doc
datacommsserver/esockserver/doc_pub/RSubConnection_API.doc
datacommsserver/esockserver/inc/es_availability.h
datacommsserver/esockserver/test/TE_ESock/scriptfiles/te_esock_wlan.xml
datacommsserver/esockserver/test/TE_EsockTestSteps/doc_pub/TE_EsockTestSteps_Test Specification.doc
datacommsserver/esockserver/test/TE_RConnection/doc_pub/GT0429 - PDP Contention Management Test Specification.doc
datacommsserver/esockserver/test/TE_RConnection/doc_pub/SGL.GT0253.202 Non-Seamless Bearer Mobility - Test Spec.doc
datacommsserver/esockserver/test/TE_RConnection/doc_pub/SGL.GT0253.220 Data Monitoring - Test Specification.doc
datacommsserver/esockserver/test/TE_RConnection/doc_pub/TE_RConnection_Test_Specification.doc
datacommsserver/esockserver/test/TE_RConnectionServ/doc_pub/RConnectionServ API test specification.doc
datacommsserver/esockserver/test/TE_RSubconnection/doc_pub/TE_RSubConnection_Test_Specification.doc
serialserver/c32serialserver/Test/TE_C32/doc_pub/C32_How_to_test.doc
serialserver/c32serialserver/Test/TE_C32/doc_pub/C32_Test_Specification.doc
serialserver/c32serialserver/Test/TE_C32/doc_pub/C32_Unit_Test_Specification.doc
serialserver/c32serialserver/Test/te_C32Performance/doc_pub/C32 Performance Test Design.doc
serialserver/c32serialserver/doc_pub/C32API.doc
serialserver/c32serialserver/doc_pub/C32_Design_Document.doc
serialserver/c32serialserver/doc_pub/C32_Design_Document_v1.doc
serialserver/c32serialserver/doc_pub/C32_Heap_Check_Migration.doc
serialserver/c32serialserver/doc_pub/How_To_configure_C32.doc
serialserver/c32serialserver/group/bld.inf
serialserver/c32serialserver/group/ser-comms_c32.mrp
serialserver/c32serialserverdocs/doc_pub/SerComms_Subsystem_Architectural_Description.doc
serialserver/c32serialserverdocs/doc_pub/SerComms_Subsystem_Functional_Specification.doc
Binary file commsfw_info/commsinfrastructuredocs/doc_pub/Comms-Infras_Subsystem_How_to_implement_a_layer.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/doc_pub/Selection Fundamentals.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Tools/ced/doc_pub/Commdb_Configuration_Editor.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/doc_pub/Comms Database Data Schema Description.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/doc_pub/CommsDatAPI.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/doc_pub/HowTo_Access_Points.doc has changed
Binary file commsfwutils/commsbufs/doc_pub/CommsBufsDesign.doc has changed
--- a/commsfwutils/commsbufs/group/bld.inf	Mon Sep 13 15:06:46 2010 +0100
+++ b/commsfwutils/commsbufs/group/bld.inf	Thu Sep 23 10:22:55 2010 +0100
@@ -97,6 +97,8 @@
 #include "../reference/loopback_driver/bld.inf"
 #include "../reference/zerocopy_loopback_driver/bld.inf"
 
+#include "../mbufgobblerlayer/group/bld.inf"
+
 #else
 
 #include "../version1/mbufmgr/group/bld.inf"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/bwins/mbufgobbleru.def	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,3 @@
+EXPORTS
+	?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z @ 1 NONAME ; struct TImplementationProxy const * ImplementationGroupProxy(int &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/data/dummy_static_normal.cfg	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,1594 @@
+############################################################
+## AUTO-GENERATED CONFIGURATION FILE
+## CommsDat Database Dump Utility
+## 1.1
+############################################################
+
+############################################################
+## Network
+## 
+[Network]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Intranet
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Intranet2
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Intranet3
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Intranet4
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=Intranet5
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=Intranet6
+	FIELD_COUNT=1
+END_ADD
+
+
+############################################################
+## ModemBearer
+## 
+[ModemBearer]
+ADD_TEMPLATE
+	Name=Default Loopback Modem
+	TSYName=SIM
+	CSYName=PKTLOOPBACK
+	LastSocketActivityTimeout=180
+	LastSessionClosedTimeout=4
+	LastSocketClosedTimeout=6
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageValidityPeriod=0
+	MessageDeliveryReport=FALSE
+	CommRole=0
+	BCAStack=C32Bca
+	Agent=NULLAGT
+	FIELD_COUNT=65
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Loopback_RawIP_1
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::504
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Loopback_SPUD_2
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Loopback_RawIP_3
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::502
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Loopback_SPUD_4
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=WinTunnel_SPUD_5
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=Loopback_SPUD_5
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Loopback_SPUD_6
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=Loopback_SPUD_7
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=Loopback_SPUD_8
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## Location
+## 
+[Location]
+ADD_TEMPLATE
+	Name=Default Location
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=8
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Office
+	IntlPrefixCode=00
+	AreaCode=171
+	DialOutCode=9,
+	Mobile=FALSE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Mobile
+	FIELD_COUNT=1
+END_ADD
+
+
+############################################################
+## OutgoingGPRS
+## 
+[OutgoingGPRS]
+ADD_TEMPLATE
+	Name=Default Outgoing GPRS
+	APN=Test
+	PDPType=IPV4
+	ReqPrecedence=2
+	ReqDelay=4
+	ReqReliability=3
+	ReqPeakThroughput=3
+	ReqMeanThroughput=31
+	MinPrecedence=2
+	MinDelay=4
+	MinReliability=3
+	MinPeakThroughput=3
+	MinMeanThroughput=31
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=0.0.0.1
+	IpAddrFromServer=FALSE
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=194.72.6.51
+	IpNameServer2=194.72.6.51
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=30
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=RawIP_Bounce_1
+	IpAddr=192.168.1.1
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=SPUD_Echo_2
+	IfParams=lowernif=RAWIP
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.2
+	IpDNSAddrFromServer=TRUE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=RawIP_Bounce_3
+	IpAddr=192.168.2.3
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=SPUD_Echo_4
+	IfParams=lowernif=RAWIP
+	IpAddr=192.168.2.4
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=SPUD_Multi_1
+	IfParams=lowernif=RAWIP
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.10
+	IpDNSAddrFromServer=TRUE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=SPUD_Multi_2
+	IfParams=lowernif=RAWIP
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.11
+	IpDNSAddrFromServer=TRUE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=SPUD_Multi_3
+	IfParams=lowernif=RAWIP
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.12
+	IpDNSAddrFromServer=TRUE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=SPUD_Multi_4
+	IfParams=lowernif=RAWIP
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.13
+	IpDNSAddrFromServer=TRUE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=GPRS_BAD_QOS
+	IfParams=lowernif=RAWIP
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.2
+	IpDNSAddrFromServer=TRUE
+	UmtsR99QoSAndOn=5
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## DefaultGPRS
+## 
+[DefaultGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Dummy Default GPRS Settings
+	Usage=1
+	APN=Access point name
+	PDPType=IPV6
+	PDPAddress=www.wid.com
+	Precedence=1
+	Delay=1
+	Reliability=1
+	PeakThroughput=1
+	MeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=TRUE
+	HeaderCompression=TRUE
+	GprsUseEdge=FALSE
+	AnonymousAccess=TRUE
+	FIELD_COUNT=19
+END_ADD
+
+
+############################################################
+## APPrioritySelectionPolicyTable
+## 
+[APPrioritySelectionPolicyTable]
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=20000
+	Name=APSelPolNetworkDefault
+	AP1=Link.AccessPointTable.10003
+	APCOUNT=1
+	FIELD_COUNT=4
+END_ADD
+
+
+############################################################
+## TierTable
+## 
+[TierTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=2048
+	Name=Tier1
+	TierImplUid=271064536
+	TierThreadName=ESock_IP
+	TierManagerName=NetworkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=271064560
+	Name=Tier2
+	TierImplUid=271064560
+	TierThreadName=ESock_IP
+	TierManagerName=ProtoTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10004
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=271064565
+	Name=Tier3
+	TierImplUid=271064565
+	TierThreadName=ESock_IP
+	TierManagerName=LinkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=536887799
+	Name=Tier4
+	TierImplUid=536887799
+	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=271009095
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotomcpr
+	MCprUid=271064558
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=pppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=ethmcpr
+	MCprUid=271064572
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=rawipmcpr
+	MCprUid=271064576
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=tunnelmcpr
+	MCprUid=271064578
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qospppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=dummynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=hungrynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=pdpmcpr
+	MCprUid=271065840
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=sipmcpr
+	MCprUid=536887801
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=panethermcpr
+	MCprUid=271070626
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## CprTable
+## 
+[CprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=ipcpr
+	CprUid=270561519
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotocpr
+	CprUid=271064531
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=agentcpr
+	CprUid=271064552
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=vanillacpr
+	CprUid=271065843
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=sipcpr
+	CprUid=271010872
+	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=271065826
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## SCprTable
+## 
+[SCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=qosipscpr
+	SCprUid=270549768
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotoscpr
+	SCprUid=271064529
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=agentscpr
+	SCprUid=271064554
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=pdpscpr
+	SCprUid=271065824
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=pppscpr
+	SCprUid=271065852
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=vanillascpr
+	SCprUid=271065844
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qosscpr
+	SCprUid=271065811
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=sipscpr
+	SCprUid=271010839
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## ProtocolTable
+## 
+[ProtocolTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=sapshim
+	ProtocolUid=270496898
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipshim4
+	ProtocolUid=271064118
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=ppp
+	ProtocolUid=271064143
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=ethernet
+	ProtocolUid=271064539
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=rawip
+	ProtocolUid=271064562
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=tunnel
+	ProtocolUid=271064567
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qosppp
+	ProtocolUid=271064148
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=dummynif
+	ProtocolUid=271064123
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=hungrynif
+	ProtocolUid=271064125
+	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=271084280
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## BearerTypeTable
+## 
+[BearerTypeTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	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
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=IPProtoDefaultTemplate
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	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
+
+
+############################################################
+## AccessPointTable
+## 
+[AccessPointTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=rawipMappedFromIAP1
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=10003
+	Name=IPProto_generated_10003
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=1
+	CustomSelectionPolicy=1
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=2
+	Name=spud-rawipMappedFromIAP2
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=10004
+	Name=IPProto_generated_10004
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=2
+	CustomSelectionPolicy=2
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=3
+	Name=rawipMappedFromIAP3
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=10005
+	Name=IPProto_generated_10005
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=3
+	CustomSelectionPolicy=3
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=4
+	Name=spud-rawipMappedFromIAP4
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=10006
+	Name=IPProto_generated_10006
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=4
+	CustomSelectionPolicy=4
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=5
+	Name=rawipMappedFromIAP5
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Id=10007
+	Name=IPProto_generated_10007
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=5
+	CustomSelectionPolicy=5
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Id=6
+	Name=spud-rawipMappedFromIAP6
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Id=10008
+	Name=IPProto_generated_10008
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=6
+	CustomSelectionPolicy=6
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Id=7
+	Name=spud-rawipMappedFromIAP7
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 14
+	Id=10009
+	Name=IPProto_generated_10009
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=7
+	CustomSelectionPolicy=7
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 15
+	Id=8
+	Name=spud-rawipMappedFromIAP8
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 16
+	Id=10010
+	Name=IPProto_generated_10010
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=8
+	CustomSelectionPolicy=8
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 17
+	Id=9
+	Name=spud-rawipMappedFromIAP9
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 18
+	Id=10011
+	Name=IPProto_generated_10011
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=9
+	CustomSelectionPolicy=9
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 19
+	Id=10
+	Name=spud-rawipMappedFromIAP10
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 20
+	Id=10012
+	Name=IPProto_generated_10012
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=10
+	CustomSelectionPolicy=10
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 252
+	Id=10002
+	Name=SIPDefault
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.536887799
+	MCpr=MCprTable.11
+	Cpr=CprTable.5
+	SCpr=SCprTable.8
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=10000
+	Name=NetworkDefault
+	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.20000
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## GlobalSettings
+## 
+[GlobalSettings]
+ADD_TEMPLATE
+	DefaultTier=1
+	FIELD_COUNT=1
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	ConnectionAttempts=2
+	RedialAttempts=3
+	SmsReceiveMode=2
+	GPRSAttachMode=1
+	AcceptIncomingGprs=1
+	GPRSClassCBearer=GSM
+	ModemForDataAndFax=2
+	ModemForPhoneServicesAndSMS=2
+	LocationForDataAndFax=2
+	LocationForPhoneServicesAndSMS=2
+	DefaultNetwork=1
+	BearerAvailabilityCheckTSY=mm
+	FIELD_COUNT=13
+END_ADD
+
+
+############################################################
+## IAP
+## 
+[IAP]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Loopback_GRPS_1
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Loopback_GRPS_2
+	IAPServiceType=OutgoingGPRS
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Loopback_GRPS_3
+	IAPServiceType=OutgoingGPRS
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Loopback_GRPS_4
+	IAPServiceType=OutgoingGPRS
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=4
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=Loopback_GRPS_5
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=Loopback_GRPS_6
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=1
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Loopback_GRPS_7
+	IAPServiceType=OutgoingGPRS
+	IAPService=6
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=Loopback_GRPS_8
+	IAPServiceType=OutgoingGPRS
+	IAPService=7
+	IAPBearerType=ModemBearer
+	IAPBearer=8
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=Loopback_GRPS_9
+	IAPServiceType=OutgoingGPRS
+	IAPService=8
+	IAPBearerType=ModemBearer
+	IAPBearer=9
+	IAPNetwork=6
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=IAP_GRPS_BAD_QOS
+	IAPServiceType=OutgoingGPRS
+	IAPService=9
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## ConnectionPreferences
+## 
+[ConnectionPreferences]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	Ranking=1
+	Direction=OUTGOING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=2
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## UmtsR99QoSAndOn
+## 
+[UmtsR99QoSAndOn]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=PRIMARY1
+	ReqTrafficClass=1
+	MinTrafficClass=1
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=1
+	MinDeliverErroneousSDU=1
+	ReqMaxSDUSize=0
+	MinAcceptableMaxSDUSize=0
+	ReqMaxUplinkRate=0
+	ReqMinUplinkRate=0
+	ReqMaxDownlinkRate=0
+	ReqMinDownlinkRate=0
+	ReqBER=1
+	MaxBER=1
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=0
+	MaxTransferDelay=0
+	ReqGuaranteedUplinkRate=0
+	MinGuaranteedUplinkRat=0
+	ReqGuaranteedDownlinkRate=0
+	MinGuaranteedDownlinkRate=0
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=SECONDARY1
+	ReqTrafficClass=4
+	MinTrafficClass=4
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=8
+	MinDeliverErroneousSDU=8
+	ReqMaxSDUSize=768
+	MinAcceptableMaxSDUSize=512
+	ReqMaxUplinkRate=1024
+	ReqMinUplinkRate=1024
+	ReqMaxDownlinkRate=1024
+	ReqMinDownlinkRate=1024
+	ReqBER=0
+	MaxBER=0
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=250
+	MaxTransferDelay=250
+	ReqGuaranteedUplinkRate=1024
+	MinGuaranteedUplinkRat=1024
+	ReqGuaranteedDownlinkRate=1024
+	MinGuaranteedDownlinkRate=1024
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=PRIMARY2
+	ReqTrafficClass=1
+	MinTrafficClass=1
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=1
+	MinDeliverErroneousSDU=1
+	ReqMaxSDUSize=0
+	MinAcceptableMaxSDUSize=0
+	ReqMaxUplinkRate=0
+	ReqMinUplinkRate=0
+	ReqMaxDownlinkRate=0
+	ReqMinDownlinkRate=0
+	ReqBER=1
+	MaxBER=1
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=0
+	MaxTransferDelay=0
+	ReqGuaranteedUplinkRate=0
+	MinGuaranteedUplinkRat=0
+	ReqGuaranteedDownlinkRate=0
+	MinGuaranteedDownlinkRate=0
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=SECONDARY2
+	ReqTrafficClass=4
+	MinTrafficClass=4
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=8
+	MinDeliverErroneousSDU=8
+	ReqMaxSDUSize=768
+	MinAcceptableMaxSDUSize=512
+	ReqMaxUplinkRate=1024
+	ReqMinUplinkRate=1024
+	ReqMaxDownlinkRate=1024
+	ReqMinDownlinkRate=1024
+	ReqBER=0
+	MaxBER=0
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=250
+	MaxTransferDelay=250
+	ReqGuaranteedUplinkRate=1024
+	MinGuaranteedUplinkRat=1024
+	ReqGuaranteedDownlinkRate=1024
+	MinGuaranteedDownlinkRate=1024
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=BAD_QOS
+	MinTrafficClass=1
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=1
+	MinDeliverErroneousSDU=1
+	ReqMaxSDUSize=0
+	MinAcceptableMaxSDUSize=0
+	ReqMaxUplinkRate=0
+	ReqMinUplinkRate=0
+	ReqMaxDownlinkRate=0
+	ReqMinDownlinkRate=0
+	ReqBER=1
+	MaxBER=1
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=0
+	MaxTransferDelay=0
+	ReqGuaranteedUplinkRate=0
+	MinGuaranteedUplinkRat=0
+	ReqGuaranteedDownlinkRate=0
+	MinGuaranteedDownlinkRate=0
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=27
+END_ADD
+
+
+############################################################
+## PolicySelectorTable
+## 
+[PolicySelectorTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	PolicyId=1
+	SrcAddress=0.0.0.0
+	SrcMask=255.255.255.255
+	DstAddress=192.168.1.1
+	DstMask=255.255.255.255
+	SrcPort=0
+	DstPort=3461
+	SrcPortMax=1031
+	DstPortMax=3461
+	ProtocolId=17
+	IAPid=2
+	Priority=1
+	FIELD_COUNT=13
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	PolicyId=2
+	SrcPort=0
+	SrcPortMax=0
+	ProtocolId=1
+	IAPid=2
+	Priority=1
+	FIELD_COUNT=7
+END_ADD
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/data/dummy_static_with_mbufgobbler.cfg	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,1659 @@
+############################################################
+## AUTO-GENERATED CONFIGURATION FILE
+## CommsDat Database Dump Utility
+## 1.1
+############################################################
+
+############################################################
+## Network
+## 
+[Network]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Intranet
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Intranet2
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Intranet3
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Intranet4
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=Intranet5
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=Intranet6
+	FIELD_COUNT=1
+END_ADD
+
+
+############################################################
+## ModemBearer
+## 
+[ModemBearer]
+ADD_TEMPLATE
+	Name=Default Loopback Modem
+	TSYName=SIM
+	CSYName=PKTLOOPBACK
+	LastSocketActivityTimeout=180
+	LastSessionClosedTimeout=4
+	LastSocketClosedTimeout=6
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageValidityPeriod=0
+	MessageDeliveryReport=FALSE
+	CommRole=0
+	BCAStack=C32Bca
+	Agent=NULLAGT
+	FIELD_COUNT=65
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Loopback_RawIP_1
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::504
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Loopback_SPUD_2
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Loopback_RawIP_3
+	IfName=RAWIP
+	PortName=PKTLOOPBACK::502
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Loopback_SPUD_4
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=WinTunnel_SPUD_5
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=Loopback_SPUD_5
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Loopback_SPUD_6
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=Loopback_SPUD_7
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=Loopback_SPUD_8
+	IfName=SPUD
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## Location
+## 
+[Location]
+ADD_TEMPLATE
+	Name=Default Location
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=8
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Office
+	IntlPrefixCode=00
+	AreaCode=171
+	DialOutCode=9,
+	Mobile=FALSE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Mobile
+	FIELD_COUNT=1
+END_ADD
+
+
+############################################################
+## OutgoingGPRS
+## 
+[OutgoingGPRS]
+ADD_TEMPLATE
+	Name=Default Outgoing GPRS
+	APN=Test
+	PDPType=IPV4
+	ReqPrecedence=2
+	ReqDelay=4
+	ReqReliability=3
+	ReqPeakThroughput=3
+	ReqMeanThroughput=31
+	MinPrecedence=2
+	MinDelay=4
+	MinReliability=3
+	MinPeakThroughput=3
+	MinMeanThroughput=31
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=0.0.0.1
+	IpAddrFromServer=FALSE
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=194.72.6.51
+	IpNameServer2=194.72.6.51
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=30
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=RawIP_Bounce_1
+	IpAddr=192.168.1.1
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=SPUD_Echo_2
+	IfParams=lowernif=RAWIP
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.2
+	IpDNSAddrFromServer=TRUE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=RawIP_Bounce_3
+	IpAddr=192.168.2.3
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=SPUD_Echo_4
+	IfParams=lowernif=RAWIP
+	IpAddr=192.168.2.4
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=SPUD_Multi_1
+	IfParams=lowernif=RAWIP
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.10
+	IpDNSAddrFromServer=TRUE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=SPUD_Multi_2
+	IfParams=lowernif=RAWIP
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.11
+	IpDNSAddrFromServer=TRUE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=SPUD_Multi_3
+	IfParams=lowernif=RAWIP
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.12
+	IpDNSAddrFromServer=TRUE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=SPUD_Multi_4
+	IfParams=lowernif=RAWIP
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.13
+	IpDNSAddrFromServer=TRUE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=GPRS_BAD_QOS
+	IfParams=lowernif=RAWIP
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.1.2
+	IpDNSAddrFromServer=TRUE
+	UmtsR99QoSAndOn=5
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## DefaultGPRS
+## 
+[DefaultGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Dummy Default GPRS Settings
+	Usage=1
+	APN=Access point name
+	PDPType=IPV6
+	PDPAddress=www.wid.com
+	Precedence=1
+	Delay=1
+	Reliability=1
+	PeakThroughput=1
+	MeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=TRUE
+	HeaderCompression=TRUE
+	GprsUseEdge=FALSE
+	AnonymousAccess=TRUE
+	FIELD_COUNT=19
+END_ADD
+
+
+############################################################
+## APPrioritySelectionPolicyTable
+## 
+[APPrioritySelectionPolicyTable]
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=20000
+	Name=APSelPolNetworkDefault
+	AP1=Link.AccessPointTable.10003
+	APCOUNT=1
+	FIELD_COUNT=4
+END_ADD
+
+
+############################################################
+## TierTable
+## 
+[TierTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=2048
+	Name=Tier1
+	TierImplUid=271064536
+	TierThreadName=ESock_IP
+	TierManagerName=NetworkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=271064560
+	Name=Tier2
+	TierImplUid=271064560
+	TierThreadName=ESock_IP
+	TierManagerName=ProtoTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10004
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=271064565
+	Name=Tier3
+	TierImplUid=271064565
+	TierThreadName=ESock_IP
+	TierManagerName=LinkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=536887799
+	Name=Tier4
+	TierImplUid=536887799
+	TierThreadName=ESock_SIP
+	TierManagerName=SIPTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10002
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+## mbufgobbler layer: this is where we refer to our
+##  new Tier by its factory implementation UId
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=0x10272F98 
+	Name=mbufgobblertm
+	TierImplUid=0x10272F98
+	TierThreadName=ESock_IP
+	TierManagerName=MbufGobblerTierManager
+###### Set the default access point to F0 = 240 = MbufGobbler layer AP
+	DefaultAccessPoint=0x0E00F000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## MCprTable
+## 
+[MCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=netmcpr
+	MCprUid=271009095
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotomcpr
+	MCprUid=271064558
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=pppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=ethmcpr
+	MCprUid=271064572
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=rawipmcpr
+	MCprUid=271064576
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=tunnelmcpr
+	MCprUid=271064578
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qospppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=dummynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=hungrynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=pdpmcpr
+	MCprUid=271065840
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=sipmcpr
+	MCprUid=536887801
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=panethermcpr
+	MCprUid=271070626
+	FIELD_COUNT=2
+END_ADD
+
+## mbufgobbler layer: this is where we refer to our
+##  new MCPr by its factory implementation UId
+ADD_SECTION
+# COMMDB_ID = 14
+	Name=mbufgobblermcpr
+	MCprUid=0x10272F99 
+	FIELD_COUNT=2
+END_ADD
+
+############################################################
+## CprTable
+## 
+[CprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=ipcpr
+	CprUid=270561519
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotocpr
+	CprUid=271064531
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=agentcpr
+	CprUid=271064552
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=vanillacpr
+	CprUid=271065843
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=sipcpr
+	CprUid=271010872
+	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=271065826
+	FIELD_COUNT=2
+END_ADD
+
+## mbufgobbler layer: this is where we refer to our
+##  new CPr by its factory implementation UId
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=mbufgobblercpr
+	CprUid=0x10272F9A 
+	FIELD_COUNT=2
+END_ADD
+
+############################################################
+## SCprTable
+## 
+[SCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=qosipscpr
+	SCprUid=270549768
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotoscpr
+	SCprUid=271064529
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=agentscpr
+	SCprUid=271064554
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=pdpscpr
+	SCprUid=271065824
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=pppscpr
+	SCprUid=271065852
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=vanillascpr
+	SCprUid=271065844
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qosscpr
+	SCprUid=271065811
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=sipscpr
+	SCprUid=271010839
+	FIELD_COUNT=2
+END_ADD
+
+## mbufgobbler layer: this is where we refer to our
+##  new SCPr by its factory implementation UId
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=mbufgobblerscpr
+	SCprUid=0x10272F9B 
+	FIELD_COUNT=2
+END_ADD
+
+############################################################
+## ProtocolTable
+## 
+[ProtocolTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=sapshim
+	ProtocolUid=270496898
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipshim4
+	ProtocolUid=271064118
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=ppp
+	ProtocolUid=271064143
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=ethernet
+	ProtocolUid=271064539
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=rawip
+	ProtocolUid=271064562
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=tunnel
+	ProtocolUid=271064567
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qosppp
+	ProtocolUid=271064148
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=dummynif
+	ProtocolUid=271064123
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=hungrynif
+	ProtocolUid=271064125
+	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=271084280
+	FIELD_COUNT=2
+END_ADD
+
+## mbufgobbler layer: this is where we refer to our
+##  new Protocol by its factory implementation UId
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=mbufgobbler
+	ProtocolUid=0x10272F9C 
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## BearerTypeTable
+## 
+[BearerTypeTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	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
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=IPProtoDefaultTemplate
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	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
+
+
+############################################################
+## AccessPointTable
+## 
+[AccessPointTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=rawipMappedFromIAP1
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+## mbufgobbler layer: The access point record for the new layer.
+##  Uses mbufgobbler tier, MCPr, CPr, SCPr and protocol
+ADD_SECTION
+# COMMDB_ID = 240
+	Id=20
+	Name=MbufGobblerLayer
+### Use record 7 in Tier table (MbufGobblerTierMgr, as defined by the second byte 07)
+	Tier=0x11800700
+	MCpr=MCprTable.14
+	Cpr=CprTable.11
+	SCpr=SCprTable.11
+	Protocol=ProtocolTable.12
+	CprConfig=1
+	AppSID=0
+	CustomSelectionPolicy=1
+	FIELD_COUNT=10
+END_ADD
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=10003
+	Name=IPProto_generated_10003
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=1
+	CustomSelectionPolicy=20
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=2
+	Name=spud-rawipMappedFromIAP2
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=10004
+	Name=IPProto_generated_10004
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=2
+	CustomSelectionPolicy=2
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=3
+	Name=rawipMappedFromIAP3
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=10005
+	Name=IPProto_generated_10005
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=3
+	CustomSelectionPolicy=3
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=4
+	Name=spud-rawipMappedFromIAP4
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=10006
+	Name=IPProto_generated_10006
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=4
+	CustomSelectionPolicy=4
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=5
+	Name=rawipMappedFromIAP5
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Id=10007
+	Name=IPProto_generated_10007
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=5
+	CustomSelectionPolicy=5
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Id=6
+	Name=spud-rawipMappedFromIAP6
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Id=10008
+	Name=IPProto_generated_10008
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=6
+	CustomSelectionPolicy=6
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Id=7
+	Name=spud-rawipMappedFromIAP7
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 14
+	Id=10009
+	Name=IPProto_generated_10009
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=7
+	CustomSelectionPolicy=7
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 15
+	Id=8
+	Name=spud-rawipMappedFromIAP8
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 16
+	Id=10010
+	Name=IPProto_generated_10010
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=8
+	CustomSelectionPolicy=8
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 17
+	Id=9
+	Name=spud-rawipMappedFromIAP9
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 18
+	Id=10011
+	Name=IPProto_generated_10011
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=9
+	CustomSelectionPolicy=9
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 19
+	Id=10
+	Name=spud-rawipMappedFromIAP10
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 20
+	Id=10012
+	Name=IPProto_generated_10012
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=10
+	CustomSelectionPolicy=10
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 252
+	Id=10002
+	Name=SIPDefault
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.536887799
+	MCpr=MCprTable.11
+	Cpr=CprTable.5
+	SCpr=SCprTable.8
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=10000
+	Name=NetworkDefault
+	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.20000
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## GlobalSettings
+## 
+[GlobalSettings]
+ADD_TEMPLATE
+	DefaultTier=1
+	FIELD_COUNT=1
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	ConnectionAttempts=2
+	RedialAttempts=3
+	SmsReceiveMode=2
+	GPRSAttachMode=1
+	AcceptIncomingGprs=1
+	GPRSClassCBearer=GSM
+	ModemForDataAndFax=2
+	ModemForPhoneServicesAndSMS=2
+	LocationForDataAndFax=2
+	LocationForPhoneServicesAndSMS=2
+	DefaultNetwork=1
+	BearerAvailabilityCheckTSY=mm
+	FIELD_COUNT=13
+END_ADD
+
+
+############################################################
+## IAP
+## 
+[IAP]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Loopback_GRPS_1
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Loopback_GRPS_2
+	IAPServiceType=OutgoingGPRS
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Loopback_GRPS_3
+	IAPServiceType=OutgoingGPRS
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Loopback_GRPS_4
+	IAPServiceType=OutgoingGPRS
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=4
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=Loopback_GRPS_5
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=Loopback_GRPS_6
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=1
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Loopback_GRPS_7
+	IAPServiceType=OutgoingGPRS
+	IAPService=6
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=Loopback_GRPS_8
+	IAPServiceType=OutgoingGPRS
+	IAPService=7
+	IAPBearerType=ModemBearer
+	IAPBearer=8
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=Loopback_GRPS_9
+	IAPServiceType=OutgoingGPRS
+	IAPService=8
+	IAPBearerType=ModemBearer
+	IAPBearer=9
+	IAPNetwork=6
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=IAP_GRPS_BAD_QOS
+	IAPServiceType=OutgoingGPRS
+	IAPService=9
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## ConnectionPreferences
+## 
+[ConnectionPreferences]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	Ranking=1
+	Direction=OUTGOING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=2
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## UmtsR99QoSAndOn
+## 
+[UmtsR99QoSAndOn]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=PRIMARY1
+	ReqTrafficClass=1
+	MinTrafficClass=1
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=1
+	MinDeliverErroneousSDU=1
+	ReqMaxSDUSize=0
+	MinAcceptableMaxSDUSize=0
+	ReqMaxUplinkRate=0
+	ReqMinUplinkRate=0
+	ReqMaxDownlinkRate=0
+	ReqMinDownlinkRate=0
+	ReqBER=1
+	MaxBER=1
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=0
+	MaxTransferDelay=0
+	ReqGuaranteedUplinkRate=0
+	MinGuaranteedUplinkRat=0
+	ReqGuaranteedDownlinkRate=0
+	MinGuaranteedDownlinkRate=0
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=SECONDARY1
+	ReqTrafficClass=4
+	MinTrafficClass=4
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=8
+	MinDeliverErroneousSDU=8
+	ReqMaxSDUSize=768
+	MinAcceptableMaxSDUSize=512
+	ReqMaxUplinkRate=1024
+	ReqMinUplinkRate=1024
+	ReqMaxDownlinkRate=1024
+	ReqMinDownlinkRate=1024
+	ReqBER=0
+	MaxBER=0
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=250
+	MaxTransferDelay=250
+	ReqGuaranteedUplinkRate=1024
+	MinGuaranteedUplinkRat=1024
+	ReqGuaranteedDownlinkRate=1024
+	MinGuaranteedDownlinkRate=1024
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=PRIMARY2
+	ReqTrafficClass=1
+	MinTrafficClass=1
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=1
+	MinDeliverErroneousSDU=1
+	ReqMaxSDUSize=0
+	MinAcceptableMaxSDUSize=0
+	ReqMaxUplinkRate=0
+	ReqMinUplinkRate=0
+	ReqMaxDownlinkRate=0
+	ReqMinDownlinkRate=0
+	ReqBER=1
+	MaxBER=1
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=0
+	MaxTransferDelay=0
+	ReqGuaranteedUplinkRate=0
+	MinGuaranteedUplinkRat=0
+	ReqGuaranteedDownlinkRate=0
+	MinGuaranteedDownlinkRate=0
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=SECONDARY2
+	ReqTrafficClass=4
+	MinTrafficClass=4
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=8
+	MinDeliverErroneousSDU=8
+	ReqMaxSDUSize=768
+	MinAcceptableMaxSDUSize=512
+	ReqMaxUplinkRate=1024
+	ReqMinUplinkRate=1024
+	ReqMaxDownlinkRate=1024
+	ReqMinDownlinkRate=1024
+	ReqBER=0
+	MaxBER=0
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=250
+	MaxTransferDelay=250
+	ReqGuaranteedUplinkRate=1024
+	MinGuaranteedUplinkRat=1024
+	ReqGuaranteedDownlinkRate=1024
+	MinGuaranteedDownlinkRate=1024
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=BAD_QOS
+	MinTrafficClass=1
+	ReqDeliveryOrder=1
+	MinDeliveryOrder=1
+	ReqDeliverErroneousSDU=1
+	MinDeliverErroneousSDU=1
+	ReqMaxSDUSize=0
+	MinAcceptableMaxSDUSize=0
+	ReqMaxUplinkRate=0
+	ReqMinUplinkRate=0
+	ReqMaxDownlinkRate=0
+	ReqMinDownlinkRate=0
+	ReqBER=1
+	MaxBER=1
+	ReqSDUErrorRatio=1
+	MaxSDUErrorRatio=1
+	ReqTrafficHandlingPriority=1
+	MinTrafficHandlingPriority=1
+	ReqTransferDelay=0
+	MaxTransferDelay=0
+	ReqGuaranteedUplinkRate=0
+	MinGuaranteedUplinkRat=0
+	ReqGuaranteedDownlinkRate=0
+	MinGuaranteedDownlinkRate=0
+	SignallingIndication=FALSE
+	ImCnSignallingIndication=FALSE
+	SourceStatisticsDescriptor=0
+	FIELD_COUNT=27
+END_ADD
+
+
+############################################################
+## PolicySelectorTable
+## 
+[PolicySelectorTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	PolicyId=1
+	SrcAddress=0.0.0.0
+	SrcMask=255.255.255.255
+	DstAddress=192.168.1.1
+	DstMask=255.255.255.255
+	SrcPort=0
+	DstPort=3461
+	SrcPortMax=1031
+	DstPortMax=3461
+	ProtocolId=17
+	IAPid=2
+	Priority=1
+	FIELD_COUNT=13
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	PolicyId=2
+	SrcPort=0
+	SrcPortMax=0
+	ProtocolId=1
+	IAPid=2
+	Priority=1
+	FIELD_COUNT=7
+END_ADD
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/group/bld.inf	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,36 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+
+PRJ_PLATFORMS
+
+DEFAULT
+
+prj_testmmpfiles
+mbufgobblerproviders.mmp
+
+prj_testexports
+../inc/mbufgobbleruids.h				/epoc32/include/comms-infras/mbufgobbleruids.h
+../inc/mbufgobblerpubsub.h				/epoc32/include/comms-infras/mbufgobblerpubsub.h
+
+../group/mbufgobblerproviders.iby			/epoc32/rom/include/mbufgobblerproviders.iby
+
+#include "../te_mbufgobbler/group/bld.inf"
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/group/mbufgobblerproviders.iby	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,26 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __MBUFGOBBLERPROVIDERS_IBY__
+#define __MBUFGOBBLERPROVIDERS_IBY__
+
+#ifdef _DEBUG
+ECOM_PLUGIN_UDEB(mbufgobblerproviders.dll,mbufgobblerproviders.rsc)
+#else
+ECOM_PLUGIN(mbufgobblerproviders.dll,mbufgobblerproviders.rsc)
+#endif
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/group/mbufgobblerproviders.mmp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,100 @@
+// 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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+TARGET      mbufgobblerproviders.dll
+TARGETTYPE  PLUGIN
+UID         0x10009D8D 	0x10272F97
+						
+MACRO SYMBIAN_COMMSFW_MBUF_GOBBLER
+
+
+#include   <cflog.mmh> //for some reason another log mmh has been defined. 
+					   //This must be included to use the __CFLOG_* (e.g. __CFLOG_VAR) macros.
+#include	"comms-infras/commsdebugutility.mmh"
+
+SOURCEPATH  ../src
+
+
+SOURCE  ecom_impl.cpp 
+
+// Tier Manager source
+SOURCE  mbufgobblertiermanager.cpp 
+SOURCE  mbufgobblertiermanagerfactory.cpp 
+SOURCE  mbufgobblertiermanageractivities.cpp 
+SOURCE  mbufgobblertiermanagerstates.cpp 
+SOURCE  mbufgobblerproviderselector.cpp
+
+// Meta Connection Provider source
+SOURCE  mbufgobblermetaconnproviderfactory.cpp 
+SOURCE  mbufgobblermetaconnprovider.cpp 
+SOURCE  mbufgobblermetaconnprovideractivities.cpp 
+SOURCE  mbufgobblermetaconnproviderstates.cpp 
+
+// Connection Provider source
+SOURCE	mbufgobblerconnproviderfactory.cpp 
+SOURCE  mbufgobblerconnprovidermessages.cpp
+SOURCE  mbufgobblerconnprovider.cpp 
+SOURCE  mbufgobblerconnprovideractivities.cpp
+SOURCE  mbufgobblerconnproviderstates.cpp 
+
+// Sub Connection Provider source
+SOURCE  mbufgobblersubconnproviderfactory.cpp 
+SOURCE  mbufgobblersubconnprovider.cpp 
+SOURCE  mbufgobblersubconnprovideractivities.cpp 
+SOURCE  mbufgobblersubconnproviderstates.cpp 
+
+// Flow source
+SOURCE  mbufgobblerflowfactory.cpp 
+SOURCE	mbufgobblerflow.cpp
+
+// Other source
+SOURCE mbufgobblerhelper.cpp 
+
+
+USERINCLUDE		../inc
+
+
+SYSTEMINCLUDE  /epoc32/include
+SYSTEMINCLUDE  /epoc32/include/comms-infras
+SYSTEMINCLUDE  /epoc32/include/networking
+SYSTEMINCLUDE  /epoc32/include/platform
+SYSTEMINCLUDE  /epoc32/include/platform/comms-infras
+
+START RESOURCE 10272f97.rss
+	TARGET mbufgobblerproviders.rsc
+END
+
+LIBRARY	euser.lib 
+LIBRARY	esock.lib
+LIBRARY	netmeta.lib 
+LIBRARY netinterfaces.lib
+LIBRARY	esocksvr.lib
+LIBRARY nodemessages.lib
+LIBRARY coreproviders.lib
+LIBRARY meshmachine.lib
+LIBRARY commsdat.lib
+LIBRARY simpleselectorbase.lib
+
+LIBRARY insock.lib
+LIBRARY mbufmgr.lib
+
+
+CAPABILITY CommDD PowerMgmt ReadDeviceData WriteDeviceData TrustedUI ProtServ NetworkControl NetworkServices LocalServices ReadUserData WriteUserData
+VENDORID 0x70000001
+
+UNPAGED
+
+SMPSAFE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/how to clone this component.txt	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,112 @@
+
+#####################################
+#                                   #
+# Update Content And Filenames tool #
+#                                   #
+#####################################
+
+The Update Content And Filenames tool allows you to clone this component to a new implementation.
+It does the boring housekeeping to rename the source, change target DLL name,
+update the UIDs etc. etc.
+It does this by performing recursive search and replace on file names and content.
+
+
+How to clone this component to a new implementation:
+
+-	Ensure this component builds as is:
+        cd group
+        sbs -c winscw_udeb
+        sbs -c winscw_udeb.test
+	If you're feeling conscientious you could test it too :-)
+
+-	Nominate an appropriate name for the new component.
+		e.g. Test123
+	If there's any chance the new component will end up
+	in a deliverable, please choose the name more carefully
+	than I just did
+
+-	Copy this folder (the one containing this README file),
+	naming the new folder as something appropriate,
+	relating to the component name you have chosen
+	(and keep it lower case to keep linux builds happy)
+		e.g. "Copy Of mbufgobblerlayer" => "test123layer"
+
+-	Ensure the new folder and all its contents are writable.
+	(if you got mbufgobblerlayer from a version control system it might be read-only)
+	
+Then, in the *new* folder:
+
+-	Modify the file UpdateContentsAndFilenames.ini accordingly,
+	to reflect the values required by your new component.
+	Obviously you'll need to obtain new UIds rather than just making them up :-)
+	 (Ask your architect where new UIds should come from these days)
+	The "Search" fields specify the current values which will be replaced.
+	The "Replace" fields must be changed from CHANGEME to the desired values.
+		e.g. [Name].Replace=CHANGEME => [Name].Replace=Test123
+		e.g. [DllUid].Replace=CHANGEME => [DllUid].Replace=01234567
+		etc..
+
+-	Ensure Python 2.6.2 or greater is installed. This should come down automatically
+  with SymSEE or whatever you used to put together your development environment.
+	
+-	Open a command window in the *new* folder, and run:
+		updatecontentandfilenames.py
+
+-	Before you make further modifications, ensure the script updated
+	everything correctly:
+        cd group
+        sbs -c winscw_udeb
+        sbs -c winscw_udeb.test
+	(and run any regression tests over the new copy of the component)
+
+
+
+Notes and caveats:
+
+1.
+Remember you're taking a copy, so if you're cloning something feature-rich,
+please think carefully about whether either..
+	- you really do want 2 copies of the same feature code knocking about, which is
+	  totally ok if you're just trying something out and/or you want to isolate the new
+	  component from changes in the cloned component
+.. or ..
+	- you should be considering cloning a more basic implementation,
+	  then applying techniques such as inheritance to reuse the existing features
+
+
+So it's more suited for cloning basic ("feature-impoverished?") implementations as a
+starting point for developing more functional implementations.
+
+e.g. mbufgobbler Layer	-> some new layer
+
+
+2.
+Correct functioning of the script of course assumes some reasonably pragmatic
+correlation between class names, folder names, dll names etc.
+
+It's easy for you to add extra search and replace pairs as needed to address
+more complicated renaming tasks. Just add more sections to the
+UpdateContentsAndFilenames.ini file. The [Header Names] are not used for anything, they're
+just for your reference and should probably be unique across the file.
+The really important bit is the Search/Replace pairs.
+
+
+3.
+Each search/replace pair is applied in turn. So don't expect to be able to do anything
+sneaky like swapping strings in a single run.
+
+
+4.
+Reusing this script elsewhere should be easy,
+because there is no special significance to the .ini file section names-
+they are just there to assist the user in populating the fields.
+i.e. .ini file sections purely exist to group together each Search/Replace pair.
+
+Just copy the updatecontentandfilenames.* files into the root folder of a new
+copy of the component that you want to clone, edit the ini file, and run the python script.
+
+
+5.
+Have fun..
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobbler_panic.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,40 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Panic codes for mbufgobbler layer
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include <e32std.h>
+
+#define ASSERT_DEBUG(exp, pcode) __ASSERT_DEBUG(exp, User::Panic(KMbufGobblerLayerPanic, pcode))
+
+_LIT(KMbufGobblerLayerPanic, "MbufGobblerLayer");
+
+enum TMbufGobblerLayerPanic
+	{
+	EExpectedAccessPointAwareSystem = 1, //copied from CMbufGobblerProviderSelector not sure what this means yet.
+	EUnexpectedTSelectionPrefsType,
+	EInvalidNullPtr
+	};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerconnprovider.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,84 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Connection Provider
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef CMBUFGOBBLERCONNPROVIDER_H
+#define CMBUFGOBBLERCONNPROVIDER_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <comms-infras/corecpr.h>
+#include "mbufgobblertestflags.h"
+
+
+
+
+// CLASS DECLARATION
+
+/**
+ *  CMbufGobblerConnProvider
+ * 
+ */
+
+//comment on diffeent super class options e.g. CMobilityConnectionProvider
+class ESock::CConnectionProviderFactoryBase;
+class CMbufGobblerConnProvider : public CCoreConnectionProvider
+	{
+public:
+	// Constructors and destructor
+	static CMbufGobblerConnProvider* NewL(ESock::CConnectionProviderFactoryBase& aFactory);
+
+	/**
+	 * Destructor.
+	 */
+	~CMbufGobblerConnProvider();
+
+	
+protected: //from CCoreConnectionProvider
+	void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage);
+
+private:
+
+	/**
+	 * Constructor for performing 1st stage construction
+	 */
+	CMbufGobblerConnProvider(ESock::CConnectionProviderFactoryBase& aFactory);
+
+	/**
+	 * EPOC default constructor for performing 2nd stage construction
+	 */
+	void ConstructL();
+	
+private:
+	TInt iClientCount; //holds count of clients that node is joined with
+
+	MBUFGOBBLER_TEST_DATA
+	};
+
+#endif // CMBUFGOBBLERCONNPROVIDER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerconnprovideractivities.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,61 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Connection Provider Mesh Activities
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef CMBUFGOBBLERCONNPROVIDERACTIVITIES_H
+#define CMBUFGOBBLERCONNPROVIDERACTIVITIES_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <comms-infras/ss_activities.h>
+#include <elements/mm_activities.h>
+
+// CLASS DECLARATION
+namespace MbufGobblerCprActivities
+{
+
+
+enum 
+	{
+	/*
+	 * Add new actviity id's here. I think they must be offset from ECFActivityCustom.
+	 */
+	
+	/*
+	 * This is just an example activity
+	 */
+	EMbufGobblerCprSomeActivity = ESock::ECFActivityCustom + 1,
+	};
+
+DECLARE_ACTIVITY_MAP(MbufGobblerCprActivitiesMap)
+}
+
+
+#endif // CMBUFGOBBLERCONNPROVIDERACTIVITIES_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerconnproviderfactory.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,79 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Connection Provider Factory
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef CMBUFGOBBLERCONNPROVIDERFACTORY_H
+#define CMBUFGOBBLERCONNPROVIDERFACTORY_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <comms-infras/ss_connprov.h>
+#include <comms-infras/ss_nodemessages_legacy.h>
+#include <comms-infras/ss_legacyinterfaces.h>
+
+#include "mbufgobbleruids.h"
+
+
+
+// CLASS DECLARATION
+
+/**
+ *  CMbufGobblerConnProviderFactory
+ * 
+ */
+class CMbufGobblerConnProviderFactory : public ESock::CConnectionProviderFactoryBase
+	{
+public:
+	// Constructors and destructor
+	enum { iUid = EMbufGobblerCPrUid };
+	static CMbufGobblerConnProviderFactory* NewL(TAny* aParentContainer);
+	/**
+	 * Destructor.
+	 */
+	~CMbufGobblerConnProviderFactory();
+
+protected: //from CConnectionProviderFactoryBase
+	virtual ESock::ACommsFactoryNodeId* DoCreateObjectL(ESock::TFactoryQueryBase& /* aQuery */);
+	virtual void CMbufGobblerConnProviderFactory::EnumerateConnectionsL(RPointerArray<ESock::TSourcedConnectionInfo>& aConnectionInfoPtrArray);
+	
+
+private: //class not intended for derivation 
+	/**
+	 * Constructor for performing 1st stage construction
+	 */
+	CMbufGobblerConnProviderFactory(TUid aFactoryId, ESock::CConnectionFactoryContainer& aParentContainer);
+
+	/**
+	 * EPOC default constructor for performing 2nd stage construction
+	 */
+	void ConstructL();
+
+	};
+
+#endif // CMBUFGOBBLERCONNPROVIDERFACTORY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerconnprovidermessages.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,40 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Connection Provider Messages
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef CMBUFGOBBLERCONNPROVIDERMESSAGES_H
+#define CMBUFGOBBLERCONNPROVIDERMESSAGES_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+// CLASS DECLARATION
+
+
+#endif // CMBUFGOBBLERCONNPROVIDERMESSAGES_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerconnproviderstates.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,39 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Connection Provider Mesh States
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef CMBUFGOBBLERCONNPROVIDERSTATES_H
+#define CMBUFGOBBLERCONNPROVIDERSTATES_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+// CLASS DECLARATION
+
+#endif // CMBUFGOBBLERCONNPROVIDERSTATES_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerflow.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,151 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Flow / Binder
+//  (data plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERFLOW_H
+#define MBUFGOBBLERFLOW_H
+
+#include <elements/nm_signatures.h>
+#include <comms-infras/ss_subconnflow.h>
+#include <comms-infras/ss_flowbinders.h>
+#include <platform/es_mbuf.h>
+#include <comms-infras/mbufchain.h>
+#include "mbufgobblertestflags.h"
+#include <e32property.h>
+
+class CMbufGobblerBinder;
+class CMBufGobbler;
+
+class CMbufGobblerFlow : public ESock::CSubConnectionFlowBase, public ESock::MFlowBinderControl
+	{
+	friend class CMbufGobblerFlowFactory;
+
+protected:
+	CMbufGobblerFlow(ESock::CSubConnectionFlowFactoryBase& aFactory, const Messages::TNodeId& aSubConnId, ESock::CProtocolIntfBase* aProtocolIntf);
+    void ConstructL();
+public:
+	static CMbufGobblerFlow* NewL(ESock::CSubConnectionFlowFactoryBase& aFactory, const Messages::TNodeId& aSubConnId, ESock::CProtocolIntfBase* aProtocolIntf);
+	virtual ~CMbufGobblerFlow();
+	
+	// from CSubConnectionFlowBase:
+	virtual ESock::MFlowBinderControl* DoGetBinderControlL();
+	virtual void ReceivedL(
+		const Messages::TRuntimeCtxId& aSender,
+		const Messages::TNodeId& aRecipient,
+		Messages::TSignatureBase& aMessage
+		);
+
+	// 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();
+
+	// my helper methods:
+	CMbufGobblerBinder* FindOrCreateBinderL(const TDesC8& aProtocol);
+	
+private:
+	RPointerArray<CMbufGobblerBinder> iBinders;
+	
+#ifdef SYMBIAN_COMMSFW_MBUF_GOBBLER	
+    CMBufGobbler* iMBufGobbler;
+#endif    
+	};
+
+class CMbufGobblerBinder :	public CBase,
+			public ESock::MLowerControl, // I receive control requests from above
+			public ESock::MLowerDataSender, // I receive data from above (outgoing)
+			public ESock::MUpperControl, // I receive control signals from below
+			public ESock::MUpperDataReceiver // I receive data from below (incoming)
+	{
+	public:
+	// My constructor
+		static CMbufGobblerBinder* NewL(const TDesC8& aProtocolName);
+		void ConstructL();
+	protected:
+		CMbufGobblerBinder(const TDesC8& aProtocolName);		
+	public:
+		virtual ~CMbufGobblerBinder();
+		
+		// from ESock::MLowerControl:
+		virtual TInt GetName(TDes& aName);
+		virtual TInt BlockFlow(TBlockOption aOption);
+		virtual TInt GetConfig(TBinderConfig& aConfig);
+		virtual TInt Control(TUint aLevel, TUint aName, TDes8& aOption);
+		
+		// from ESock::MLowerDataSender:
+		virtual ESock::MLowerDataSender::TSendResult Send(RMBufChain& aData);
+		
+		// from ESock::MUpperControl:
+		virtual void StartSending();
+		virtual void Error(TInt anError);
+		
+		// from ESock::MUpperDataReceiver:
+		virtual void Process(RMBufChain& aData);
+		
+
+		// my own methods
+		TBool InUse() const {return iLowerControl || iLowerDataSender || iUpperControl || iUpperDataReceiver ; }
+		void BindToUpperL(ESock::MUpperDataReceiver& aUpperDataReceiver, ESock::MUpperControl& aUpperControl);
+		TBool UnbindFromUpper(ESock::MUpperDataReceiver& aUpperDataReceiver, ESock::MUpperControl& aUpperControl);
+		void BindToLowerFlowL(ESock::MFlowBinderControl& aLowerControl);
+		void UnbindFromLowerFlow(); // NEW UNBIND COMMAND
+		const TDesC8& ProtocolName() const;
+		
+	private:
+		ESock::MFlowBinderControl* iBinderControl;
+		ESock::MLowerControl* iLowerControl; 		// .. so I can send controls down
+		ESock::MLowerDataSender* iLowerDataSender;		// .. so I can send data down (outgoing)
+		ESock::MUpperControl* iUpperControl;		// .. so I can send controls up (err/startsending)
+		ESock::MUpperDataReceiver* iUpperDataReceiver;	// .. so I can send data up (incoming)
+		TBuf8<10> iProtocolName; // long enough for an acronym one would hope	
+		MBUFGOBBLER_TEST_DATA	
+	};
+
+#ifdef SYMBIAN_COMMSFW_MBUF_GOBBLER
+
+class CMBufGobbler :   public CActive
+    {
+public:
+    static CMBufGobbler* NewL();
+    void ConstructL();
+protected:
+    CMBufGobbler();
+public:
+    virtual ~CMBufGobbler();
+
+    // from CActive:
+    virtual void DoCancel();
+    virtual void RunL();
+
+    RMBufChain iChain;
+    RProperty iProperty;
+    };
+#endif
+
+#endif // MBUFGOBBLERFLOW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerflowfactory.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,56 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// The factory class which is used to instantiate the MbufGobbler flow.
+//  (data plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERFLOWFACTORY_H__
+#define MBUFGOBBLERFLOWFACTORY_H__
+
+#include <e32base.h>
+#include <e32std.h>
+#include <comms-infras/ss_subconnflow.h>
+#include <comms-infras/ss_protflow.h>
+#include <comms-infras/ss_subconnprov.h>
+#include <elements/nm_signatures.h>
+#include "mbufgobbleruids.h"
+
+class CMbufGobblerFlowFactory : public ESock::CSubConnectionFlowFactoryBase
+/**
+MbufGobbler Flow Factory
+*/
+	{
+public:
+
+	enum { EUid = EMbufGobblerFlowUid };
+	static CMbufGobblerFlowFactory* NewL(TAny* aConstructionParameters);
+
+protected:
+	CMbufGobblerFlowFactory(TUid aFactoryId, ESock::CSubConnectionFlowFactoryContainer& aParentContainer);
+	virtual ESock::CSubConnectionFlowBase* DoCreateFlowL(ESock::CProtocolIntfBase* aProtocol, ESock::TFactoryQueryBase& aQuery);
+	};
+
+#endif // MBUFGOBBLERFLOWFACTORY_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerhelper.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,52 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Helper class supplying useful logging functions to the providers in the layer
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERHELPER_H
+#define MBUFGOBBLERHELPER_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <elements/mm_context.h>
+
+// CLASS DECLARATION
+
+/**
+ *  CMbufGobblerHelper
+ * 
+ */
+class MbufGobblerHelper
+	{
+public:
+	static void LogCreateDestroy(const TDesC8& aSubTag, const TDesC8& aNodeName, TAny* aNodePtr, TBool aIsCreate);
+	static void LogMessage(const TDesC8& aSubTag, const TDesC8& aNodeName, TAny* aNodePtr, const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage);
+	static void PrintClientNodes(const TDesC8& aSubTag, const TDesC8& aNodeName, MeshMachine::AMMNodeBase& aNode, TInt& aClientCount);
+	};
+
+#endif // MBUFGOBBLERHELPER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerlog.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,92 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Helper macros that wrap the ones from ESock.
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERLOG_H_
+#define MBUFGOBBLERLOG_H_
+
+#include <e32def.h>
+#include <comms-infras/ss_logext.h> //defines LOG_NODE_CREATE and LOG_NODE_DESTROY
+
+#include <cflog.h> //defines __CFLOG_* macros
+
+#include "mbufgobblerhelper.h"
+
+/*
+ * The component tag
+ * 
+ * In commsdbg.ini add line LOG MbufGobblerLayer * to enbale these logs 
+ */
+_LIT8(KMbufGobblerComponentTag, "MbufGobblerLayer");
+
+#define KMbufGobblerMcprTag KESockMetaConnectionTag
+_LIT8(KMbufGobblerMcprSubTag, "MbufGobblerMCpr");
+
+#define KMbufGobblerMCprFactoryTag KESockMetaConnectionTag
+_LIT8(KMbufGobblerMCprFactorySubTag, "MbufGobblerMCprFactory");
+
+#define KMbufGobblerCprFactoryTag KESockConnectionTag
+_LIT8(KMbufGobblerCprFactorySubTag, "MbufGobblerCprFactory");
+
+#define KMbufGobblerCprTag KESockConnectionTag
+_LIT8(KMbufGobblerCprSubTag, "MbufGobblerCpr");
+
+#define KMbufGobblerScprFactoryTag KESockSubConnectionTag
+_LIT8(KMbufGobblerScprFactorySubTag, "MbufGobblerSCprFactory");
+
+#define KMbufGobblerScprTag KESockSubConnectionTag
+_LIT8(KMbufGobblerScprSubTag, "MbufGobblerSCpr");
+
+#define KMbufGobblerFlowTag KESockFlowTag
+_LIT8(KMbufGobblerFlowSubTag,"MbufGobblerFlow");
+
+#define KMbufGobblerTierTag KESockTierTag
+_LIT8(KMbufGobblerTierSubTag,"MbufGobblerTierM");
+
+#define KMbufGobblerTierFactoryTag KESockTierTag
+_LIT8(KMbufGobblerTierFactorySubTag,"MbufGobblerTierMFactory");
+
+/*
+ * LOG_NODE_CREATE - this logs out to utrace and is needed for SVG viewer
+ * __CFLOG_VAR - this logs to standard comms dbg utils. Must include cflog.mmh in mmp file
+ */
+
+#define MBUFGOBBLER_LOG_NODE_CREATE(subTag, type, nodename, nodeptr) \
+		LOG_NODE_CREATE(subTag, type);		 \
+		MbufGobblerHelper::LogCreateDestroy(subTag, nodename, nodeptr, 1); 
+	
+#define MBUFGOBBLER_LOG_NODE_DESTROY(subTag, type, nodename, nodeptr) \
+		LOG_NODE_DESTROY(subTag, type);		 \
+		MbufGobblerHelper::LogCreateDestroy(subTag, nodename, nodeptr, 0);  
+			
+#define LOGMESSAGE(subtag, nodeclass, nodeptr, sender, recipient, msg)	MbufGobblerHelper::LogMessage(subtag, nodeclass, nodeptr, sender, recipient, msg)
+	
+#define LOG_NODE_INFO(subtag, nodename, node, clientcount) MbufGobblerHelper::PrintClientNodes(subtag, nodename, node, clientcount);
+
+#define LOG(subTag, ARGS...) __CFLOG_VAR((KMbufGobblerComponentTag, subTag, ##ARGS));
+
+#endif /* MBUFGOBBLERLOG_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblermetaconnprovider.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,67 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Meta Connection Provider
+//  (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERMETACONNPROVIDER_H
+#define MBUFGOBBLERMETACONNPROVIDER_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <comms-infras/coremcpr.h>
+#include "mbufgobblertestflags.h"
+
+// CLASS DECLARATION
+
+/**
+ *  CMbufGobblerMetaConnectionProvider
+ * 
+ */
+	
+class CMbufGobblerMetaConnectionProvider : public CCoreMetaConnectionProvider
+	{
+public:
+	static CMbufGobblerMetaConnectionProvider* NewL(ESock::CMetaConnectionProviderFactoryBase& aFactory,
+											const ESock::TProviderInfo& aProviderInfo);
+	~CMbufGobblerMetaConnectionProvider();
+	 
+protected:
+	CMbufGobblerMetaConnectionProvider(ESock::CMetaConnectionProviderFactoryBase& aFactory,
+	const ESock::TProviderInfo& aProviderInfo, const MeshMachine::TNodeActivityMap& aActivityMap);
+
+	void ConstructL();
+	
+	// From MCFNode Interface 
+	void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aCFMessage);
+private:
+	TInt iClientCount; //holds count of clients that node is joined with
+	MBUFGOBBLER_TEST_DATA	
+	};
+
+
+#endif // MBUFGOBBLERMETACONNPROVIDER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblermetaconnprovideractivities.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,59 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Meta Connection Provider Mesh Activities
+//  (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERMETACONNPROVIDERACTIVITIES_H
+#define MBUFGOBBLERMETACONNPROVIDERACTIVITIES_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <comms-infras/ss_activities.h>
+#include <elements/mm_activities.h>
+
+// CLASS DECLARATION
+
+namespace MbufGobblerMCprActivities
+{
+enum 
+	{
+	/*
+	 * Add new actviity id's here. I think they must be offset from ECFActivityCustom.
+	 */
+	
+	/*
+	 * This is just an example activity
+	 */
+	EMbufGobblerMCprSomeActivity = ESock::ECFActivityCustom + 1,
+	};
+
+DECLARE_ACTIVITY_MAP(MbufGobblerMCprActivitiesMap)
+}
+
+#endif // MBUFGOBBLERMETACONNPROVIDERACTIVITIES_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblermetaconnproviderfactory.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,61 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Factory which creates the Meta Connection Provider
+//  (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERMETACONNPROVIDERFACTORY_H
+#define MBUFGOBBLERMETACONNPROVIDERFACTORY_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <comms-infras/ss_metaconnprov.h>
+#include "mbufgobbleruids.h"
+
+// CLASS DECLARATION
+
+/**
+ *  CMbufGobblerMetaConnectionProviderFactory
+ * 
+ */
+
+
+class CMbufGobblerMetaConnectionProviderFactory : public ESock::CMetaConnectionProviderFactoryBase
+	{
+public:
+    enum { iUid = EMbufGobblerMCPrUid };
+	static CMbufGobblerMetaConnectionProviderFactory* NewL(TAny* aParentContainer);
+	
+protected: //from CMetaConnectionProviderFactoryBase
+	virtual ESock::ACommsFactoryNodeId* DoCreateObjectL(ESock::TFactoryQueryBase& aQuery);
+	virtual void DoEnumerateConnectionsL (RPointerArray<TConnectionInfo>& /*aConnectionInfoPtrArray*/);
+
+private: //not intended for derivation
+	CMbufGobblerMetaConnectionProviderFactory(TUid aFactoryUid, ESock::CMetaConnectionFactoryContainer& aParentContainer);	
+	};
+
+#endif // MBUFGOBBLERMETACONNPROVIDERFACTORY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblermetaconnproviderstates.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,77 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Meta Connection Provider Mesh States
+//  (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERMETACONNPROVIDERMESHSTATES_H
+#define MBUFGOBBLERMETACONNPROVIDERMESHSTATES_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+// CLASS DECLARATION
+
+/**
+ *  CMbufGobblerMetaConnectionProviderStates
+ * 
+ */
+class CMbufGobblerMetaConnectionProviderStates : public CBase
+	{
+public:
+	// Constructors and destructor
+
+	/**
+	 * Destructor.
+	 */
+	~CMbufGobblerMetaConnectionProviderStates();
+
+	/**
+	 * Two-phased constructor.
+	 */
+	static CMbufGobblerMetaConnectionProviderStates* NewL();
+
+	/**
+	 * Two-phased constructor.
+	 */
+	static CMbufGobblerMetaConnectionProviderStates* NewLC();
+
+private:
+
+	/**
+	 * Constructor for performing 1st stage construction
+	 */
+	CMbufGobblerMetaConnectionProviderStates();
+
+	/**
+	 * EPOC default constructor for performing 2nd stage construction
+	 */
+	void ConstructL();
+
+	};
+
+#endif // MBUFGOBBLERMETACONNPROVIDERMESHSTATES_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerproviderselector.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,69 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// MbufGobbler selector. Used by the Tier Manager to select the access point below
+//  (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERPROVIDERSELECTOR_H
+#define MBUFGOBBLERPROVIDERSELECTOR_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <comms-infras/simpleselectorbase.h>
+
+// CLASS DECLARATION
+
+/**
+ *  CMbufGobblerProviderSelector
+ *  
+ *  This is basically copied from other selector examples I culd find. Specifically I have used the
+ *  CBtGenericProviderSelector as a template.
+ * 
+ */
+class CMbufGobblerProviderSelector : public CBase, private ASimpleSelectorBase
+	{
+public:
+	static ESock::MProviderSelector* NewL(const Meta::SMetaData& aSelectionPreferences);
+	
+private:
+	CMbufGobblerProviderSelector(const Meta::SMetaData& aSelectionPreferences);
+	~CMbufGobblerProviderSelector();
+	
+	// From MProviderSelector
+	virtual void SelectL(ESock::ISelectionNotify& aSelectionNotify);
+	virtual void Destroy();
+	
+	ESock::CMetaConnectionProviderBase* FindOrCreateProviderL(TUint aAccessPoint);
+	
+private:
+	ESock::TSelectionPrefs iSelectionPreferences;
+	TUint32 iTier;
+	};
+
+
+#endif // MBUFGOBBLERPROVIDERSELECTOR_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblerpubsub.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,70 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Defines the series of requests which a ESOCK client can send to the MBuf Gobbler using
+// the publish and subscribe attribute EMBufGobbler.
+//
+// A test ESOCK client can deplete all the MBufs from the MBuf pool as follows:
+//
+//    TInt result = RProperty::Set(TUid::Uid(EMBufGobbler ), EAdjustNumberOfMBufsRemainingInPool , EGobbleAllMBufs);
+//
+// Issuing this command should cause a socket read or write request to fail due to MBuf pool exhaustion.
+//
+// Subsequently a test ESOCK client can return all the MBufs it has taken from the pool as follows:
+//
+//   result = RProperty::Set(TUid::Uid(EMBufGobbler), EAdjustNumberOfMBufsRemainingInPool, EReleaseAllMBufs);  
+//
+// After taking all the MBufs from the pool, an ESOCK test client can also return a single MBuf back to the pool as follows:
+//
+//   result = RProperty::Set(TUid::Uid(EMBufGobbler), EAdjustNumberOfMBufsRemainingInPool, EReleaseASingleMBuf);
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERPUBSUB_H
+#define MBUFGOBBLERPUBSUB_H
+
+
+#ifdef SYMBIAN_COMMSFW_MBUF_GOBBLER
+
+enum
+{
+EMBufGobbler = 0x10272F97
+};
+
+enum
+{
+EAdjustNumberOfMBufsRemainingInPool = 1
+};    
+    
+enum
+{
+EGobbleAllMBufs,
+EReleaseAllMBufs,
+EReleaseASingleMBuf
+};
+
+#endif
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblersubconnprovider.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,77 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Sub Connection Provider
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERSUBCONNPROVIDER_H
+#define MBUFGOBBLERSUBCONNPROVIDER_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <comms-infras/corescpr.h>
+#include "mbufgobblertestflags.h"
+
+// CLASS DECLARATION
+
+/**
+ *  CMbufGobblerSubconnProvider
+ * 
+ */
+class ESock::CSubConnectionProviderFactoryBase;
+class CMbufGobblerSubconnProvider : public CCoreSubConnectionProvider
+	{
+public:
+	// Constructors and destructor
+	static CMbufGobblerSubconnProvider* NewL(ESock::CSubConnectionProviderFactoryBase& aFactory);
+
+	/**
+	 * Destructor.
+	 */
+	~CMbufGobblerSubconnProvider();
+
+	
+protected: //from CCoreSubConnectionProvider
+	void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage);
+
+private:
+
+	/**
+	 * Constructor for performing 1st stage construction
+	 */
+	CMbufGobblerSubconnProvider(ESock::CSubConnectionProviderFactoryBase& aFactory);
+
+	/**
+	 * EPOC default constructor for performing 2nd stage construction
+	 */
+	void ConstructL();
+private:
+	TInt iClientCount; //holds count of clients that node is joined with
+	MBUFGOBBLER_TEST_DATA	
+	};
+
+#endif // MBUFGOBBLERSUBCONNPROVIDER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblersubconnprovideractivities.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,61 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Sub Connection Provider Mesh Activities
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERSUBCONNPROVIDERACTIVITIES_H
+#define MBUFGOBBLERSUBCONNPROVIDERACTIVITIES_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <comms-infras/ss_activities.h>
+#include <elements/mm_activities.h>
+
+// CLASS DECLARATION
+
+namespace MbufGobblerSCprActivities
+{
+
+
+enum 
+	{
+	/*
+	 * Add new actviity id's here. I think they must be offset from ECFActivityCustom.
+	 */
+	
+	/*
+	 * This is just an example activity
+	 */
+	EMbufGobblerSCprSomeActivity = ESock::ECFActivityCustom + 1,
+	};
+
+DECLARE_ACTIVITY_MAP(MbufGobblerSCprActivitiesMap)
+}
+
+#endif // MBUFGOBBLERSUBCONNPROVIDERACTIVITIES_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblersubconnproviderfactory.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,56 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Sub Connection Provider Factory
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERSUBCONNPROVIDERFACTORY_H
+#define MBUFGOBBLERSUBCONNPROVIDERFACTORY_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <comms-infras/ss_subconnprov.h>
+#include "mbufgobbleruids.h"
+
+// CLASS DECLARATION
+
+/**
+ *  CMbufGobblerSubconnProviderFactory
+ * 
+ */
+class CMbufGobblerSubconnProviderFactory : public ESock::CSubConnectionProviderFactoryBase
+	{
+public:
+    enum { iUid = EMbufGobblerSCPrUid };
+	static CMbufGobblerSubconnProviderFactory* NewL(TAny* aParentContainer);
+
+protected:
+	CMbufGobblerSubconnProviderFactory(TUid aFactoryId, ESock::CSubConnectionFactoryContainer& aParentContainer);
+	virtual ESock::ACommsFactoryNodeId* DoCreateObjectL(ESock::TFactoryQueryBase& aQuery);
+	};
+
+#endif // MBUFGOBBLERSUBCONNPROVIDERFACTORY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblersubconnproviderstates.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,77 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Connection Provider Declaration
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERSUBCONNPROVIDERSTATES_H
+#define MBUFGOBBLERSUBCONNPROVIDERSTATES_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+// CLASS DECLARATION
+
+/**
+ *  CMbufGobblerSubconnMeshStates
+ * 
+ */
+class CMbufGobblerSubconnMeshStates : public CBase
+	{
+public:
+	// Constructors and destructor
+
+	/**
+	 * Destructor.
+	 */
+	~CMbufGobblerSubconnMeshStates();
+
+	/**
+	 * Two-phased constructor.
+	 */
+	static CMbufGobblerSubconnMeshStates* NewL();
+
+	/**
+	 * Two-phased constructor.
+	 */
+	static CMbufGobblerSubconnMeshStates* NewLC();
+
+private:
+
+	/**
+	 * Constructor for performing 1st stage construction
+	 */
+	CMbufGobblerSubconnMeshStates();
+
+	/**
+	 * EPOC default constructor for performing 2nd stage construction
+	 */
+	void ConstructL();
+
+	};
+
+#endif // MBUFGOBBLERSUBCONNPROVIDERSTATES_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblertestflags.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,105 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Test flags. Lightweight functions to provide basic coverage test
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERTESTFLAGS_H_
+#define MBUFGOBBLERTESTFLAGS_H_
+
+
+#include <e32property.h>
+
+#ifdef _DEBUG
+#define MBUFGOBBLER_TEST_POINT(flag,result) if(iTestFlags) {MbufGobblerTestFlags::SetResult(MbufGobblerTestFlags::flag,result);}
+#define MBUFGOBBLER_TEST_DATA TBool iTestFlags;
+#define MBUFGOBBLER_TEST_DATA_INIT iTestFlags = MbufGobblerTestFlags::TestFlagsActive();
+
+
+namespace MbufGobblerTestFlags
+{
+const TUid KPubSubUid = {0x00285DAC};
+
+enum
+	{
+	// set by test library, read by binder
+	KFlagsActive = 100,
+	
+	// set by binder, read by test library
+	KTierUp = 101,
+	
+	KMCPrUp = 111,
+	
+	KCPrUp = 121,
+	
+	KSCPrUp = 131,
+	
+	KBind = 141,
+	KBinderSend = 142,
+	KBinderReceive = 143,
+	};
+
+
+// used by client test library
+static TInt ActivateTestFlags()
+	{
+	return RProperty::Define(KPubSubUid, KFlagsActive, RProperty::EInt);
+	}
+
+// used by client test library
+static TInt GetResult(TInt aFlag)
+	{
+	TInt value=0;
+	TInt retcode=RProperty::Get(KPubSubUid, aFlag, value);
+	return (retcode==KErrNone) ? value : retcode;
+	}
+	
+// used by binder
+static TBool TestFlagsActive()
+	{
+	return GetResult(KFlagsActive) == KErrNone;
+	}
+
+// used by binder
+static void SetResult(TInt aFlag, TInt aValue)
+	{
+	// Yes it is very inefficient making these calls
+	//  on e.g. each packet send but we only do this when
+	//  the test is running i.e. if it was explicitly
+	//  switched on, so it won't affect "normal" operation.
+	RProperty::Define(KPubSubUid, aFlag, RProperty::EInt);
+	RProperty::Set(KPubSubUid, aFlag, aValue);
+	}
+} // namespace MbufGobblerTestFlags
+
+#else // _DEBUG
+#define MBUFGOBBLER_TEST_POINT(flag,result)
+// It's better to make the urel and udeb objects the same size,
+//  at the expense of 4 bytes:
+#define MBUFGOBBLER_TEST_DATA TBool iTestFlags_unused;
+#define MBUFGOBBLER_TEST_DATA_INIT
+#endif // _DEBUG
+
+#endif /* MBUFGOBBLERTESTFLAGS_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblertiermanager.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,59 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Contributors:
+//
+// Description:
+// Tier Manager
+//   (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERTIERMANAGER_H
+#define MBUFGOBBLERTIERMANAGER_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <comms-infras/coretiermanager.h>
+#include "mbufgobblertestflags.h"
+
+// CLASS DECLARATION
+
+/**
+ *  CMbufGobblerTierManager
+ * 
+ */
+class CMbufGobblerTierManager : public CCoreTierManager
+	{
+public:
+	static CMbufGobblerTierManager* NewL(ESock::CTierManagerFactoryBase& aFactory);
+	~CMbufGobblerTierManager();
+	virtual ESock::MProviderSelector* DoCreateProviderSelectorL(const Meta::SMetaData& aSelectionPreferences);
+
+protected: //from Messages::ANode
+	virtual void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage);
+private:
+	CMbufGobblerTierManager(ESock::CTierManagerFactoryBase& aFactory);
+	void ConstructL();
+private:
+	TInt iClientCount; //holds count of clients that node is joined with
+	MBUFGOBBLER_TEST_DATA	
+	};
+
+#endif // MBUFGOBBLERTIERMANAGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblertiermanageractivities.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,61 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Tier Manager Mesh Activities
+//   (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERTIERMANAGERACTIVITIES_H
+#define MBUFGOBBLERTIERMANAGERACTIVITIES_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <comms-infras/ss_corepractivities.h>
+
+
+// CLASS DECLARATION
+
+namespace MbufGobblerTMActivities
+{
+
+
+enum 
+	{
+	/*
+	 * Add new actviity id's here. I think they must be offset from ECFActivityCustom.
+	 */
+	
+	/*
+	 * This is just an example activity
+	 */
+	EMbufGobblerTMSomeActivity = ESock::ECFActivityCustom + 1,
+	};
+
+DECLARE_ACTIVITY_MAP(MbufGobblerTMActivitiesMap)
+}
+
+#endif // MBUFGOBBLERTIERMANAGERACTIVITIES_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblertiermanagerfactory.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,57 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Tier Manager Factory
+//   (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERTIERMANAGERFACTORY_H
+#define MBUFGOBBLERTIERMANAGERFACTORY_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <ss_tiermanager.h>
+#include "mbufgobbleruids.h"
+
+// CLASS DECLARATION
+
+/**
+ *  CMbufGobblerTierManagerFactory
+ * 
+ */
+
+class CMbufGobblerTierManagerFactory : public ESock::CTierManagerFactoryBase
+	{
+public:
+    enum { iUid = EMbufGobblerTierUid};
+	static CMbufGobblerTierManagerFactory* NewL(TAny* aParentContainer);
+
+protected:
+	CMbufGobblerTierManagerFactory(TUid aTierTypeId, TUid aFactoryUid, ESock::CTierManagerFactoryContainer& aParentContainer);
+	virtual ESock::ACommsFactoryNodeId* DoCreateObjectL(ESock::TFactoryQueryBase& aQuery);
+	};
+
+#endif // MBUFGOBBLERTIERMANAGERFACTORY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobblertiermanagerstates.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,77 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Tier Manager Mesh States
+//   (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLERTIERMANAGERSTATES_H
+#define MBUFGOBBLERTIERMANAGERSTATES_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+// CLASS DECLARATION
+
+/**
+ *  CMbufGobblerTierManagerMeshStates
+ * 
+ */
+class CMbufGobblerTierManagerMeshStates : public CBase
+	{
+public:
+	// Constructors and destructor
+
+	/**
+	 * Destructor.
+	 */
+	~CMbufGobblerTierManagerMeshStates();
+
+	/**
+	 * Two-phased constructor.
+	 */
+	static CMbufGobblerTierManagerMeshStates* NewL();
+
+	/**
+	 * Two-phased constructor.
+	 */
+	static CMbufGobblerTierManagerMeshStates* NewLC();
+
+private:
+
+	/**
+	 * Constructor for performing 1st stage construction
+	 */
+	CMbufGobblerTierManagerMeshStates();
+
+	/**
+	 * EPOC default constructor for performing 2nd stage construction
+	 */
+	void ConstructL();
+
+	};
+
+#endif // MBUFGOBBLERTIERMANAGERSTATES_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/inc/mbufgobbleruids.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,41 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation UIds of the mbufgobbler providers
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MBUFGOBBLER_UID_H
+#define MBUFGOBBLER_UID_H
+
+enum
+	{
+	EMbufGobblerTierUid	= 0x10272F98,
+	EMbufGobblerMCPrUid	= 0x10272F99,
+	EMbufGobblerCPrUid	= 0x10272F9A,
+	EMbufGobblerSCPrUid	= 0x10272F9B,
+	EMbufGobblerFlowUid	= 0x10272F9C,
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/10272f97.rss	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,105 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Registry info for MbufGobbler providers ECOM plug-in
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "ecom/registryinfo.rh"
+
+RESOURCE REGISTRY_INFO theInfo
+{
+dll_uid = 0x10272F97;
+interfaces = 
+    {
+    INTERFACE_INFO
+		{
+		interface_uid =  0x10281DD7;
+		implementations = 
+			{
+		   IMPLEMENTATION_INFO
+				{
+				implementation_uid = 0x10272F98;
+				version_no = 1;
+				display_name = "MbufGobbler Tier Manager Factory";
+				default_data = "MbufGobblerTMFactory";
+				opaque_data = "";
+				}
+			};
+		},
+    INTERFACE_INFO
+		{
+		interface_uid =  0x10274546;
+		implementations = 
+			{
+		   IMPLEMENTATION_INFO
+				{
+				implementation_uid = 0x10272F99;
+				version_no = 1;
+				display_name = "MbufGobbler Meta Connection Provider Factory";
+				default_data = "MbufGobblerMCPrFactory";
+				opaque_data = "";
+				}
+			};
+		},
+    INTERFACE_INFO
+		{
+		interface_uid =  0x102070EE;
+		implementations = 
+			{
+		   IMPLEMENTATION_INFO
+				{
+				implementation_uid = 0x10272F9A;
+				version_no = 1;
+				display_name = "MbufGobbler Connection Provider Factory";
+				default_data = "MbufGobblerCPrFactory";
+				opaque_data = "";
+				}
+			};
+		},
+	INTERFACE_INFO
+		{
+		interface_uid =  0x10204301;
+		implementations = 
+			{
+		   IMPLEMENTATION_INFO
+				{
+				implementation_uid = 0x10272F9B;
+				version_no = 1;
+				display_name = "MbufGobbler Sub Connection Provider Factory";
+				default_data = "MbufGobblerSCPrFactory";
+				opaque_data = "";
+				}
+			};
+		},
+    INTERFACE_INFO
+        {
+        interface_uid = 0x10281C33;
+        implementations = 
+            {
+           	IMPLEMENTATION_INFO
+                {
+                implementation_uid = 0x10272F9C;
+                version_no = 1;
+                display_name = "MbufGobbler Flow Factory";
+                default_data = "MbufGobblerFlowFactory";
+                opaque_data = "";
+                }
+            };
+		}
+    };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/ecom_impl.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,49 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// ECOM implementation for the MbufGobbler layer provider factories
+//
+
+/**
+ @file
+ @internalComponent
+ */
+
+#include <ecom/implementationproxy.h>
+#include <ecom/ecom.h>
+
+#include "mbufgobblerflowfactory.h"
+#include "mbufgobblerconnproviderfactory.h"
+#include "mbufgobblersubconnproviderfactory.h"
+#include "mbufgobblermetaconnproviderfactory.h"
+#include "mbufgobblertiermanagerfactory.h"
+
+//
+// ECOM Implementation
+//
+
+const TImplementationProxy ImplementationTable[] =
+	{
+	IMPLEMENTATION_PROXY_ENTRY(CMbufGobblerTierManagerFactory::iUid, CMbufGobblerTierManagerFactory::NewL),
+	IMPLEMENTATION_PROXY_ENTRY(CMbufGobblerMetaConnectionProviderFactory::iUid, CMbufGobblerMetaConnectionProviderFactory::NewL),
+	IMPLEMENTATION_PROXY_ENTRY(CMbufGobblerConnProviderFactory::iUid, CMbufGobblerConnProviderFactory::NewL),
+	IMPLEMENTATION_PROXY_ENTRY(CMbufGobblerSubconnProviderFactory::iUid, CMbufGobblerSubconnProviderFactory::NewL),
+	IMPLEMENTATION_PROXY_ENTRY(CMbufGobblerFlowFactory::EUid, CMbufGobblerFlowFactory::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/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerconnprovider.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,77 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Connection Provider
+//  (control plane)
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+/**
+ @file
+ @internalComponent
+*/
+
+#include <comms-infras/ss_connprov.h>
+
+#include "mbufgobblerconnprovider.h"
+#include "mbufgobblerconnprovideractivities.h"
+#include "mbufgobblerlog.h"
+#include "mbufgobblertestflags.h"
+
+using namespace MbufGobblerCprActivities;
+
+_LIT8(KNodeName, "CMbufGobblerConnProvider");
+
+CMbufGobblerConnProvider* CMbufGobblerConnProvider::NewL(ESock::CConnectionProviderFactoryBase& aFactory)
+    {
+    CMbufGobblerConnProvider* prov = new (ELeave) CMbufGobblerConnProvider(aFactory);
+    CleanupStack::PushL(prov);
+    prov->ConstructL();
+    CleanupStack::Pop(prov);
+    return prov;
+    }
+
+CMbufGobblerConnProvider::CMbufGobblerConnProvider(ESock::CConnectionProviderFactoryBase& aFactory)
+:  CCoreConnectionProvider(aFactory, MbufGobblerCprActivities::MbufGobblerCprActivitiesMap::Self())
+	{
+	MBUFGOBBLER_LOG_NODE_CREATE(KMbufGobblerCprSubTag, CMbufGobblerConnProvider, KNodeName, this->NodeId().Ptr());
+	}
+
+
+
+void CMbufGobblerConnProvider::ConstructL()
+	{
+	CCoreConnectionProvider::ConstructL();
+	MBUFGOBBLER_TEST_DATA_INIT
+    MBUFGOBBLER_TEST_POINT(KCPrUp,KErrNone)
+	}
+
+CMbufGobblerConnProvider::~CMbufGobblerConnProvider()
+    {
+    MBUFGOBBLER_LOG_NODE_DESTROY(KMbufGobblerCprSubTag, CMbufGobblerConnProvider, KNodeName, this->NodeId().Ptr());
+    }
+
+void CMbufGobblerConnProvider::ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage)
+	{
+	LOGMESSAGE(KMbufGobblerCprSubTag, KNodeName, this, aSender, aRecipient, aMessage);
+	LOG_NODE_INFO(KMbufGobblerCprSubTag, KNodeName, *this, iClientCount);
+
+	MeshMachine::TNodeContext<CMbufGobblerConnProvider> ctx(*this, aMessage, aSender, aRecipient);
+	Received(ctx);
+	User::LeaveIfError(ctx.iReturn);
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerconnprovideractivities.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,44 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Connection Provider Mesh Activities
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+/**
+ @file
+ @internalComponent
+*/
+
+
+#include "mbufgobblerconnprovideractivities.h"
+#include "mbufgobblerlog.h"
+
+#include <comms-infras/ss_corepractivities.h>
+#include <comms-infras/corecpractivities.h>
+
+
+
+namespace MbufGobblerCprActivities
+{
+DEFINE_ACTIVITY_MAP(MbufGobblerCprActivitiesMap)
+	//no activities defiend here yet. This define is to show where to put activities
+	//so for now just inherit from core activities
+ACTIVITY_MAP_END_BASE(CprActivities, coreCprActivities)
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerconnproviderfactory.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,59 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Connection Provider Factory
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblerconnproviderfactory.h"
+#include "mbufgobblerconnprovider.h"
+#include "mbufgobblerlog.h"
+
+CMbufGobblerConnProviderFactory::~CMbufGobblerConnProviderFactory()
+	{
+	}
+
+CMbufGobblerConnProviderFactory* CMbufGobblerConnProviderFactory::NewL(TAny* aParentContainer)
+    {
+    return new (ELeave) CMbufGobblerConnProviderFactory(TUid::Uid(CMbufGobblerConnProviderFactory::iUid), *reinterpret_cast<ESock::CConnectionFactoryContainer*>(aParentContainer));
+    }
+
+CMbufGobblerConnProviderFactory::CMbufGobblerConnProviderFactory(TUid aFactoryId, ESock::CConnectionFactoryContainer& aParentContainer)
+:	CConnectionProviderFactoryBase(aFactoryId, aParentContainer)
+    {
+    }
+
+ESock::ACommsFactoryNodeId* CMbufGobblerConnProviderFactory::DoCreateObjectL(ESock::TFactoryQueryBase& /* aQuery */)
+    {    
+	return CMbufGobblerConnProvider::NewL(*this); 
+    }
+
+void CMbufGobblerConnProviderFactory::EnumerateConnectionsL(RPointerArray<ESock::TSourcedConnectionInfo>& aConnectionInfoPtrArray)
+    {
+    (void)aConnectionInfoPtrArray;
+    //TEnumerateConnectionsQuery query(aConnectionInfoPtrArray);
+    //Find(query);
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerconnprovidermessages.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,32 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Connection Provider Messages
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblerconnprovidermessages.h"
+#include "mbufgobblerlog.h"
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerconnproviderstates.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,32 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Connection Provider Mesh States
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblerconnproviderstates.h"
+#include "mbufgobblerlog.h"
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerflow.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,667 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Flow / Binder
+//  (data plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+/**
+ @file
+ @internalComponent
+*/
+
+#include <comms-infras/ss_activities.h>
+#include <comms-infras/ss_logext.h>
+#include <es_mbman.h>
+#include <mbufgobblerpubsub.h>
+#include "mbufgobblerflow.h"
+#include "mbufgobblerlog.h"
+
+// for panics
+_LIT(KPanicCategory, "MbufGobblerLayer");
+enum
+	{
+	KPanic_DestroyReceivedBeforeUnbind = 2001
+	};
+
+_LIT8(KNodeName, "CMbufGobblerFlow");
+
+
+///////////////////////////
+// class CMbufGobblerFlow  //
+///////////////////////////
+
+CMbufGobblerFlow* CMbufGobblerFlow::NewL(ESock::CSubConnectionFlowFactoryBase& aFactory, const Messages::TNodeId& aSubConnId, ESock::CProtocolIntfBase* aProtocolIntf)
+    {
+    CMbufGobblerFlow* inst = new(ELeave) CMbufGobblerFlow(aFactory, aSubConnId, aProtocolIntf);
+    CleanupStack::PushL(inst);
+    inst->ConstructL();
+    CleanupStack::Pop(inst);
+    return inst;    
+    }
+    
+CMbufGobblerFlow::CMbufGobblerFlow(ESock::CSubConnectionFlowFactoryBase& aFactory, const Messages::TNodeId& aSubConnId, ESock::CProtocolIntfBase* aProtocolIntf)
+/**
+ * Constructor.
+ *
+ * @param aFactory Reference to the factory which created this object.
+ * @param aTheLogger The logging object, ownership is passed to this object
+ */
+	:ESock::CSubConnectionFlowBase(aFactory, aSubConnId, aProtocolIntf)
+	{
+	MBUFGOBBLER_LOG_NODE_CREATE(KMbufGobblerFlowSubTag, CMbufGobblerFlow, KNodeName, this->NodeId().Ptr());
+	}
+
+void CMbufGobblerFlow::ConstructL()
+    {
+#ifdef SYMBIAN_COMMSFW_MBUF_GOBBLER
+    iMBufGobbler = CMBufGobbler::NewL();
+#endif    
+    }
+    
+CMbufGobblerFlow::~CMbufGobblerFlow()
+	{
+	MBUFGOBBLER_LOG_NODE_DESTROY(KMbufGobblerFlowSubTag, CMbufGobblerFlow, KNodeName, this->NodeId().Ptr());
+	iBinders.ResetAndDestroy();
+#ifdef SYMBIAN_COMMSFW_MBUF_GOBBLER	
+	delete iMBufGobbler;
+#endif 
+	}
+
+
+
+///////////////////////////////////////////
+// Methods from CSubConnectionFlowBase:  //
+///////////////////////////////////////////
+
+ESock::MFlowBinderControl* CMbufGobblerFlow::DoGetBinderControlL()
+	{
+	return this;
+	}
+
+
+// Messages::ANode
+void CMbufGobblerFlow::ReceivedL(
+	const Messages::TRuntimeCtxId& aSender,
+	const Messages::TNodeId& aRecipient,
+	Messages::TSignatureBase& aMessage
+	)
+/**
+Method called on incoming SCPR messages
+
+@param aCFMessage message base
+*/
+    {
+   
+    LOGMESSAGE(KMbufGobblerFlowSubTag, KNodeName, this, aSender, aRecipient, aMessage);
+    //LOG_NODE_INFO(KMbufGobblerFlowSubTag, KNodeName, *this); does not compile as flow inheritance is different to other nodes
+    CSubConnectionFlowBase::ReceivedL(aSender, aRecipient, aMessage);
+
+	// Dispatch the message locally
+	if (ESock::TCFDataClient::ERealmId == aMessage.MessageId().Realm())
+		{
+		switch (aMessage.MessageId().MessageId())
+			{
+
+			case ESock::TCFDataClient::TStart::EId :
+				{
+				iSubConnectionProvider.RNodeInterface::PostMessage(
+					Id(),
+					ESock::TCFDataClient::TStarted().CRef()
+					);
+				}
+				break;
+
+			case ESock::TCFDataClient::TStop::EId :
+				{
+				TInt i;
+				for (i=iBinders.Count()-1;i>=0;--i)
+					{
+				    CMbufGobblerBinder* binder = iBinders[i];
+				    binder->UnbindFromLowerFlow();
+					delete binder;
+					iBinders.Remove(i);
+					}
+				iSubConnectionProvider.PostMessage(Id(), ESock::TCFDataClient::TStopped(KErrNone).CRef());
+				}
+				break;
+
+			case ESock::TCFDataClient::TProvisionConfig::EId :
+				{
+				ESock::TCFDataClient::TProvisionConfig& aMess = Messages::message_cast<ESock::TCFDataClient::TProvisionConfig>(aMessage);
+				iAccessPointConfig.Close();
+				iAccessPointConfig.Open(aMess.iConfig);
+				}
+				break;
+
+			case ESock::TCFDataClient::TBindTo::EId :
+				{
+				ESock::TCFDataClient::TBindTo& bindToReq = Messages::message_cast<ESock::TCFDataClient::TBindTo>(aMessage);
+				if (bindToReq.iNodeId == Messages::TNodeId::NullId())
+					{
+					User::Leave(KErrNotSupported);
+					}
+
+				const Messages::TNodeId& commsId = bindToReq.iNodeId;
+				CSubConnectionFlowBase* lowerFlow = Messages::mnode_cast<CSubConnectionFlowBase>(&commsId.Node());
+
+				MFlowBinderControl* lowerBinderControl = lowerFlow->GetBinderControlL();
+				ASSERT(lowerBinderControl);
+
+				TInt i;
+				for (i=0;i<iBinders.Count();++i)
+					{
+					// binder for each protocol will request binder for same protocol from lower binder controller using this fn.
+					iBinders[i]->BindToLowerFlowL(*lowerBinderControl);
+					}
+				ASSERT(i); // there should be some binders!
+
+				Messages::RClientInterface::OpenPostMessageClose(
+					Id(),
+					aSender,
+					ESock::TCFDataClient::TBindToComplete().CRef()
+					);
+				}
+				break;
+
+			default:
+				ASSERT(EFalse);
+			}
+		}
+	else if (Messages::TEChild::ERealmId == aMessage.MessageId().Realm())
+		{
+		switch (aMessage.MessageId().MessageId())
+			{
+			case Messages::TEChild::TDestroy::EId :
+				{
+				TInt i;
+				for (i=0;i<iBinders.Count();++i)
+					{
+					// ensure all binders unbound
+					if (iBinders[i]->InUse())
+						{
+						//__CFLOG_0(KLogTag1, KLogTag2,_L("something is sending TDestroy to CMbufGobblerFlow before unbinding."));
+						User::Panic(KPanicCategory,KPanic_DestroyReceivedBeforeUnbind);
+						}
+						
+					// EXAMPLE CODE: cancel requests here if necessary...
+					//iBinders[i]->Cancel();
+					
+					}
+				if (i==iBinders.Count()) // all unbound
+					{
+					DeleteThisFlow();
+					}
+				}
+				break;
+
+			default:
+				ASSERT(EFalse);
+			}
+		}
+	// realm != TCFMessage::ERealmId
+	else
+		{
+		ASSERT(EFalse);
+		}
+    }
+
+
+///////////////////////////////////////
+// Methods from MFlowBinderControl:  //
+///////////////////////////////////////
+
+ESock::MLowerControl* CMbufGobblerFlow::GetControlL(const TDesC8& aProtocol)
+/**
+Create and return an MLowerControl instance of the specified binder type.
+
+Called from upper layer during binding procedure.
+
+@param aProtocol Protocol type of the binder
+@return MLowerControl instance of the protocol type
+*/
+	{
+	ESock::MLowerControl* lowerControl = FindOrCreateBinderL(aProtocol);
+	ASSERT(lowerControl);
+	return lowerControl;		
+	}
+
+
+ESock::MLowerDataSender* CMbufGobblerFlow::BindL(const TDesC8& aProtocol, ESock::MUpperDataReceiver* aReceiver, ESock::MUpperControl* aControl)
+	{
+	CMbufGobblerBinder* binder = FindOrCreateBinderL(aProtocol);
+	ASSERT(binder);
+	binder->BindToUpperL( *aReceiver, *aControl );
+
+	iSubConnectionProvider.RNodeInterface::PostMessage(
+		Id(),
+		ESock::TCFControlProvider::TActive().CRef()
+		);
+
+	return binder;
+	}
+
+void CMbufGobblerFlow::Unbind( ESock::MUpperDataReceiver* aReceiver, ESock::MUpperControl* aControl)
+	{
+	ASSERT(aReceiver);
+	ASSERT(aControl);
+	TInt i;
+	TInt numberUnbound=0;
+	for (i=0;i<iBinders.Count();++i)
+		{
+		numberUnbound += (iBinders[i]->UnbindFromUpper(*aReceiver,*aControl) ? 1 : 0);
+		}
+	ASSERT(i); // there should be some binders!
+	ASSERT(numberUnbound<=1); // only 1 unbind should have happened
+
+	iSubConnectionProvider.RNodeInterface::PostMessage(
+		Id(),
+		ESock::TCFControlProvider::TIdle().CRef()
+		);
+	}
+
+ESock::CSubConnectionFlowBase* CMbufGobblerFlow::Flow()
+	{
+	return this;
+	}
+
+
+/////////////////
+// Own methods //
+/////////////////
+
+CMbufGobblerBinder* CMbufGobblerFlow::FindOrCreateBinderL(const TDesC8& aProtocol)
+	{
+	
+	// EXAMPLE CODE, should you want your: perhaps your protocol to work with IPv4
+	//if (aProtocol.Compare(KIp4ProtocolName))
+	//	{  // only work with IPv4
+	//	User::Leave(KErrNotSupported);
+	//	}
+
+	for (TInt i=0;i<iBinders.Count();++i)
+		{
+		if(iBinders[i]->ProtocolName() == aProtocol)
+			{
+			return iBinders[i];
+			}
+		}
+	// not found.. create it.
+	CMbufGobblerBinder* newBinder = CMbufGobblerBinder::NewL(aProtocol);
+	CleanupStack::PushL(newBinder);
+	iBinders.AppendL(newBinder);
+	CleanupStack::Pop(newBinder);
+	return newBinder;
+	}
+	
+    
+
+	
+
+//##################################################################################################
+	
+/////////////////////////////
+// class CMbufGobblerBinder  //
+/////////////////////////////
+
+
+////////////////////
+// My constructor //
+////////////////////
+
+CMbufGobblerBinder::CMbufGobblerBinder(const TDesC8& aProtocolName):
+	iLowerControl(NULL),
+	iLowerDataSender(NULL),
+	iUpperControl(NULL),
+	iUpperDataReceiver(NULL),
+	iProtocolName(aProtocolName)
+	{}
+
+CMbufGobblerBinder* CMbufGobblerBinder::NewL(const TDesC8& aProtocolName)
+	{
+	CMbufGobblerBinder* inst = new(ELeave) CMbufGobblerBinder(aProtocolName);
+	CleanupStack::PushL(inst);
+	inst->ConstructL();
+	CleanupStack::Pop(inst);
+	return inst;
+	}
+
+void CMbufGobblerBinder::ConstructL()
+	{
+	MBUFGOBBLER_TEST_DATA_INIT
+#if 0
+	// EXAMPLE CODE - set up everything you need to in this method.
+	//  Perhaps you have some kind of test control interface using pub/sub.. if so you'd do something like below..
+	//   Diff this file with networking/netperf/delaymeterproto/src/delaymeterflow.cpp for a full working implementation of such a control interface...
+	CActiveScheduler::Add(this);
+	DefinePubSubKeysL();
+	// watch for incoming commands
+	User::LeaveIfError(iProperty.Attach(TUid::Uid(KDelayMeterControlLevel), KCommandToDelayMeter));
+	iProperty.Subscribe(iStatus);
+	SetActive();
+#endif	
+	}
+
+/*virtual*/
+CMbufGobblerBinder::~CMbufGobblerBinder()
+	{
+	}
+
+
+
+////////////////////////////////////////
+// Methods from ESock::MLowerControl: //
+////////////////////////////////////////
+
+TInt CMbufGobblerBinder::GetName(TDes& aName)
+	{
+	TBuf16<10> tmp;
+	tmp.Copy(ProtocolName());
+	aName.Format(_L("mbufgobbler[%S][0x%08x]"), &tmp, this);
+	
+	return KErrNone;
+	}
+
+TInt CMbufGobblerBinder::BlockFlow(TBlockOption aOption)
+	{
+	if (iLowerControl==NULL)
+		{
+		return KErrNotReady;
+		}
+	return iLowerControl->BlockFlow(aOption) ;
+	}
+
+TInt CMbufGobblerBinder::GetConfig(TBinderConfig& aConfig)
+	{
+	if (iLowerControl==NULL)
+		{
+		return KErrNotReady;
+		}
+	return iLowerControl->GetConfig(aConfig) ;
+	}
+
+TInt CMbufGobblerBinder::Control(TUint aLevel, TUint aName, TDes8& aOption)
+	{
+	// Pass it on..
+	if (iLowerControl==NULL)
+		{
+		return KErrNotReady;
+		}
+	return iLowerControl->Control(aLevel,aName,aOption);
+	}
+	
+
+///////////////////////////////////////////
+// Methods from ESock::MLowerDataSender: //
+///////////////////////////////////////////
+
+ESock::MLowerDataSender::TSendResult CMbufGobblerBinder::Send(RMBufChain& aData)
+	{
+	// EXAMPLE NOTE:
+	//  This is where a protocol implementation will do its work on outgoing data.
+
+    MBUFGOBBLER_TEST_POINT(KBinderSend,KErrNone)
+
+	if (iLowerControl==NULL)
+		{
+		return ESendBlocked; // returning this obliges us to send an unblock later..
+							 // so perhaps it'd be better to just swallow the packet?
+		}
+	return iLowerDataSender->Send(aData);
+	}
+
+////////////////////////////////////////
+// Methods from ESock::MUpperControl: //
+////////////////////////////////////////
+
+/*virtual*/
+void CMbufGobblerBinder::StartSending()
+	{
+	if (iUpperControl)
+		{
+		iUpperControl->StartSending();
+		}
+	else
+		{
+		ASSERT(1); // to allow setting a breakpoint
+		//__CFLOG_0(KLogTag1, KLogTag2,_L("CMbufGobblerBinder::StartSending: upper control not yet known!"));
+		}
+	}
+
+/*virtual*/
+void CMbufGobblerBinder::Error(TInt anError)
+	{
+	if (iUpperControl)
+		{
+		iUpperControl->Error(anError);
+		}
+	else
+		{
+		ASSERT(1); // to set a breakpoint
+		//__CFLOG_0(KLogTag1, KLogTag2,_L("CMbufGobblerBinder::Error: upper control not yet known!"));
+		}
+	}
+
+
+/////////////////////////////////////////////
+// Methods from ESock::MUpperDataReceiver: //
+/////////////////////////////////////////////
+
+/*virtual*/
+void CMbufGobblerBinder::Process(RMBufChain& aData)
+	{
+	// EXAMPLE NOTE:
+	//  This is where a protocol implementation will do its work on incoming data.
+
+    MBUFGOBBLER_TEST_POINT(KBinderReceive,KErrNone)
+
+	if (iUpperDataReceiver == NULL)
+		{
+		// Why is the guy below still sending data to me when I'm not bound above?
+		//   Try to ignore it
+		ASSERT(1); // so a breakpoint can be set if necessary
+		//__CFLOG_0(KLogTag1, KLogTag2,_L("CMbufGobblerBinder::Process: incoming traffic discarded as upper data receiver not (or no longer) set"));
+		return;
+		}
+	iUpperDataReceiver->Process(aData);
+	}
+
+
+//////////////////////////
+// and my own methods.. //
+//////////////////////////
+
+// called by layer above calling my flow's BindL
+void CMbufGobblerBinder::BindToUpperL(MUpperDataReceiver& aUpperDataReceiver, MUpperControl& aUpperControl)
+	{
+	if(iUpperDataReceiver || iUpperControl) {User::Leave(KErrInUse);}
+	iUpperDataReceiver=&aUpperDataReceiver;
+	iUpperControl=&aUpperControl;
+    MBUFGOBBLER_TEST_POINT(KBind,KErrNone)
+	}
+
+// called by layer above calling my flow's Unbind. Returns ETrue if unbind happened here, EFalse otherwise
+TBool CMbufGobblerBinder::UnbindFromUpper(MUpperDataReceiver& aUpperDataReceiver, MUpperControl& aUpperControl)
+	{
+	if(&aUpperDataReceiver == iUpperDataReceiver && &aUpperControl == iUpperControl)
+		{
+		iUpperDataReceiver=0;
+		iUpperControl=0;
+		return ETrue;
+		}
+	return EFalse;
+	}
+
+// called by my flow receiving a BinderRequest
+void CMbufGobblerBinder::BindToLowerFlowL(ESock::MFlowBinderControl& aLowerBinderControl)
+	{
+//	__CFLOG_0(KLogTag1, KLogTag2, _L("CMbufGobblerBinder::BindToLowerFlowL")); 
+	if(iLowerControl || iLowerDataSender)
+		{
+		User::Leave(KErrInUse);
+		}
+	
+	iBinderControl = &aLowerBinderControl;
+	iLowerControl = aLowerBinderControl.GetControlL(ProtocolName());
+	iLowerDataSender = aLowerBinderControl.BindL(ProtocolName(), this, this);
+	}
+
+void CMbufGobblerBinder::UnbindFromLowerFlow()
+    {
+    if (!iBinderControl)
+        return;
+    
+    iBinderControl->Unbind(this, this);
+    iBinderControl = NULL;
+
+    iLowerControl = NULL;
+    iLowerDataSender = NULL;
+    }
+
+const TDesC8& CMbufGobblerBinder::ProtocolName() const
+	{
+	return iProtocolName;
+	}
+
+#ifdef SYMBIAN_COMMSFW_MBUF_GOBBLER 
+
+CMBufGobbler::CMBufGobbler():
+    CActive(CActive::EPriorityStandard)
+    {
+    }   
+    
+CMBufGobbler* CMBufGobbler::NewL()
+    {
+    CMBufGobbler* inst = new(ELeave) CMBufGobbler;
+    CleanupStack::PushL(inst);
+    inst->ConstructL();
+    CleanupStack::Pop(inst);
+    return inst;
+    }
+
+void CMBufGobbler::ConstructL()
+    {
+    iChain.AllocL(128);
+    
+    CActiveScheduler::Add(this);
+
+    TInt result = RProperty::Define(TUid::Uid(EMBufGobbler), EAdjustNumberOfMBufsRemainingInPool, RProperty::EInt);
+    // Only want 1 instance of a MBufGobbler Layer, so just leave if KErrAlreadyExists returned
+    User::LeaveIfError(result);
+
+    // watch for incoming commands
+    User::LeaveIfError(iProperty.Attach(TUid::Uid(EMBufGobbler), EAdjustNumberOfMBufsRemainingInPool));
+
+    iProperty.Subscribe(iStatus);
+    SetActive();
+    }
+
+/*virtual*/ CMBufGobbler::~CMBufGobbler()
+    {
+    if (IsActive())
+        {
+        Cancel();   
+        }
+
+    iChain.Free();
+    
+    TInt result = RProperty::Delete(TUid::Uid(EMBufGobbler), EAdjustNumberOfMBufsRemainingInPool);  
+    if (result != KErrNone)
+        {
+        RDebug::Print(_L("CMBufGobbler::~CMBufGobbler() %d"), result);
+        }
+    }
+
+/*virtual*/ void CMBufGobbler::DoCancel()
+    {
+    iProperty.Cancel();
+    }
+
+/*virtual*/ void CMBufGobbler::RunL()
+    {
+    // Resubscribe to ensure that next pub/sub notification is picked up
+    iProperty.Subscribe(iStatus);
+    SetActive();
+    
+    TInt request=EGobbleAllMBufs;
+    TInt pubSubRet = iProperty.Get(request);
+    if (pubSubRet == KErrNone)
+        {
+        switch(request)
+            {
+            case EGobbleAllMBufs:
+                {
+                RMBufAllocator allocator;
+                RMBufChain chain;
+                TInt size = allocator.NextMBufSize(0);
+                while (size != KErrNotFound)
+                    {
+                    TInt ret = KErrNone;
+                    while (ret == KErrNone)
+                        {
+                        ret = chain.Alloc(size);
+                        if (ret==KErrNone )
+                            {
+                            iChain.Append(chain);
+                            }
+                        }
+                    size = allocator.NextMBufSize(size);
+                    }
+                TInt length = iChain.Length();
+                RDebug::Print(_L("Out of MBuf Memory... Total MBuf memory in use %d"), length);
+                TInt numBufs = iChain.NumBufs();
+                RDebug::Print(_L("Out of MBuf Memory... Total MBufs in use %d"), numBufs);
+                break;
+                }
+            case EReleaseAllMBufs:
+                {
+                if(!iChain.IsEmpty())
+                     {
+                     iChain.Free();
+                     ASSERT(!iChain.Length());
+                    }
+                break;
+                }
+            case EReleaseASingleMBuf:
+                {            
+                TInt length = iChain.Length();
+                if (length != 0)
+                    {
+                    TInt trimOffset = length - iChain.Last()->Size();
+                    iChain.TrimEnd(trimOffset);
+                    }
+    
+                length = iChain.Length();
+                RDebug::Print(_L("MBufMemory De-Allocated... Total MBuf memory in use %d"), length);
+                break;
+                }
+            default:
+                {
+                RDebug::Print(_L("CMBufGobbler::RunL(), invalid request %d"), request);
+                break;
+                }
+            }
+        }
+    else
+        {
+        RDebug::Print(_L("Attempt to process MBufGobbler publish/subscribe failed with value for  %d"), pubSubRet);
+        }
+    }
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerflowfactory.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,71 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// The factory class which is used to instantiate the MbufGobbler flow.
+//  (data plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+/**
+ @file
+ @internalComponent 
+*/
+
+#include "mbufgobblerflowfactory.h"
+#include "mbufgobblerflow.h"
+#include "mbufgobblerlog.h"
+
+// =====================================================================================
+//
+// MbufGobbler Flow Factory
+//
+
+CMbufGobblerFlowFactory* CMbufGobblerFlowFactory::NewL(TAny* aConstructionParameters)
+/**
+Constructs a Default SubConnection Flow Factory
+
+@param aConstructionParameters construction data passed by ECOM
+
+@returns pointer to a constructed factory
+*/
+	{
+	CMbufGobblerFlowFactory* ptr = new (ELeave) CMbufGobblerFlowFactory(TUid::Uid(CMbufGobblerFlowFactory::EUid), *(reinterpret_cast<ESock::CSubConnectionFlowFactoryContainer*>(aConstructionParameters)));
+	
+	return ptr;
+	}
+
+
+CMbufGobblerFlowFactory::CMbufGobblerFlowFactory(TUid aFactoryId, ESock::CSubConnectionFlowFactoryContainer& aParentContainer)
+	: CSubConnectionFlowFactoryBase(aFactoryId, aParentContainer)
+/**
+Default SubConnection Flow Factory Constructor
+
+@param aFactoryId ECOM Implementation Id
+@param aParentContainer Object Owner
+*/
+	{
+	}
+
+
+ESock::CSubConnectionFlowBase* CMbufGobblerFlowFactory::DoCreateFlowL(ESock::CProtocolIntfBase* aProtocol, ESock::TFactoryQueryBase& aQuery)
+	{
+	const ESock::TDefaultFlowFactoryQuery& query = static_cast<const ESock::TDefaultFlowFactoryQuery&>(aQuery);
+	ESock::CSubConnectionFlowBase *temp = CMbufGobblerFlow::NewL(*this, query.iSCprId, aProtocol);
+	return temp;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerhelper.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,114 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Helper class supplying useful logging functions to the providers in the layer
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblerhelper.h"
+#include "mbufgobblerlog.h"
+#include <elements/mm_node.h>
+#include <comms-infras/ss_nodeinterfaces.h>
+
+
+void MbufGobblerHelper::LogCreateDestroy(const TDesC8& aSubTag, const TDesC8& aNodeName, TAny* aNodePtr, TBool aIsCreate)
+	{
+	// to eradicate warnings on builds for which the LOG macro does nothing (e.g. urel)
+	(void)(aSubTag); (void)(aNodeName); (void)(aNodePtr); (void)(aIsCreate);
+	
+	if(aIsCreate)
+		{
+		LOG(aSubTag,_L8("%S (0x%x) Created"), &aNodeName, aNodePtr);
+		}		
+	else
+		{
+		LOG(aSubTag,_L8("%S (0x%x) Destroyed"), &aNodeName, aNodePtr);
+		}		
+	}
+
+void MbufGobblerHelper::LogMessage(const TDesC8& aSubTag, const TDesC8& aNodeName, TAny* aNodePtr, const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage)
+	{
+	// to eradicate warnings on builds for which the LOG macro does nothing (e.g. urel)
+	(void)(aSubTag); (void)(aNodeName); (void)(aNodePtr);
+
+	TInt msgId = aMessage.MessageId().MessageId();
+	TInt realm = aMessage.MessageId().Realm();
+	
+	TUint32 threadid_of_sender = aSender.Thread();
+	Messages::TNodeId nid = Messages::address_cast<Messages::TNodeId>(aSender);
+	TAny* ptr = nid.Ptr(); //this seems to be the only hting that can be used to print out something to address the node
+	TAny* rptr = aRecipient.Ptr();
+	__CFLOG_VAR((KMbufGobblerComponentTag, aSubTag,_L8("Node %S(0x%x) message received (msgid=%d, realm=0x%x), sender(0x%x threadID=%d)"), &aNodeName, rptr, msgId, realm, ptr, threadid_of_sender));
+	}
+
+void MbufGobblerHelper::PrintClientNodes(const TDesC8& aSubTag, const TDesC8& aNodeName, MeshMachine::AMMNodeBase& aNode, TInt& aClientCount)
+	{
+	// to eradicate warnings on builds for which the LOG macro does nothing (e.g. urel)
+	(void)(aSubTag); (void)(aNodeName);
+
+	TUint type = ESock::TCFClientType::EData | ESock::TCFClientType::ECtrl | ESock::TCFClientType::EServProvider | ESock::TCFClientType::ECtrlProvider;
+	TInt totclients =  	aNode.CountClients<Messages::TDefaultClientMatchPolicy>(type);
+	//only print if count different than previous
+	if(aClientCount != totclients)
+		{
+		aClientCount = 	totclients;
+		LOG(aSubTag,_L8("Printing Node %S(0x%x) info..."), &aNodeName, aNode.Id().Ptr());
+		LOG(aSubTag, _L8("\tTotal Num clients = %d"), totclients);
+		
+		//enumerate through clients	
+		Messages::TClientIter<Messages::TDefaultClientMatchPolicy> clientIter(aNode.GetClientIter<Messages::TDefaultClientMatchPolicy>(type));
+		Messages::RNodeInterface* client = clientIter++;
+		while (client)
+			{
+			
+			Messages::TNodeId id = client->RecipientId();
+			//look up node type
+			TBuf8<20> typlu;
+			switch(client->Type())
+				{
+				case ESock::TCFClientType::EUnknown:
+					typlu = _L8("EUnknown");
+					break;
+				case ESock::TCFClientType::EData:
+					typlu = _L8("EData");
+					break;
+				case ESock::TCFClientType::ECtrl:
+					typlu = _L8("ECtrl");
+					break;
+				case ESock::TCFClientType::EServProvider:
+					typlu = _L8("EServProvider");
+					break;
+				case ESock::TCFClientType::ECtrlProvider:
+					typlu = _L8("ECtrlProvider");
+					break;
+				default:
+					typlu = _L8("Unknown");
+					break;
+				}
+			LOG(aSubTag, _L8("\t\tClientNode(0x%x) type=%d(%S), flags=%d"), id.Ptr(), client->Type(), &typlu, client->Flags());
+			client = clientIter++;
+			}
+		}
+		
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblermetaconnprovider.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,74 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Meta Connection Provider
+//  (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblermetaconnprovider.h"
+#include "mbufgobblermetaconnprovideractivities.h"
+#include "mbufgobblerlog.h"
+#include "mbufgobblertestflags.h"
+
+_LIT8(KNodeName, "CMbufGobblerMetaConnectionProvider");
+
+CMbufGobblerMetaConnectionProvider* CMbufGobblerMetaConnectionProvider::NewL(ESock::CMetaConnectionProviderFactoryBase& aFactory,
+                                   const ESock::TProviderInfo& aProviderInfo)
+	{
+	CMbufGobblerMetaConnectionProvider* self = new (ELeave) CMbufGobblerMetaConnectionProvider(aFactory,aProviderInfo,MbufGobblerMCprActivities::MbufGobblerMCprActivitiesMap::Self());
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self;
+	}
+
+CMbufGobblerMetaConnectionProvider::CMbufGobblerMetaConnectionProvider(ESock::CMetaConnectionProviderFactoryBase& aFactory,
+				const ESock::TProviderInfo& aProviderInfo, const MeshMachine::TNodeActivityMap& aActivityMap)
+	: CCoreMetaConnectionProvider(aFactory, aProviderInfo, aActivityMap)
+	{
+	MBUFGOBBLER_LOG_NODE_CREATE(KMbufGobblerMcprSubTag, CMbufGobblerMetaConnectionProvider, KNodeName, this->NodeId().Ptr());	
+	}
+
+void CMbufGobblerMetaConnectionProvider::ConstructL()
+	{
+	CCoreMetaConnectionProvider::ConstructL();
+	MBUFGOBBLER_TEST_DATA_INIT
+    MBUFGOBBLER_TEST_POINT(KMCPrUp,KErrNone)
+	}
+
+CMbufGobblerMetaConnectionProvider::~CMbufGobblerMetaConnectionProvider()
+	{
+	MBUFGOBBLER_LOG_NODE_DESTROY(KMbufGobblerMcprSubTag, CMbufGobblerMetaConnectionProvider, KNodeName, this->NodeId().Ptr());
+	}
+
+void CMbufGobblerMetaConnectionProvider::ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aCFMessage)
+	{   
+	LOGMESSAGE(KMbufGobblerMcprSubTag, KNodeName, this, aSender, aRecipient, aCFMessage);
+	LOG_NODE_INFO(KMbufGobblerMcprSubTag, KNodeName, *this, iClientCount);
+	MeshMachine::TNodeContext<CMbufGobblerMetaConnectionProvider> ctx(*this, aCFMessage, aSender, aRecipient);
+	CCoreMetaConnectionProvider::Received(ctx);
+	User::LeaveIfError(ctx.iReturn);
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblermetaconnprovideractivities.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,42 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Meta Connection Provider Mesh Activities
+//  (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblermetaconnprovideractivities.h"
+#include "mbufgobblerlog.h"
+
+#include <comms-infras/coremcpractivities.h>
+
+
+namespace MbufGobblerMCprActivities
+{
+DEFINE_ACTIVITY_MAP(MbufGobblerMCprActivitiesMap)
+	//no activities defiend here yet. This define is to show where to put activities
+	//so for now just inherit from core activities
+ACTIVITY_MAP_END_BASE(MCprActivities, coreMCprActivities)
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblermetaconnproviderfactory.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,63 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Factory which creates the Meta Connection Provider
+//  (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblermetaconnproviderfactory.h"
+#include "mbufgobblermetaconnprovider.h"
+#include "mbufgobblerlog.h"
+
+
+CMbufGobblerMetaConnectionProviderFactory* CMbufGobblerMetaConnectionProviderFactory::NewL(TAny* aParentContainer)
+	{
+ 	return new (ELeave) CMbufGobblerMetaConnectionProviderFactory(TUid::Uid(CMbufGobblerMetaConnectionProviderFactory::iUid), 
+ 			                         *(reinterpret_cast<ESock::CMetaConnectionFactoryContainer*>(aParentContainer)));
+	}
+
+CMbufGobblerMetaConnectionProviderFactory::CMbufGobblerMetaConnectionProviderFactory(TUid aFactoryUid, ESock::CMetaConnectionFactoryContainer& aParentContainer)
+	: CMetaConnectionProviderFactoryBase(aFactoryUid,aParentContainer)
+	{
+ 	//LOG_NODE_CREATE(KVccMCprFactoryTag, CVccMetaConnectionProviderFactory);
+	}
+
+ESock::ACommsFactoryNodeId* CMbufGobblerMetaConnectionProviderFactory::DoCreateObjectL(ESock::TFactoryQueryBase& aQuery)
+	{ 
+	//LOG1(_L8("CMbufGobblerMetaConnectionProviderFactory %08x:\tDoCreateObjectL()"), this);
+	const ESock::TMetaConnectionFactoryQuery& query = static_cast<const ESock::TMetaConnectionFactoryQuery&>(aQuery);
+	return CMbufGobblerMetaConnectionProvider::NewL (*this, query.iProviderInfo);
+	}
+
+void CMbufGobblerMetaConnectionProviderFactory::DoEnumerateConnectionsL (RPointerArray<TConnectionInfo>& /*aConnectionInfoPtrArray*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblermetaconnproviderstates.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,62 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Meta Connection Provider Mesh States
+//  (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblermetaconnproviderstates.h"
+#include "mbufgobblerlog.h"
+
+CMbufGobblerMetaConnectionProviderStates::CMbufGobblerMetaConnectionProviderStates()
+	{
+	// No implementation required
+	}
+
+CMbufGobblerMetaConnectionProviderStates::~CMbufGobblerMetaConnectionProviderStates()
+	{
+	}
+
+CMbufGobblerMetaConnectionProviderStates* CMbufGobblerMetaConnectionProviderStates::NewLC()
+	{
+	CMbufGobblerMetaConnectionProviderStates* self =
+			new (ELeave) CMbufGobblerMetaConnectionProviderStates();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CMbufGobblerMetaConnectionProviderStates* CMbufGobblerMetaConnectionProviderStates::NewL()
+	{
+	CMbufGobblerMetaConnectionProviderStates* self =
+			CMbufGobblerMetaConnectionProviderStates::NewLC();
+	CleanupStack::Pop(); // self;
+	return self;
+	}
+
+void CMbufGobblerMetaConnectionProviderStates::ConstructL()
+	{
+
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblerproviderselector.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,105 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// MbufGobbler selector. Used by the Tier Manager to select the access point below
+//  (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblerproviderselector.h"
+#include "mbufgobblerlog.h"
+
+//extra includes 
+#include <ss_select.h> //needed as declares MProviderSelector. 
+#include <metadatabase.h> //needed for CommsDat::CMDBSession
+#include <ss_tiermanagerutils.h> //needed for ESock::TierManagerUtils
+#include <commsdattypesv1_1_partner.h> //needed for CCDTierRecord (iTierRecord)
+
+#include "mbufgobbler_panic.h" //needed for ASSERT_DEBUG
+#include "mbufgobblertiermanagerfactory.h" //needed for CMbufGobblerTierManagerFactory::iUid
+#include "mbufgobblermetaconnproviderfactory.h" //needed for CMbufGobblerMetaConnectionProviderFactory::iUid
+
+
+ESock::MProviderSelector* CMbufGobblerProviderSelector::NewL(const Meta::SMetaData& aSelectionPreferences)
+	{
+	//LOG_STATIC_FUNC
+	ASSERT_DEBUG(aSelectionPreferences.IsTypeOf(ESock::TSelectionPrefs::TypeId()), EUnexpectedTSelectionPrefsType);
+	
+	CMbufGobblerProviderSelector* self = NULL;
+	self = new(ELeave) CMbufGobblerProviderSelector(aSelectionPreferences);
+	CleanupStack::PushL(self);
+	
+	CommsDat::CMDBSession* dbs = CommsDat::CMDBSession::NewLC(KCDVersion1_2);
+	
+	self->iTierRecord = ESock::TierManagerUtils::LoadTierRecordL(TUid::Uid(CMbufGobblerTierManagerFactory::iUid), *dbs);
+	
+	ASSERT_DEBUG(static_cast<TUint32>(self->iTierRecord->iDefaultAccessPoint)!=0,EUnexpectedTSelectionPrefsType);
+	
+	CleanupStack::Pop(dbs);
+	CleanupStack::Pop(self);
+	ASSERT_DEBUG(self->iDbs == NULL, EInvalidNullPtr);
+	self->iDbs = dbs;
+	return self;
+	}
+
+CMbufGobblerProviderSelector::CMbufGobblerProviderSelector(const Meta::SMetaData& aSelectionPreferences)
+: ASimpleSelectorBase(aSelectionPreferences)
+	{
+	}
+
+CMbufGobblerProviderSelector::~CMbufGobblerProviderSelector()
+	{
+	}
+
+void CMbufGobblerProviderSelector::Destroy()
+	{
+	delete this;
+	}
+
+
+/**
+Find or create a Mbufgobbler Meta Connection Provider
+*/
+ESock::CMetaConnectionProviderBase* CMbufGobblerProviderSelector::FindOrCreateProviderL(TUint aAccessPoint)
+	{
+	return ASimpleSelectorBase::FindOrCreateProviderL(aAccessPoint);
+	}
+
+
+/**
+Perform the selection of a Meta Connection Provider
+*/
+void CMbufGobblerProviderSelector::SelectL(ESock::ISelectionNotify& aSelectionNotify)
+	{	
+	ASSERT_DEBUG(iDbs, EInvalidNullPtr);
+	ASSERT_DEBUG(iTierRecord, EInvalidNullPtr);
+	TUint32 defaultAccessPoint = iTierRecord->iDefaultAccessPoint;
+	
+	//Must be set
+	User::LeaveIfError(defaultAccessPoint!=0 ? KErrNone : KErrCorrupt);
+	
+	// Send select complete with the provider, and the final select complete
+	aSelectionNotify.SelectComplete(this, FindOrCreateProviderL(defaultAccessPoint));
+	aSelectionNotify.SelectComplete(this, NULL);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblersubconnprovider.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,75 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Sub Connection Provider
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblersubconnprovider.h"
+#include "mbufgobblersubconnprovideractivities.h"
+#include "mbufgobblerlog.h"
+#include "mbufgobblertestflags.h"
+
+using namespace MbufGobblerSCprActivities;
+
+_LIT8(KNodeName, "CMbufGobblerSubconnProvider");
+
+CMbufGobblerSubconnProvider* CMbufGobblerSubconnProvider::NewL(ESock::CSubConnectionProviderFactoryBase& aFactory)
+    {
+    CMbufGobblerSubconnProvider* prov = new (ELeave) CMbufGobblerSubconnProvider(aFactory);
+    CleanupStack::PushL(prov);
+    prov->ConstructL();
+    CleanupStack::Pop(prov);
+    return prov;
+    }
+
+CMbufGobblerSubconnProvider::CMbufGobblerSubconnProvider(ESock::CSubConnectionProviderFactoryBase& aFactory)
+:  CCoreSubConnectionProvider(aFactory, MbufGobblerSCprActivities::MbufGobblerSCprActivitiesMap::Self())
+	{
+	MBUFGOBBLER_LOG_NODE_CREATE(KMbufGobblerScprSubTag, CMbufGobblerSubconnProvider, KNodeName, this->NodeId().Ptr());
+	}
+
+
+
+void CMbufGobblerSubconnProvider::ConstructL()
+	{
+	CCoreSubConnectionProvider::ConstructL();
+	MBUFGOBBLER_TEST_DATA_INIT
+    MBUFGOBBLER_TEST_POINT(KSCPrUp,KErrNone)
+	}
+
+CMbufGobblerSubconnProvider::~CMbufGobblerSubconnProvider()
+    {
+    MBUFGOBBLER_LOG_NODE_DESTROY(KMbufGobblerScprSubTag, CMbufGobblerSubconnProvider, KNodeName, this->NodeId().Ptr());
+    }
+
+void CMbufGobblerSubconnProvider::ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage)
+	{
+	LOGMESSAGE(KMbufGobblerScprSubTag, KNodeName, this, aSender, aRecipient, aMessage);
+	LOG_NODE_INFO(KMbufGobblerScprSubTag, KNodeName, *this, iClientCount);
+	MeshMachine::TNodeContext<CMbufGobblerSubconnProvider> ctx(*this, aMessage, aSender, aRecipient);
+	Received(ctx);
+	User::LeaveIfError(ctx.iReturn);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblersubconnprovideractivities.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,43 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Sub Connection Provider Mesh Activities
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblersubconnprovideractivities.h"
+#include "mbufgobblerlog.h"
+
+#include <comms-infras/corescpractivities.h>
+
+
+
+namespace MbufGobblerSCprActivities
+{
+DEFINE_ACTIVITY_MAP(MbufGobblerSCprActivitiesMap)
+	//no activities defiend here yet. This define is to show where to put activities
+	//so for now just inherit from core activities
+ACTIVITY_MAP_END_BASE(SCprActivities, coreSCprActivities)
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblersubconnproviderfactory.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,61 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Sub Connection Provider Factory
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblersubconnproviderfactory.h"
+#include "mbufgobblersubconnprovider.h"
+#include "mbufgobblerlog.h"
+
+CMbufGobblerSubconnProviderFactory* CMbufGobblerSubconnProviderFactory::NewL(TAny* aParentContainer)
+    {
+    return new (ELeave) CMbufGobblerSubconnProviderFactory(TUid::Uid(CMbufGobblerSubconnProviderFactory::iUid), 
+                                            *reinterpret_cast<ESock::CSubConnectionFactoryContainer*>(aParentContainer));
+    }
+    
+CMbufGobblerSubconnProviderFactory::CMbufGobblerSubconnProviderFactory(TUid aFactoryId, ESock::CSubConnectionFactoryContainer& aParentContainer)
+	: CSubConnectionProviderFactoryBase(aFactoryId, aParentContainer)
+    {
+    }
+
+ESock::ACommsFactoryNodeId* CMbufGobblerSubconnProviderFactory::DoCreateObjectL(ESock::TFactoryQueryBase& aQuery)
+    {
+    const ESock::TDefaultSCPRFactoryQuery& query = static_cast<const ESock::TDefaultSCPRFactoryQuery&>(aQuery);
+    if (query.iSCPRType == RSubConnection::EAttachToDefault)
+        {
+        return CMbufGobblerSubconnProvider::NewL(*this);
+        }
+    else if(query.iSCPRType == RSubConnection::ECreateNew)
+    	{
+        return CMbufGobblerSubconnProvider::NewL(*this);    	
+    	}
+    else
+        {
+        User::Leave(KErrNotSupported);
+        }
+    return NULL;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblersubconnproviderstates.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,62 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Connection Provider Declaration
+//  (control plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblersubconnproviderstates.h"
+#include "mbufgobblerlog.h"
+
+CMbufGobblerSubconnMeshStates::CMbufGobblerSubconnMeshStates()
+	{
+	// No implementation required
+	}
+
+CMbufGobblerSubconnMeshStates::~CMbufGobblerSubconnMeshStates()
+	{
+	}
+
+CMbufGobblerSubconnMeshStates* CMbufGobblerSubconnMeshStates::NewLC()
+	{
+	CMbufGobblerSubconnMeshStates* self =
+			new (ELeave) CMbufGobblerSubconnMeshStates();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CMbufGobblerSubconnMeshStates* CMbufGobblerSubconnMeshStates::NewL()
+	{
+	CMbufGobblerSubconnMeshStates* self =
+			CMbufGobblerSubconnMeshStates::NewLC();
+	CleanupStack::Pop(); // self;
+	return self;
+	}
+
+void CMbufGobblerSubconnMeshStates::ConstructL()
+	{
+
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblertiermanager.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,87 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Tier Manager
+//   (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblertiermanager.h"
+#include "mbufgobblertiermanageractivities.h"
+#include "mbufgobblerlog.h"
+#include "mbufgobblertestflags.h"
+
+#include <comms-infras/coretiermanageractivities.h>
+
+#include "mbufgobblerproviderselector.h"
+
+_LIT8(KNodeName, "CMbufGobblerTierManager");
+
+CMbufGobblerTierManager* CMbufGobblerTierManager::NewL(ESock::CTierManagerFactoryBase& aFactory)
+	{
+	CMbufGobblerTierManager* self = new (ELeave) CMbufGobblerTierManager(aFactory);
+ 	CleanupStack::PushL(self);
+ 	self->ConstructL();
+ 	CleanupStack::Pop(self);
+ 	return self;
+	}
+
+CMbufGobblerTierManager::CMbufGobblerTierManager(ESock::CTierManagerFactoryBase& aFactory)                                   
+:	CCoreTierManager(aFactory,MbufGobblerTMActivities::MbufGobblerTMActivitiesMap::Self())
+	{
+	MBUFGOBBLER_LOG_NODE_CREATE(KMbufGobblerTierSubTag, CMbufGobblerTierManager, KNodeName, this->NodeId().Ptr());
+	}
+
+void CMbufGobblerTierManager::ConstructL()
+	{
+	CCoreTierManager::ConstructL();
+	MBUFGOBBLER_TEST_DATA_INIT
+    MBUFGOBBLER_TEST_POINT(KTierUp,KErrNone)
+	}
+
+CMbufGobblerTierManager::~CMbufGobblerTierManager()
+	{
+	MBUFGOBBLER_LOG_NODE_DESTROY(KMbufGobblerTierSubTag, CMbufGobblerTierManager, KNodeName, this->NodeId().Ptr());
+	}
+
+ESock::MProviderSelector* CMbufGobblerTierManager::DoCreateProviderSelectorL(const Meta::SMetaData& aSelectionPreferences)
+	{
+    return CMbufGobblerProviderSelector::NewL(aSelectionPreferences);
+	}
+
+void CMbufGobblerTierManager::ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage)
+	{
+	LOGMESSAGE(KMbufGobblerTierSubTag, KNodeName, this, aSender, aRecipient, aMessage);
+	LOG_NODE_INFO(KMbufGobblerTierSubTag, KNodeName, *this, iClientCount);
+  	MeshMachine::TNodeContext<CMbufGobblerTierManager> ctx(*this, aMessage, aSender, aRecipient);
+   	CCoreTierManager::Received(ctx);
+    User::LeaveIfError(ctx.iReturn);
+	}
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblertiermanageractivities.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,47 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Tier Manager Mesh Activities
+//   (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblertiermanageractivities.h"
+#include "mbufgobblerlog.h"
+
+#include <comms-infras/ss_activities.h>
+#include <elements/mm_activities.h>
+
+#include <comms-infras/coretiermanageractivities.h>
+
+
+
+namespace MbufGobblerTMActivities
+{
+DEFINE_ACTIVITY_MAP(MbufGobblerTMActivitiesMap)
+	//no activities defiend here yet. This define is to show where to put activities
+	//so for now just inherit from core activities
+ACTIVITY_MAP_END_BASE(TMActivities, coreTMActivities)
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblertiermanagerfactory.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,52 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Tier Manager Factory
+//   (management plane)
+//
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblertiermanagerfactory.h"
+#include "mbufgobblertiermanager.h"
+#include "mbufgobblerlog.h"
+
+
+
+CMbufGobblerTierManagerFactory* CMbufGobblerTierManagerFactory::NewL(TAny* aParentContainer)
+	{
+ 	return new (ELeave) CMbufGobblerTierManagerFactory(TUid::Uid(CMbufGobblerTierManagerFactory::iUid),TUid::Uid(CMbufGobblerTierManagerFactory::iUid),*(reinterpret_cast<ESock::CTierManagerFactoryContainer*>(aParentContainer)));
+	}
+
+CMbufGobblerTierManagerFactory::CMbufGobblerTierManagerFactory(TUid aTierTypeId, TUid aFactoryUid, ESock::CTierManagerFactoryContainer& aParentContainer)
+:	CTierManagerFactoryBase(aTierTypeId,aFactoryUid,aParentContainer)
+	{
+	}
+
+ESock::ACommsFactoryNodeId* CMbufGobblerTierManagerFactory::DoCreateObjectL(ESock::TFactoryQueryBase& /* aQuery */)
+	{
+	return CMbufGobblerTierManager::NewL(*this);
+	}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/src/mbufgobblertiermanagerstates.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,63 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Tier Manager Mesh States
+//   (management plane)
+//
+// 
+//
+//  This is a 3-plane comms layer implementation example, which has been customised to be a test layer which gobbles and releases ESOCK MBUFs.
+//  The MBuf gobbling functionality can be disabled by undefining the macro SYMBIAN_COMMSFW_MBUF_GOBBLER which is specified in mbufgobblerproviders.mmp.
+//  When SYMBIAN_COMMSFW_MBUF_GOBBLER is undefined, the source code specified by mbufgobblerproviders.mmp becomes a pass through layer i.e. it passes the data
+//  through to the layer above or below without altering it. This makes it useful as a starting point for implementing your own layers / providers;
+//  useful documentation on how to customise your own passthrough layer can be found in ..\docs\MbufGobblerLayer.doc
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mbufgobblertiermanagerstates.h"
+#include "mbufgobblerlog.h"
+
+CMbufGobblerTierManagerMeshStates::CMbufGobblerTierManagerMeshStates()
+	{
+	// No implementation required
+	}
+
+CMbufGobblerTierManagerMeshStates::~CMbufGobblerTierManagerMeshStates()
+	{
+	}
+
+CMbufGobblerTierManagerMeshStates* CMbufGobblerTierManagerMeshStates::NewLC()
+	{
+	CMbufGobblerTierManagerMeshStates* self =
+			new (ELeave) CMbufGobblerTierManagerMeshStates();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CMbufGobblerTierManagerMeshStates* CMbufGobblerTierManagerMeshStates::NewL()
+	{
+	CMbufGobblerTierManagerMeshStates* self =
+			CMbufGobblerTierManagerMeshStates::NewLC();
+	CleanupStack::Pop(); // self;
+	return self;
+	}
+
+void CMbufGobblerTierManagerMeshStates::ConstructL()
+	{
+
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/group/bld.inf	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,24 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRJ_TESTEXPORTS
+../../data/dummy_static_with_mbufgobbler.cfg		z:/testdata/configs/mbufgobbler/dummy_static_with_mbufgobbler.cfg
+../scripts/te_mbufgobbler.script			z:/testdata/scripts/mbufgobbler/te_mbufgobbler.script
+
+../group/te_mbufgobbler.iby				/epoc32/rom/include/te_mbufgobbler.iby
+
+PRJ_TESTMMPFILES
+te_mbufgobbler.mmp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/group/te_mbufgobbler.iby	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,26 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __te_mbufgobbler_IBY__
+#define __te_mbufgobbler_IBY__
+
+#include "mbufgobblerproviders.iby"
+
+file=ABI_DIR\DEBUG_DIR\te_mbufgobbler.exe			Sys\Bin\te_mbufgobbler.exe
+
+data=EPOCROOT##epoc32\data\z\testdata\configs\mbufgobbler\dummy_static_with_mbufgobbler.cfg testdata\configs\mbufgobbler\dummy_static_with_mbufgobbler.cfg
+data=EPOCROOT##epoc32\data\z\testdata\scripts\mbufgobbler\te_mbufgobbler.script testdata\scripts\mbufgobbler\te_mbufgobbler.script
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/group/te_mbufgobbler.mmp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,49 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//  Mbufgobbler plugin for TEF. Sends/receives data, and ensures it went through the new layer
+//
+
+TARGET			te_mbufgobbler.exe
+
+// NetworkServices because it's using sockets.
+// WriteDeviceData because it needs to define pub/sub properties
+// NetworkControl for RConnection::Stop. Remove this (from here and test code) if stop is not required
+CAPABILITY 		NetworkServices WriteDeviceData NetworkControl 
+TARGETTYPE		exe
+UID				0x1000007A 0x10272F9D
+VENDORID		0x70000001
+
+SOURCEPATH		../src
+SOURCE			te_mbufgobblerserver.cpp
+SOURCE			te_mbufgobblertest.cpp
+
+
+USERINCLUDE		../inc
+USERINCLUDE		../../inc
+SYSTEMINCLUDE	/epoc32/include
+SYSTEMINCLUDE	/epoc32/include/test
+SYSTEMINCLUDE	/epoc32/include/libc
+//SYSTEMINCLUDE	/epoc32/include/nkern
+SYSTEMINCLUDE  /epoc32/include/platform
+SYSTEMINCLUDE  /epoc32/include/platform/comms-infras
+
+//LIBRARY			estlib.lib 
+LIBRARY			euser.lib
+LIBRARY			testexecuteutils.lib
+LIBRARY			testexecutelogclient.lib
+
+LIBRARY			esock.lib
+LIBRARY			insock.lib
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/inc/te_mbufgobblerserver.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,45 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//  Test server
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef __MBUFGOBBLER_SERVER_H__
+#define __MBUFGOBBLER_SERVER_H__
+
+#include <test/testexecuteserverbase.h>
+
+enum
+	{
+	KTestWorkerStart	= 1,
+	};
+
+	
+class CMbufGobblerTestServer : public CTestServer
+    {
+public:
+    typedef CTestServer ParentClass;
+    static CMbufGobblerTestServer* NewL();
+    virtual ~CMbufGobblerTestServer();
+    virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+    };
+
+	
+#endif // __MBUFGOBBLER_SERVER_H__
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/inc/te_mbufgobblertest.h	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,38 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//  Test steps
+//
+
+/**
+ @file
+ @internalComponent
+*/
+ 
+#ifndef __MBUFGOBBLER_TEST_H__
+#define __MBUFGOBBLER_TEST_H__
+
+#include <test/testexecutestepbase.h>
+#include "te_mbufgobblerserver.h"
+
+class CMbufGobblerStartupTest : public CTestStep
+	{
+public:
+	CMbufGobblerStartupTest(CMbufGobblerTestServer* aOwner);
+	~CMbufGobblerStartupTest();
+	virtual TVerdict doTestStepL();
+	};
+
+_LIT(KTestMbufGobblerStartupTest,"MbufGobblerStartupTest");
+
+#endif // __MBUFGOBBLER_TEST_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/scripts/te_mbufgobbler.script	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,24 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+
+LOAD_SUITE te_mbufgobbler
+
+RUN_SCRIPT z:\TestData\scripts\te_esock_test_unloadesockForced.script
+
+ced -i z:\testdata\configs\mbufgobbler\dummy_static_with_mbufgobbler.cfg
+
+RUN_SCRIPT z:\TestData\scripts\te_esock_test_loadesock.script
+
+RUN_TEST_STEP 50 te_mbufgobbler MbufGobblerStartupTest
+
+RUN_SCRIPT z:\TestData\scripts\te_esock_test_unloadesockForced.script
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/src/te_mbufgobblerserver.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,117 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//  Test server
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+
+#include <commdbconnpref.h>
+#include "te_mbufgobblerserver.h"
+#include "te_mbufgobblertest.h"
+
+_LIT(KServerName,"te_mbufgobbler");
+
+CMbufGobblerTestServer* CMbufGobblerTestServer::NewL()
+/**
+ * @return - Instance of the test server
+ * Called inside the MainL() function to create and start the
+ * CTestServer derived server.
+ */
+	{
+	CMbufGobblerTestServer * server = new (ELeave) CMbufGobblerTestServer();
+	CleanupStack::PushL(server);
+	
+	// Either use a StartL or ConstructL, the latter will permit
+	// Server Logging.
+
+	//server->StartL(KServerName); 
+	server->ConstructL(KServerName);	// from CTestBase
+	
+	CleanupStack::Pop(server);
+	return server;
+	}
+
+
+/*virtual*/ CMbufGobblerTestServer::~CMbufGobblerTestServer()
+	{
+	}
+
+
+// EKA2 much simpler
+// Just an E32Main and a MainL()
+LOCAL_C void MainL()
+/**
+ * Much simpler, uses the new Rendezvous() call to sync with the client
+ */
+	{
+	// Leave the hooks in for platform security
+#if (defined __DATA_CAGING__)
+	RProcess().DataCaging(RProcess::EDataCagingOn);
+	RProcess().SecureApi(RProcess::ESecureApiOn);
+#endif
+	CActiveScheduler* sched=NULL;
+	sched=new(ELeave) CActiveScheduler;
+	CActiveScheduler::Install(sched);
+	CMbufGobblerTestServer* server = NULL;
+	// Create the CTestServer derived server
+	TRAPD(err,server = CMbufGobblerTestServer::NewL());
+	if (!err)
+		{
+		// Sync with the client and enter the active scheduler
+		RProcess::Rendezvous(KErrNone);
+		sched->Start();
+		}
+	delete server;
+	delete sched;
+	}
+
+// Only a DLL on emulator for typhoon and earlier
+
+GLDEF_C TInt E32Main()
+/**
+ * @return - Standard Epoc error code on exit
+ */
+	{
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+	if (cleanup == NULL)
+		{
+		return KErrNoMemory;
+		}
+	TRAP_IGNORE(MainL());
+	delete cleanup;
+	return KErrNone;
+    }
+
+// Create a thread in the calling process
+// Emulator typhoon and earlier
+
+CTestStep* CMbufGobblerTestServer::CreateTestStep(const TDesC& aStepName)
+/**
+ * @return - A CTestStep derived instance
+ * Implementation of CTestServer pure virtual
+ */
+	{
+	CTestStep* testStep = NULL;
+
+	if (aStepName == KTestMbufGobblerStartupTest)
+		testStep = new CMbufGobblerStartupTest(this);
+//	else if (aStepName ==   (other step name)
+//		testStep = new  (other test step class)
+
+	return testStep;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/te_mbufgobbler/src/te_mbufgobblertest.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,126 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//  Test steps
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+
+#include <stdlib.h>
+#include <string.h>
+//#include <profiler.h>
+#include <test/testexecutelog.h>
+#include <in_sock.h>
+#include "te_mbufgobblertest.h"
+#include "mbufgobblertestflags.h"
+
+
+CMbufGobblerStartupTest::CMbufGobblerStartupTest(CMbufGobblerTestServer* /*aOwner*/)
+	{
+	SetTestStepName(KTestMbufGobblerStartupTest);
+	}
+
+CMbufGobblerStartupTest::~CMbufGobblerStartupTest()
+	{
+	}
+    
+TVerdict CMbufGobblerStartupTest::doTestStepL()
+	{
+#ifdef _DEBUG
+    SetTestStepResult( EFail );    
+    
+    User::LeaveIfError(MbufGobblerTestFlags::ActivateTestFlags());
+
+	INFO_PRINTF1(_L("  .. opening socket server.."));
+	RSocketServ sockServ;
+    User::LeaveIfError(sockServ.Connect());
+    CleanupClosePushL(sockServ);
+    
+	INFO_PRINTF1(_L("  .. opening connection.."));
+	RConnection conn;
+    User::LeaveIfError(conn.Open(sockServ));
+    CleanupClosePushL(conn);
+    User::LeaveIfError(conn.Start()); // start default connection (defined in commsdat)
+    
+	INFO_PRINTF1(_L("Checking Tier up.."));
+    TInt result = MbufGobblerTestFlags::GetResult(MbufGobblerTestFlags::KTierUp);
+    User::LeaveIfError(result);
+	INFO_PRINTF2(_L("Tier started ok [%d]."),result);
+    
+	INFO_PRINTF1(_L("Checking MCPr up.."));
+    result = MbufGobblerTestFlags::GetResult(MbufGobblerTestFlags::KMCPrUp);
+    User::LeaveIfError(result);
+	INFO_PRINTF2(_L("MCPr started ok [%d]."),result);
+
+	INFO_PRINTF1(_L("Checking CPr up.."));
+    result = MbufGobblerTestFlags::GetResult(MbufGobblerTestFlags::KCPrUp);
+    User::LeaveIfError(result);
+	INFO_PRINTF2(_L("CPr started ok [%d]."),result);
+
+	INFO_PRINTF1(_L("Checking SCPr up.."));
+    result = MbufGobblerTestFlags::GetResult(MbufGobblerTestFlags::KSCPrUp);
+    User::LeaveIfError(result);
+	INFO_PRINTF2(_L("SCPr started ok [%d]."),result);
+
+	INFO_PRINTF1(_L("Checking Binder up.."));
+    result = MbufGobblerTestFlags::GetResult(MbufGobblerTestFlags::KBind);
+    User::LeaveIfError(result);
+	INFO_PRINTF2(_L("Binder up ok [%d]."),result);
+
+	INFO_PRINTF1(_L("  .. opening socket.."));
+    RSocket sock;
+	User::LeaveIfError(sock.Open(sockServ,KAfInet,KSockDatagram,KProtocolInetUdp,conn));
+    CleanupClosePushL(sock);
+	
+	INFO_PRINTF1(_L("  .. sending a packet.."));
+	TBuf8<128> pkt;
+	pkt.SetLength(128);
+	TInetAddr dest;
+	dest.Input(_L("11.22.33.44"));
+	dest.SetPort(100);
+	TRequestStatus status;
+	sock.SendTo(pkt,dest,0,status);
+	User::WaitForRequest(status);
+	User::LeaveIfError(status.Int());
+	
+	INFO_PRINTF1(_L("Checking Send occurred.."));
+    result = MbufGobblerTestFlags::GetResult(MbufGobblerTestFlags::KBinderSend);
+    User::LeaveIfError(result);
+	INFO_PRINTF2(_L("Send occurred ok [%d]."),result);
+
+	INFO_PRINTF1(_L("Checking Receive occurred.."));
+    result = MbufGobblerTestFlags::GetResult(MbufGobblerTestFlags::KBinderReceive);
+    User::LeaveIfError(result);
+	INFO_PRINTF2(_L("Receive occurred ok [%d]."),result);
+
+	// Remove this call if its high capability requirement is a problem
+	INFO_PRINTF1(_L("  .. stopping connection.."));
+	User::LeaveIfError(conn.Stop());
+	
+    CleanupStack::Pop(); // RSocket close
+    CleanupStack::Pop(); // RConnection close
+    CleanupStack::Pop(); // RSocketServ close
+
+	// return success / failure
+    SetTestStepResult( EPass );
+#else // _DEBUG
+    SetTestStepResult( EPass );    
+	INFO_PRINTF1(_L("  .. results for this component only useful in UDEB mode."));
+#endif    
+	return TestStepResult();
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/updatecontentandfilenames.ini	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,36 @@
+[Name]
+# N.B. This must be capitalised correctly as you wish it to appear in the class names.
+Search=MbufGobbler
+Replace=CHANGEME
+
+
+# Uids to replace follow.
+#  Don't include the leading 0x (because we need to search and replace on resource filename).
+[DLL UId]
+Search=10272F97 
+Replace=CHANGEME
+
+[Tier Impl UId]
+Search=10272F98
+Replace=CHANGEME
+
+[MCPr Impl UId]
+Search=10272F99
+Replace=CHANGEME
+
+[CPr Impl UId]
+Search=10272F9A
+Replace=CHANGEME
+
+[SCPr Impl UId]
+Search=10272F9B
+Replace=CHANGEME
+
+[Flow Impl UId]
+Search=10272F9C
+Replace=CHANGEME
+
+[Test Plug-in UId + Test pub/sub UId]
+Search=10272F9D
+Replace=CHANGEME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/updatecontentandfilenames.py	Thu Sep 23 10:22:55 2010 +0100
@@ -0,0 +1,181 @@
+import ConfigParser
+##import io
+import sys
+import os
+import re
+import string
+import shutil
+
+active=1
+iniFileName='updatecontentandfilenames.ini'
+
+def AddSearchReplacePair(src,dst):
+	print "Will replace\t"+src+"  with\t"+dst
+	search_replace[src] = dst
+
+def DieAndWait(string):
+	print string
+	sys.exit()
+	
+def TranslateString(string):
+#	out = string
+#	print "\ntranslating: "+string
+	for src in search_replace.keys():
+		dest = search_replace[src]
+#		print "src: "+src+" dest: "+dest
+		string = string.replace(src,dest)
+#		print "out: "+out
+	return string
+
+	
+def RenameIfNecessary(root,file):
+	thisdest = TranslateString(file)
+	if(thisdest != file):
+		print "Renaming ["+file+"] to ["+thisdest+"]"
+		if active:
+			os.rename(os.path.join(root,file),os.path.join(root,thisdest))
+
+def CorrectFile(file):
+	# ini file is special
+	if(file.upper() == iniFileName.upper()):
+		CorrectIniFile(file)
+	else:
+		if(FileContainsSrc(file)):
+			print "Modifying ["+file+"]"
+			TranslateFile(file);
+
+def FileContainsSrc(file):
+#	print "looking in ["+file+"]"
+	f = open(file)
+	found = 0
+	for line in f:
+#		print "[[["+line
+		for src in search_replace.keys():
+			if(-1 != string.find(line,src)):
+				found = 1
+#				print "\n'"+src+"' found in "+line+".. so.."
+				break
+		if(found):
+			break
+	f.close()
+	return found
+
+def TranslateFile(file):
+	if (active == 0):
+		return
+	shutil.copyfile(file,file+".bak")
+	i = open(file+".bak")
+	o = open(file,"w+")
+	for line in i:
+		out=TranslateString(line)
+		o.write(out)
+	i.close()
+	o.close()
+
+def CorrectIniFile(file):
+	if (active == 0):
+		return
+	print "Correcting ini file "+file+" .."
+	shutil.copyfile(file,file+".bak")
+	i = open(file+".bak")
+	o = open(file,"w+")
+	searchfield=''
+	for line in i:
+		ms=re.match('^\s*Search\s*=\s*(.+)',line,flags=re.IGNORECASE)
+		mr=re.match('^\s*Replace\s*=\s*(.+)',line,flags=re.IGNORECASE)
+		if(ms):
+			if(searchfield != ''):
+				print "Multiple search sections found before a replace. fix config file manually"
+				sys.exit()
+			searchfield = ms.group(1)
+		elif(mr):
+			if(searchfield == ''):
+				print "Replace section found before search section. fix config file manually"
+				sys.exit()
+			o.write("Search="+mr.group(1)+"\nReplace=CHANGEME\n")
+			searchfield=''
+		else:
+			o.write(line)
+	i.close()
+	o.close()
+
+
+
+
+config = ConfigParser.ConfigParser()
+config.readfp(open(iniFileName))
+
+print "1. Figuring out search/replace pairs.."
+
+search_replace = {} # empty map
+
+for section in config.sections():
+	src = config.get(section,'Search')
+	if(src == ""):
+		DieAndWait("Error in ini file section '"+section+"': Must specify Search field")
+	if(src in search_replace):
+		DieAndWait("Error in ini file section '"+section+"': Search field '"+src+"' specified more than once")
+	dest = config.get(section,'Replace')
+	if(dest == ""):
+		DieAndWait("Error in ini file section '"+section+"': Must specify Replace field")
+	if(dest == "CHANGEME"):
+		DieAndWait("Error in ini file section '"+section+"': Must specify value to replace '"+src+"' with")
+	
+	AddSearchReplacePair(src,dest)
+	
+	# deal with upper / lower case variants
+	ucsrc = src.upper()
+	lcsrc = src.lower()
+	lcapsrc = ucsrc[:1]+lcsrc[1:]
+	ucdest = dest.upper()
+	lcdest = dest.lower()
+	lcapdest = ucdest[:1]+lcdest[1:]
+
+	if(ucsrc != src):
+		AddSearchReplacePair(ucsrc,ucdest)
+	if(lcsrc != src):
+		AddSearchReplacePair(lcsrc,lcdest)
+	if(lcapsrc != src and lcapsrc != lcsrc):
+		AddSearchReplacePair(lcapsrc,lcapdest)
+
+print "-----"
+print "2. Scanning for read-only files.."
+  
+readOnlyFiles=0;
+for root, dirs, files in os.walk("",topdown=False):
+	for file in files:
+#		print "Testing readable  : "+root+file
+		try:
+			fh = open(os.path.join(root,file),"a+")
+			fh.close()
+		except:
+			print "Read-only file detected: "+os.path.join(root,file)
+			readOnlyFiles=1
+
+if(readOnlyFiles):
+	print "Can't operate with read-only files present."
+	sys.exit()
+else:
+	print "No read-only files present. Proceeding to search/replace.."
+
+
+print "-----"
+print "3. Renaming files and folders.."
+
+for root, dirs, files in os.walk("",topdown=False):
+#	print "ROOT: "+root
+	for dir in dirs:
+		RenameIfNecessary(root,dir)
+	for file in files:
+		RenameIfNecessary(root,file)
+
+
+print "-----"
+print "4. Search/replacing in files.."
+
+for root, dirs, files in os.walk("",topdown=False):
+	for file in files:
+		CorrectFile(os.path.join(root,file))
+
+print "-----"
+print "Done."
--- a/commsfwutils/commsbufs/mbufmgr/src/mb_chn.cpp	Mon Sep 13 15:06:46 2010 +0100
+++ b/commsfwutils/commsbufs/mbufmgr/src/mb_chn.cpp	Thu Sep 23 10:22:55 2010 +0100
@@ -575,8 +575,8 @@
 #endif
     TInt splitBufOffset;
     TInt splitBufRemainder;
-    RMBuf* splitBuf;
-    RMBuf* splitBufPrev;
+    RMBuf* splitBuf = NULL;
+    RMBuf* splitBufPrev = NULL;
     
     if(!Goto(aOffset, splitBuf, splitBufOffset, splitBufRemainder, splitBufPrev))
         {
Binary file commsprocess/commsrootserverconfig/doc_pub/Comms Process Startup-Config Design Document.doc has changed
Binary file commsprocess/commsrootserverconfig/doc_pub/Root Server API Reference.doc has changed
Binary file commsprocess/commsrootserverconfig/doc_pub/Root Server Design Document.doc has changed
Binary file datacommsserver/esockserver/doc_pub/Design for Flexible Comms Stack.doc has changed
Binary file datacommsserver/esockserver/doc_pub/ESock_Design.doc has changed
Binary file datacommsserver/esockserver/doc_pub/ESock_HowTo.doc has changed
Binary file datacommsserver/esockserver/doc_pub/HOWTO install an esock protocol after market.doc has changed
Binary file datacommsserver/esockserver/doc_pub/NonSeamlessBearerMobility_ClientSideAPIs.doc has changed
Binary file datacommsserver/esockserver/doc_pub/NonSeamlessBearerMobility_ServerSideAPIs.doc has changed
Binary file datacommsserver/esockserver/doc_pub/RConnection API for Connection Management.doc has changed
Binary file datacommsserver/esockserver/doc_pub/RConnection_API.doc has changed
Binary file datacommsserver/esockserver/doc_pub/RSubConnection_API.doc has changed
--- a/datacommsserver/esockserver/inc/es_availability.h	Mon Sep 13 15:06:46 2010 +0100
+++ b/datacommsserver/esockserver/inc/es_availability.h	Thu Sep 23 10:22:55 2010 +0100
@@ -120,11 +120,11 @@
 	                                 TUint aScoreDropsBelow = 0,
 	                                 TUint aScoreIncreasesByMoreThan = 0,
 	                                 TUint aScoreDecreasesByMoreThan = 0)
-	:	iFlags(aAnyChange? EAnyChange : ENotAnyChange),
-		iScoreExceeds(aScoreExceeds),
+	:	iScoreExceeds(aScoreExceeds),
 		iScoreDropsBelow(aScoreDropsBelow),
 		iScoreIncreasesByMoreThan(aScoreIncreasesByMoreThan),
-		iScoreDecreasesByMoreThan(aScoreDecreasesByMoreThan)
+		iScoreDecreasesByMoreThan(aScoreDecreasesByMoreThan),
+		iFlags(aAnyChange? EAnyChange : ENotAnyChange)
 		{
 		__ASSERT_DEBUG(aScoreExceeds >= TAvailabilityStatus::EMinAvailabilityScore && aScoreExceeds <= TAvailabilityStatus::EMaxAvailabilityScore, User::Panic(KSpecAssert_ESock_Availabili, 2));
 		__ASSERT_DEBUG(aScoreDropsBelow >= TAvailabilityStatus::EMinAvailabilityScore && aScoreDropsBelow <= TAvailabilityStatus::EMaxAvailabilityScore, User::Panic(KSpecAssert_ESock_Availabili, 3));
@@ -139,11 +139,11 @@
 	@see TChangeScopeFlags.
 	*/
 	TAvailabilitySubscriptionOptions(TChangeScopeFlags aFlags)
-	:	iFlags(aFlags),
-		iScoreExceeds(0),
+	:	iScoreExceeds(0),
 		iScoreDropsBelow(0),
 		iScoreIncreasesByMoreThan(0),
-		iScoreDecreasesByMoreThan(0)
+		iScoreDecreasesByMoreThan(0),
+		iFlags(aFlags)
 		{
 		ASSERT(aFlags != ENotAnyChange); //illegal to ask for thersholds without specifying them.
 		}
--- a/datacommsserver/esockserver/test/TE_ESock/scriptfiles/te_esock_wlan.xml	Mon Sep 13 15:06:46 2010 +0100
+++ b/datacommsserver/esockserver/test/TE_ESock/scriptfiles/te_esock_wlan.xml	Thu Sep 23 10:22:55 2010 +0100
@@ -734,8 +734,8 @@
 		<IpGateway>0.0.0.0</IpGateway>
 		<IpAddrFromServer>TRUE</IpAddrFromServer>
 		<IpAddr>0.0.0.0</IpAddr>
-		<IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
-		<IpNameServer1>10.29.23.7</IpNameServer1>
+		<IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+		<IpNameServer1>0.0.0.0</IpNameServer1>
 		<IpNameServer2>0.0.0.0</IpNameServer2>
 		<Ip6DnsAddrFromServer>TRUE</Ip6DnsAddrFromServer>
 		<Ip6NameServer1>0:0:0:0:0:0:0:0</Ip6NameServer1>
@@ -751,9 +751,9 @@
         <IpGateway>194.72.6.1</IpGateway>
         <IpAddr>192.168.0.100</IpAddr>
         <IpAddrFromServer>TRUE</IpAddrFromServer>
-        <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
-        <IpNameServer1>194.72.6.51</IpNameServer1>
-        <IpNameServer2>194.72.6.52</IpNameServer2>
+        <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+        <IpNameServer1>0.0.0.0</IpNameServer1>
+        <IpNameServer2>0.0.0.0</IpNameServer2>
     </LANService>
     <LANService operation="add">
         <Name>Ethernet (IPv6 static DNS)</Name>
Binary file datacommsserver/esockserver/test/TE_EsockTestSteps/doc_pub/TE_EsockTestSteps_Test Specification.doc has changed
Binary file datacommsserver/esockserver/test/TE_RConnection/doc_pub/GT0429 - PDP Contention Management Test Specification.doc has changed
Binary file datacommsserver/esockserver/test/TE_RConnection/doc_pub/SGL.GT0253.202 Non-Seamless Bearer Mobility - Test Spec.doc has changed
Binary file datacommsserver/esockserver/test/TE_RConnection/doc_pub/SGL.GT0253.220 Data Monitoring - Test Specification.doc has changed
Binary file datacommsserver/esockserver/test/TE_RConnection/doc_pub/TE_RConnection_Test_Specification.doc has changed
Binary file datacommsserver/esockserver/test/TE_RConnectionServ/doc_pub/RConnectionServ API test specification.doc has changed
Binary file datacommsserver/esockserver/test/TE_RSubconnection/doc_pub/TE_RSubConnection_Test_Specification.doc has changed
Binary file serialserver/c32serialserver/Test/TE_C32/doc_pub/C32_How_to_test.doc has changed
Binary file serialserver/c32serialserver/Test/TE_C32/doc_pub/C32_Test_Specification.doc has changed
Binary file serialserver/c32serialserver/Test/TE_C32/doc_pub/C32_Unit_Test_Specification.doc has changed
Binary file serialserver/c32serialserver/Test/te_C32Performance/doc_pub/C32 Performance Test Design.doc has changed
Binary file serialserver/c32serialserver/doc_pub/C32API.doc has changed
Binary file serialserver/c32serialserver/doc_pub/C32_Design_Document.doc has changed
Binary file serialserver/c32serialserver/doc_pub/C32_Design_Document_v1.doc has changed
Binary file serialserver/c32serialserver/doc_pub/C32_Heap_Check_Migration.doc has changed
Binary file serialserver/c32serialserver/doc_pub/How_To_configure_C32.doc has changed
--- a/serialserver/c32serialserver/group/bld.inf	Mon Sep 13 15:06:46 2010 +0100
+++ b/serialserver/c32serialserver/group/bld.inf	Thu Sep 23 10:22:55 2010 +0100
@@ -35,7 +35,7 @@
 
 c32.iby	       /epoc32/rom/include/c32.iby
 
-../documentation/C32API.doc    /epoc32/engdoc/c32/c32api.doc
+../doc_pub/C32API.doc    /epoc32/engdoc/c32/c32api.doc
 
 
 PRJ_TESTEXPORTS
--- a/serialserver/c32serialserver/group/ser-comms_c32.mrp	Mon Sep 13 15:06:46 2010 +0100
+++ b/serialserver/c32serialserver/group/ser-comms_c32.mrp	Thu Sep 23 10:22:55 2010 +0100
@@ -1,7 +1,7 @@
 component	ser-comms_c32
 source	\sf\os\commsfw\serialserver\c32serialserver\bwins
 source	\sf\os\commsfw\serialserver\c32serialserver\CCOMM
-source	\sf\os\commsfw\serialserver\c32serialserver\documentation
+source	\sf\os\commsfw\serialserver\c32serialserver\doc_pub
 source	\sf\os\commsfw\serialserver\c32serialserver\eabi
 source	\sf\os\commsfw\serialserver\c32serialserver\group
 source	\sf\os\commsfw\serialserver\c32serialserver\INC
@@ -12,7 +12,7 @@
 
 exports	\sf\os\commsfw\serialserver\c32serialserver\group
 
--export_file	\sf\os\commsfw\serialserver\c32serialserver\documentation\C32API.doc	\epoc32\engdoc\c32\C32API.doc
+-export_file	\sf\os\commsfw\serialserver\c32serialserver\doc_pub\C32API.doc	\epoc32\engdoc\c32\C32API.doc
 
 notes_source	\component_defs\release.src
 
Binary file serialserver/c32serialserverdocs/doc_pub/SerComms_Subsystem_Architectural_Description.doc has changed
Binary file serialserver/c32serialserverdocs/doc_pub/SerComms_Subsystem_Functional_Specification.doc has changed