setsourcefilter(3N) setsourcefilter(3N)
NAME
setsourcefilter() - set IP multicast source filter state
SYNOPSIS
DESCRIPTION
This function sets the multicast source filter state for an IPv4 or IPv6 multicast group on a given socket. This function can be used to
join a multicast group by specifying a filter mode of (with or without a source list), or by specifying a filter mode of with a non-empty
source list. If the multicast group is already joined, this function replaces the existing filter mode and source list with the ones pro-
vided. This function can be used to leave a multicast group by specifying a filter mode of and an empty source list.
Parameters
s Specifies the descriptor identifying the socket. The socket address family must be or and the socket type must be
interface Holds the interface index of a local interface, or zero. If set to zero, the system chooses a multicast group by matching the
multicast address only; or when joining a group, the system chooses the interface that datagrams for the group would be sent
from, based on the routing configuration.
group Points to either a sockaddr_in structure (for IPv4) or a sockaddr_in6 structure (for IPv6) that holds the IP multicast address of
the group.
grouplen Holds the size of the structure pointed to by the group argument.
fmode Identifies the filter mode. The value of this field must be either or which are defined in
numsrc Holds the number of source addresses in the slist array.
slist Points to an array of sockaddr_storage structures containing the IP addresses to include or exclude depending on the filter mode.
The sockaddr_storage structures will contain either a sockaddr_in structure (for IPv4 addresses) or a sockaddr_in6 structure (for
IPv6 addresses, including IPv4-mapped IPv6 addresses); the address family must match that of the group argument.
RETURN VALUES
returns the following values:
Successful completion.
Failure.
is set to indicate the error.
ERRORS
If fails, is set to one of the following values:
The argument s is not a valid descriptor.
This function is not supported by the socket type.
Insufficient memory is available for internal
system data structures.
numsrc exceeds the maximum number of sources allowed, as determined by the ndd tunable parameters and (for IPv4), or
and (for IPv6).
The address family of the
group argument is not supported.
Trying to leave an unjoined group.
group does not hold an IP multicast address; or slist contains an invalid source address; or the specified filter
mode is not valid; or interface contains an invalid interface index; or grouplen is not valid; or the address
family of a source address in the slist argument does not match the address family of the group argument.
AUTHOR
was developed by HP and the IETF.
SEE ALSO
ndd(1M), socket(2), getipv4sourcefilter(3N), getsourcefilter(3N), if_nameindex(3N), setipv4sourcefilter(3N), ip(7P), ip6(7P).
STANDARDS CONFORMANCE
RFC 3678
setsourcefilter(3N)