getsourcefilter.3n (2010 09)
g
getsourcefilter(3N) getsourcefilter(3N)
NAME
getsourcefilter() - get IP multicast source filter state
SYNOPSIS
#include <sys/socket.h>
#include <netinet/in.h>
int getsourcefilter(
int s,
uint32_t interface,
struct sockaddr *group,
socklen_t grouplen,
uint32_t *fmode,
uint_t *numsrc,
struct sockaddr_storage *slist
);
DESCRIPTION
This function retrieves the multicast source filter state for an IPv4 or IPv6 multicast group which the
application has joined on a given socket.
Parameters
s Specifies the descriptor identifying the socket. The socket address family must be
AF_INET or
AF_INET6, and the socket type must be SOCK_DGRAM.
interface Holds the interface index of a local interface, or zero. If set to zero, the system chooses a mul-
ticast group by matching the multicast address only.
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 Points to an integer that will contain the filter mode on a successful return. The value of this
field will be either
MCAST_INCLUDE
or MCAST_EXCLUDE, which are defined in
<netinet/in.h>.
numsrc On input, the numsrc argument holds the number of source addresses that will fit in the slist
array. On output, the numsrc argument will hold the total number of sources in the filter.
slist Points to buffer into which an array of sockaddr_storage structures containing the IP addresses
of included or excluded (depending on the filter mode) sources will be written. 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 will match that of the group argument. If numsrc was 0 on input, a NULL
pointer may be supplied.
If the application does not know the size of the source list beforehand, it can make a reasonable guess (for
example, by setting numsrc to 0), and if upon completion, numsrc holds a larger value, the operation can
be repeated with a large enough buffer.
That is, on return, numsrc is always updated to be the total number of sources in the filter, while slist
will hold as many source addresses as fit, up to the minimum of the array size passed in as the original
numsrc value and the total number of sources in the filter.
RETURN VALUES
getsourcefilter() returns the following values:
0 Successful completion.
-1 Failure. errno is set to indicate the error.
ERRORS
If
getsourcefilter() fails, errno is set to one of the following values:
[EBADF] The argument s is not a valid descriptor.
[EOPNOTSUPP] This function is not supported by the socket type.
HP-UX 11i Version 3: September 2010 − 1 − Hewlett-Packard Company 1