NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO unión (ndis.h)

La unión NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO especifica la información para reenviar un paquete a uno o varios puertos de conmutador extensibles de Hyper-V.

Esta información se incluye en los datos fuera de banda (OOB) de la estructura NET_BUFFER_LIST del paquete.

Sintaxis

typedef union _NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO {
  UINT64 AsUINT64;
  struct {
    UINT32 NumAvailableDestinations : 16;
    UINT32 SourcePortId : 16;
    UINT32 SourceNicIndex : 8;
    UINT32 NativeForwardingRequired : 1;
#if ...
    UINT32 Reserved1 : 1;
#else
    UINT32 Reserved1 : 2;
#endif
    UINT32 IsPacketDataSafe : 1;
    UINT32 SafePacketDataSize : 12;
    UINT32 IsPacketDataUncached : 1;
    UINT32 IsSafePacketDataUncached : 1;
    UINT32 Reserved2 : 7;
  };
} NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO, *PNDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO;

Miembros

AsUINT64

Valor completo de NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO de 64 bits.

NumAvailableDestinations

Valor que especifica el número de elementos de puertos de destino de conmutador extensible sin usar dentro de una estructura de NET_BUFFER_LIST . Para obtener más información, vea la sección Comentarios.

SourcePortId

Identificador del puerto de conmutador extensible de origen desde el que se originó el NET_BUFFER_LIST .

SourceNicIndex

Valor UINT32 que especifica el índice del adaptador de red de origen que está conectado al puerto de conmutador extensible especificado por el miembro SourcePortId .

Para obtener más información sobre este valor de índice, vea Valores de índice del adaptador de red.

NativeForwardingRequired

Si este miembro se establece en TRUE, el paquete es un paquete NVGRE y el componente virtualización de red de Hyper-V (HNV) del conmutador extensible de Hyper-V reenviará este paquete. Para más información, consulte Reenvío híbrido.

Esta marca no debe escribirse en ninguna extensión.

Nota Esta marca solo está disponible en NDIS 6.40 y versiones posteriores.

Reserved1

Este miembro está reservado para su uso futuro por NDIS.

Este miembro está reservado para su uso futuro por NDIS.

IsPacketDataSafe

Si este miembro se establece en TRUE, todos los datos del paquete proceden de la memoria del host de confianza.

SafePacketDataSize

Valor que especifica el número de bytes consecutivos en los datos del paquete que se encuentran en la memoria de host de confianza. Este valor se encuentra en unidades de bytes desde el inicio de los datos del paquete. El resto de los datos de paquete (si existen) después del valor SafePacketDataSize se encuentra en memoria compartida que tiene acceso el elemento secundario de Hyper-V y las particiones primarias.

Para obtener más información, vea la sección Comentarios.

Nota Este miembro solo es válido si el miembro IsPacketDataSafe está establecido en FALSE.

IsPacketDataUncached

Si no se establece esta marca, se almacenan en caché todos los datos del paquete. Si se establece, parte o todos los datos no se almacenan en caché. Cuando se establece, compruebe el campo IsSafePacketDataUncached para ver si al menos la parte SafePacketData está almacenada en caché.

IsSafePacketDataUncached

Si se establece la marca IsPacketDataUncached , este campo indica si la parte SafePacketData del paquete se almacena en caché. Si es así, consulte el campo SafePacketDataSize para saber cuántos bytes se almacenan en caché.

Reserved2

Este miembro está reservado para su uso futuro por NDIS.

Comentarios

Las extensiones de conmutador extensible pueden usar la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL para acceder a la unión de NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO en una estructura de NET_BUFFER_LIST .

El miembro NumAvailableDestinations de la unión NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO especifica el número de elementos de puerto de destino de conmutador extensible sin usar dentro de una estructura de NET_BUFFER_LIST . Cada puerto de destino de conmutador extensible se especifica mediante un elemento NDIS_SWITCH_PORT_DESTINATION dentro de la estructura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY de una estructura de NET_BUFFER_LIST . La extensión de conmutador extensible llama a GetNetBufferListDestinations para obtener el NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY actual en una estructura de NET_BUFFER_LIST .

El miembro NativeForwardingRequired especifica si el paquete es un paquete NVGRE o no. Si es TRUE, el paquete es un paquete NVGRE y la extensión de reenvío no determina la matriz de puertos de destino de reenvío del paquete, aunque puede agregar o excluir puertos de destino en la matriz. Para más información, consulte Reenvío híbrido.

La marca IsPacketDataUncached puede ayudar a las extensiones de conmutador extensible a determinar si parte o todos los datos del paquete se almacenan en caché o no. Si se establece esta marca, parte o todos los datos no se almacenan en caché y la marca IsSafePacketDataUncached indica a la extensión si el elemento de datos de paquete seguro está almacenado en caché. Si los datos de paquetes seguros se almacenan en caché, el miembro SafePacketDataSize especifica cuántos bytes se almacenan en caché.

SafePacketDataSize especifica el tamaño de los datos de paquete que se encuentran en la memoria local, o de confianza, en el sistema operativo primario de la partición primaria de Hyper-V. La partición secundaria no puede acceder a esta memoria. Por lo tanto, se considera "seguro" de las actualizaciones no sincronizadas por el sistema operativo invitado que se ejecuta en esa partición.

Si una extensión de conmutador extensible requiere más espacio de confianza para inspeccionar los datos del paquete, debe seguir estos pasos:

  1. La extensión debe duplicar la estructura NET_BUFFER_LIST del paquete asignando una estructura de NET_BUFFER_LIST y NET_BUFFER . A continuación, la extensión llama a NdisCopyFromNetBufferToNetBuffer para duplicar la estructura de NET_BUFFER del paquete. Si esta función se completa correctamente, los datos del paquete se copian en la memoria de confianza.
  2. La extensión debe llamar a CopyNetBufferListInfo para copiar los datos de OOB del paquete en el paquete duplicado.
  3. Una vez duplicado el paquete original, la extensión debe obtener la unión NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO en el paquete duplicado mediante la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL . La extensión debe establecer el miembro IsPacketDataSafe en TRUE.
Para obtener más información sobre cómo duplicar paquetes en la interfaz de conmutador extensible, vea Origining Packet Traffic.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con NDIS 6.30 y versiones posteriores.
Encabezado ndis.h (incluya Ndis.h)

Consulte también

Reenvío de extensiones

Reenvío de paquetes a puertos de conmutador extensible de Hyper-V

Reenvío de paquetes a adaptadores de red físicos

GetNetBufferListDestinations

Reenvío híbrido

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER_LIST

NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL

Información general sobre el conmutador extensible de Hyper-V