Revision: 201010 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 15 Mar 2010 12:46:10 +0200
branchRCL_3
changeset 11 db85996de7c4
parent 10 c64cefac6e99
child 12 e9cc36e353d4
Revision: 201010 Kit: 201010
linklayercontrol/networkinterfacemgr/agentprcore/src/agentscpractivities.cpp
linklayercontrol/networkinterfacemgr/agentprcore/src/agentscprstates.cpp
linklayercontrol/networkinterfacemgr/group/agentpr.mmp
linklayercontrol/networkinterfacemgr/group/agentprcore.mmp
networkcontrol/ipnetworklayer/inc/IPProtoCPR.h
networkcontrol/ipnetworklayer/inc/IPProtoCprStates.h
networkcontrol/ipnetworklayer/src/IPProtoCPR.cpp
networkcontrol/ipnetworklayer/src/IPProtoCprStates.cpp
networkcontrol/iptransportlayer/src/policyrequeststates.cpp
networksecurity/ipsec/ipsec6/include/crypto.h
networksecurity/ipsec/ipsec6/src/sa_crypt.cpp
networksecurity/ipsec/ipseccrypto/inc/ipseccrypto.h
networksecurity/ipsec/ipseccrypto/src/ipseccrypto_prt.cpp
networksecurity/tlsprovider/Test/group/TlsProvtestServer.mmp
networksecurity/tlsprovider/group/swtlstokentypeplugin.mmp
networksecurity/tlsprovider/group/tlsprovider.mmp
networksecurity/tlsprovider/inc/tlsprovider.h
networksecurity/tlsprovider/source/tlsprovider/CTlsProvider.cpp
tcpiputils/dhcp/te_unittest/dhcpservtest.mmp
--- a/linklayercontrol/networkinterfacemgr/agentprcore/src/agentscpractivities.cpp	Fri Mar 12 15:50:43 2010 +0200
+++ b/linklayercontrol/networkinterfacemgr/agentprcore/src/agentscpractivities.cpp	Mon Mar 15 12:46:10 2010 +0200
@@ -24,6 +24,7 @@
 //#include <comms-infras/corescprstates.h>
 #include <comms-infras/corescpractivities.h>
 #include <comms-infras/ss_nodemessages_dataclient.h>
+#include <elements/nm_messages_child.h>
 
 #include "agentscprstates.h"
 #include "agentscpractivities.h"
@@ -94,17 +95,51 @@
 NODEACTIVITY_END()
 }
 
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+namespace AgentSCprParamRequestActivity
+{
+DECLARE_DEFINE_NODEACTIVITY(ECFActivityParamRequest, AgentSCprParamRequest, TCFScpr::TSetParamsRequest)
+    FIRST_NODEACTIVITY_ENTRY(PRStates::TAwaitingParamRequest, CoreNetStates::TNoTagOrBearerPresent)
+    NODEACTIVITY_ENTRY(CoreNetStates::KBearerPresent, PRStates::TPassToServiceProvider, CoreNetStates::TAwaitingParamResponse, MeshMachine::TTag<CoreNetStates::KBearerPresent>)
+    LAST_NODEACTIVITY_ENTRY(CoreNetStates::KBearerPresent, PRStates::TStoreParamsAndPostToOriginators)
+    LAST_NODEACTIVITY_ENTRY(KNoTag, PRStates::TRespondWithCurrentParams)
+NODEACTIVITY_END()
+}
+#endif //#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+namespace AgentSCprDestroyActivity
+{
+//Overridden destroy for cleaning up the agent if its still about
+DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityDestroy, AgentSCprDestroy, Messages::TEChild::TDestroy, CoreActivities::CDestroyActivity::New)
+	FIRST_NODEACTIVITY_ENTRY(MeshMachine::TAwaitingDestroy, CoreActivities::CDestroyActivity::TNoTagBlockedByActivitiesOrLeavingDataClient)
+
+    ROUTING_NODEACTIVITY_ENTRY(KNoTag, AgentSCprStates::TNoTagOrProviderStopped)
+    NODEACTIVITY_ENTRY(KNoTag, AgentSCprStates::TStopAgent, AgentSCprStates::TAwaitingAgentDown, MeshMachine::TTag<CoreNetStates::KProviderStopped>)
+    ROUTING_NODEACTIVITY_ENTRY(CoreNetStates::KProviderStopped, CoreStates::TNoTagOrNoClients)
+		
+    //The node mustn't go out of scope with clients present. The node must get rid of them first.
+    NODEACTIVITY_ENTRY(KNoTag, CoreActivities::CDestroyActivity::TMakeClientsLeaveOrProcessClientLeave, CoreStates::TAwaitingClientLeave,  CoreActivities::CDestroyActivity::TNoTagOrNoTagBackwards)
+    THROUGH_NODEACTIVITY_ENTRY(KNoTag, CoreActivities::CDestroyActivity::TProcessClientLeave, TTag<CoreNetStates::KNoClients>)
+
+    THROUGH_NODEACTIVITY_ENTRY(CoreNetStates::KNoClients, PRStates::TProcessDestroy, MeshMachine::TNoTag)
+ 	NODEACTIVITY_ENTRY(KNoTag, MeshMachine::TDoNothing, MeshMachine::TAwaitingLeaveComplete, CoreActivities::CDestroyActivity::TNoTagOrNoTagBackwards)
+ 	LAST_NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendClientLeavingAndRemoveControlProvider)
+NODEACTIVITY_END()
+}
 
 // Activity Map
 namespace AgentSCprActivities
 {
 DEFINE_EXPORT_ACTIVITY_MAP(agentSCprActivities)
+   ACTIVITY_MAP_ENTRY(AgentSCprDestroyActivity, AgentSCprDestroy)
    ACTIVITY_MAP_ENTRY(AgentSCprNotificationFromFlowActivity, AgentSCprNotificationFromFlow)
    ACTIVITY_MAP_ENTRY(AgentSCprAuthenticationActivity, AgentSCprAuthentication)
    ACTIVITY_MAP_ENTRY(AgentSCprDataClientGoneDownActivity, AgentSCprDataClientGoneDown)
    ACTIVITY_MAP_ENTRY(AgentSCprStartActivity, AgentSCprStart)
    ACTIVITY_MAP_ENTRY(AgentSCprStopActivity, AgentSCprStop)
    ACTIVITY_MAP_ENTRY(AgentSCprDataClientStoppedActivity, AgentSCprDataClientStopped)
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+   ACTIVITY_MAP_ENTRY(AgentSCprParamRequestActivity, AgentSCprParamRequest)
+#endif //#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 ACTIVITY_MAP_END_BASE(SCprActivities, coreSCprActivities)
 }
 
--- a/linklayercontrol/networkinterfacemgr/agentprcore/src/agentscprstates.cpp	Fri Mar 12 15:50:43 2010 +0200
+++ b/linklayercontrol/networkinterfacemgr/agentprcore/src/agentscprstates.cpp	Mon Mar 15 12:46:10 2010 +0200
@@ -235,7 +235,8 @@
         }
     else
         {
-        // TODO: SCpr Panic - unexpected message
+		// coming from destroy
+        reason = KErrAbort;
         }
 
     iContext.Node().SetActivityIdForAdapter(iContext.iNodeActivity->ActivityId());
--- a/linklayercontrol/networkinterfacemgr/group/agentpr.mmp	Fri Mar 12 15:50:43 2010 +0200
+++ b/linklayercontrol/networkinterfacemgr/group/agentpr.mmp	Mon Mar 15 12:46:10 2010 +0200
@@ -44,7 +44,6 @@
 
 USERINCLUDE                ../agentpr/inc
 USERINCLUDE                ../agentprcore/inc
-USERINCLUDE                ../../../../commsfw/datacommsserver/esockserver/inc
 
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
--- a/linklayercontrol/networkinterfacemgr/group/agentprcore.mmp	Fri Mar 12 15:50:43 2010 +0200
+++ b/linklayercontrol/networkinterfacemgr/group/agentprcore.mmp	Mon Mar 15 12:46:10 2010 +0200
@@ -47,8 +47,6 @@
 
 USERINCLUDE                 ../inc
 USERINCLUDE                 ../agentprcore/inc
-USERINCLUDE                 ../../../../commsfw/datacommsserver/esockserver/inc
-
 
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
--- a/networkcontrol/ipnetworklayer/inc/IPProtoCPR.h	Fri Mar 12 15:50:43 2010 +0200
+++ b/networkcontrol/ipnetworklayer/inc/IPProtoCPR.h	Mon Mar 15 12:46:10 2010 +0200
@@ -47,7 +47,7 @@
 	class TLinkDown;
 	class TLinkUp;
 	class TStoreAndForwardStateChange;
-	
+	class TSendStoppedAndGoneDown;
     }
 
 namespace ESock
@@ -91,6 +91,7 @@
 friend class IpProtoCpr::TLinkDown;
 friend class IpProtoCpr::TLinkUp;
 friend class IpProtoCpr::TStoreAndForwardStateChange;
+friend class IpProtoCpr::TSendStoppedAndGoneDown;
 friend class CLinkCprExtensionApi;
 
 
@@ -125,6 +126,9 @@
 	virtual void EnumerateSubConnections(ESock::CLegacyEnumerateSubConnectionsResponder*& aResponder);
 	virtual void GetSubConnectionInfo(TSubConnectionInfo &aInfo);
 	
+    TInt iProvisionError;
+    ESock::TDataMonitoringSubConnProvisioningInfo* iSubConnProvisioningInfo;
+	
 protected:
 	enum TTimerType { ETimerUnknown, ETimerShort, ETimerMedium, ETimerLong, ETimerImmediate, ETimerMax };
 
--- a/networkcontrol/ipnetworklayer/inc/IPProtoCprStates.h	Fri Mar 12 15:50:43 2010 +0200
+++ b/networkcontrol/ipnetworklayer/inc/IPProtoCprStates.h	Mon Mar 15 12:46:10 2010 +0200
@@ -41,9 +41,17 @@
 	virtual void DoL();
 DECLARE_SMELEMENT_FOOTER( TStoreProvision )
 
-
+DECLARE_SMELEMENT_HEADER( TSendStoppedAndGoneDown, MeshMachine::TStateTransition<IpProtoCpr::TContext>, NetStateMachine::MStateTransition, IpProtoCpr::TContext )
+	virtual void DoL();
+DECLARE_SMELEMENT_FOOTER( TSendStoppedAndGoneDown )
 
+DECLARE_SMELEMENT_HEADER( TProvisionActivation, MeshMachine::TStateTransition<IpProtoCpr::TContext>, NetStateMachine::MStateTransition, IpProtoCpr::TContext )
+    virtual void DoL();
+DECLARE_SMELEMENT_FOOTER( TProvisionActivation )
 
+DECLARE_SMELEMENT_HEADER( THandleProvisionError, MeshMachine::TStateTransition<IpProtoCpr::TContext>, NetStateMachine::MStateTransition, IpProtoCpr::TContext )
+    virtual void DoL();
+DECLARE_SMELEMENT_FOOTER( THandleProvisionError )
 
 
 DECLARE_SMELEMENT_HEADER( TStoreAndFilterDeprecatedAndForwardStateChange, MeshMachine::TStateTransition<IpProtoCpr::TContext>, NetStateMachine::MStateTransition, IpProtoCpr::TContext )
--- a/networkcontrol/ipnetworklayer/src/IPProtoCPR.cpp	Fri Mar 12 15:50:43 2010 +0200
+++ b/networkcontrol/ipnetworklayer/src/IPProtoCPR.cpp	Mon Mar 15 12:46:10 2010 +0200
@@ -75,7 +75,9 @@
 {
 DECLARE_DEFINE_NODEACTIVITY(ECFActivityStoreProvision, IPProtoCprProvision, TCFDataClient::TProvisionConfig)
 	FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingProvision, MeshMachine::TNoTag)
+	THROUGH_NODEACTIVITY_ENTRY(KNoTag, IpProtoCpr::TProvisionActivation, MeshMachine::TNoTagOrErrorTag)
 	LAST_NODEACTIVITY_ENTRY(KNoTag, IpProtoCpr::TStoreProvision)
+	LAST_NODEACTIVITY_ENTRY(KErrorTag, IpProtoCpr::THandleProvisionError)
 NODEACTIVITY_END()
 }
 
@@ -220,6 +222,18 @@
 NODEACTIVITY_END()
 }
 
+namespace IPProtoCprStopActivity
+{
+DECLARE_DEFINE_CUSTOM_NODEACTIVITY(ECFActivityStop, IPProtoCprStop, TCFServiceProvider::TStop, MeshMachine::CNodeRetryActivity::NewL)
+    FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingStop, CoreNetStates::TActiveOrNoTagBlockedByBindTo)
+	THROUGH_NODEACTIVITY_ENTRY(KActiveTag, CoreNetStates::TCancelDataClientStart, MeshMachine::TNoTag)
+	NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TStopSelf, CoreNetStates::TAwaitingDataClientStopped, CoreNetStates::TNoTagOrNoBearer)
+	NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendStop, CoreNetStates::TAwaitingStopped, MeshMachine::TNoTag)
+	NODEACTIVITY_ENTRY(KNoTag, CoreNetStates::TSendClientLeavingRequestToServiceProvider, MeshMachine::TAwaitingLeaveComplete, TTag<CoreNetStates::KNoBearer>)
+	LAST_NODEACTIVITY_ENTRY(CoreNetStates::KNoBearer, IpProtoCpr::TSendStoppedAndGoneDown)
+NODEACTIVITY_END()
+}
+
 namespace IPProtoCprActivities
 {
 DECLARE_DEFINE_ACTIVITY_MAP(activityMap)
@@ -235,6 +249,7 @@
 	ACTIVITY_MAP_ENTRY(PRDataClientIdleActivity, PRDataClientIdle)
 	ACTIVITY_MAP_ENTRY(IPProtoCprClientLeaveActivity, IPProtoCprClientLeave)
 	ACTIVITY_MAP_ENTRY(IPProtoCprIoctlActivity, IPProtoCprIoctl)
+    ACTIVITY_MAP_ENTRY(IPProtoCprStopActivity, IPProtoCprStop)
 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 	ACTIVITY_MAP_ENTRY(IPProtoCprNotificationActivity, IPProtoCprNotification)
 #endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
--- a/networkcontrol/ipnetworklayer/src/IPProtoCprStates.cpp	Fri Mar 12 15:50:43 2010 +0200
+++ b/networkcontrol/ipnetworklayer/src/IPProtoCprStates.cpp	Mon Mar 15 12:46:10 2010 +0200
@@ -37,12 +37,29 @@
 #include <comms-infras/simpleselectorbase.h>
 #include <commsdattypesv1_1_partner.h>
 #include <es_prot_internal.h>
+#include <elements/nm_messages_errorrecovery.h>
 
 using namespace Messages;
 using namespace MeshMachine;
 using namespace IpProtoCpr;
 using namespace ESock;
 
+DEFINE_SMELEMENT(TProvisionActivation, NetStateMachine::MStateTransition, IpProtoCpr::TContext)
+void TProvisionActivation::DoL()
+    {
+    CIPProtoConnectionProvider& node = iContext.Node();
+    
+    //Trap if memory allocation fails
+    TRAP( node.iProvisionError, node.iSubConnProvisioningInfo = new (ELeave) TDataMonitoringSubConnProvisioningInfo(NULL, NULL));
+    }
+
+DEFINE_SMELEMENT(THandleProvisionError, NetStateMachine::MStateTransition, IpProtoCpr::TContext)
+void THandleProvisionError::DoL()
+    {
+    //Set node error
+    iContext.iNodeActivity->SetError(iContext.Node().iProvisionError);
+    }
+
 DEFINE_SMELEMENT(TStoreProvision, NetStateMachine::MStateTransition, IpProtoCpr::TContext)
 void TStoreProvision::DoL()
 	{
@@ -83,10 +100,13 @@
     	// state and one in an active state.  The access point config cannot presently hold provisioning information
     	// specific to an SCPR instance, so it is allocated and managed here in the CPR as a shared entity.  Only
     	// one SCPR instance should be using this at a time, however.
-    	TDataMonitoringSubConnProvisioningInfo* subConnProvisioningInfo = new (ELeave) TDataMonitoringSubConnProvisioningInfo(NULL, NULL);
-    	CleanupStack::PushL(subConnProvisioningInfo);
-    	node.iNodeLocalExtensions.AppendExtensionL(subConnProvisioningInfo);
-    	CleanupStack::Pop(subConnProvisioningInfo);
+    	
+    	//this allocation taken care in previous activity entry
+    	//just append here
+    	//TDataMonitoringSubConnProvisioningInfo* subConnProvisioningInfo = new (ELeave) TDataMonitoringSubConnProvisioningInfo(NULL, NULL);
+    	CleanupStack::PushL(node.iSubConnProvisioningInfo);
+    	node.iNodeLocalExtensions.AppendExtensionL(node.iSubConnProvisioningInfo);
+    	CleanupStack::Pop(node.iSubConnProvisioningInfo);
     	
        	// The CLinkCprExtensionApi may have been added previously if this is a reconnect scenario
     	// We add it again in this new override of the extensions, if the old container is fully superceded
@@ -122,6 +142,85 @@
 		}
 	}
 
+DEFINE_SMELEMENT(TSendStoppedAndGoneDown, NetStateMachine::MStateTransition, IpProtoCpr::TContext)
+void TSendStoppedAndGoneDown::DoL()
+	{
+	ASSERT(iContext.iNodeActivity);
+
+	// stop has been caused by timer expiry, remove self from originators list, because we
+	// are not waiting for TStopped and in certain situations it would arrive after the node has been
+	// destroyed
+	if (iContext.Node().iTimerExpired)
+		{
+		TInt selfidx = iContext.iNodeActivity->FindOriginator(iContext.Node().SelfInterface());
+		ASSERT(selfidx != KErrNotFound);
+		iContext.iNodeActivity->RemoveOriginator(selfidx);
+		}
+		
+	TInt stopCode = KErrCancel;
+    MeshMachine::CNodeActivityBase* activity = iContext.iNodeActivity;
+    
+    if (activity && activity->Error() != KErrNone)
+        {
+        stopCode = activity->Error();
+        activity->SetError(KErrNone);
+        }
+
+	// Could be TStop, TStopped or TDataClientStopped (usually TStopped)
+	if  ( (iContext.iMessage.IsMessage<TCFServiceProvider::TStopped>()) ||
+		(iContext.iMessage.IsMessage<TCFServiceProvider::TStop>()) ||
+		(iContext.iMessage.IsMessage<TCFDataClient::TStopped>()) ||
+		(iContext.iMessage.IsMessage<TCFDataClient::TStop>()) )
+		{
+		stopCode = static_cast<const Messages::TSigNumber&>(iContext.iMessage).iValue;
+		}
+	else if ( (iContext.iMessage.IsMessage<TCFControlClient::TGoneDown>()) ||
+		(iContext.iMessage.IsMessage<TCFControlProvider::TDataClientGoneDown>()) )
+		{
+		stopCode = static_cast<const Messages::TSigNumberNumber&>(iContext.iMessage).iValue1;
+		}
+	else if ( iContext.iMessage.IsMessage<TEErrorRecovery::TErrorRecoveryResponse>() )
+		{
+		// Action must be propagate or there is no error code (your activity flow is faulty)!
+		const Messages::TSigErrResponse& sig = static_cast<const Messages::TSigErrResponse&>(iContext.iMessage);
+		__ASSERT_DEBUG(sig.iErrResponse.iAction == Messages::TErrResponse::EPropagate, User::Invariant());
+   		stopCode = sig.iErrResponse.iError;
+		}
+
+	TCFServiceProvider::TStopped msg(stopCode);
+	iContext.iNodeActivity->PostToOriginators(msg);
+
+    const TProviderInfo& providerInfo = static_cast<const TProviderInfoExt&>(iContext.Node().AccessPointConfig().FindExtensionL(
+            STypeId::CreateSTypeId(TProviderInfoExt::EUid, TProviderInfoExt::ETypeId))).iProviderInfo;
+
+	TCFControlClient::TGoneDown goneDown(stopCode, providerInfo.APId());
+	TClientIter<TDefaultClientMatchPolicy> iter = iContext.Node().GetClientIter<TDefaultClientMatchPolicy>(TClientType(TCFClientType::ECtrl));
+    CNodeActivityBase* startActivity = iContext.Node().FindActivityById(ECFActivityStart);
+
+    for (TInt i = 0; iter[i]; i++)
+		{
+		//Send TGoneDown to every Ctrl client except
+		// * the originator (who would be recieving TStopped)
+		// * originators of the start activity (these will be errored separately)
+        if (iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) >= 0)
+            {
+            continue; // ControlClient is a Stop originator
+            }
+		
+        // So far the control client is not a Stop originator
+        if (startActivity == NULL || startActivity->FindOriginator(*iter[i]) == KErrNotFound)
+			{
+            // ControlClient is not a Start originator
+			iter[i]->PostMessage(TNodeCtxId(iContext.ActivityId(), iContext.NodeId()), goneDown);
+			}
+		}
+
+	if (iContext.iNodeActivity)
+    	{
+        iContext.iNodeActivity->SetError(KErrNone);
+    	}
+	}
+
 DEFINE_SMELEMENT(TAwaitingDataMonitoringNotification, NetStateMachine::MState, IpProtoCpr::TContext)
 TBool TAwaitingDataMonitoringNotification::Accept()
 	{
--- a/networkcontrol/iptransportlayer/src/policyrequeststates.cpp	Fri Mar 12 15:50:43 2010 +0200
+++ b/networkcontrol/iptransportlayer/src/policyrequeststates.cpp	Mon Mar 15 12:46:10 2010 +0200
@@ -21,6 +21,7 @@
 #include <comms-infras/ss_coreprstates.h>
 
 #include <comms-infras/ss_nodemessages_dataclient.h>
+#include <comms-infras/ss_nodemessages_serviceprovider.h>
 #include <comms-infras/ss_nodemessages_rejoiningprovider.h>
 #include <comms-infras/ss_nodemessages_subconn.h>
 #include <comms-infras/ss_nodemessages_scpr.h>
@@ -152,7 +153,7 @@
 	if(cpr)
 		{	
 		iContext.iNodeActivity->PostRequestTo(*cpr,
-			TCFDataClient::TBindToComplete(iContext.iNodeActivity->Error()).CRef());
+			TCFServiceProvider::TBindToComplete(iContext.iNodeActivity->Error()).CRef());
  		}
 	}
 
--- a/networksecurity/ipsec/ipsec6/include/crypto.h	Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/ipsec/ipsec6/include/crypto.h	Mon Mar 15 12:46:10 2010 +0200
@@ -84,9 +84,9 @@
 #include <e32base.h>
 #include <es_prot.h>
 
-#include "cryptospidef.h"
+#include <cryptospi/cryptospidef.h>
 #include "cryptosymmetriccipherapi.h"
-#include "cryptomacapi.h"
+#include <cryptospi/cryptomacapi.h>
 
 /**
 // The protocol number for a library.
--- a/networksecurity/ipsec/ipsec6/src/sa_crypt.cpp	Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/ipsec/ipsec6/src/sa_crypt.cpp	Mon Mar 15 12:46:10 2010 +0200
@@ -27,9 +27,10 @@
 #include <networking/ipsecerr.h>
 #include "ipseccrypto.h"
 #include "keys.h"
-#include "cryptospidef.h"
+#include <cryptospi/cryptospidef.h>
+
 #ifdef SYMBIAN_IPSEC_VOIP_SUPPORT
-#include "cryptomacapi.h"
+#include <cryptospi/cryptomacapi.h>
 #endif //SYMBIAN_IPSEC_VOIP_SUPPORT
 
 class TLibraryPtr
--- a/networksecurity/ipsec/ipseccrypto/inc/ipseccrypto.h	Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/ipsec/ipseccrypto/inc/ipseccrypto.h	Mon Mar 15 12:46:10 2010 +0200
@@ -24,7 +24,7 @@
 #include <networking/crypto.h>
 #ifdef SYMBIAN_IPSEC_VOIP_SUPPORT
 #include "cryptosymmetriccipherapi.h"
-#include "cryptomacapi.h"
+#include <cryptospi/cryptomacapi.h>
 #endif // SYMBIAN_IPSEC_VOIP_SUPPORT
 
 typedef enum
--- a/networksecurity/ipsec/ipseccrypto/src/ipseccrypto_prt.cpp	Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/ipsec/ipseccrypto/src/ipseccrypto_prt.cpp	Mon Mar 15 12:46:10 2010 +0200
@@ -24,14 +24,15 @@
 #include <hash.h>
 
 #include "keys.h"
-#include "cryptospidef.h"
+#include <cryptospi/cryptospidef.h>
+
 #include "cryptosymmetriccipherapi.h"
 #ifdef SYMBIAN_IPSEC_VOIP_SUPPORT
 #include "ruleselector.h"
 #include "plugincharacteristics.h"
 #include "cryptospistateapi.h"
 #include "cryptoparams.h"
-#include "cryptomacapi.h"
+#include <cryptospi/cryptomacapi.h>
 using namespace CryptoSpi;
 #endif // SYMBIAN_IPSEC_VOIP_SUPPORT
 
--- a/networksecurity/tlsprovider/Test/group/TlsProvtestServer.mmp	Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/tlsprovider/Test/group/TlsProvtestServer.mmp	Mon Mar 15 12:46:10 2010 +0200
@@ -47,9 +47,6 @@
 SYSTEMINCLUDE 	/epoc32/include/mw
 #endif
 
-USERINCLUDE		../../../../../security/crypto/weakcrypto/inc
-
-
 LIBRARY     	euser.lib
 LIBRARY		testexecuteutils.lib
 LIBRARY		efsrv.lib
--- a/networksecurity/tlsprovider/group/swtlstokentypeplugin.mmp	Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/tlsprovider/group/swtlstokentypeplugin.mmp	Mon Mar 15 12:46:10 2010 +0200
@@ -33,7 +33,7 @@
 SOURCE swtlstokenprovider.cpp swtlssessioncache.cpp swtlstoken_log.cpp
 
 USERINCLUDE		../inc
-USERINCLUDE		../../../../security/crypto/weakcrypto/inc
+
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 
--- a/networksecurity/tlsprovider/group/tlsprovider.mmp	Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/tlsprovider/group/tlsprovider.mmp	Mon Mar 15 12:46:10 2010 +0200
@@ -1,4 +1,4 @@
-// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2001-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"
@@ -33,7 +33,7 @@
 SOURCE                  tlsprovider_log.cpp tlsproviderpolicy.cpp
 
 USERINCLUDE		../inc
-USERINCLUDE		../../../../security/crypto/weakcrypto/inc
+
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY	euser.lib  pkixcert.lib
@@ -42,7 +42,8 @@
 LIBRARY crypto.lib     
 LIBRARY ctframework.lib
 LIBRARY certstore.lib
-//LIBRARY estor.lib x500.lib   asn1.lib
+LIBRARY asn1.lib
+//LIBRARY estor.lib x500.lib   
 //LIBRARY bigint.lib
 LIBRARY hash.lib
 LIBRARY random.lib
--- a/networksecurity/tlsprovider/inc/tlsprovider.h	Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/tlsprovider/inc/tlsprovider.h	Mon Mar 15 12:46:10 2010 +0200
@@ -430,6 +430,7 @@
 	void ShowUntrustedDialogL(const TValidationStatus aResult);
 	void HandleBadCertificateL(const TValidationStatus aResult);
 	TBool CheckExtendedKeyUsageL(const CX509Certificate& aSource);
+	HBufC* ExtractCertFieldL(const TDesC& aFieldName, const CX500DistinguishedName& aDistinguishedName);
 	
 	//Active Handlers
 	void OnEGetSession();
--- a/networksecurity/tlsprovider/source/tlsprovider/CTlsProvider.cpp	Fri Mar 12 15:50:43 2010 +0200
+++ b/networksecurity/tlsprovider/source/tlsprovider/CTlsProvider.cpp	Mon Mar 15 12:46:10 2010 +0200
@@ -1,4 +1,4 @@
-// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2003-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"
@@ -18,6 +18,7 @@
 #include <ecom/ecom.h>
 #include <securitydefsconst.h>
 #include <x520ava.h>
+#include <asn1dec.h>
 
 #include "tlsprovider.h"
 #include "cryptostrength.h"
@@ -480,6 +481,44 @@
 	return;
 	}
 
+// This patch is to fix-up the Common Name component of the Subject field. 
+// This is due to a bug in TASN1DecBMPString::DecodeContentsL which is incorrectly decoding the BMP String contents. 
+// Since fixing TASN1DecBMPString would cause a major break in public API, this fix-up is being done here locally.
+// This patch is active only if the encoding is in BMP String. If TASN1DecBMPString::DecodeContentsL is ever fixed (which 
+// means CX500DistinguishedName::DisplayNameL is also automatically fixed) then this patch MUST to be removed.
+
+HBufC* CTlsProviderImpl::ExtractCertFieldL(const TDesC& aFieldName, const CX500DistinguishedName& aDistinguishedName)
+    {
+    TInt count = aDistinguishedName.Count();
+    for (TInt i = 0; i < count; i++)
+        {
+        const CX520AttributeTypeAndValue& ava = aDistinguishedName.Element(i);
+        if (ava.Type() == aFieldName)
+            {
+            HBufC* res = ava.ValueL();
+            CleanupStack::PushL(res);
+            TPtr pRes = res->Des();
+            TUint8* data = const_cast<TUint8 *>(reinterpret_cast<const TUint8 *>(res->Ptr())); 
+            TUint len = pRes.Length()*2;
+            TASN1DecGeneric gen(ava.EncodedValue());
+            gen.InitL();
+            if (gen.Tag() == EASN1BMPString)
+                {
+                // Bmp String internally store them as little endian, as a string we want it big
+                // endian interchange least and most significent byte
+                for(TUint i=0; i<len; i+=2)
+                     {
+                     TUint8 temp = data[i];
+                     data[i] = data[i+1];
+                     data[i+1] = temp;       
+                     }
+                }
+            CleanupStack::Pop();
+            return res;
+            }
+        }
+    return NULL;
+    }
 
 
 TBool CTlsProviderImpl::VerifySignatureL(
@@ -1526,7 +1565,8 @@
 	if(!hasAltNameExt)
 		{
 		// no name yet lets try common name from Subject
-		HBufC* commonName = aSource.SubjectName().ExtractFieldL(KX520CommonName);
+		//HBufC* commonName = aSource.SubjectName().ExtractFieldL(KX520CommonName);
+		HBufC* commonName  = ExtractCertFieldL(KX520CommonName, aSource.SubjectName());
 		if(commonName)
 			{
 			CleanupStack::PushL(commonName);
--- a/tcpiputils/dhcp/te_unittest/dhcpservtest.mmp	Fri Mar 12 15:50:43 2010 +0200
+++ b/tcpiputils/dhcp/te_unittest/dhcpservtest.mmp	Mon Mar 15 12:46:10 2010 +0200
@@ -23,10 +23,9 @@
 SOURCE dhcpservtest.cpp
 USERINCLUDE ..\include
 #ifdef SYMBIAN_OLD_EXPORT_LOCATION
-SYSTEMINCLUDE \epoc32\include \epoc32\include\TechView \epoc32\include\Networking
+SYSTEMINCLUDE \epoc32\include \epoc32\include\Networking
 #else
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-SYSTEMINCLUDE \epoc32\include\TechView 
 SYSTEMINCLUDE \epoc32\include\platform\Networking
 SYSTEMINCLUDE  ..\..\networkaddressandporttranslation\inc
 #endif