Share via


FwpsReassembleForwardFragmentGroup0 (Compact 2013)

3/26/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