diff -r 000000000000 -r 33413c0669b9 vpnengine/sit/src/eventlogger.cpp --- /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 + +#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 ifAddr; + TBuf8 ifAddr8; + + TPckgBuf statusCodeDes(aStatusCode); + + TUid sourceUid = (TUid)(KUidSit); + + TInt ret = KErrNone; + + switch (aMsgId) + { + case R_VPN_MSG_VPN_IAP_ACTIVATED: + if (aStatusCode == KErrNone) + { + static_cast(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; + }