vpnengine/kmdapi/src/kmdapi.cpp
changeset 0 33413c0669b9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vpnengine/kmdapi/src/kmdapi.cpp	Thu Dec 17 09:14:51 2009 +0200
@@ -0,0 +1,148 @@
+/*
+* 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:   Key Management Daemon API
+*
+*/
+
+// EXTERNAL INCLUDES
+#include <e32std.h>
+#include <e32math.h>
+
+// INTERNAL INCLUDES
+#include "kmdserver.h"
+#include "clistatic.h"
+
+// CLASS HEADER
+#include "kmdapi.h"
+
+// ---------------------------------------------------------------------------
+// Opens a session to KMD server and starts the server if it is not yet
+// started.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt RKMD::Connect()
+	{
+	TInt retry=2;
+	for ( ;; )
+		{
+		TInt r = CreateSession( KKmdServerName,
+                                TVersion( KKmdServMajorVersion,
+                                          KKmdServMinorVersion,
+                                          KKmdServBuildVersion),
+                                          KDefaultMessageSlots );
+
+		if ( r != KErrNotFound && r != KErrServerTerminated )
+		    {
+		    return r;
+		    }
+		if ( --retry == 0 )
+		    {
+			return r;
+		    }
+		r = Launcher::LaunchServer( KKmdServerName,
+		                            KKmdServerImg,
+                                    KServerUid3,
+                                    KMyServerInitHeapSize,
+                                    KMyServerMaxHeapSize,
+                                    KMyServerStackSize );
+		if ( r != KErrNone && r != KErrAlreadyExists )
+		    {
+			return r;
+		    }
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// Start a real network connection.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void RKMD::StartRealConnection( TUint32 aVpnIapId, 
+                                         TPckg<TVpnRealConnectionParams>& aRealConfig,
+                                         TRequestStatus& aStatus ) const
+    {
+    SendReceive( CKmdServer::KKmdStartConnection,
+                 TIpcArgs( aVpnIapId, &aRealConfig ),
+                 aStatus );
+    }
+    
+// ---------------------------------------------------------------------------
+// Cancels ongoing activate request.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void RKMD::CancelStartRealConnection() const
+    {
+    SendReceive( CKmdServer::KKmdCancelStartConnection );
+    }
+
+// ---------------------------------------------------------------------------
+// Asynchronous Activate request.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void RKMD::Activate( TUint32 aVpnIapId,
+                              const TDesC& aVpnIfName,
+                              const TDesC8& aIkeConf,                               
+                              TVPNAddressPckg& aVPNAddress,
+                              TRequestStatus& aStatus ) const
+    {
+	SendReceive( CKmdServer::KKmdActivateAsync,
+				 TIpcArgs( aVpnIapId,
+				           &aVpnIfName,
+				           &aIkeConf,
+				           &aVPNAddress ),
+				           aStatus );
+    }
+
+// ---------------------------------------------------------------------------
+// Cancels ongoing Activate request.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void RKMD::CancelActivate() const
+    {
+    SendReceive( CKmdServer::KKmdCancelActivateAsync );
+    }
+
+// ---------------------------------------------------------------------------
+// Stops specified VPN connection.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt RKMD::StopVpnConnection( TUint32 aVpnIapId,
+                                       TKmdStopConnection::TType aType )
+    { 
+    return SendReceive( CKmdServer::KKmdStopConnection,
+                        TIpcArgs( aVpnIapId, aType ) );
+    }
+
+// ---------------------------------------------------------------------------
+// Resolve an IP address from FQDN.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void RKMD::ResolveAddress( TUint32 aVpnIapId, 
+                                    const TDesC& aFqdn,
+                                    TNameEntry& aResult,
+                                    TRequestStatus& aStatus ) const
+    {
+    SendReceive( CKmdServer::KKmdResolveAddress,
+                 TIpcArgs( aVpnIapId, &aFqdn, &aResult ),
+                 aStatus );    
+    }
+    
+// ---------------------------------------------------------------------------
+// Cancel outstanding ResolveAddress query.
+// ---------------------------------------------------------------------------
+//    
+EXPORT_C void RKMD::CancelResolve() const
+    {
+    SendReceive( CKmdServer::KKmdCancelResolveAddress );
+    }
+