structure IP_MSFILTER (ws2ipdef.h)

La structure ip_msfilter fournit des paramètres de filtrage multidiffusion pour les adresses IPv4.

Syntaxe

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;

Membres

imsf_multiaddr

Adresse IPv4 du groupe de multidiffusion.

imsf_interface

Adresse IPv4 locale de l’interface ou index d’interface sur lequel le groupe de multidiffusion doit être filtré. Cette valeur est dans l’ordre des octets réseau. Si ce membre spécifie une adresse IPv4 de 0.0.0.0, l’interface de multidiffusion IPv4 par défaut est utilisée.

Utiliser un index d’interface de 1 serait identique à une adresse IP de 0.0.0.1.

imsf_fmode

Mode de filtre multidiffusion à utiliser. Ce paramètre peut être soit MCAST_INCLUDE (valeur 0) pour inclure des sources de multidiffusion particulières, soit MCAST_EXCLUDE (valeur 1) pour exclure le trafic des sources spécifiées.

Sur Windows Server 2003 et Windows XP, ces valeurs sont définies dans le fichier d’en-tête Ws2tcpip.h .

Sur Windows Vista et versions ultérieures, ces valeurs sont définies en tant que valeurs d’énumération dans l’énumération MULTICAST_MODE_TYPE définie dans le fichier d’en-tête Ws2ipdef.h .

imsf_numsrc

Nombre de sources dans le membre imsf_slist .

imsf_slist[1]

Tableau de structures in_addr qui spécifient les adresses sources de multidiffusion IPv4 à inclure ou à exclure.

Remarques

La structure ip_msfilter est utilisée avec les adresses IPv4. La structure ip_msfilter est passée comme argument pour les SIO_GET_MULTICAST_FILTER et SIO_SET_MULTICAST_FILTER IOCTL.

La structure ip_msfilter et les structures associées utilisées pour la programmation multidiffusion IPv4 sont basées sur les recommandations de l’IETF dans les sections 4 et 8.1 de la RFC 3768. Pour plus d’informations, consultez http://www.ietf.org/rfc/rfc3678.txt.

Sur Windows Vista et versions ultérieures, un ensemble d’options de socket sont disponibles pour la programmation multidiffusion qui prend en charge les adresses IPv6 et IPv4. Ces options de socket sont indépendantes des adresses IP et peuvent être utilisées sur IPv6 et IPv4. Ces options indépendantes de l’adresse IP utilisent les structures GROUP_REQ et GROUP_SOURCE_REQ , ainsi que les IOCTL SIOCSMSFILTER et SIOCGMSFILTER . Il s’agit des options de socket et des IOCTL préférés pour la programmation multidiffusion sur Windows Vista et versions ultérieures.

Le membre imsf_interface peut être un index d’interface. Toute adresse IPv4 dans le bloc 0.x.x.x (premier octet de 0) à l’exception de l’adresse IPv4 de 0.0.0.0 est traitée comme un index d’interface. Un index d’interface est un nombre 24 bits. Le bloc d’adresse IPv4 0.0.0/8 n’est pas utilisé (cette plage est réservée). La fonction GetAdaptersAddresses peut être utilisée pour obtenir des informations d’index d’interface à utiliser pour le membre imsf_interface .

Il est recommandé de toujours spécifier une adresse IPv4 locale ou un index d’interface dans le imsf_interface membre de la structure ip_msfilter , plutôt que d’utiliser l’interface par défaut. Cela est particulièrement important sur les ordinateurs avec plusieurs interfaces réseau et plusieurs adresses IPv4 publiques.

L’interface par défaut utilisée pour la multidiffusion IPv4 est déterminée par la pile réseau dans Windows. Une application peut déterminer l’interface par défaut utilisée pour la multidiffusion IPv4 à l’aide de la fonction GetIpForwardTable pour récupérer la table de routage IPv4. L’interface réseau avec la valeur la plus faible pour la métrique de routage pour une adresse IP de destination de 224.0.0.0 est l’interface par défaut pour la multidiffusion IPv4. La table de routage peut également être affichée à partir de l’invite de commandes avec la commande suivante :

impression de routage

L’option de socket IP_MULTICAST_IF peut être utilisée pour définir l’interface par défaut pour envoyer des paquets de multidiffusion IPv4. Cette option de socket ne modifie pas l’interface par défaut utilisée pour recevoir les paquets de multidiffusion IPv4.

Une application de multidiffusion IPv4 classique utilise l’option de socket IP_ADD_MEMBERSHIP avec la structure ip_mreq ou l’option de socket IP_ADD_SOURCE_MEMBERSHIP avec la structure ip_mreq_source pour joindre un groupe de multidiffusion et écouter les paquets de multidiffusion sur une interface spécifique. L’option de socket IP_MULTICAST_IF est utilisée pour définir l’interface pour envoyer des paquets de multidiffusion IPv4 au groupe de multidiffusion. Le scénario le plus courant serait une application de multidiffusion qui écoute et envoie sur la même interface pour un groupe de multidiffusion. Plusieurs sockets peuvent être utilisés par une application de multidiffusion avec un socket pour l’écoute et un ou plusieurs sockets pour l’envoi.

Dans le Kit de développement logiciel (SDK) Microsoft Windows publié pour Windows Vista et versions ultérieures, la organization des fichiers d’en-tête a changé et la structure ip_msfilter est définie dans le fichier d’en-tête Ws2ipdef.h qui est automatiquement inclus dans le fichier d’en-tête Ws2tcpip.h. Les fichiers d’en-tête Ws2ipdef.h ne doivent jamais être utilisés directement.

Note Les structures dérivées IP_MSFILTER et PIP_MSFILTER sont définies uniquement sur le Kit de développement logiciel (SDK) Windows publié avec Windows Vista et versions ultérieures. La structure ip_msfilter doit être utilisée sur les versions antérieures du Kit de développement logiciel (SDK) Windows.
 

Spécifications

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête ws2ipdef.h (include Ws2tcpip.h)

Voir aussi

Programmation multidiffusion basée sur l’état final

GROUP_FILTER

GROUP_REQ

GROUP_SOURCE_REQ

GetAdaptersAddresses

GetIpForwardTable

IPPROTO_IP Socket Options

MULTICAST_MODE_TYPE

Programmation multidiffusion

Socket Options

ip_mreq

ip_mreq_source