--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/linklayerprotocols/pppnif/INC/PPPLOG.H Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,149 @@
+// Copyright (c) 1997-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:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#if !defined(__PPPLOG_H__)
+#define __PPPLOG_H__
+
+#include <comms-infras/commsdebugutility.h>
+#include <comms-infras/ss_protflow.h>
+#include "PPPSOCK.H"
+#include "PPPDEF.H"
+
+// ss_log.h is included
+#if !defined(LOG)
+
+#if defined (__FLOG_ACTIVE)
+
+#define ESOCK_LOGGING_ACTIVE
+#define LOG(a) a
+#else
+#define LOG(a)
+#endif
+
+#endif
+
+const TInt KMaxTcpDumpLogFileName = 58;
+
+/** Packet frame file format */
+enum {EpppDumpLogFormat,ElastLogFormat};
+
+/** Format of packets to log in the packet frame file */
+enum {EpppLogLinkFormat,ErawIpLogLinkFormat,ElastLogLinkFormat};
+
+/** Data transfer direction (defined by pppdump log spec) */
+enum {EpppDirectionSend=1,EpppDirectionReceive=2};
+
+/**
+PPP debug logging class.
+Manages textual output and binary packet dump files.
+@internalTechnology
+*/
+NONSHARABLE_CLASS(CPppLog) : public CBase
+ {
+public:
+ static const TInt KHexDumpWidth = 16;
+
+ static CPppLog* NewL();
+ virtual ~CPppLog();
+ void SetLogFileNameL(const TDesC& aName);
+
+private:
+ CPppLog();
+ void ConstructL();
+
+private:
+ HBufC* iLogFileName;
+ TBuf8<KMaxTcpDumpLogFileName> iTcpDumpLogFileName;
+ __FLOG_DECLARATION_MEMBER;
+
+ /** ETrue once the file header has been written to the packet dump file */
+ TBool iLogHeaderDone;
+
+ /** Packet dump file format to use */
+ TInt iLogFormat;
+
+ /** What should be logged in the packet dump file */
+ TInt iLogType;
+
+ /** Time of last packet logged */
+ TTime iTimeOrigin;
+
+public:
+ virtual void Write(const TDesC& aDes);
+ virtual void Printf(const TRefByValue<const TDesC> aFmt, ...);
+ void HexDump(const TText* aHeader, const TText* aMargin, const TUint8* aPtr, TInt aLen, TInt aWidth = KHexDumpWidth);
+//
+ void Dump(RMBufChain& aPacket, TInt aChannel);
+ void DumpPhase(TPppPhase aOldPhase, TPppPhase aNewPhase);
+ void DumpState(const TText* aFsm, TPppFsmState aOldState, TPppFsmState aNewState);
+ void DumpFrame(TInt direction, const TDesC8& aBuffer);
+ void DumpFrameFileHeader(TInt aLogFormat, TInt aLogType);
+
+private:
+ TInt DumpLcp(TPtrC8& aDes);
+ TInt DumpPap(TPtrC8& aDes);
+ TInt DumpChap(TPtrC8& aDes);
+ TInt DumpCbcp(TPtrC8& aDes);
+ TInt DumpLcpOption(TPtrC8& aDes);
+ TInt DumpIpcp(TPtrC8& aDes);
+ TInt DumpIp6cp(TPtrC8& aDes);
+ TInt DumpIpcpOption(TPtrC8& aDes);
+ TInt DumpIp6cpOption(TPtrC8& aDes);
+ void DumpChapType(const TUint8* aPtr);
+ TInt DumpCcp(TPtrC8& aDes);
+ TInt DumpCcpOption(TPtrC8& aDes);
+ void DumpBytes(const TText* aMargin, const TUint8* aPtr, TInt aLen);
+ TInt DumpIp(TPtrC8& aDes);
+ TInt DumpIp6(TPtrC8& aDes);
+ TInt DumpIp6MainHeader(TPtrC8& aDes);
+ TInt DumpVjUncompTcp(TPtrC8& aDes);
+ TInt DumpVjCompTcp(TPtrC8& aDes);
+ TUint16 DecodeDelta(TUint8 * & aPtr);
+ TInt16 DecodeSignedDelta(TUint8 * & aPtr);
+ TInt DumpTcp(TPtrC8& aDes, TUint32 aSrcA, TUint32 aDstA, TInt aLength);
+ TInt DumpIcmp(TPtrC8& aDes, TInt aLength);
+ TInt DumpUdp(TPtrC8& aDes, TUint32 aSrcA, TUint32 aDstA, TInt aLength);
+ TInt DumpDns(TPtrC8& aDes);
+//
+ TInt DumpDnsNameAndType(TPtrC8& aDes);
+ TInt DumpDnsQuery(TPtrC8& aDes);
+ TInt DumpDnsAnswer(TPtrC8& aDes);
+ TInt UpdatePtr(TPtrC8& aDes, TUint8* ptr);
+
+ const TText* ProtocolToText(TUint aValue);
+ const TText* PhaseToText(TPppPhase aPhase);
+ const TText* StateToText(TPppFsmState aState);
+ const TText* LcpCodeToText(TUint aValue);
+ const TText* LcpOptToText(TUint aValue);
+ const TText* FsmCodeToText(TUint aValue);
+ const TText* CallbackOpToText(TUint aValue);
+ const TText* PapCodeToText(TUint aValue);
+ const TText* ChapCodeToText(TUint aValue);
+ const TText* CbcpCodeToText(TUint aValue);
+ const TText* IpcpCodeToText(TUint aValue);
+ const TText* Ip6cpCodeToText(TUint aValue);
+ const TText* CcpCodeToText(TUint aValue);
+ const TText* IpProtocolToText(TUint aValue);
+
+ void PppDumpFileHeader();
+ void PppDumpFrame(TInt direction, TUint32 timeStep, const TDesC8& aBuffer);
+ };
+
+#endif