|
1 /* |
|
2 * Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: IKEv2 SA data definition |
|
15 * |
|
16 */ |
|
17 |
|
18 #ifndef _IKEV2SA_H_ |
|
19 #define _IKEV2SA_H_ |
|
20 |
|
21 #include "ikev2SAdata.h" |
|
22 #include "ikev2keepalive.h" |
|
23 |
|
24 class CIkev2PluginSession; |
|
25 class TIkeV2IpsecSAData; |
|
26 class MIkeDebug; |
|
27 |
|
28 // |
|
29 // Class CIkev2SA |
|
30 // |
|
31 NONSHARABLE_CLASS(CIkev2SA) : public CTimer, public MIkeV2DpdHeartBeatEventHandler |
|
32 { |
|
33 public: |
|
34 static CIkev2SA* NewL(CIkev2PluginSession& aIkeV2PluginSession, |
|
35 TIkev2SAData& aIkev2SAdata, |
|
36 MIkeDebug& aDebug); |
|
37 ~CIkev2SA(); |
|
38 |
|
39 void UpdateL(TIkev2SAData* aIkev2SAdata, TIkeV2IpsecSAData* aIpsecSAData); |
|
40 TBool RemoteAddrChanged(TInetAddr& aNewIp); |
|
41 TIkeV2IpsecSAData* RemoveIpsecSaData(const TDesC8& aInSpi, const TDesC8& aOutSpi); |
|
42 TIkeV2IpsecSAData* FindIpsecSaData(const TDesC8& aInSpi, const TDesC8& aOutSpi, TBool aRemove); |
|
43 void DeleteIpsecSaData(const TDesC8& aInSpi, const TDesC8& aOutSpi); |
|
44 void EventHandlerL(); |
|
45 TIkeV2IpsecSAData* GetIpsecSaQue(); |
|
46 void SetIpsecSaQue(TIkeV2IpsecSAData* aQue); |
|
47 |
|
48 private: |
|
49 CIkev2SA(CIkev2PluginSession& aIkeV2PluginSession, MIkeDebug& aDebug); |
|
50 void ConstructL(TIkev2SAData& aIkev2SAdata); |
|
51 void StartTimer(); |
|
52 void DeleteIpsecSas(TIkeV2IpsecSAData* aSa); |
|
53 void LinkIpsecSa(TIkeV2IpsecSAData* aSa); |
|
54 void PurgeIpsecDataQue(); |
|
55 |
|
56 protected: |
|
57 // |
|
58 // CActive methods |
|
59 // |
|
60 void DoCancel(); |
|
61 void RunL(); |
|
62 |
|
63 public: |
|
64 // |
|
65 // Header Data |
|
66 // |
|
67 TIkev2SAData iIkeV2SaData; // Common negotiation info |
|
68 CIkev2SA* iNext; // A link field to maintain negotiations. |
|
69 |
|
70 private: |
|
71 CIkev2PluginSession& iIkeV2PluginSession; |
|
72 MIkeDebug& iDebug; |
|
73 TIkeV2IpsecSAData* iIpsecSaQue; // Ipsec SA information queue |
|
74 CIkeV2KeepAlive* iIkeKeepAlive; // Pointer to common IKE keepalive object |
|
75 TUint32 iRemainingTime; // Current lifetime left |
|
76 |
|
77 }; |
|
78 |
|
79 #endif |