diff -r 39bb7c3571e9 -r 052078dda061 linklayercontrol/networkinterfacemgr/agentprcore/src/tunnelagentcpr.cpp --- a/linklayercontrol/networkinterfacemgr/agentprcore/src/tunnelagentcpr.cpp Mon May 03 13:58:16 2010 +0300 +++ b/linklayercontrol/networkinterfacemgr/agentprcore/src/tunnelagentcpr.cpp Tue Jun 29 19:20:22 2010 +0530 @@ -66,6 +66,15 @@ NODEACTIVITY_END() } +namespace TunnelGoneDownActivity +{ +DECLARE_DEFINE_NODEACTIVITY(ECFActivityGoneDown, TunnelGoneDown, TCFControlClient::TGoneDown) + // Our Service Provider has gone down unexpectedly (we haven't issued a TStop) + FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingGoneDown, MeshMachine::TNoTag) + LAST_NODEACTIVITY_ENTRY(KNoTag, MeshMachine::TDoNothing) +NODEACTIVITY_END() +} + #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW namespace TunnelAgentCprNotificationActivity { @@ -78,6 +87,7 @@ { DECLARE_DEFINE_ACTIVITY_MAP(TunnelAgentCprActivities) ACTIVITY_MAP_ENTRY(TunnelAgentCprStartActivity, TunnelCprStart) + ACTIVITY_MAP_ENTRY(TunnelGoneDownActivity, TunnelGoneDown) #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW ACTIVITY_MAP_ENTRY(TunnelAgentCprNotificationActivity, TunnelAgentCprNotification) #endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW @@ -101,7 +111,8 @@ CTunnelAgentConnectionProvider::CTunnelAgentConnectionProvider(CConnectionProviderFactoryBase& aFactory) - : CAgentConnectionProvider(aFactory, TunnelAgentCprStates::TunnelAgentCprActivities::Self()) + : CAgentConnectionProvider(aFactory, TunnelAgentCprStates::TunnelAgentCprActivities::Self()), + TIfStaticFetcherNearestInHierarchy(this) { LOG_NODE_CREATE(KTunnelAgentCprTag, CTunnelAgentConnectionProvider); } @@ -115,5 +126,35 @@ LOG_NODE_DESTROY(KTunnelAgentCprTag, CTunnelAgentConnectionProvider); } +// +// MPlatSecApiExt +// +void CTunnelAgentConnectionProvider::ReturnInterfacePtrL(MPlatsecApiExt*& aInterface) + { + aInterface = this; + } +TInt CTunnelAgentConnectionProvider::SecureId(TSecureId& /*aResult*/) const + { + return KErrNotSupported; + } + +TInt CTunnelAgentConnectionProvider::VendorId(TVendorId& /*aResult*/) const + { + return KErrNotSupported; + } + +TBool CTunnelAgentConnectionProvider::HasCapability(const TCapability /*aCapability*/) const + { + return KErrNotSupported; + } + +TInt CTunnelAgentConnectionProvider::CheckPolicy(const TSecurityPolicy& /*aPolicy*/) const + { + // This is the whole reason that we need to implement MPlatSecApiExt in this node at all. When TunnelAgentCpr issues + // a TStop towards IpCpr, IpCpr requires the sending node (normally ESockSvr but TunnelAgentCpr in this case) + // to implement MPlatSecApiExt through which IpCpr can check platsec capabilities (IpCprStates::TCheckStopCapabilities). + // If TunnelAgentCpr does not impement MPlatSecApiExt, then IpCpr will error the stop request with KErrInterfaceNotSupported. + return KErrNone; + }