Revision: 201001
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 18 Jan 2010 21:14:04 +0200
changeset 2 ef893827b4d1
parent 1 c9c2ad51f972
child 3 2df28d7a2299
Revision: 201001 Kit: 201003
help/inc/vpn.hlp.hrh
vpnengine/ikecert/src/ikepkiutils.cpp
vpnengine/ikev1lib/src/ikev1isakmpstream.cpp
vpnengine/ikev1lib/src/ikev1negotiation.cpp
vpnengine/ikev2lib/src/ipsecproposal.cpp
vpnengine/pkiservice/src/pkimapper.cpp
vpnengine/vpnconnagt/inc/vpnconnagt.h
vpnengine/vpnconnagt/src/vpnconnagt.cpp
vpnengine/vpnmanager/group/vpnmanager.mmp
vpnengine/vpnmanager/group/vpnmanager_test.mmp
vpnengine/vpnmanager/inc/requestdispatcher.h
vpnengine/vpnmanager/inc/vpnmanagerserver.h
vpnengine/vpnmanager/inc/vpnmanagersession.h
vpnengine/vpnmanager/src/policyimporter.cpp
vpnengine/vpnmanager/src/policypatcher.cpp
vpnengine/vpnmanager/src/requestdispatcher.cpp
vpnengine/vpnmanager/src/vpnapiservant.cpp
vpnengine/vpnmanager/src/vpnmanagerserver.cpp
vpnengine/vpnmanager/src/vpnmanagersession.cpp
vpnui/vpnmanagementui/src/vpnmanagementuilogcontainer.cpp
vpnui/vpnpolins/group/ats_vpnpolins.mmp
--- a/help/inc/vpn.hlp.hrh	Thu Jan 07 13:26:15 2010 +0200
+++ b/help/inc/vpn.hlp.hrh	Mon Jan 18 21:14:04 2010 +0200
@@ -2,9 +2,9 @@
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
-* under the terms of the License "Symbian Foundation License v1.0"
+* under the terms of "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
 * Initial Contributors:
 * Nokia Corporation - initial contribution.
--- a/vpnengine/ikecert/src/ikepkiutils.cpp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/ikecert/src/ikepkiutils.cpp	Mon Jan 18 21:14:04 2010 +0200
@@ -219,6 +219,7 @@
         }
     if ( caArray->Count() == 1)
            {
+ 	         __ASSERT_DEBUG(firstCertPayload != NULL, User::Invariant());
          const TPtrC8 userCertStream(firstCertPayload->Certificate(),
                                     (TPayloadIkev2::Cast(firstCertPayload)->GetLength() - 
                                      TCertPayloadIkev2::Size()));
--- a/vpnengine/ikev1lib/src/ikev1isakmpstream.cpp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/ikev1lib/src/ikev1isakmpstream.cpp	Mon Jan 18 21:14:04 2010 +0200
@@ -116,7 +116,7 @@
                                                                     //including the SPI
         iBuf.SetLength(pos + sizeof(proposal)); //leave room to insert later the proposal
         TAttrib *attr=prop->iAttrList;
-        for (TInt i=0; i < proposal.GetNumTrans(); i++) //Adds all the transforms
+        for (TInt i=0; (i < proposal.GetNumTrans()) && (attr != NULL); i++) //Adds all the transforms
         {
             if ( !attr->iNext )
                next_payload = ISAKMP_PAYLOAD_NONE; // Last trasnform    
--- a/vpnengine/ikev1lib/src/ikev1negotiation.cpp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/ikev1lib/src/ikev1negotiation.cpp	Mon Jan 18 21:14:04 2010 +0200
@@ -1039,10 +1039,10 @@
 			                KKmdIkeAuthFailedErr,
 			                iPluginSession->VpnIapId(),
 			                &iRemoteAddr );
-			 SendDeleteL(PROTO_ISAKMP);
-             SetFinished(); 
-          }   
-       }       
+			 SendDeleteL( PROTO_ISAKMP );
+			 SetErrorStatus( KKmdIkeAuthFailedErr );
+          }
+       }    
     }
 	else ret = EFalse;
 
--- a/vpnengine/ikev2lib/src/ipsecproposal.cpp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/ikev2lib/src/ipsecproposal.cpp	Mon Jan 18 21:14:04 2010 +0200
@@ -128,9 +128,14 @@
 	if ( IntegAlg )
 	{
 		TransCnt ++;				
-		if ( Transform ) 
-		     Transform = (TTransformIkev2*)TPayloadIkev2::Cast(Transform)->Next();
-		else Proposal->TransformPl();
+		if ( Transform )
+		    {
+		    Transform = (TTransformIkev2*)TPayloadIkev2::Cast(Transform)->Next();
+		    }
+		else 
+		    {
+		    Transform = Proposal->TransformPl();
+		    }
 		TPayloadIkev2::Cast(Transform)->Init();   // Initialize Payload general header				
 		TPayloadIkev2::Cast(Transform)->SetNextPayload(IKEV2_PAYLOAD_TRANS);
 		Transform->SetType(IKEV2_INTEG);          // Integrity Algorithm transform
@@ -257,6 +262,7 @@
             break;
 
         default:
+        	  User::Leave(KErrNotSupported);
             break;
 
     }   
--- a/vpnengine/pkiservice/src/pkimapper.cpp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/pkiservice/src/pkimapper.cpp	Mon Jan 18 21:14:04 2010 +0200
@@ -147,7 +147,7 @@
                                  TCertificateListEntry& aResultCertInfo)
     {
     TInt index;
-    TInt err;
+    TInt err = KErrNone;
     
     TRAPD(leave, err = ResolveCertMappingL(aSecDesc, iObjectName, 
                                            index, aInfoOnly, 
--- a/vpnengine/vpnconnagt/inc/vpnconnagt.h	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/vpnconnagt/inc/vpnconnagt.h	Mon Jan 18 21:14:04 2010 +0200
@@ -12,749 +12,343 @@
 * Contributors:
 *
 * Description:   VPN Connection Agent declaration.
-
 *
 */
 
-
-
-
-
 /**  
-
  * @file vpnconnagt.h
-
- *
-
- * VPN Connection Agent declaration.
-
  *
-
+ * VPN Connection Agent declaration.
+ *
  */
-
-
-
-
-
 #if !defined __VPN_CONN_AGT_H__
-
 #define __VPN_CONN_AGT_H__
 
-
-
 // INCLUDES
-
 #include <comms-infras/cagentbase.h>
 
-
-
 #include "eventmediatorapi.h"
-
-
-
 #include "vpnconnagtprog.h"
-
 #include "vpnconnagtdefs.h"
-
 #include "eventdefssit.h"
-
 #include "log_r6.h"
 
-
-
 // CONSTANTS
-
 const TInt KMajorVerNumber=1;
-
 const TInt KMinorVerNumber=0;
-
 const TInt KBuildVerNumber=0;
 
-
-
 _LIT(KVPNConnAgtName,"vpnconnagt");
 
-
+/**
+ * A Factory for creating a VPNConnAgent.
+ */
+class CVPNConnAgtFactory : public CNifAgentFactory
+    {
+    /**
+    @internalComponent
+    */
+    protected:  // Methods
+        /**
+         * "Installs" this factory to the system. From this Agent point of view
+         * it doesn't do anything...
+         */
+        void InstallL();
 
-class CAsyncDisconnecter;
+        /**
+         * Creates a new VPN Agent instance.
+         * @param aName Not used.
+         * @return Returns the pointer to the agent created if succeed. Otherwise it
+         * leaves.
+         */
+        CNifAgentBase *NewAgentL(const TDesC& aName);
 
-
+        /**
+         * Returns the information defined in TNifAgentInfo.
+         * @param aInfo The reference to the TNifAgentInfo object to be used to pass
+         * the needed information.
+         * @param aIndex Not used.
+         */
+        TInt Info(TNifAgentInfo& aInfo, TInt aIndex) const;
+    };
 
 /**
-
- * A Factory for creating a VPNConnAgent.
+ * Class declaration for VPN connection agent. Each agent reference
+ * has it's own instance of agent and nif. Nif sends it's name via
+ * agent reference to agent. This triggers agent to initialize the VPN connection
+ * through the VPN Manager Server. After VPN tunnel has been created
+ * agent sends the IP address and the DNS addresses to the nif which
+ * in turn informs the Nifman and IP stack that the connection has
+ * been created.
+ */
+class CVPNConnAgt : public CAgentBase, public MEventObserver
+    {
+    /**
+    @internalComponent
+    */
+    friend class CAsyncDisconnecter;
+    public: // Methods
+        /**
+         * Static constructor.
+         * @return The return value is the pointer to the CVPNConnAgt
+         * if it succeed. Otherwise the fuction leaves.
+         */
+        static CVPNConnAgt* NewL();
 
- */
+        /**
+         * Default C++ destructor.
+         * Cancels all the Callbacks.
+         */
+        virtual ~CVPNConnAgt();
+       
+        // from CNifAgentBase
+        /**
+         * Returns the information defined in TNifAgentInfo.
+         * @param aInfo A reference to TNifAgentInfo object which is
+         * used to pass the information to caller of this function.
+         */
+        void Info(TNifAgentInfo& aInfo) const;
 
-class CVPNConnAgtFactory : public CNifAgentFactory
+        /**
+         * Starts the connection creation process.
+         * @param aType Not used.
+         */
+        void Connect(TAgentConnectType aType);
+
+        /**
+         * Starts the connection by calling Connect(TAgentConnectType aType).
+         * @param aType Type of the connection e.g. EAgentReconnect.
+         * @param aOverrideSettings Not used.
+         */
+        void Connect(TAgentConnectType aType, CStoreableOverrideSettings* aOverrideSettings);
+
+        /**
+         * Starts the cancellation of the connect.
+         */
+        void CancelConnect();
+
+        /**
+         * Disconnects an ongoing connection.
+         * @param aReason Not used.
+         */
+        void Disconnect(TInt aReason);
 
-    {
+        /**
+         * Called after Connect() in connection creation phase. Connection configuration
+         * parameters are read and request for the VPNManServer to open the connection
+         * is done. During the execution of this function VPN Nif is created.
+         * @param aError Not used.
+         */
+        void ServiceStarted(TInt& aError);
 
-    /**
+        /**
+         * The addresses got from the VPN Manager Server are send to VPN Nif.
+         * Nifman is informed with the progress call (with parameter EVPNConnAgtConnected).
+         * MNifAgentNotify interface's ConnectComplete() is called (this generates the Start()
+         * call to VPN Nif.
+         * @param aError Not used.
+         */
+        void ConnectionComplete(TInt aError);
+
+        /**
+         * Causes the deactivationing/unloading of the VPN Policies.
+         */
+        void DisconnectionComplete();
+
+        /**
+         * Not Supported.
+         * @param aBuffer Not used.
+         * @return Always returns KErrNotSupported.
+         */
+        TInt GetExcessData(TDes8& aBuffer);
 
-    @internalComponent
+        /**
+         * Used to deliver the name of the VPN Nif to the VPN Agent.
+         * @param aEvent If the value of this is ENifToVPNAgentEventTypeIfName the name of the
+         * VPN Nif is copied from the aInfo parameter.
+         * @param aInfo TName type pointer containing the name of the VPN NIf (if aEvent value is
+         * ENifToVPNAgentEventTypeIfName).
+         * @return Returns KErrNone if the fuction is used to deliver the name of the VPN Nif,
+         * otherwise it returns KErrNotSupported.
+         */
+        TInt Notification(TNifToAgentEventType aEvent, TAny* aInfo);
+
+        /**
+         * Passes the last error code to the caller.
+         * @param aError Reference to the TInt type error code.
+         */
+        void GetLastError(TInt& aError);
 
-    */
+        /**
+         * 
+         */
+        TBool IsReconnect() const {return (ETrue);};
+
+        /**
+         * Not supported.
+         */
+        TInt IncomingConnectionReceived();
+
+        /**
+         * Is called when an event comes from real interface via event mediator.
+         * @param aStatus Error code if the call fails. KErrNone if everything succees.
+         * @param aType Type pf the event e.g. ESingleInterfaceEvent.
+         * @param aData Pointer to the TInterfaceNotificationBuf type packaged buffer. Contains
+         * the status of the real interface.
+         */
+        void EventOccured(TInt aStatus, TEventType aType, TDesC8* aData);
 
     protected:  // Methods
 
-
-
         /**
-
-         * "Installs" this factory to the system. From this Agent point of view
-
-         * it doesn't do anything...
-
-         */
-
-        void InstallL();
-
-
-
-        /**
-
-         * Creates a new VPN Agent instance.
-
-         * @param aName Not used.
-
-         * @return Returns the pointer to the agent created if succeed. Otherwise it
-
-         * leaves.
-
-         */
-
-        CNifAgentBase *NewAgentL(const TDesC& aName);
-
-
-
-        /**
-
-         * Returns the information defined in TNifAgentInfo.
-
-         * @param aInfo The reference to the TNifAgentInfo object to be used to pass
-
-         * the needed information.
-
-         * @param aIndex Not used.
-
-         */
-
-        TInt Info(TNifAgentInfo& aInfo, TInt aIndex) const;
-
-    };
-
-
-
-
-
-/**
-
- * Class declaration for VPN connection agent. Each agent reference
-
- * has it's own instance of agent and nif. Nif sends it's name via
-
- * agent reference to agent. This triggers agent to initialize the VPN connection
-
- * through the VPN Manager Server. After VPN tunnel has been created
-
- * agent sends the IP address and the DNS addresses to the nif which
-
- * in turn informs the Nifman and IP stack that the connection has
-
- * been created.
-
- */
-
-class CVPNConnAgt : public CAgentBase, public MEventObserver
-
-    {
-
-    /**
-
-    @internalComponent
-
-    */
-
-    friend class CAsyncDisconnecter;
-
-    public: // Methods
-
-
-
-        /**
-
-         * Static constructor.
-
-         * @return The return value is the pointer to the CVPNConnAgt
-
-         * if it succeed. Otherwise the fuction leaves.
-
-         */
-
-        static CVPNConnAgt* NewL();
-
-
-
-        /**
-
-         * Default C++ destructor.
-
-         * Cancels all the Callbacks.
-
-         */
-
-        virtual ~CVPNConnAgt();
-
-        
-
-        // from CNifAgentBase
-
-        /**
-
-         * Returns the information defined in TNifAgentInfo.
-
-         * @param aInfo A reference to TNifAgentInfo object which is
-
-         * used to pass the information to caller of this function.
-
-         */
-
-        void Info(TNifAgentInfo& aInfo) const;
-
-
-
-        /**
-
-         * Starts the connection creation process.
-
-         * @param aType Not used.
-
-         */
-
-        void Connect(TAgentConnectType aType);
-
-
-
-        /**
-
-         * Starts the connection by calling Connect(TAgentConnectType aType).
-
-         * @param aType Type of the connection e.g. EAgentReconnect.
-
-         * @param aOverrideSettings Not used.
-
-         */
-
-        void Connect(TAgentConnectType aType, CStoreableOverrideSettings* aOverrideSettings);
-
-
-
-        /**
-
-         * Starts the cancellation of the connect.
-
+         * Overwrites the default implementation to catch the ip version reading from the
+         * database. This value is retrieved from the VPN Manager Server.
+         * @param aField Colum name in the CommDb. Ip version colum name is SERVICE_IF_NETWORKS.
+         * @param aValue Value to be returned. In SERVICE_IF_NETWORKS case it's ip or ip6.
+		 * @param aMessage Message to validate capabilities
+         * @return Returns KErrNone if the function succeed. Otherwise it returns system wide
+         * error code.
          */
-
-        void CancelConnect();
-
-
-
-        /**
-
-         * Disconnects an ongoing connection.
-
-         * @param aReason Not used.
-
-         */
-
-        void Disconnect(TInt aReason);
-
-
-
-        /**
-
-         * Called after Connect() in connection creation phase. Connection configuration
-
-         * parameters are read and request for the VPNManServer to open the connection
-
-         * is done. During the execution of this function VPN Nif is created.
-
-         * @param aError Not used.
-
-         */
-
-        void ServiceStarted(TInt& aError);
-
-
-
-        /**
-
-         * The addresses got from the VPN Manager Server are send to VPN Nif.
-
-         * Nifman is informed with the progress call (with parameter EVPNConnAgtConnected).
-
-         * MNifAgentNotify interface's ConnectComplete() is called (this generates the Start()
-
-         * call to VPN Nif.
-
-         * @param aError Not used.
-
-         */
-
-        void ConnectionComplete(TInt aError);
-
-
-
-        /**
-
-         * Causes the deactivationing/unloading of the VPN Policies.
-
-         */
-
-        void DisconnectionComplete();
-
-
-
-        /**
-
-         * Not Supported.
-
-         * @param aBuffer Not used.
-
-         * @return Always returns KErrNotSupported.
-
-         */
-
-        TInt GetExcessData(TDes8& aBuffer);
-
-
-
-        /**
-
-         * Used to deliver the name of the VPN Nif to the VPN Agent.
-
-         * @param aEvent If the value of this is ENifToVPNAgentEventTypeIfName the name of the
-
-         * VPN Nif is copied from the aInfo parameter.
-
-         * @param aInfo TName type pointer containing the name of the VPN NIf (if aEvent value is
-
-         * ENifToVPNAgentEventTypeIfName).
-
-         * @return Returns KErrNone if the fuction is used to deliver the name of the VPN Nif,
-
-         * otherwise it returns KErrNotSupported.
-
-         */
-
-        TInt Notification(TNifToAgentEventType aEvent, TAny* aInfo);
-
-
-
-        /**
-
-         * Passes the last error code to the caller.
-
-         * @param aError Reference to the TInt type error code.
-
-         */
-
-        void GetLastError(TInt& aError);
-
-
-
-        /**
-
-         * 
-
-         */
-
-        TBool IsReconnect() const {return (ETrue);};
-
-
-
-        /**
-
-         * Not supported.
-
-         */
-
-        TInt IncomingConnectionReceived();
-
-
-
-        /**
-
-         * Is called when an event comes from real interface via event mediator.
-
-         * @param aStatus Error code if the call fails. KErrNone if everything succees.
-
-         * @param aType Type pf the event e.g. ESingleInterfaceEvent.
-
-         * @param aData Pointer to the TInterfaceNotificationBuf type packaged buffer. Contains
-
-         * the status of the real interface.
-
-         */
-
-        void EventOccured(TInt aStatus, TEventType aType, TDesC8* aData);
-
-
-
-    protected:  // Methods
-
-
-
-        /**
-
-         * Overwrites the default implementation to catch the ip version reading from the
-
-         * database. This value is retrieved from the VPN Manager Server.
-
-         * @param aField Colum name in the CommDb. Ip version colum name is SERVICE_IF_NETWORKS.
-
-         * @param aValue Value to be returned. In SERVICE_IF_NETWORKS case it's ip or ip6.
-
-		 * @param aMessage Message to validate capabilities
-
-         * @return Returns KErrNone if the function succeed. Otherwise it returns system wide
-
-         * error code.
-
-         */
-
         TInt DoReadDes(const TDesC& aField, TDes16& aValue, const RMessagePtr2* aMessage );
 
-
-
-
-
         /**
-
          * Returns the pointer to the parameter object defined in vpnconnagtdefs.h.
-
          * @return The pointer to the connection parameter object.
-
          */
-
         TVPNParameters* VPNParameters() { return &iVPNParameters; };
 
-
-
-        /**
-
-         * Returns the pointer to the name of the VPN Nif sent by the nif itself.
-
-         * @return The pointer to the TName type object containing the name of the
-
-         * VPN Nif.
-
-         */
-
-        TName* VPNNifName(void){ return iVPNParameters.GetVPNNifName();};
-
-
-
         /**
-
-         * Returns the pointer to the interface from the Agent to Nifman. This interface
-
-         * is used to e.g. send progress notifications from Agent to Nifman.
-
-         * @return The pointer to the interface from the Agent to Nifman.
-
+         * Returns the pointer to the name of the VPN Nif sent by the nif itself.
+         * @return The pointer to the TName type object containing the name of the
+         * VPN Nif.
          */
-
-        MNifAgentNotify* Notify() { return iNotify; };
-
-
-
-        /**
-
-         * After deactivationing/unloading of the VPN Policies Nifman is informed with the
-
-         * progress call (with EVPNConnAgtDisconnected).
-
-         * MNifAgentNotify interface's DisconnectComplete() is called (this generates the deletion
-
-         * of the VPN Nif and at the end deletion of the agent.
-
-         * 
-
-         */
-
-        void VPNDisconnCompleted(TInt aError);
-
-
-
-    private:    // Methods
-
-
-
-        /**
-
-         * Second phase constructor.
-
-         */
-
-        void ConstructL();
-
-
+        TName* VPNNifName(void){ return iVPNParameters.GetVPNNifName();};
 
         /**
-
-         * Default constructor.
-
-         */
-
-        CVPNConnAgt();
-
-
-
-        /**
-
-         * CallBack to start the service (means the connection creation).
-
-         * @param aThisPtr Pointer to the CVPNConnAgt type object.
-
-         * @return Always returns KErrNone. 
-
+         * Returns the pointer to the interface from the Agent to Nifman. This interface
+         * is used to e.g. send progress notifications from Agent to Nifman.
+         * @return The pointer to the interface from the Agent to Nifman.
          */
-
-        static TInt ServiceStartedCb(TAny* aThisPtr);
-
-
-
+        MNifAgentNotify* Notify() { return iNotify; };
+        
         /**
-
-         * CallBack to complete the connection.
+         * After deactivationing/unloading of the VPN Policies Nifman is informed with the
+         * progress call (with EVPNConnAgtDisconnected).
+         * MNifAgentNotify interface's DisconnectComplete() is called (this generates the deletion
+         * of the VPN Nif and at the end deletion of the agent.
+         * 
+         */
+        void VPNDisconnCompleted(TInt aError);
 
-         * @param aThisPtr Pointer to the CVPNConnAgt type object.
-
-         * @return Always returns KErrNone. 
-
+    private:    // Methods
+        /**
+         * Second phase constructor.
          */
-
-        static TInt ConnectCompleteCb(TAny* aThisPtr);
-
-
+        void ConstructL();
 
         /**
-
-         * CallBack to disconnect.
+         * Default constructor.
+         */
+        CVPNConnAgt();
 
+        /**
+         * CallBack to start the service (means the connection creation).
          * @param aThisPtr Pointer to the CVPNConnAgt type object.
-
          * @return Always returns KErrNone. 
-
          */
-
-        static TInt DisconnectCompleteCb(TAny* aThisPtr);
-
-
+        static TInt ServiceStartedCb(TAny* aThisPtr);
 
         /**
-
-         * Reads needed configuration settings from the CommDb database.
-
+         * CallBack to complete the connection.
+         * @param aThisPtr Pointer to the CVPNConnAgt type object.
+         * @return Always returns KErrNone. 
          */
-
-        void ReadConfigurationL();
-
-
+        static TInt ConnectCompleteCb(TAny* aThisPtr);
 
         /**
-
-         * Starts the listening of real interface events.
-
+         * CallBack to disconnect.
+         * @param aThisPtr Pointer to the CVPNConnAgt type object.
+         * @return Always returns KErrNone. 
          */
-
-        void ListenRealIAP();
-
-
+        static TInt DisconnectCompleteCb(TAny* aThisPtr);
 
         /**
-
-         * Starts the listening of virtual nif address change event.
-
+         * Reads needed configuration settings from the CommDb database.
          */
-
-        void ListenAddressChange();
-
-
+        void ReadConfigurationL();
 
         /**
-
-         * Cancels the listening of the real interface events and the
-
-         * listening of virtual nif address change event.
-
+         * Starts the listening of real interface events.
          */
+        void ListenRealIAP();
 
-        void CancelListeners();
-
-
-
-
-
-    private:
-
-
+        /**
+         * Starts the listening of virtual nif address change event.
+         */
+        void ListenAddressChange();
 
         /**
-
-         * Defines the internal states.
-
+         * Cancels the listening of the real interface events and the
+         * listening of virtual nif address change event.
          */
-
-        enum TRequestState
-
-            {
-
-            EGettingProtocolVersion,
-
-            EConnecting,
-
-            EConnected,
+        void CancelListeners();
 
+    private:
+        /**
+         * Defines the internal states.
+         */
+        enum TRequestState
+            {
+            EGettingProtocolVersion,
+            EConnecting,
+            EConnected,
             EClosingConnection,
-
             EConnectionClosed,
-
             EStartingRealIf,
-
             EListeningEvents,
-
             EIdle
-
             };
 
-
-
-
-
         /** CallBack object to implement ServiceStarted asynchronously. */
-
         CAsyncCallBack      iServiceStartedCallback;
 
-
-
         /** CallBack object to implement ConnectCompleted asynchronously. */
-
         CAsyncCallBack      iConnectCompleteCallback;
 
-
-
         /** CallBack object to implement Disconnect asynchronously. */
-
         CAsyncCallBack      iDisconnectCallback;
 
-
-
         /** Defines wether Agent is connected (Connection completed successfully). */
-
         TBool               iConnected;
 
-
-
         /** Connection configuration parameter member object. See vpnconnagtdefs.h. */
-
         TVPNParameters      iVPNParameters;
 
-
-
         /** An integer to keep last error code in memory. */
-
         TInt                iLastErrorCode;
 
-
-
         /** An API to EventMediator */
-
         REventMediator      iEventMediator;
 
-        
-
         /** Tells if vpnconnagt must close tunnelnif */
-
         TBool               iEventActivatedClose;
 
-
-
         /** This defines the shutdown type to the kmd. Value 0 is normal and 1 is to 
-
             force it to shutdown without trying to send any packets anymore */
-
         TDeactivateType		iDisconnectType;
 
-
-
         /* State of the agent object */
-
         TRequestState       iState;
 
-
-
         /** Boolean to define wether disconnecting operation is ongoing */
-
         TBool               iDisconnecting;
 
-
-
         /** PckgBufs used when creating connection through eventmediator api */
-
         TPckgBuf<TGetProtocolVersionEventSpec>  iProtocolVersionDes;
-
         TPckgBuf<TStartVpnConnEventSpec>        iStartVpnConnDes;
-
         TPckgBuf<TCloseVpnConnEventSpec>        iCloseVpnConnDes;
-
         TPckgBuf<TObserveRealIapConnEventSpec>  iObserveRealIapConnDes;
-
-
-
-        /** Poiter to an object which confirms disconnect operation to Nifman */
-
-        CAsyncDisconnecter* iAD;
-
     };
 
-
-
-class CAsyncDisconnecter : public CAsyncOneShot
-
-    {
-
-    /**
-
-    @internalComponent
-
-    */
-
-    public:
-
-        static CAsyncDisconnecter* NewL(CVPNConnAgt* aAgent);
-
-        void ConfirmDisconnect();
-
-
-
-    private:
-
-        CAsyncDisconnecter(CVPNConnAgt* aAgent);
-
-        void RunL(); // From CAsyncOneShot
-
-
-
-    private:
-
-        CVPNConnAgt*    iAgent;
-
-    };
-
-
-
 #endif // VPN_CONN_AGT_H
 
--- a/vpnengine/vpnconnagt/src/vpnconnagt.cpp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/vpnconnagt/src/vpnconnagt.cpp	Mon Jan 18 21:14:04 2010 +0200
@@ -93,8 +93,6 @@
     iServiceStartedCallback.Cancel();
     iConnectCompleteCallback.Cancel();
     iDisconnectCallback.Cancel();
-
-    delete iAD;
     }
 
 // ---------------------------------------------------------------------------
@@ -123,8 +121,6 @@
     iDisconnecting = EFalse;
     LOG_("CVPNConnAgt::ReadConfigurationL EventMediator");
     User::LeaveIfError(iEventMediator.Connect());
-
-    iAD = CAsyncDisconnecter::NewL(this);  
     }
 
 // ---------------------------------------------------------------------------
@@ -412,7 +408,8 @@
         return;
         }
 
-    iAD->ConfirmDisconnect();
+    iNotify->AgentProgress(EVPNConnAgtDisconnected, KErrNone);
+    iNotify->DisconnectComplete();
     iDisconnecting = EFalse;
     }
 
@@ -514,10 +511,11 @@
                 iEventActivatedClose = EFalse;
                 iNotify->Notification(EAgentToNifEventTypeDisableConnection, NULL);
                 }
-
-            iAD->ConfirmDisconnect();
+            
+            iNotify->AgentProgress(EVPNConnAgtDisconnected, KErrNone);
+            iNotify->DisconnectComplete();
+            
             iDisconnecting = EFalse;
-
             iConnected = EFalse;
             
             iState = EIdle;
@@ -585,6 +583,7 @@
             break;
             }
         default:
+            LOG(Log::Printf(_L("Unknown event --> Silently Ignore.\n")));
             break;
         }
     }
@@ -758,48 +757,3 @@
     LOG_1("CVPNConnAgt::ReadConfigurationL RealNetworkId:%d", 
         iVPNParameters.GetRealNetworkId());
     }
-
-
-//////////////////////CAsyncDisconnecter////////////////////
-
-// ---------------------------------------------------------------------------
-// CAsyncDisconnecter 
-// ---------------------------------------------------------------------------
-//
-CAsyncDisconnecter::CAsyncDisconnecter(
-    CVPNConnAgt* aAgent):
-    CAsyncOneShot(EPriorityNormal)
-    {
-    iAgent = aAgent;
-    }
-
-// ---------------------------------------------------------------------------
-// NewL 
-// ---------------------------------------------------------------------------
-//
-CAsyncDisconnecter* CAsyncDisconnecter::NewL(
-    CVPNConnAgt* aAgent)
-    {
-    return new (ELeave) CAsyncDisconnecter(aAgent);
-    }
-
-// ---------------------------------------------------------------------------
-// ConfirmDisconnect 
-// ---------------------------------------------------------------------------
-//
-void CAsyncDisconnecter::ConfirmDisconnect()
-    {
-    Call();
-    }
-
-// ---------------------------------------------------------------------------
-// RunL 
-// ---------------------------------------------------------------------------
-//
-void CAsyncDisconnecter::RunL()
-    {
-    LOG_1("CAsyncDisconnecter::RunL, iStatus:%d", iStatus.Int() );
-    iAgent->Notify()->AgentProgress(EVPNConnAgtDisconnected, KErrNone);
-    iAgent->Notify()->DisconnectComplete();
-    }
-
--- a/vpnengine/vpnmanager/group/vpnmanager.mmp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/vpnmanager/group/vpnmanager.mmp	Mon Jan 18 21:14:04 2010 +0200
@@ -36,7 +36,6 @@
 SOURCE          vpnmanagersession.cpp
 SOURCE          vpnmanagerstarter.cpp
 SOURCE          uuid.cpp
-SOURCE          requestdispatcher.cpp
 SOURCE          eventlogger.cpp
 SOURCE          vpnmanagerserver.cpp
 SOURCE          cmmanagerutils.cpp
--- a/vpnengine/vpnmanager/group/vpnmanager_test.mmp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/vpnmanager/group/vpnmanager_test.mmp	Mon Jan 18 21:14:04 2010 +0200
@@ -38,7 +38,6 @@
 SOURCE          vpnmanagersession.cpp
 SOURCE          vpnmanagerstarter.cpp
 SOURCE          uuid.cpp
-SOURCE          requestdispatcher.cpp
 SOURCE          eventlogger.cpp
 SOURCE          vpnmanagerserver.cpp
 SOURCE          cmmanagerutils.cpp
--- a/vpnengine/vpnmanager/inc/requestdispatcher.h	Thu Jan 07 13:26:15 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
-* 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: Dispatches requests from clients to CVpnApiServant.
-*
-*/
-
-#ifndef __REQUESTDISPATCHER_H__
-#define __REQUESTDISPATCHER_H__
-
-#include <e32base.h>
-
-class RFs;
-class CVpnApiServant;
-
-
-/**
- * Server-level request dispatcher.
- * Dispatches the requests received from VPN Manager
- * client to the actual request servants that operate
- * at the server level (of which there is only one
- * instance).
- */
-class CRequestDispatcher : public CBase
-    {
-public:
-    static CRequestDispatcher* NewL(RFs& aFs);
-    ~CRequestDispatcher();
-
-    TBool ServiceL(const RMessage2& aMessage, CSession2* aSession);
-    
-private:
-    CRequestDispatcher(RFs& aFs);
-    void ConstructL();
-
-public:
-    CVpnApiServant* iVpnApiServant;
-    RFs& iFs;
-    };
-
-
-#endif  // __REQUESTDISPATCHER_H__
--- a/vpnengine/vpnmanager/inc/vpnmanagerserver.h	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/vpnmanager/inc/vpnmanagerserver.h	Mon Jan 18 21:14:04 2010 +0200
@@ -26,7 +26,7 @@
 #include <f32file.h>
 #include "vpnmanagerserverdefs.h"
 
-class CRequestDispatcher;
+class CVpnApiServant;
 
 /** 
  * The main server class
@@ -107,7 +107,7 @@
     TInt iSessionCount;
 
     /** The handler of client requests */
-    CRequestDispatcher* iRequestDispatcher;
+    CVpnApiServant* iVpnApiServant;
     
     /** The common file server session used throughout the VPN Manager */ 
     RFs iFs;
--- a/vpnengine/vpnmanager/inc/vpnmanagersession.h	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/vpnmanager/inc/vpnmanagersession.h	Mon Jan 18 21:14:04 2010 +0200
@@ -23,8 +23,8 @@
 #include <e32base.h>
 
 class CVpnManagerServer;
-class CRequestDispatcher;
-   
+class CVpnApiServant;   
+
 /** 
  * A handler for the service requests received from clients.
  * An instance of class CVpnManagerSession is created for each client.
@@ -42,7 +42,7 @@
      * @result Pointer to the new session
      */
     static CVpnManagerSession* NewL(CVpnManagerServer& aServer,
-                                    CRequestDispatcher& aRequestDispatcher);
+                                    CVpnApiServant& aVpnApiServant);
     /**
      * Creates a CVpnManagerSession object using two phase construction,
      * and returns a pointer to the created object
@@ -54,7 +54,7 @@
      * @result Pointer to the new session
      */
     static CVpnManagerSession* NewLC(CVpnManagerServer& aServer,
-                                     CRequestDispatcher& aRequestDispatcher);
+                                     CVpnApiServant& aVpnApiServant);
 
 	/**
      * Destroy the object and release all memory objects
@@ -78,7 +78,7 @@
      * @param The server
      */
     CVpnManagerSession(CVpnManagerServer& aServer,
-                       CRequestDispatcher& aRequestDispatcher);
+                       CVpnApiServant& aVpnApiServant);
 
     /**
      * The second phase of two phase construction
@@ -88,7 +88,7 @@
 private:
     RMessage2               iMessage;
     CVpnManagerServer&      iServer;
-    CRequestDispatcher&     iRequestDispatcher;    
+    CVpnApiServant&         iVpnApiServant;    
     };
 
 #endif // __VPNMANAGERSESSION_H__
--- a/vpnengine/vpnmanager/src/policyimporter.cpp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/vpnmanager/src/policyimporter.cpp	Mon Jan 18 21:14:04 2010 +0200
@@ -92,6 +92,10 @@
     {
     CActiveScheduler::Add(this);
     User::LeaveIfError(iPkiService.Connect());
+    
+    //Policy importer allow installation of
+    //future and expired certificates.
+    iPkiService.SetInformational(ETrue);
     }
 
 CPolicyImporter::~CPolicyImporter()
--- a/vpnengine/vpnmanager/src/policypatcher.cpp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/vpnmanager/src/policypatcher.cpp	Mon Jan 18 21:14:04 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2003-2008 Nokia Corporation and/or its subsidiary(-ies).
+* 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"
@@ -402,8 +402,11 @@
         //Checking also last attribute of Subject Name string
         if ( j<commaArrItemCount )
             {
-            updateArr->AppendL(equalSignArr->At(equalArrItemCount-1));
-            updateArr->AppendL(subjLth-1);
+            updateArr->AppendL(equalSignArr->At(equalArrItemCount-1) + 1);
+            updateArr->AppendL(subjLth);
+            
+            updateArrCount++;
+            updateArrCount++;
             }
        
        TBuf8<256> resultBuf;
@@ -416,10 +419,6 @@
            {
            while (i<updateArrCount)
                {
-               TBuf8<3> updateStr(KReplacementChar);
-               
-               updateStr.Append(aSubj.Mid(updateArr->At(i),1));
-               
                if ( resultBuf.Length()<256 )
                    resultBuf.Insert(updateArr->At(i) + i, KReplacementChar);
                else
--- a/vpnengine/vpnmanager/src/requestdispatcher.cpp	Thu Jan 07 13:26:15 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
-* 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: Dispatches requests from clients (API) to CVpnApiServant.
-*
-*/
-
-#include "requestdispatcher.h"
-#include "vpnapiservant.h"
-
-
-CRequestDispatcher* CRequestDispatcher::NewL(RFs& aFs)
-    {
-    CRequestDispatcher* self = new (ELeave) CRequestDispatcher(aFs);
-    CleanupStack::PushL(self) ;
-    self->ConstructL() ;
-    CleanupStack::Pop(self);
-    return self ;
-    }
-
-void CRequestDispatcher::ConstructL()
-    {
-    iVpnApiServant = CVpnApiServant::NewL(iFs);
-    }
-
-CRequestDispatcher::CRequestDispatcher(RFs& aFs)
-    : iFs(aFs)
-    {
-    }
-
-CRequestDispatcher::~CRequestDispatcher()
-    {
-    delete iVpnApiServant;
-    }
-
-TBool CRequestDispatcher::ServiceL(const RMessage2& aMessage, CSession2* /*aSession*/)
-    {
-    TBool requestHandled = EFalse;
-
-    requestHandled = iVpnApiServant->ServiceL(aMessage);
-    
-    if (!requestHandled)
-        {
-        User::Leave(KErrNotSupported);
-        }
-
-	return requestHandled;
-    }
--- a/vpnengine/vpnmanager/src/vpnapiservant.cpp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/vpnmanager/src/vpnapiservant.cpp	Mon Jan 18 21:14:04 2010 +0200
@@ -381,15 +381,55 @@
 
     // Read policy data
     TInt len = aMessage.GetDesLength(SECOND_ARGUMENT);
-    HBufC8* policyData = HBufC8::NewL(len);
-    CleanupStack::PushL(policyData);
-
+    HBufC8* policyData = HBufC8::NewLC(len);
     TPtr8 ptrPolicyData = policyData->Des();
     aMessage.ReadL(SECOND_ARGUMENT, ptrPolicyData);
 
+    //Make a validy check to the policy data
+    //by parsing it and checking certificate formats
+    HBufC* policyData16 = HBufC::NewLC(policyData->Length());
+    policyData16->Des().Copy(*policyData);
+    
+    CIkeDataArray* ikeDataArray = CIkeDataArray::NewL(1);
+    CleanupStack::PushL(ikeDataArray);
+    
+    TIkeParser* ikeParser = new (ELeave) TIkeParser(*policyData16);
+    CleanupStack::PushL(ikeParser);
+    ikeParser->ParseIKESectionsL(ikeDataArray);
 
+    for (TInt i = 0; i < ikeDataArray->Count(); ++i)
+        {
+        const CIkeData* ikeData = ikeDataArray->At(i);
+        if (ikeData->iCAList != NULL)
+            {
+            for (TInt j = 0; j < ikeData->iCAList->Count(); j++)
+                {
+                if (ikeData->iCAList->At(j)->iFormat == BIN_CERT)
+                    {
+                    LOG(Log::Printf(_L("Policy contains BIN certificates --> Failing")));
+                    //Ca cert in wrong format --> Error
+                    User::Leave(KVpnErrInvalidPolicyFile);
+                    }
+                }            
+            }
+        if ((ikeData->iOwnCert.iData.Length() > 0 &&
+             ikeData->iOwnCert.iFormat == BIN_CERT) ||
+            (ikeData->iPrivKey.iData.Length() > 0 &&
+             ikeData->iPrivKey.iFormat == BIN_CERT) ||
+            (ikeData->iPeerCert.iData.Length() > 0 &&
+            ikeData->iPeerCert.iFormat == BIN_CERT))
+            {
+            LOG(Log::Printf(_L("Policy contains BIN certificates --> Failing")));    
+            //Key or user cert in wrong format
+            User::Leave(KVpnErrInvalidPolicyFile);
+            }        
+        }
+    
+    CleanupStack::PopAndDestroy(); //ikeParser
+    CleanupStack::PopAndDestroy(ikeDataArray);
+    CleanupStack::PopAndDestroy(policyData16);
+    
     LOG(Log::Printf(_L("Calling: iPolicyStore->AddNewPolicyL")));    
-    // Add the policy to the policy store
     TRAPD(err, iPolicyStore->AddNewPolicyL(*policyDetails, *policyData));
     if (err == KErrNone)
     {
--- a/vpnengine/vpnmanager/src/vpnmanagerserver.cpp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/vpnmanager/src/vpnmanagerserver.cpp	Mon Jan 18 21:14:04 2010 +0200
@@ -21,7 +21,7 @@
 
 #include "vpnmanagerserver.h"
 #include "vpnmanagersession.h"
-#include "requestdispatcher.h"
+#include "vpnapiservant.h"
 
 
 const TUint CVpnManagerServer::iVpnManRangeCount = 3;
@@ -60,7 +60,7 @@
 
 CVpnManagerServer::~CVpnManagerServer()
     {
-    delete iRequestDispatcher;
+    delete iVpnApiServant;
     iFs.Close();
     }
 
@@ -83,7 +83,7 @@
     {
     User::LeaveIfError(iFs.Connect());
     User::LeaveIfError(iFs.CreatePrivatePath(EDriveC));
-    iRequestDispatcher = CRequestDispatcher::NewL(iFs);    
+    iVpnApiServant = CVpnApiServant::NewL(iFs);       
     StartL(KVpnManagerServer);
     }
 
@@ -102,7 +102,7 @@
 
     // Make new session
     return CVpnManagerSession::NewL(*const_cast<CVpnManagerServer*>(this),
-                                    *iRequestDispatcher);
+                                    *iVpnApiServant);
     }
 
 void CVpnManagerServer::IncrementSessions()
--- a/vpnengine/vpnmanager/src/vpnmanagersession.cpp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnengine/vpnmanager/src/vpnmanagersession.cpp	Mon Jan 18 21:14:04 2010 +0200
@@ -20,29 +20,29 @@
 #include "vpnmanagerserver.h"
 #include "vpnmanagerserverdefs.h"
 #include "vpnmanagersession.h"
-#include "requestdispatcher.h"
+#include "vpnapiservant.h"
 #include <e32svr.h>
 
 CVpnManagerSession* CVpnManagerSession::NewL(CVpnManagerServer& aServer,
-                                             CRequestDispatcher& aRequestDispatcher)
+                                             CVpnApiServant& aVpnApiServant)
     {
-    CVpnManagerSession* self = CVpnManagerSession::NewLC(aServer, aRequestDispatcher);
+    CVpnManagerSession* self = CVpnManagerSession::NewLC(aServer, aVpnApiServant);
     CleanupStack::Pop(self);
     return self;
     }
 
 CVpnManagerSession* CVpnManagerSession::NewLC(CVpnManagerServer& aServer,
-                                              CRequestDispatcher& aRequestDispatcher)
+                                              CVpnApiServant& aVpnApiServant)
     {
-    CVpnManagerSession* self = new (ELeave) CVpnManagerSession(aServer, aRequestDispatcher);
+    CVpnManagerSession* self = new (ELeave) CVpnManagerSession(aServer, aVpnApiServant);
     CleanupStack::PushL(self) ;
     self->ConstructL() ;
     return self ;
     }
 
 CVpnManagerSession::CVpnManagerSession(CVpnManagerServer& aServer,
-                                       CRequestDispatcher& aRequestDispatcher)
-    : iServer(aServer), iRequestDispatcher(aRequestDispatcher)
+                                       CVpnApiServant& aVpnApiServant)
+    : iServer(aServer), iVpnApiServant(aVpnApiServant)
     {
     }
 
@@ -58,5 +58,5 @@
 
 void CVpnManagerSession::ServiceL(const RMessage2& aMessage)
     {
-    iRequestDispatcher.ServiceL(aMessage, this);
+    iVpnApiServant.ServiceL(aMessage);
     }
--- a/vpnui/vpnmanagementui/src/vpnmanagementuilogcontainer.cpp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnui/vpnmanagementui/src/vpnmanagementuilogcontainer.cpp	Mon Jan 18 21:14:04 2010 +0200
@@ -549,6 +549,8 @@
         message = StringLoader::LoadLC( R_VPN_DETAIL_LOG_ENTRY_ERROR );
         }
 
+    __ASSERT_DEBUG(message != NULL, User::Invariant());
+    
     HBufC* messageText = HBufC::NewLC(message->Length() + eventText->Length() + 2);
 
     messageText->Des().Append(*message); //Append category
--- a/vpnui/vpnpolins/group/ats_vpnpolins.mmp	Thu Jan 07 13:26:15 2010 +0200
+++ b/vpnui/vpnpolins/group/ats_vpnpolins.mmp	Mon Jan 18 21:14:04 2010 +0200
@@ -15,6 +15,7 @@
 *
 */
 
+#include <platform_paths.hrh>
 
 TARGET          vpnpolins.exe
 TARGETTYPE      exe
@@ -25,25 +26,23 @@
 
 MACRO ATS_BUILD
 
-SOURCEPATH      ..\src
+SOURCEPATH      ../src
 SOURCE          policyinstaller.cpp 
 SOURCE          zipfiledecompressor.cpp
 SOURCE          cmdfileparser.cpp
 SOURCE          vpnbundlehandler.cpp
 SOURCE          vpndevlockhandler.cpp
 
-USERINCLUDE     ..\inc
-USERINCLUDE     ..\..\vpnpolicyrecognizer\inc
-USERINCLUDE     ..\..\..\vpnengine\vpnextapi\inc
-USERINCLUDE     ..\..\..\vpnengine\vpnmanager\inc
-USERINCLUDE     ..\..\..\vpnengine\acuagent\inc
-USERINCLUDE     ..\..\..\vpnengine\acupluginlib\inc
-USERINCLUDE			..\..\vpnecomnotifier\inc
-USERINCLUDE     ..\..\..\vpnengine\pkiserviceapi\inc
-USERINCLUDE     ..\..\..\vpnengine\vpncommon\inc
-USERINCLUDE     ..\..\..\vpnengine\utlpkcs12\inc
-USERINCLUDE     ..\..\..\vpnengine\utlxml\inc
-SYSTEMINCLUDE   \epoc32\include
+USERINCLUDE     ../inc
+USERINCLUDE     ../../vpnpolicyrecognizer/inc
+USERINCLUDE     ../../../vpnengine/vpnmanager/inc
+USERINCLUDE		../../vpnecomnotifier/inc
+USERINCLUDE     ../../../vpnengine/pkiserviceapi/inc
+USERINCLUDE     ../../../vpnengine/vpncommon/inc
+USERINCLUDE     ../../../vpnengine/utlpkcs12/inc
+USERINCLUDE     ../../../vpnengine/utlxml/inc
+
+MW_LAYER_SYSTEMINCLUDE
 
 START RESOURCE ..\data\vpnpolins_reg.rss
 TARGETPATH  \private\10003a3f\apps
@@ -63,3 +62,4 @@
 // File logger only needed for debug builds
 DEBUGLIBRARY         flogger.lib
 
+