--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networksecurity/ipsec/ipsecpol/src/ipsecpolmansession.cpp Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,211 @@
+// Copyright (c) 2005-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:
+// IPSecPolicyManSession.cpp - IPSec Policy Manager Session
+// - This module contains the server side session relating
+// functions activated in IPSecPolicyManApi module.
+//
+
+#include "ipsecpol.h"
+#include "ipsecpolmansession.h"
+#include "ipsecpolmanserver.h"
+#include "ipsecpolmanhandler.h"
+#include "ipsecpolapi.h"
+#include "log_ipsecpol.H"
+
+
+CIPSecPolicyManagerSession* CIPSecPolicyManagerSession::NewL(CIPSecPolicyManagerServer* aServer)
+ {
+ CIPSecPolicyManagerSession* self;
+ self = new (ELeave) CIPSecPolicyManagerSession(aServer);
+ aServer->iSessionCount++;
+ return self;
+ }
+
+
+CIPSecPolicyManagerSession::CIPSecPolicyManagerSession( CIPSecPolicyManagerServer* aServer)
+:iServer(aServer)
+ {
+ }
+
+CIPSecPolicyManagerSession::~CIPSecPolicyManagerSession(void)
+ {
+ if (iServer->iSessionCount )
+ {
+ iServer->iSessionCount --;
+ iServer->StopIPSecPolicyManagerServer();
+ }
+ }
+ /*=====================================================================
+ *
+ * Process a message received from client
+ *
+ * ==================================================================*/
+void CIPSecPolicyManagerSession::ServiceL(const RMessage2& aMessage)
+ {
+ TInt Status = KErrNone;
+ if (iServer->iIPSecPolicyManagerHandler == NULL)
+ {
+ iServer->iIPSecPolicyManagerHandler = CIPSecPolicyManagerHandler::NewL(iServer);
+ //Autoload policy config data is read here
+ TRAPD (error, iServer->iIPSecPolicyManagerHandler->ReadAutoloadConfigDataL ());
+ if (error != KErrNone)
+ {
+ LOG(Log::Printf(_L("Read autoload config data failed\n")));
+ }
+
+ //if this is a preload type autoload policy
+ if (iServer->iIPSecPolicyManagerHandler->IsPreloadNeeded())
+ {
+ TRAPD(leaveCode, iServer->iIPSecPolicyManagerHandler->AutoloadPoliciesL(KDefaultZoneInfo, NULL, EAutoloadPreload ));
+
+ if (leaveCode != KErrNone)
+ {
+ LOG(Log::Printf(_L("Preload autoload policy failed\n")));
+ }
+ else
+ {
+ //activate the preload autoload policy
+ iServer->iIPSecPolicyManagerHandler->ProcessActivateAutoloadPolicyL(this);
+ iServer->iIPSecPolicyManagerHandler->StorePreloadPolicyHandle();
+ }
+
+ }
+
+ }
+
+ switch ( aMessage.Function() )
+ {
+
+ /*=====================================================================
+ *
+ * LoadPolicy
+ * p[0] = aIPSecPolicy;
+ * p[1] = aPolicyHandle;
+ * p[2] = aZoneInfoSet;
+ * p[3] = aProcessingFlags;
+ *
+ *==================================================================*/
+ case EIpsecPolicyLoadPolicy:
+
+ //decide what kind of load it is
+
+ Status = iServer->iIPSecPolicyManagerHandler->ProcessLoadPoliciesL(
+ aMessage,
+ this);
+ break;
+
+ /*=====================================================================
+ *
+ * ActivatePolicy
+ * p[0] = aPolicyHandle;
+ *
+ *==================================================================*/
+ case EIpsecPolicyActivatePolicy:
+
+ Status = iServer->iIPSecPolicyManagerHandler->ProcessActivatePolicyL(
+ aMessage,
+ this);
+ break;
+ /*=====================================================================
+ *
+ * GetLastConflictInfo
+ * p[0] = aConflictingPolicyName;
+ * p[1] = aDebugInfo;
+ *
+ *==================================================================*/
+ case EIpsecPolicyGetLastConflictInfo:
+
+ Status = iServer->iIPSecPolicyManagerHandler->GetLastConflictInfoL(
+ aMessage,
+ this);
+ break;
+
+ /*=====================================================================
+ *
+ * UnloadPolicy
+ * p[0] = aPolicyHandle;
+ *
+ *==================================================================*/
+ case EIpsecPolicyUnloadPolicy:
+
+
+ Status = iServer->iIPSecPolicyManagerHandler->ProcessUnloadPoliciesL(
+ aMessage,
+ this);
+ break;
+
+ /*=====================================================================
+ *
+ * MatchSelector
+ * p[0] = TDesC8& // TIpsecSelectorInfo
+ * p[1] = TDes8& // TIpsecSaSpec
+ *
+ *==================================================================*/
+ case EIpsecPolicyMatchSelector:
+
+ Status = iServer->iIPSecPolicyManagerHandler->GetIPSecSAInfoL(
+ aMessage,
+ this);
+ break;
+ /*=====================================================================
+ *
+ * CancelLoad, CancelUnload, CancelMatch
+ *
+ *==================================================================*/
+ case EIpsecPolicyCancelLoad:
+ case EIpsecPolicyCancelActivate:
+ case EIpsecPolicyCancelUnload:
+ case EIpsecPolicyCancelMatch:
+ Status = KErrNone;
+ break;
+
+#ifdef TESTFLAG
+
+ /*=====================================================================
+ *
+ * Not supported method
+ *
+ *==================================================================*/
+ case ERequestInfo:
+
+ Status = iServer->iIPSecPolicyManagerHandler->RequestEvent(
+ aMessage,
+ this);
+ break;
+
+#endif
+ case EIpsecPolicyAvailableSelectors:
+ Status = iServer->iIPSecPolicyManagerHandler->GetAvailableSelectors(aMessage);
+ break;
+
+ case EIpsecPolicyEnumerateSelectors:
+ Status = iServer->iIPSecPolicyManagerHandler->GetSelectorsCount(aMessage);
+ break;
+ default:
+ Status = KErrNotSupported;
+ break;
+
+ }
+
+
+ /*=====================================================================
+ *
+ * Send the response to the caller's active object
+ *
+ *==================================================================*/
+ aMessage.Complete(Status);
+
+
+ }
+