Multicast Socket Option Behavior

This page describes the behavior of multicast socket options based on various socket option settings states.

For example, this page describes the behavior when the IP_ADD_SOURCE_MEMBERSHIP socket option is set on a socket for which the IP_ADD_SOURCE_MEMBERSHIP option has already been set with the specified group/source pair on the same network interface. It is permitted to call IP_ADD_SOURCE_MEMBERSHIP on the same group on a different network interface.

This page assists in properly designing and troubleshooting Windows Sockets multicast applications.

Initial socket option Conflicting subsequent socket option Error returned Remarks
IP_ADD_MEMBERSHIP${REMOVE}$
IP_ADD_MEMBERSHIP WSAEADDRNOTAVAIL Do not call IP_ADD_MEMBERSHIP with the same group more than once on the same network interface.
IP_ADD_SOURCE_MEMBERSHIP WSAEADDRNOTAVAIL Do not call IP_ADD_SOURCE_MEMBERSHIP with the same group previously called with IP_ADD_MEMBERSHIP on the same network interface.
IP_DROP_SOURCE_MEMBERSHIP WSAEINVAL Use IP_BLOCK_SOURCE instead.
IP_UNBLOCK_SOURCE WSAEINVAL Returns an error when attempting to unblock a group/source pair that has not previously been blocked on the same network interface.
IP_DROP_MEMBERSHIP Any subsequent call on the same group or group/source pair WSAEINVAL Making socket option calls on a group or group/source pair not currently in the inclusion list (due to dropping membership, or otherwise) results in an error.
IP_ADD_SOURCE_MEMBERSHIP${REMOVE}$
IP_ADD_MEMBERSHIP WSAEADDRNOTAVAIL Do not call IP_ADD_MEMBERSHIP with the same group previously called with IP_ADD_SOURCE_MEMBERSHIP on the same network interface.
IP_ADD_SOURCE_MEMBERSHIP WSAEADDRNOTAVAIL Do not call IP_ADD_SOURCE_MEMBERSHIP with the same group/source pair previously called with IP_ADD_SOURCE_MEMBERSHIP on the same network interface.
IP_UNBLOCK_SOURCE WSAEINVAL Returns an error when attempting to unblock a group/source pair that has not previously been blocked on the same network interface.
IP_DROP_SOURCE_MEMBERSHIP${REMOVE}$
IP_UNBLOCK_SOURCE WSAEINVAL Returns an error when attempting to unblock a group/source pair that has not previously been blocked on the same network interface.
IP_DROP_SOURCE_MEMBERSHIP WSAEADDRNOTAVAIL Returns an error when attempting to drop a group/source pair that is not in the inclusion list on the same network interface.
IP_BLOCK_SOURCE${REMOVE}$
IP_BLOCK_SOURCE WSAEADDRNOTAVAIL Returns an error when attempting to block a group/source pair that is already blocked on the same network interface.
IP_ADD_SOURCE_MEMBERSHIP WSAEINVAL Use IP_UNBLOCK_SOURCE instead.
IP_ADD_MEMBERSHIP WSAEINVAL Use IP_UNBLOCK_SOURCE instead.
IP_UNBLOCK_SOURCE IP_UNBLOCK_SOURCE WSAEADDRNOTAVAIL Returns an error when attempting to unblock a group/source pair that is not in the blocked list on the same network interface.