networksecurity/ipsec/ipsecpol/src/ipsecpolmansession.cpp
changeset 0 af10295192d8
child 53 7e41d162e158
equal deleted inserted replaced
-1:000000000000 0:af10295192d8
       
     1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // IPSecPolicyManSession.cpp - IPSec Policy Manager Session
       
    15 // - This module contains the server side session relating
       
    16 // functions activated in IPSecPolicyManApi module.
       
    17 //
       
    18 
       
    19 #include "ipsecpol.h"
       
    20 #include "ipsecpolmansession.h"
       
    21 #include "ipsecpolmanserver.h"
       
    22 #include "ipsecpolmanhandler.h"
       
    23 #include "ipsecpolapi.h"
       
    24 #include "log_ipsecpol.H"
       
    25 
       
    26 
       
    27 CIPSecPolicyManagerSession* CIPSecPolicyManagerSession::NewL(CIPSecPolicyManagerServer* aServer)
       
    28     {
       
    29     CIPSecPolicyManagerSession* self;
       
    30     self = new (ELeave) CIPSecPolicyManagerSession(aServer);
       
    31     aServer->iSessionCount++;
       
    32     return self;
       
    33     }
       
    34 
       
    35 
       
    36 CIPSecPolicyManagerSession::CIPSecPolicyManagerSession( CIPSecPolicyManagerServer* aServer)
       
    37 :iServer(aServer)
       
    38     {
       
    39     }
       
    40 
       
    41 CIPSecPolicyManagerSession::~CIPSecPolicyManagerSession(void)
       
    42     {
       
    43     if (iServer->iSessionCount )
       
    44         {
       
    45         iServer->iSessionCount --;   
       
    46         iServer->StopIPSecPolicyManagerServer();
       
    47         }
       
    48     }
       
    49     /*=====================================================================
       
    50     *
       
    51     * Process a message received from client
       
    52     *
       
    53     * ==================================================================*/ 
       
    54 void CIPSecPolicyManagerSession::ServiceL(const RMessage2& aMessage)
       
    55     {
       
    56     TInt Status = KErrNone;
       
    57     if (iServer->iIPSecPolicyManagerHandler == NULL)
       
    58         {
       
    59         iServer->iIPSecPolicyManagerHandler = CIPSecPolicyManagerHandler::NewL(iServer);
       
    60         //Autoload policy config data is read here
       
    61         TRAPD (error, iServer->iIPSecPolicyManagerHandler->ReadAutoloadConfigDataL ()); 
       
    62         if (error != KErrNone)
       
    63         {
       
    64           LOG(Log::Printf(_L("Read autoload config data failed\n")));		
       
    65         }
       
    66                 
       
    67         //if this is a preload type autoload policy
       
    68         if (iServer->iIPSecPolicyManagerHandler->IsPreloadNeeded())
       
    69             {
       
    70             TRAPD(leaveCode, iServer->iIPSecPolicyManagerHandler->AutoloadPoliciesL(KDefaultZoneInfo, NULL, EAutoloadPreload ));
       
    71             
       
    72             if (leaveCode != KErrNone)
       
    73                 {
       
    74                 LOG(Log::Printf(_L("Preload autoload policy failed\n")));	
       
    75                 }
       
    76             else
       
    77                 {
       
    78                 //activate the preload autoload policy
       
    79                 iServer->iIPSecPolicyManagerHandler->ProcessActivateAutoloadPolicyL(this);
       
    80                 iServer->iIPSecPolicyManagerHandler->StorePreloadPolicyHandle();
       
    81                 }
       
    82             
       
    83             }
       
    84         
       
    85         }
       
    86     
       
    87     switch ( aMessage.Function() )
       
    88         {
       
    89         
       
    90         /*=====================================================================
       
    91         *
       
    92         * LoadPolicy
       
    93         *  p[0] = aIPSecPolicy;
       
    94         *  p[1] = aPolicyHandle;
       
    95         *  p[2] = aZoneInfoSet;
       
    96         *  p[3] = aProcessingFlags;
       
    97         * 
       
    98         *==================================================================*/ 
       
    99         case EIpsecPolicyLoadPolicy:
       
   100             
       
   101             //decide what kind of load it is
       
   102             
       
   103             Status = iServer->iIPSecPolicyManagerHandler->ProcessLoadPoliciesL(
       
   104                 aMessage,
       
   105                 this);
       
   106             break;
       
   107             
       
   108             /*=====================================================================
       
   109             *
       
   110             * ActivatePolicy
       
   111             *  p[0] = aPolicyHandle;
       
   112             * 
       
   113             *==================================================================*/ 
       
   114         case EIpsecPolicyActivatePolicy:
       
   115             
       
   116             Status = iServer->iIPSecPolicyManagerHandler->ProcessActivatePolicyL(
       
   117                 aMessage,
       
   118                 this);
       
   119             break;
       
   120             /*=====================================================================
       
   121             *
       
   122             * GetLastConflictInfo
       
   123             *  p[0] = aConflictingPolicyName;
       
   124             *  p[1] = aDebugInfo;
       
   125             * 
       
   126             *==================================================================*/ 
       
   127         case EIpsecPolicyGetLastConflictInfo:
       
   128             
       
   129             Status = iServer->iIPSecPolicyManagerHandler->GetLastConflictInfoL(
       
   130                 aMessage,
       
   131                 this);
       
   132             break;
       
   133             
       
   134             /*=====================================================================
       
   135             *
       
   136             * UnloadPolicy
       
   137             *  p[0] = aPolicyHandle;
       
   138             * 
       
   139             *==================================================================*/ 
       
   140         case EIpsecPolicyUnloadPolicy:
       
   141             
       
   142             
       
   143             Status = iServer->iIPSecPolicyManagerHandler->ProcessUnloadPoliciesL(
       
   144                 aMessage,
       
   145                 this);
       
   146             break;
       
   147             
       
   148             /*=====================================================================
       
   149             *
       
   150             * MatchSelector
       
   151             *  p[0] = TDesC8&               // TIpsecSelectorInfo 
       
   152             *  p[1] = TDes8&                // TIpsecSaSpec      
       
   153             * 
       
   154             *==================================================================*/ 
       
   155         case EIpsecPolicyMatchSelector:
       
   156             
       
   157             Status = iServer->iIPSecPolicyManagerHandler->GetIPSecSAInfoL(
       
   158                 aMessage,
       
   159                 this);
       
   160             break;
       
   161             /*=====================================================================
       
   162             *
       
   163             * CancelLoad, CancelUnload, CancelMatch
       
   164             * 
       
   165             *==================================================================*/ 
       
   166         case EIpsecPolicyCancelLoad:
       
   167         case EIpsecPolicyCancelActivate:
       
   168         case EIpsecPolicyCancelUnload:
       
   169         case EIpsecPolicyCancelMatch:
       
   170             Status = KErrNone;
       
   171             break;
       
   172  
       
   173 #ifdef TESTFLAG
       
   174             
       
   175             /*=====================================================================
       
   176             *
       
   177             * Not supported method
       
   178             * 
       
   179             *==================================================================*/ 
       
   180         case ERequestInfo:
       
   181         	
       
   182         	Status = iServer->iIPSecPolicyManagerHandler->RequestEvent(
       
   183                 aMessage,
       
   184                 this);
       
   185        		break;
       
   186        	
       
   187 #endif    
       
   188         case EIpsecPolicyAvailableSelectors:
       
   189         	Status = iServer->iIPSecPolicyManagerHandler->GetAvailableSelectors(aMessage);
       
   190             break;
       
   191         
       
   192         case EIpsecPolicyEnumerateSelectors:
       
   193         	Status = iServer->iIPSecPolicyManagerHandler->GetSelectorsCount(aMessage);
       
   194             break;
       
   195         default:
       
   196             Status = KErrNotSupported;
       
   197             break;
       
   198             
       
   199         }
       
   200     
       
   201     
       
   202         /*=====================================================================
       
   203         *
       
   204         * Send the response to the caller's active object
       
   205         * 
       
   206         *==================================================================*/ 
       
   207         aMessage.Complete(Status);
       
   208 
       
   209         
       
   210     }
       
   211