--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networkingtestandutils/ipv6to4tunnel/inc/6to4_flow.h Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,137 @@
+/*
+* Copyright (c) 2004-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:
+* Name : 6to4_flow.h
+* Part of : 6to4 plugin / 6to4.prt
+* Implements 6to4 automatic and configured tunnels, see
+* RFC 3056 & RFC 2893
+* Version : 0.2
+*
+*/
+
+
+
+
+/**
+ @internalComponent
+*/
+
+
+#ifndef __6TO4_FLOW_H
+#define __6TO4_FLOW_H
+
+// INCLUDES
+#include <e32base.h>
+#include <ip6_hook.h>
+
+#include "6to4.h"
+#include "6to4_tunnel.h"
+
+// CONSTANTS
+// MACROS
+// DATA TYPES
+// FUNCTION PROTOTYPES
+// FORWARD DECLARATIONS
+// CLASS DECLARATION
+
+class MNetworkService;
+
+/**
+* 6to4 flow hook
+* Keeps information on a 6to4 flow.
+*
+* @lib
+* @since
+*/
+class C6to4FlowInfo : public CBase, public MFlowHook
+ {
+ public: // Constructors & destructors
+
+ C6to4FlowInfo(const TPacketHead &aHead);
+ ~C6to4FlowInfo();
+
+ public: // New functions
+
+ public: // Functions from base classes
+
+ /**
+ * From MFlowHook Open and Close implements reference counting system.
+ * @since
+ * @param
+ * @return void
+ */
+ void Open ();
+
+ /**
+ * From MFlowHook Informs stack if the hook is ready. Can update address
+ * information.
+ * @since
+ * @param aHead Address information of the flow.
+ * @return TInt 0 => ready, >0 => pending, <0 => error.
+ */
+ TInt ReadyL (TPacketHead & aHead);
+
+ /**
+ * Called by IP when processing outbound packet.
+ * @since
+ * @param aPacket Complete packet
+ * @param aInfo Information block associated with the packet
+ * @return TInt 0 => processed, <0 => discarded, >0 => restart processing
+ */
+ TInt ApplyL (RMBufSendPacket & aPacket, RMBufSendInfo & aInfo);
+
+ /**
+ * From MFlowHook Open and Close implements reference counting system.
+ * @since
+ * @param
+ * @return void
+ */
+ void Close ();
+
+ private: // Data
+
+ // Reference count
+ TInt iRefs;
+
+ // Inner interface index
+ const TUint32 iInterfaceIndex;
+
+ TInet6HeaderIP iInnerIp;
+ TUint32 iSrcId; // inner only
+ TUint32 iDstId; // inner only
+ TInet6HeaderIP iOuterIp;
+
+ TUint16 iSrcPort;
+ TUint16 iDstPort;
+ TUint8 iIcmpType;
+ TUint8 iIcmpCode;
+ TUint8 iProtocol;
+
+ // Fixed packet content. Hooks may add in their ReadyL some fixed
+ // packet content (extension headers in IPv6) into (TPacketHead::iOffset,
+ // TPacketHead::iPacket). The ReadyL of a tunneling hook *MUST* save
+ // and remove this information from the TPacketHead, because it belongs
+ // under the outer IP header (which the tunneling hook inserts). The
+ // tunneling hook, in addition to adding the outer IP header in ApplyL,
+ // must also copy the fixed packet content, if any is present.
+ TInt iOffset; // > 0, if there is fixed packet content.
+ RMBufChain iPacket;
+
+ // TODO
+ TUint16 iPacketID;
+ };
+
+#endif // __6TO4_FLOW_H
+
+// End of File