NDIS_SWITCH_COPY_NET_BUFFER_LIST_INFO callback function (ndis.h)
The Hyper-V extensible switch extension calls the CopyNetBufferListInfo function to copy the out-of-band (OOB) forwarding context from a source packet's NET_BUFFER_LIST structure to a destination packet's NET_BUFFER_LIST structure. This context includes the extensible switch source port and network adapter information. The extensible switch destination port information can also be copied.
Syntax
NDIS_SWITCH_COPY_NET_BUFFER_LIST_INFO NdisSwitchCopyNetBufferListInfo;
NDIS_STATUS NdisSwitchCopyNetBufferListInfo(
[in] NDIS_SWITCH_CONTEXT NdisSwitchContext,
[in, out] PNET_BUFFER_LIST DestNetBufferList,
[in] PNET_BUFFER_LIST SrcNetBufferList,
[in] UINT32 Flags
)
{...}
Parameters
[in] NdisSwitchContext
An NDIS_SWITCH_CONTEXT value that contains the handle of the extensible switch module to which the extension is attached. When the extension calls NdisFGetOptionalSwitchHandlers, this handle is returned through the NdisSwitchContext parameter.
[in, out] DestNetBufferList
A pointer to a NET_BUFFER_LIST structure for the destination packet to which the extensible switch forwarding context is copied.
[in] SrcNetBufferList
A pointer to a NET_BUFFER_LIST structure for the source packet from which the extensible switch forwarding context is copied.
[in] Flags
A UINT32 value. When the NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS flag is specified, the function copies the extensible switch destination ports from the source packet to the destination packet.
The data that is contained within the source packet's NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO union is always copied to the extensible switch forwarding context in the destination packet. This data includes the source port identifiers and index of the network adapter connection from which the packet originated. Depending on the number of extensible switch destination ports that are copied to the destination packet, the NumAvailableDestinations member of the NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO union is updated in the destination packet.
For more information about the forwarding context, see Hyper-V Extensible Switch Forwarding Context.
Return value
If the call succeeds, the function returns NDIS_STATUS_SUCCESS. Otherwise, it returns an NDIS_STATUS_Xxx error code that is defined in Ndis.h.
Remarks
The extensible switch extension calls the CopyNetBufferListInfo function to copy the OOB data from a source packet to a destination packet. This data includes the following:
- The data from the NetBufferListInfo array of the source packet's NET_BUFFER_LIST structure.
- The NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO data from the source packet's extensible switch forwarding context.
-
The data for the extensible switch destination ports from the source packet's extensible switch forwarding context.
Note This data is only copied if the NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS flag is specified.
-
The extension must first initialize a NET_BUFFER_LIST structure for the destination packet that is derived from the source packet's NET_BUFFER_LIST structure.
For example, the extension can call NdisAllocateCloneNetBufferList to create a complete copy of the source packet. The extension can also call NdisAllocateFragmentNetBufferList to create a copy of only a fragment of the source packet. For more information, see Derived NET_BUFFER_LIST Structures.
- The extension must call the AllocateNetBufferListForwardingContext function to allocate the extensible switch forwarding context for the destination packet. This data is used to store the OOB extensible switch forwarding information, such as a packet's source and destination ports.
Requirements
Requirement | Value |
---|---|
Minimum supported client | Supported in NDIS 6.30 and later. |
Target Platform | Desktop |
Header | ndis.h (include Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
See also
AllocateNetBufferListForwardingContext
NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO
NdisAllocateCloneNetBufferList