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.
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) |