estructura IP_MSFILTER (ws2ipdef.h)

La estructura ip_msfilter proporciona parámetros de filtrado de multidifusión para direcciones IPv4.

Sintaxis

typedef struct ip_msfilter {
  IN_ADDR             imsf_multiaddr;
  IN_ADDR             imsf_interface;
  MULTICAST_MODE_TYPE imsf_fmode;
  ULONG               imsf_numsrc;
  IN_ADDR             imsf_slist[1];
} IP_MSFILTER, *PIP_MSFILTER;

Miembros

imsf_multiaddr

Dirección IPv4 del grupo de multidifusión.

imsf_interface

La dirección IPv4 local de la interfaz o el índice de interfaz en el que se debe filtrar el grupo de multidifusión. Este valor está en orden de bytes de red. Si este miembro especifica una dirección IPv4 de 0.0.0.0, se usa la interfaz de multidifusión IPv4 predeterminada.

Para usar un índice de interfaz de 1 sería el mismo que una dirección IP de 0.0.0.1.

imsf_fmode

Modo de filtro de multidifusión que se va a usar. Este parámetro puede ser MCAST_INCLUDE (valor de 0) para incluir orígenes de multidifusión determinados o MCAST_EXCLUDE (valor de 1) para excluir el tráfico de orígenes especificados.

En Windows Server 2003 y Windows XP, estos valores se definen en el archivo de encabezado Ws2tcpip.h .

En Windows Vista y versiones posteriores, estos valores se definen como valores de enumeración en la enumeración MULTICAST_MODE_TYPE definida en el archivo de encabezado Ws2ipdef.h .

imsf_numsrc

Número de orígenes del miembro imsf_slist .

imsf_slist[1]

Matriz de estructuras de in_addr que especifican las direcciones de origen de multidifusión IPv4 que se van a incluir o excluir.

Observaciones

La estructura ip_msfilter se usa con direcciones IPv4. La estructura ip_msfilter se pasa como argumento para el SIO_GET_MULTICAST_FILTER y SIO_SET_MULTICAST_FILTER IOCTLs.

La estructura de ip_msfilter y las estructuras relacionadas usadas para la programación de multidifusión IPv4 se basan en las recomendaciones de IETF en las secciones 4 y 8.1 de RFC 3768. Para obtener más información, vea http://www.ietf.org/rfc/rfc3678.txt.

En Windows Vista y versiones posteriores, hay disponible un conjunto de opciones de socket para la programación de multidifusión que admite direcciones IPv6 e IPv4. Estas opciones de socket son independientes de IP y se pueden usar en IPv6 e IPv4. Estas opciones independientes de IP usan las GROUP_REQ y las estructuras de GROUP_SOURCE_REQ y los IOCTLs SIOCSMSFILTER y SIOCGMSFILTER . Estas son las opciones de socket preferidas e ICTLs para la programación de multidifusión en Windows Vista y versiones posteriores.

El miembro imsf_interface puede ser un índice de interfaz. Cualquier dirección IPv4 del bloque 0.x.x.x (primer octeto de 0) excepto la dirección IPv4 de 0.0.0.0 se trata como un índice de interfaz. Un índice de interfaz es un número de 24 bits. No se usa el bloque de direcciones IPv4 0.0.0.0/8 (este intervalo está reservado). La función GetAdaptersAddresses se puede usar para obtener información de índice de interfaz que se usará para el miembro imsf_interface .

Se recomienda especificar siempre una dirección IPv4 local o un índice de interfaz en el miembro imsf_interface de la estructura de ip_msfilter , en lugar de usar la interfaz predeterminada. Esto es especialmente importante en equipos con varias interfaces de red y varias direcciones IPv4 públicas.

La interfaz predeterminada que se usa para la multidifusión IPv4 viene determinada por la pila de redes en Windows. Una aplicación puede determinar la interfaz predeterminada usada para la multidifusión IPv4 mediante la función GetIpForwardTable para recuperar la tabla de enrutamiento IPv4. La interfaz de red con el valor más bajo para la métrica de enrutamiento para una dirección IP de destino de 224.0.0.0 es la interfaz predeterminada para la multidifusión IPv4. La tabla de enrutamiento también se puede mostrar desde el símbolo del sistema con el siguiente comando:

impresión de ruta

La opción de socket IP_MULTICAST_IF se puede usar para establecer la interfaz predeterminada para enviar paquetes de multidifusión IPv4. Esta opción de socket no cambia la interfaz predeterminada que se usa para recibir paquetes de multidifusión IPv4.

Una aplicación de multidifusión IPv4 típica usaría la opción de socket IP_ADD_MEMBERSHIP con la estructura ip_mreq o la opción de socket IP_ADD_SOURCE_MEMBERSHIP con la estructura ip_mreq_source para unir un grupo de multidifusión y escuchar paquetes de multidifusión en una interfaz específica. La opción de socket IP_MULTICAST_IF se usaría para establecer la interfaz para enviar paquetes de multidifusión IPv4 al grupo de multidifusión. El escenario más común sería una aplicación de multidifusión que escucha y envía en la misma interfaz para un grupo de multidifusión. Una aplicación de multidifusión puede usar varios sockets con un socket para escuchar y uno o varios sockets para enviar.

En el Kit de desarrollo de software (SDK) de Microsoft Windows publicado para Windows Vista y versiones posteriores, la organización de los archivos de encabezado ha cambiado y la estructura de ip_msfilter se define en el archivo de encabezado Ws2ipdef.h que se incluye automáticamente en el archivo de encabezado Ws2tcpip.h . Los archivos de encabezado Ws2ipdef.h nunca se deben usar directamente.

Nota Las estructuras derivadas IP_MSFILTER y PIP_MSFILTER solo se definen en Windows SDK publicado con Windows Vista y versiones posteriores. La estructura ip_msfilter debe usarse en versiones anteriores de Windows SDK.
 

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado ws2ipdef.h (incluya Ws2tcpip.h)

Consulte también

Programación de multidifusión basada en estado final

GROUP_FILTER

GROUP_REQ

GROUP_SOURCE_REQ

GetAdaptersAddresses

GetIpForwardTable

Opciones de socket de IPPROTO_IP

MULTICAST_MODE_TYPE

Programación de multidifusión

Opciones de socket

ip_mreq

ip_mreq_source