vpnengine/ikev2lib/src/ikev2sa.cpp
branchRCL_3
changeset 10 68dc8923de26
parent 0 33413c0669b9
equal deleted inserted replaced
8:032d3a818f49 10:68dc8923de26
    20 #include "ikev2SA.h"
    20 #include "ikev2SA.h"
    21 #include "ikepolparser.h"
    21 #include "ikepolparser.h"
    22 #include "ikev2ipsecsadata.h"
    22 #include "ikev2ipsecsadata.h"
    23 #include "ikev2pluginsession.h"
    23 #include "ikev2pluginsession.h"
    24 
    24 
       
    25 static const TUint32 KMinRekeyingThreshold = 70;
       
    26 static const TUint32 KMaxRekeyingThreshold = 95;
       
    27 
    25 CIkev2SA* CIkev2SA::NewL(CIkev2PluginSession& aIkeV2PluginSession, TIkev2SAData& aIkev2SAdata, MIkeDebug& aDebug)
    28 CIkev2SA* CIkev2SA::NewL(CIkev2PluginSession& aIkeV2PluginSession, TIkev2SAData& aIkev2SAdata, MIkeDebug& aDebug)
    26 {
    29 {
    27 	CIkev2SA *sa = new (ELeave) CIkev2SA(aIkeV2PluginSession, aDebug);
    30 	CIkev2SA *sa = new (ELeave) CIkev2SA(aIkeV2PluginSession, aDebug);
    28 	sa->ConstructL(aIkev2SAdata);
    31 	sa->ConstructL(aIkev2SAdata);
    29 	return sa;
    32 	return sa;
    43 	iIkeV2SaData.Copy(aIkev2SAdata);
    46 	iIkeV2SaData.Copy(aIkev2SAdata);
    44 	//
    47 	//
    45 	// Calculate lifetime value for the new IKE SA
    48 	// Calculate lifetime value for the new IKE SA
    46 	// The jitter value is adjusted from SA internal ID (SAId mod 8) 
    49 	// The jitter value is adjusted from SA internal ID (SAId mod 8) 
    47 	//
    50 	//
    48     iRemainingTime = iIkeV2SaData.iLifetime + (iIkeV2SaData.SaId() % 8);
    51 	
       
    52 	if (iIkeV2SaData.iIkeData->iRekeyingThreshold != 0)
       
    53 	    {
       
    54         if (iIkeV2SaData.iIkeData->iRekeyingThreshold < KMinRekeyingThreshold)
       
    55             {
       
    56             iRekeyingThreshold = KMinRekeyingThreshold;
       
    57             }
       
    58         else if (iIkeV2SaData.iIkeData->iRekeyingThreshold > KMaxRekeyingThreshold)
       
    59             {
       
    60             iRekeyingThreshold = KMaxRekeyingThreshold;
       
    61             }
       
    62         else
       
    63             {
       
    64             iRekeyingThreshold = iIkeV2SaData.iIkeData->iRekeyingThreshold;
       
    65             }
       
    66         TReal lifeTime = (TReal)iIkeV2SaData.iLifetime * ((TReal)iRekeyingThreshold / 100.0);
       
    67         iRemainingTime = (TUint32)lifeTime + (iIkeV2SaData.SaId() % 8);
       
    68 	    }
       
    69 	else
       
    70 	    {
       
    71         iRemainingTime = iIkeV2SaData.iLifetime + (iIkeV2SaData.SaId() % 8);
       
    72 	    }
       
    73 	    
    49 	iIkeV2SaData.iSAState  = KSaStateReady;
    74 	iIkeV2SaData.iSAState  = KSaStateReady;
    50 
    75 
       
    76 	
    51 	TInt DPDHeartbeat = 0;
    77 	TInt DPDHeartbeat = 0;
    52 	if ( iIkeV2SaData.iIkeData->iDPDHeartBeat )
    78 	if ( iIkeV2SaData.iIkeData->iDPDHeartBeat )
    53 	   DPDHeartbeat = iIkeV2SaData.iIkeData->iDPDHeartBeat;      
    79 	   DPDHeartbeat = iIkeV2SaData.iIkeData->iDPDHeartBeat;      
    54 
    80 
    55 	if ( DPDHeartbeat )
    81 	if ( DPDHeartbeat )
   234 	//
   260 	//
   235     DEBUG_LOG2(_L("CIkev2SA::RunL, SAId=%d, remaining time=%d"),
   261     DEBUG_LOG2(_L("CIkev2SA::RunL, SAId=%d, remaining time=%d"),
   236             iIkeV2SaData.SaId(), iRemainingTime );
   262             iIkeV2SaData.SaId(), iRemainingTime );
   237 	if (iRemainingTime == 0) 
   263 	if (iRemainingTime == 0) 
   238 	{										 		
   264 	{										 		
   239 		if ( iIpsecSaQue )
   265 		if ( iIpsecSaQue && iRekeyingThreshold != 0)
   240 		{
   266 		{
   241 		    iIkeV2PluginSession.RekeyIkeSAL(&iIkeV2SaData);
   267 		    iIkeV2PluginSession.RekeyIkeSAL(&iIkeV2SaData);
   242 		}
   268 		}
   243 		else 
   269 		else 
   244 		{		 
   270 		{