Reactos
at listview 66 lines 2.4 kB view raw
1/* 2 * COPYRIGHT: See COPYING in the top level directory 3 * PROJECT: ReactOS TCP/IP protocol driver 4 * FILE: include/receive.h 5 * PURPOSE: Internet Protocol receive prototypes 6 */ 7 8#pragma once 9 10#include <ip.h> 11 12/* Number of seconds before destroying the IPDR */ 13#define MAX_TIMEOUT_COUNT 3 14 15/* IP datagram fragment descriptor. Used to store IP datagram fragments */ 16typedef struct IP_FRAGMENT { 17 LIST_ENTRY ListEntry; /* Entry on list */ 18 PNDIS_PACKET Packet; /* NDIS packet containing fragment data */ 19 BOOLEAN ReturnPacket; /* States whether to call NdisReturnPackets */ 20 UINT PacketOffset; /* Offset into NDIS packet where data is */ 21 UINT Offset; /* Offset into datagram where this fragment is */ 22 UINT Size; /* Size of this fragment */ 23} IP_FRAGMENT, *PIP_FRAGMENT; 24 25/* IP datagram hole descriptor. Used to reassemble IP datagrams */ 26typedef struct IPDATAGRAM_HOLE { 27 LIST_ENTRY ListEntry; /* Entry on list */ 28 UINT First; /* Offset of first octet of the hole */ 29 UINT Last; /* Offset of last octet of the hole */ 30} IPDATAGRAM_HOLE, *PIPDATAGRAM_HOLE; 31 32/* IP datagram reassembly information */ 33typedef struct IPDATAGRAM_REASSEMBLY { 34 LIST_ENTRY ListEntry; /* Entry on list */ 35 KSPIN_LOCK Lock; /* Protecting spin lock */ 36 UINT DataSize; /* Size of datagram data area */ 37 IP_ADDRESS SrcAddr; /* Source address */ 38 IP_ADDRESS DstAddr; /* Destination address */ 39 UCHAR Protocol; /* Internet Protocol number */ 40 USHORT Id; /* Identification number */ 41 PIP_HEADER IPv4Header; /* Pointer to IP header */ 42 UINT HeaderSize; /* Length of IP header */ 43 LIST_ENTRY FragmentListHead; /* IP fragment list */ 44 LIST_ENTRY HoleListHead; /* IP datagram hole list */ 45 UINT TimeoutCount; /* Timeout counter */ 46} IPDATAGRAM_REASSEMBLY, *PIPDATAGRAM_REASSEMBLY; 47 48 49extern LIST_ENTRY ReassemblyListHead; 50extern KSPIN_LOCK ReassemblyListLock; 51extern NPAGED_LOOKASIDE_LIST IPDRList; 52extern NPAGED_LOOKASIDE_LIST IPFragmentList; 53extern NPAGED_LOOKASIDE_LIST IPHoleList; 54 55 56VOID IPFreeReassemblyList( 57 VOID); 58 59VOID IPDatagramReassemblyTimeout( 60 VOID); 61 62VOID IPReceive( 63 PIP_INTERFACE IF, 64 PIP_PACKET IPPacket); 65 66/* EOF */