--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/linklayerprotocols/ethernetnif/INC/ProtocolHeaders.h Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,86 @@
+// 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(__ProtocolHeaders_H__)
+#define __ProtocolHeaders_H__
+
+#define DotToIp(a,b,c,d) (((a)<<24) | ((b)<<16) | ((c)<<8) | (d))
+
+const TUint KUDPHeaderSize = 8;
+const TUint KIPMinHeaderSize = 20;
+const TUint KIPDefaultTOS = 0;
+const TInt KIPDefaultTTL = 255;
+const TUint KIPVersion = 4;
+
+struct TGenericHeader
+{
+};
+
+/**
+IP message header
+*/
+struct TIpHdr
+{
+public:
+ //inline TUint32 DestAddr() const {return(BigEndian::Get32(iDestAddr.Begin()));};
+ //inline TUint32 SrcAddr() const {return(BigEndian::Get32(iSrcAddr.Begin()));};
+ //inline TUint16 FragOffset() const {return(BigEndian::Get16(iFragOffset.Begin()));};
+ /** Bits 7..4 of iVersion */
+ inline TUint Version() const {return (iVersion>>4); };
+ inline void SetVersion(TUint aVal) { iVersion = (TUint8)((iVersion&0xf)|((aVal&0xf)<<4)); };
+ /** Bits 3..0 of iVersion */
+ inline TUint HdrLen() const { return (iVersion&0xf)<<2; };
+ inline void SetHdrLen(TUint aVal) { iVersion =
+ (TUint8)((iVersion&0xf0)|((TUint8)(aVal>>2)&0xf)); };
+ inline TUint TOS() { return iTOS; };
+ inline void SetTOS(TUint aVal) { iTOS = (TUint8)(aVal&0xff); };
+ inline TUint16 Length() { return BigEndian::Get16((TUint8*)&iLength); };
+ inline void SetLength(TUint16 aVal) { BigEndian::Put16((TUint8*)&iLength,aVal); };
+ inline TUint16 Ident() { return BigEndian::Get16((TUint8*)&iIdent); };
+ inline void SetIdent(TUint16 aVal) { BigEndian::Put16((TUint8*)&iIdent,aVal); };
+ inline TUint8 TTL() { return iTTL; };
+ inline void SetTTL(TUint aVal) { iTTL = (TUint8)(aVal&0xff); };
+ inline TUint8 Protocol() { return iProtocol; };
+ inline void SetProtocol(TUint aVal) { iProtocol = (TUint8)(aVal&0xff); };
+ inline TUint16 Checksum() { return BigEndian::Get16((TUint8*)&iChecksum); };
+ inline void SetChecksum(TUint16 aVal) { BigEndian::Put16((TUint8*)&iChecksum,aVal); };
+ inline TUint32 DestAddr() const {return(BigEndian::Get32(iDestAddr));};
+ inline TUint32 SrcAddr() const {return(BigEndian::Get32(iSrcAddr));};
+ inline TUint16 FragOffset() const {return BigEndian::Get16(iFragOffset);};
+ inline void SetDestAddr(TUint32 aVal) const { BigEndian::Put32((TUint8*)(&iDestAddr),aVal);};
+ inline void SetSrcAddr(TUint32 aVal) const { BigEndian::Put32((TUint8*)(&iSrcAddr),aVal);};
+ inline void SetFragOffset(TUint16 aVal) const {BigEndian::Put16((TUint8*)(&iFragOffset),aVal);};
+protected:
+ TUint8 iVersion;
+ TUint8 iTOS;
+ TUint16 iLength;
+ TUint16 iIdent;
+ //TFixedArray<TUint8,2> iFragOffset;
+ TUint8 iFragOffset[2];
+ TUint8 iTTL;
+ TUint8 iProtocol;
+ TUint16 iChecksum;
+ //TFixedArray<TUint8,4> iSrcAddr;
+ //TFixedArray<TUint8,4> iDestAddr;
+ TUint8 iSrcAddr[4];
+ TUint8 iDestAddr[4];
+};
+
+#endif