vpnengine/ikev2lib/src/ikev2expire.cpp
changeset 0 33413c0669b9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vpnengine/ikev2lib/src/ikev2expire.cpp	Thu Dec 17 09:14:51 2009 +0200
@@ -0,0 +1,95 @@
+/*
+* 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:    
+* CIkev2Expire. This class is used to handle PFKEY Expire primitives received 
+* from IPSec plug-in.
+*
+*/
+#include "ikev2expire.h"
+#include "pfkeymsg.h"
+
+//
+//  CIkev2Expire
+//
+//  This class is used to handle PFKEY Expire primitives received from
+//  Ipsec plug-in. 
+//
+
+CIkev2Expire* CIkev2Expire::NewL(const TPfkeyMessage& aPfkeyMessage)
+{
+    CIkev2Expire* Expire = new (ELeave)CIkev2Expire();
+    TPtrC8 spiPtr(reinterpret_cast<const TUint8*>(&aPfkeyMessage.iSa.iExt->sadb_sa_spi), 
+                  sizeof(aPfkeyMessage.iSa.iExt->sadb_sa_spi));
+    Expire->SetSPI(spiPtr);
+    Expire->SetProtocol(aPfkeyMessage.iBase.iMsg->sadb_msg_satype);
+    return Expire;
+}
+
+void CIkev2Expire::Link(CIkev2Expire* aExpire, CIkev2Expire** aAnchor)
+{
+    ASSERT(aExpire && aAnchor);
+    aExpire->iNext = NULL;
+    CIkev2Expire* Last  = *aAnchor;
+    if ( Last )
+    {   
+        while ( Last->iNext )
+        {
+            Last = Last->iNext;
+        }
+        Last->iNext = aExpire;
+    }
+    else *aAnchor = aExpire;    
+}
+
+CIkev2Expire* CIkev2Expire::GetNext(CIkev2Expire** aAnchor)
+{
+    ASSERT(aAnchor);
+    CIkev2Expire* Elem = *aAnchor;
+    if ( Elem )
+        *aAnchor = Elem->iNext;
+    return Elem;
+}  
+
+void CIkev2Expire::PurgeQue(CIkev2Expire** aAnchor)
+{
+    ASSERT(aAnchor);
+    CIkev2Expire* Elem = *aAnchor;
+    while ( Elem )
+    {
+        *aAnchor = Elem->iNext;
+        delete Elem;
+        Elem = *aAnchor;
+    }   
+}
+
+TPtrC8 CIkev2Expire::SPI() 
+    { 
+    return iSPI;
+    }
+
+void CIkev2Expire::SetSPI(const TDesC8& aSPI) 
+    { 
+    iSPI = aSPI;
+    }
+
+TUint8 CIkev2Expire::Protocol() 
+    { 
+    return iProtocol;
+    }
+
+void CIkev2Expire::SetProtocol(TUint8 aProt) 
+    { 
+    iProtocol = aProt;
+    }
+