equal
deleted
inserted
replaced
109 return self; |
109 return self; |
110 } |
110 } |
111 |
111 |
112 |
112 |
113 CTunnelAgentConnectionProvider::CTunnelAgentConnectionProvider(CConnectionProviderFactoryBase& aFactory) |
113 CTunnelAgentConnectionProvider::CTunnelAgentConnectionProvider(CConnectionProviderFactoryBase& aFactory) |
114 : CAgentConnectionProvider(aFactory, TunnelAgentCprStates::TunnelAgentCprActivities::Self()) |
114 : CAgentConnectionProvider(aFactory, TunnelAgentCprStates::TunnelAgentCprActivities::Self()), |
|
115 TIfStaticFetcherNearestInHierarchy(this) |
115 { |
116 { |
116 LOG_NODE_CREATE(KTunnelAgentCprTag, CTunnelAgentConnectionProvider); |
117 LOG_NODE_CREATE(KTunnelAgentCprTag, CTunnelAgentConnectionProvider); |
117 } |
118 } |
118 |
119 |
119 |
120 |
123 EXPORT_C CTunnelAgentConnectionProvider::~CTunnelAgentConnectionProvider() |
124 EXPORT_C CTunnelAgentConnectionProvider::~CTunnelAgentConnectionProvider() |
124 { |
125 { |
125 LOG_NODE_DESTROY(KTunnelAgentCprTag, CTunnelAgentConnectionProvider); |
126 LOG_NODE_DESTROY(KTunnelAgentCprTag, CTunnelAgentConnectionProvider); |
126 } |
127 } |
127 |
128 |
|
129 // |
|
130 // MPlatSecApiExt |
|
131 // |
128 |
132 |
|
133 void CTunnelAgentConnectionProvider::ReturnInterfacePtrL(MPlatsecApiExt*& aInterface) |
|
134 { |
|
135 aInterface = this; |
|
136 } |
129 |
137 |
|
138 TInt CTunnelAgentConnectionProvider::SecureId(TSecureId& /*aResult*/) const |
|
139 { |
|
140 return KErrNotSupported; |
|
141 } |
|
142 |
|
143 TInt CTunnelAgentConnectionProvider::VendorId(TVendorId& /*aResult*/) const |
|
144 { |
|
145 return KErrNotSupported; |
|
146 } |
|
147 |
|
148 TBool CTunnelAgentConnectionProvider::HasCapability(const TCapability /*aCapability*/) const |
|
149 { |
|
150 return KErrNotSupported; |
|
151 } |
|
152 |
|
153 TInt CTunnelAgentConnectionProvider::CheckPolicy(const TSecurityPolicy& /*aPolicy*/) const |
|
154 { |
|
155 // This is the whole reason that we need to implement MPlatSecApiExt in this node at all. When TunnelAgentCpr issues |
|
156 // a TStop towards IpCpr, IpCpr requires the sending node (normally ESockSvr but TunnelAgentCpr in this case) |
|
157 // to implement MPlatSecApiExt through which IpCpr can check platsec capabilities (IpCprStates::TCheckStopCapabilities). |
|
158 // If TunnelAgentCpr does not impement MPlatSecApiExt, then IpCpr will error the stop request with KErrInterfaceNotSupported. |
|
159 return KErrNone; |
|
160 } |