--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vpnengine/sit/src/eventlogger.cpp Thu Dec 17 09:14:51 2009 +0200
@@ -0,0 +1,159 @@
+/*
+* 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: Logs events related to the SIT tasks.
+*
+*/
+
+#include <ipsecpolapi.h>
+
+#include "sit.h"
+#include "eventlogger.h"
+#include "log.h"
+#include "eventmediatorapi.h"
+#include "vpnconnstarter.h"
+
+
+/**
+ * Used to log events related to the SIT tasks.
+ */
+CEventLogger* CEventLogger::NewL(REventMediator& aEventMediator, TUint32 aVpnIapId, TUint32 aRealIapId)
+ {
+ LOG(Log::Printf(_L("CEventLogger::NewL - begin\n")));
+ CEventLogger* self = new (ELeave) CEventLogger(aEventMediator, aVpnIapId, aRealIapId);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(); // self
+ LOG(Log::Printf(_L("CEventLogger::NewL - end\n")));
+ return self;
+ }
+
+CEventLogger::CEventLogger(REventMediator& aEventMediator, TUint32 aVpnIapId, TUint32 aRealIapId)
+ : iEventMediator(aEventMediator), iVpnIapId(aVpnIapId), iRealIapId(aRealIapId)
+ {
+ }
+
+void CEventLogger::ConstructL()
+ {
+ // Set default access point names just
+ // in case the real name fetching fails
+ iVpnApName.Copy(KUnknownVpnAp);
+ iRealApName.Copy(KUnknownIap);
+
+ EventViewer::GetIapNames(iVpnIapId, iVpnApName, iRealIapId, iRealApName);
+ }
+
+CEventLogger::~CEventLogger()
+ {
+ LOG(Log::Printf(_L("CEventLogger::~CEventLogger\n")));
+ }
+
+void CEventLogger::LogEvent(TUint aMsgId, TAny* aAnyPtr, TInt aStatusCode, TInt aReasonCode)
+ {
+ DoLogEvent( aMsgId, aAnyPtr, aStatusCode, aReasonCode );
+ }
+
+TInt CEventLogger::DoLogEvent(TUint aMsgId, TAny* aAnyPtr, TInt aStatusCode, TInt aReasonCode)
+ {
+ TBuf<KMaxIpAddressLength> ifAddr;
+ TBuf8<KMaxIpAddressLength> ifAddr8;
+
+ TPckgBuf<TInt> statusCodeDes(aStatusCode);
+
+ TUid sourceUid = (TUid)(KUidSit);
+
+ TInt ret = KErrNone;
+
+ switch (aMsgId)
+ {
+ case R_VPN_MSG_VPN_IAP_ACTIVATED:
+ if (aStatusCode == KErrNone)
+ {
+ static_cast<TInetAddr*>(aAnyPtr)->Output(ifAddr);
+ ifAddr8.Copy(ifAddr);
+
+ ret = iEventMediator.ReportLogEvent(sourceUid, EInfo, aMsgId, 2,
+ &iVpnApName, &ifAddr8);
+ }
+ break;
+
+ case R_VPN_MSG_VPN_IAP_ACT_FAILED:
+ if (aStatusCode == KKmdIkeNoCertFoundErr)
+ {
+ ret = iEventMediator.ReportLogEvent(sourceUid, EError,
+ R_VPN_MSG_VPN_IAP_ACT_FAILED_CERT_EXP_MISS,
+ 1, &iVpnApName);
+ }
+ else if (aStatusCode != KErrNone && aStatusCode != KErrCancel)
+ {
+ ret = iEventMediator.ReportLogEvent(sourceUid, EError, aMsgId, 2,
+ &iVpnApName, &statusCodeDes);
+ }
+ break;
+
+ case R_VPN_MSG_REAL_IAP_ACT_FAILED:
+ if (aStatusCode != KErrNone && aStatusCode != KErrCancel)
+ {
+ ret = iEventMediator.ReportLogEvent(sourceUid, EError, aMsgId, 3,
+ &iRealApName, &iVpnApName, &statusCodeDes);
+ }
+ break;
+
+ case R_VPN_MSG_VPN_IAP_DEACT:
+ if (aStatusCode == KErrNone ||
+ aStatusCode == EUnknownPolicyHandle)
+ {
+ if (aReasonCode == EDeactivateForced)
+ {
+ ret = iEventMediator.ReportLogEvent(sourceUid, EInfo,
+ R_VPN_MSG_VPN_IAP_DEACT_REAL_IAP_TERMINATED, 2,
+ &iVpnApName, &iRealApName);
+ }
+ else
+ {
+ ret = iEventMediator.ReportLogEvent(sourceUid, EInfo, aMsgId, 1,
+ &iVpnApName);
+ }
+ }
+ break;
+
+ case R_VPN_MSG_REAL_IAP_REACTIVATED:
+ if (aStatusCode == KErrNone)
+ {
+ ret = iEventMediator.ReportLogEvent(sourceUid, EInfo, aMsgId, 2,
+ &iRealApName, &iVpnApName);
+ }
+ else
+ {
+ ret = iEventMediator.ReportLogEvent(sourceUid, EError, R_VPN_MSG_REAL_IAP_ACT_FAILED, 3,
+ &iRealApName, &iVpnApName, &statusCodeDes);
+ }
+ break;
+
+ case R_VPN_MSG_VPN_IAP_ACT_START:
+ // NSSM removal
+ break;
+
+ case R_VPN_MSG_VPN_IAP_ACT_CANCEL:
+ break;
+
+ case R_VPN_MSG_VPN_IAP_ACT_END:
+ break;
+
+ default:
+ return ret;
+ }
+
+ LOG(Log::Printf(_L("Logged event %d, logging status = %d\n"), aMsgId, ret));
+ return ret;
+ }