ReactOS Fundraising Campaign 2012
 
€ 4,060 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

receive.h
Go to the documentation of this file.
00001 /*
00002  * COPYRIGHT:   See COPYING in the top level directory
00003  * PROJECT:     ReactOS TCP/IP protocol driver
00004  * FILE:        include/receive.h
00005  * PURPOSE:     Internet Protocol receive prototypes
00006  */
00007 
00008 #pragma once
00009 
00010 #include <ip.h>
00011 
00012 /* Number of seconds before destroying the IPDR */
00013 #define MAX_TIMEOUT_COUNT 3
00014 
00015 /* IP datagram fragment descriptor. Used to store IP datagram fragments */
00016 typedef struct IP_FRAGMENT {
00017     LIST_ENTRY ListEntry; /* Entry on list */
00018     PNDIS_PACKET Packet;  /* NDIS packet containing fragment data */
00019     BOOLEAN ReturnPacket; /* States whether to call NdisReturnPackets */
00020     UINT PacketOffset;    /* Offset into NDIS packet where data is */
00021     UINT Offset;          /* Offset into datagram where this fragment is */
00022     UINT Size;            /* Size of this fragment */
00023 } IP_FRAGMENT, *PIP_FRAGMENT;
00024 
00025 /* IP datagram hole descriptor. Used to reassemble IP datagrams */
00026 typedef struct IPDATAGRAM_HOLE {
00027     LIST_ENTRY ListEntry; /* Entry on list */
00028     UINT First;           /* Offset of first octet of the hole */
00029     UINT Last;            /* Offset of last octet of the hole */
00030 } IPDATAGRAM_HOLE, *PIPDATAGRAM_HOLE;
00031 
00032 /* IP datagram reassembly information */
00033 typedef struct IPDATAGRAM_REASSEMBLY {
00034     LIST_ENTRY ListEntry;        /* Entry on list */
00035     KSPIN_LOCK Lock;             /* Protecting spin lock */
00036     UINT DataSize;               /* Size of datagram data area */
00037     IP_ADDRESS SrcAddr;          /* Source address */
00038     IP_ADDRESS DstAddr;          /* Destination address */
00039     UCHAR Protocol;              /* Internet Protocol number */
00040     USHORT Id;                   /* Identification number */
00041     PIP_HEADER IPv4Header;       /* Pointer to IP header */
00042     UINT HeaderSize;             /* Length of IP header */
00043     LIST_ENTRY FragmentListHead; /* IP fragment list */
00044     LIST_ENTRY HoleListHead;     /* IP datagram hole list */
00045     UINT TimeoutCount;           /* Timeout counter */
00046 } IPDATAGRAM_REASSEMBLY, *PIPDATAGRAM_REASSEMBLY;
00047 
00048 
00049 extern LIST_ENTRY ReassemblyListHead;
00050 extern KSPIN_LOCK ReassemblyListLock;
00051 extern NPAGED_LOOKASIDE_LIST IPDRList;
00052 extern NPAGED_LOOKASIDE_LIST IPFragmentList;
00053 extern NPAGED_LOOKASIDE_LIST IPHoleList;
00054 
00055 
00056 VOID IPFreeReassemblyList(
00057     VOID);
00058 
00059 VOID IPDatagramReassemblyTimeout(
00060     VOID);
00061 
00062 VOID IPReceive(
00063     PIP_INTERFACE IF,
00064     PIP_PACKET IPPacket);
00065 
00066 /* EOF */

Generated on Tue May 22 2012 04:31:57 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.