sourcefilter
- advanced multicast group membership API
SYNOPSIS
#include <sys/socket.h>
#include <netinet/in.h> int
Fo getipv4sourcefilter
Fa int s
Fa struct in_addr interface
Fa struct in_addr group
Fa uint32_t *fmode
Fa uint32_t *numsrc
Fa struct in_addr *slist
Fc Ft int
Fo getsourcefilter
Fa int s
Fa uint32_t interface
Fa struct sockaddr *group
Fa socklen_t grouplen
Fa uint32_t *fmode
Fa uint32_t *numsrc
Fa struct sockaddr_storage *slist
Fc Ft int
Fo setipv4sourcefilter
Fa int s
Fa struct in_addr interface
Fa struct in_addr group
Fa uint32_t fmode
Fa uint32_t numsrc
Fa struct in_addr *slist
Fc Ft int
Fo setsourcefilter
Fa int s
Fa uint32_t interface
Fa struct sockaddr *group
Fa socklen_t grouplen
Fa uint32_t fmode
Fa uint32_t numsrc
Fa struct sockaddr_storage *slist
Fc
DESCRIPTION
The
functions implement the advanced, full-state multicast API
defined in RFC 3678.
An application may use these functions to atomically set and
retrieve the multicast source address filters associated with a socket
Fa s
and a multicast
Fa group .
The protocol-independent functions
getsourcefilter ();
and
setsourcefilter ();
allow an application to join a multicast group on an interface by
passing its index for the
Fa interface
argument.
The
argument.
Fa grouplen
argument specifies the size of the structure pointed to by
Fa group .
For the
setipv4sourcefilter ();
and
setsourcefilter ();
functions.
the
Fa fmode
argument may be used to place the socket into inclusive or exclusive
group membership modes, by using the
MCAST_INCLUDE
or
MCAST_EXCLUDE
constants respectively.
The
Fa numsrc
argument specifies the number of source entries in the
Fa slist
array.
A value of 0 will remove all source filters from the socket.
The changes will be communicated to IGMPv3 and/or MLDv2 routers
on the local network as appropriate.
IMPLEMENTATION NOTES
The IPv4 specific versions of these functions are implemented in terms
of the protocol-independent functions.
Application writers are encouraged to use the protocol-independent functions
for efficiency, and upwards compatibility with IPv6 networks.
The network interface which the
interface
argument refers to was not configured in the system,
or the system is not a member of the
group
Bq Er EAFNOSUPPORT
The
group
and/or one or more of the
slist
arguments were of an address family unsupported by the system,
or the address family of the
group
and
slist
arguments were not identical.
Bq Er EINVAL
The
group
argument does not contain a multicast address.
The
fmode
argument is invalid; it must be set to either
MCAST_INCLUDE
or
MCAST_EXCLUDE
The
numsrc
or
slist
arguments do not specify a source list.
Bq Er ENOMEM
Insufficient memory was available to carry out the requested
operation.