FwpsReassembleForwardFragmentGroup0 (Compact 7)
3/12/2014
This function assembles a list of IP fragments in the forwarding data path into a single packet.
Syntax
NTSTATUS NTAPI
FwpsReassembleForwardFragmentGroup0(
IN ADDRESS_FAMILY addressFamily,
IN OUT NET_BUFFER_LIST *fragmentGroupNblChain,
IN NDIS_HANDLE netBufferAndNetBufferListPoolHandle OPTIONAL,
IN ULONG dataBackFill,
IN ULONG flags,
OUT NET_BUFFER_LIST **reassembledNbl
);
Parameters
addressFamily
One of the following address families:- AF_INET: The IPv4 address family
- AF_INET6: The IPv6 address family
- fragmentGroupNblChain
A pointer to the NET_BUFFER_LIST chain of IP fragments to reassemble into a single packet.
- netBufferAndNetBufferListPoolHandle
An optional NET_BUFFER_LIST structure pool handle that was previously returned from the NdisAllocateNetBufferListPool function. The AllocateNetBuffer member of the NET_BUFFER_LIST_POOL_PARAMETERS structure that the caller passed to NdisAllocateNetBufferListPool must be TRUE and the DataSize member set to zero. If this parameter is NULL, NDIS uses an internal pool.
- dataBackFill
If allocation of unused dataspace (backfill space) is required, this parameter specifies the number of bytes of unused dataspace to allocate
- flags
Reserved. Callout drivers must set this parameter to zero.
- reassembledNbl
A pointer to a NET_BUFFER_LIST pointer that receives the address of the reassembled single NET_BUFFER list.
Return Value
The FwpsReassembleForwardFragmentGroup0 function returns one of the following NTSTATUS codes:
Value | Description |
---|---|
STATUS_SUCCESS |
The list of IP fragments was successfully reassembled into a single NET_BUFFER_LIST structure. |
STATUS_FWP_TCPIP_NOT_READY |
The TCP/IP network stack is not ready to perform packet reassembly. This error can occur if this function is called before Tcpip.sys is loaded, or after Tcpip.sys has been unloaded. |
Other status codes |
An error occurred |
Remarks
The FwpsReassembleForwardFragmentGroup0 function assembles a list of IP fragments in the forwarding data path that is described by a NET_BUFFER_LIST chain into a single packet. The reassembled packet is a single net buffer list that contains one net buffer and references the input fragment chain. This function is typically used by edge firewalls to inspect network packets.
The input chain of IP fragments, fragmentGroupNblChain, must be indicated by the classifyFn function to the FWPS_LAYER_IPFORWARD_V4 or FWPS_LAYER_IPFORWARD_V6 layer when the FWP_CONDITION_FLAG_IS_FRAGMENT_GROUP flag is set. If this is not the case, the behavior of FwpsReassembleForwardFragmentGroup0 is undefined.
Call the FwpsFreeNetBufferList0 function to free the reassembled NET_BUFFER_LIST structure and all associated NET_BUFFER structures and MDL chains. FwpsFreeNetBufferList0 dereferences the original input fragment chain.
You can use the following command to view the current Group Forwarded Fragments setting for the system:
netsh interface {ipv4|ipv6} show global.
Because FwpsReassembleForwardFragmentGroup0 references the input fragment chain, callouts do not have to reference or clone the chain before calling this function.
Requirements
Header |
fwpsk.h |
See Also
Reference
Functions Called by Callout Drivers
NET_BUFFER_LIST
NdisAllocateNetBufferListPool
NET_BUFFER
classifyFn
FwpsFreeNetBufferList0
WFP Callout Driver Functions