--- a/linklayercontrol/networkinterfacemgr/agentprcore/src/tunnelagentcpr.cpp Tue Jul 06 16:04:34 2010 +0300
+++ b/linklayercontrol/networkinterfacemgr/agentprcore/src/tunnelagentcpr.cpp Wed Aug 18 11:18:20 2010 +0300
@@ -111,7 +111,8 @@
CTunnelAgentConnectionProvider::CTunnelAgentConnectionProvider(CConnectionProviderFactoryBase& aFactory)
- : CAgentConnectionProvider(aFactory, TunnelAgentCprStates::TunnelAgentCprActivities::Self())
+ : CAgentConnectionProvider(aFactory, TunnelAgentCprStates::TunnelAgentCprActivities::Self()),
+ TIfStaticFetcherNearestInHierarchy(this)
{
LOG_NODE_CREATE(KTunnelAgentCprTag, CTunnelAgentConnectionProvider);
}
@@ -125,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;
+ }