--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vpnengine/ikev2lib/inc/ikev2acquire.h Thu Dec 17 09:14:51 2009 +0200
@@ -0,0 +1,133 @@
+/*
+* Copyright (c) 2003-2009 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"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: IKEv2 Acquire definition
+* Class CIkev2Acquire is a IKEv2 specific data structure
+* containing information needed, when establishing a new
+* IPsec SA
+*/
+
+
+#ifndef __IKEV2ACQUIRE_H__
+#define __IKEV2ACQUIRE_H__
+
+#include <e32base.h>
+
+#include "ipsecsalifetime.h"
+
+class TPfkeyMessage;
+class TInetAddr;
+struct TIpsecSaSpec;
+class CIpsecSARekeyData;
+class TIkeV2TrafficSelector;
+
+//
+//
+// CIkev2Acquire
+// This class is used to handle PFKEY Acquire primitives received from
+// Ipsec plug-in.
+//
+
+NONSHARABLE_CLASS(CIkev2Acquire) : public CBase
+{
+ public:
+ static CIkev2Acquire* NewL(const TPfkeyMessage& aPfkeyMessage, TUint32 aId,
+ const TInetAddr& aLocalAddr, TUint16 aDHGroup, TBool aImplicitSa,
+ const TIpsecSaSpec* aSaSpec = 0, const CIpsecSARekeyData* aRekeyData = 0);
+ static CIkev2Acquire* NewL(TUint32 aId, HBufC8* aSa,
+ CArrayFix<TIkeV2TrafficSelector>* aTS_i,
+ CArrayFix<TIkeV2TrafficSelector>* aTS_r );
+ static void Link(CIkev2Acquire* aAcquire, CIkev2Acquire** aAnchor);
+ static CIkev2Acquire* Find(TUint32 aId, CIkev2Acquire** aAnchor, TBool aRemove=EFalse);
+ static void PurgeQue(CIkev2Acquire** aAnchor);
+ static TBool Responding(CIkev2Acquire** aAnchor);
+ static CIkev2Acquire* GetNext(CIkev2Acquire** aAnchor, TBool aResponse);
+ static void SetFirst(CIkev2Acquire* aAcquire, CIkev2Acquire** aAnchor);
+ static CIkev2Acquire* PeekFirst(CIkev2Acquire** aAnchor);
+ static CIkev2Acquire* RemoveFromQue(TUint32 aId, CIkev2Acquire** aAnchor);
+
+ TUint32 Id();
+ TPtrC8 SPI_In();
+ TPtrC8 SPI_Out();
+ TPtrC8 SPI_ToBeRekeyed();
+ void SetSPI_In(const TDesC8& aSPI);
+ void SetSPI_Out(const TDesC8& aSPI);
+ void SetSPI_ToBeRekeyed(const TDesC8& aSPI);
+ TUint16 DHGroup();
+ void DHGroup(TUint16 aDHGroup);
+ TBool Transport();
+ void SetTransport();
+ TBool Response();
+ void SetResponse();
+ void SetHardLifetime(const TIpsecSALifetime& aHard );
+ TIpsecSALifetime* HardLifetime();
+ void SetSoftLifetime(const TIpsecSALifetime& aSoft );
+ TIpsecSALifetime* SoftLifetime();
+ TUint8 ReplayWindow();
+ void SetReplayWindow(TUint8 aReplayWindow);
+ TUint32 Pid();
+ void SetPid(TUint32 aPfKeyPid);
+ TUint32 Seq();
+ void SetSeq(TUint32 aPfKeySeq);
+ void SetVirtualIp();
+ TBool ForVirtualIp();
+ TBool SrcSpecific();
+ void SetSrcSpecific(TBool aSrcSpecific);
+ TUint8 IpsecProtocol();
+ void SetIpsecProtocol(TUint8 aProtocol);
+
+ HBufC8* LocalId();
+ HBufC8* RemoteId();
+ HBufC8* SA()const;
+ void AddIpsecSpiToSa(const TDesC8& aSpi);
+ const CArrayFix<TIkeV2TrafficSelector>& TS_i();
+ const CArrayFix<TIkeV2TrafficSelector>& TS_r();
+ void ReplaceSA(HBufC8* aSA);
+ void ReplaceTS_i(CArrayFix<TIkeV2TrafficSelector>* aTS);
+ void ReplaceTS_r(CArrayFix<TIkeV2TrafficSelector>* aTS);
+ void ReplaceLocalId(HBufC8* aId);
+ void ReplaceRemoteId(HBufC8* aId);
+
+ CIkev2Acquire(TInt aId);
+ ~CIkev2Acquire();
+
+ private:
+ void ConstructL(const TPfkeyMessage& aReq, const TInetAddr& aLocalAddr, TUint16 aDHGroup, TBool aImplicitSa,
+ const TIpsecSaSpec* aSaSpec, const CIpsecSARekeyData* aRekeyData);
+
+ private:
+ TUint32 iId; // Unique sequence number for GETSPI
+ TBuf8<4> iSPIIn; // Ipsec SPI value in (local SPI)
+ TBuf8<4> iSPIOut; // Ipsec SPI value out (remote SPI)
+ TBuf8<4> iSPIToBeRekeyed;// Ipsec SPI value of IPSec SA to be rekeyed
+ TUint32 iDHGroup; // DH group for PFS
+ TBool iTransport; // Transport Mode requested
+ TBool iResponse; // Object is for Child SA response
+ TBool iSrcSpecific; // Requested SA is "local address" specific
+ TBool iForVirtualIp; // This Acquire is just for getting virtual IP
+ TInt iReplayWindow; // Ipsec replay window value
+ TInt iProtocol; // Ipsec protocol
+ TUint32 iPfKeyPid; // Saved from PFKEY Acquire
+ TUint32 iPfKeySeq; // Saved from PFKEY Acquire
+ TIpsecSALifetime iHard;
+ TIpsecSALifetime iSoft;
+ HBufC8* iSA; // Ipsec SA payload built from Pfkey Acquire
+
+ CArrayFix<TIkeV2TrafficSelector>* iTS_i; // Local Traffic selector info
+ CArrayFix<TIkeV2TrafficSelector>* iTS_r; // Remote Traffic selector info
+ HBufC8* iLocalId; // Local Id data, if any
+ HBufC8* iRemoteId; // Remote Id data, if any
+ CIkev2Acquire* iNext; // Next pending acquire
+};
+
+#endif /* __IKEV2ACQUIRE_H__ */