38 Hole = ExAllocateFromNPagedLookasideList(&
IPHoleList);
71 NextEntry = CurrentEntry->
Flink;
79 ExFreeToNPagedLookasideList(&
IPHoleList, CurrentH);
81 CurrentEntry = NextEntry;
87 NextEntry = CurrentEntry->
Flink;
108 CurrentEntry = NextEntry;
119 ExFreeToNPagedLookasideList(&
IPDRList, IPDR);
175 CurrentEntry = CurrentEntry->
Flink;
221 (*IPPacket->
Free)(IPPacket);
243 CurrentEntry = CurrentEntry->
Flink;
313 IPDR = ExAllocateFromNPagedLookasideList(&
IPDRList);
324 ExFreeToNPagedLookasideList(&
IPDRList, IPDR);
359 FragFirst, FragLast, Hole->
First, Hole->
Last));
361 if ((FragFirst > Hole->
Last) || (FragLast < Hole->
First)) {
366 CurrentEntry = CurrentEntry->
Flink;
373 if (FragFirst > Hole->
First) {
377 ExFreeToNPagedLookasideList(&
IPHoleList, Hole);
386 if ((FragLast < Hole->Last) && MoreFragments) {
390 ExFreeToNPagedLookasideList(&
IPHoleList, Hole);
399 ExFreeToNPagedLookasideList(&
IPHoleList, Hole);
402 if (FragFirst == 0) {
436 Fragment->
Offset = FragFirst;
479 Datagram.
Free(&Datagram);
499 NextEntry = CurrentEntry->
Flink;
508 CurrentEntry = NextEntry;
532 NextEntry = CurrentEntry->
Flink;
549 CurrentEntry = NextEntry;
580 IPPacket->
HeaderSize = (FirstByte & 0x0F) << 2;
657 IPPacket->
Free(IPPacket);
678 IPPacket->
Free(IPPacket);
#define AddrInitIPv4(IPAddress, RawAddress)
BOOLEAN AddrIsEqual(PIP_ADDRESS Address1, PIP_ADDRESS Address2)
UINT CopyPacketToBuffer(PUCHAR DstData, PNDIS_PACKET SrcPacket, UINT SrcOffset, UINT Length)
#define IPv4CorrectChecksum(Data, Count)
static const WCHAR Cleanup[]
#define TI_DbgPrint(_t_, _x_)
#define IPv4_FRAGOFS_MASK
#define IPv4_MAX_HEADER_SIZE
VOID IPDispatchProtocol(PIP_INTERFACE Interface, PIP_PACKET IPPacket)
PIP_PACKET IPInitializePacket(PIP_PACKET IPPacket, ULONG Type)
VOID TcpipAcquireSpinLockAtDpcLevel(PKSPIN_LOCK SpinLock)
VOID TcpipReleaseSpinLockFromDpcLevel(PKSPIN_LOCK SpinLock)
VOID TcpipReleaseSpinLock(PKSPIN_LOCK SpinLock, KIRQL Irql)
VOID TcpipInterlockedInsertTailList(PLIST_ENTRY ListHead, PLIST_ENTRY Item, PKSPIN_LOCK Lock)
VOID TcpipInitializeSpinLock(PKSPIN_LOCK SpinLock)
VOID TcpipAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL Irql)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IsListEmpty(ListHead)
#define InitializeListHead(ListHead)
struct IPv4_HEADER * PIPv4_HEADER
struct _tagIPv4Header IPv4Header
#define FreeNdisPacket(x)
#define ExFreePoolWithTag(_P, _T)
_In_ UINT _In_ UINT _In_ PNDIS_PACKET _In_ UINT _Out_ PUINT BytesCopied
VOID EXPORT NdisReturnPackets(IN PNDIS_PACKET *PacketsToReturn, IN UINT NumberOfPackets)
NPAGED_LOOKASIDE_LIST IPHoleList
LIST_ENTRY ReassemblyListHead
VOID ProcessFragment(PIP_INTERFACE IF, PIP_PACKET IPPacket)
VOID IPReceive(PIP_INTERFACE IF, PIP_PACKET IPPacket)
VOID IPv4Receive(PIP_INTERFACE IF, PIP_PACKET IPPacket)
BOOLEAN ReassembleDatagram(PIP_PACKET IPPacket, PIPDATAGRAM_REASSEMBLY IPDR)
PIPDATAGRAM_REASSEMBLY GetReassemblyInfo(PIP_PACKET IPPacket)
VOID IPFreeReassemblyList(VOID)
NPAGED_LOOKASIDE_LIST IPDRList
VOID IPDatagramReassemblyTimeout(VOID)
VOID RemoveIPDR(PIPDATAGRAM_REASSEMBLY IPDR)
VOID FreeIPDR(PIPDATAGRAM_REASSEMBLY IPDR)
PIPDATAGRAM_HOLE CreateHoleDescriptor(ULONG First, ULONG Last)
KSPIN_LOCK ReassemblyListLock
NPAGED_LOOKASIDE_LIST IPFragmentList
#define MAX_TIMEOUT_COUNT
#define DISPLAY_IP_PACKET(x)
LIST_ENTRY FragmentListHead
struct _LIST_ENTRY * Flink
#define RtlCopyMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql