igmp(7tcp)
igmp --
Internet Group Management Protocol
Synopsis
Programmer's interface:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
s = socket(AF_INET, SOCK_RAW, IPPROTO_IGMP);
#include <paths.h>
#include <fcntl.h>
#include <netinet/ip_var.h>
#include <netinet/igmp_var.h>
fd = open(_PATH_IGMP, flags);
Description
IGMP is used by Internet hosts and routers to
keep track of multicast groups. It may be accessed through
a ``raw socket'' for network monitoring and diagnostic
functions.
IGMP sockets are connectionless, and are normally
used with the sendto and recvfrom
calls; the
connect(3sock)
call may also be used to fix the destination for future
packets (in which case the
read(2)
or
recv(3sock)
and
write(2)
or
send(3sock)
system calls may be used).
Outgoing packets automatically have an IPv4 header
prepended to them (based on the destination address).
Incoming packets are received with the IPv4 header
and options intact.
The IGMP driver can also be accessed by opening
it directly. Networking statistics can be gathered by
issuing an ioctl directive to the driver.
The following STREAMS ioctl requests,
defined in <netinet/ip_var.h>, and
<netinet/igmp_var.h> are supported by the
IGMP driver :
SIOCGIGMPSTATS-
Fetch the IGMP statistics structure. The argument
passed to the I_STR call is a pointer to an
igmpstat structure.
SIOCSMGMT-
To set the inpcb associated with that end-point
as a management inpcb (to distinguish it from
others, when network statistics are gathered).
Diagnostics
A socket operation may fail with one of the following errors returned:
[EADDRNOTAVAIL]-
when an attempt is made to create a
socket with a network address for which no network interface
exists.
[EISCONN]-
when trying to establish a connection on a socket which
already has one, or when trying to send a datagram with the destination
address specified and the socket is already connected.
[ENOTCONN]-
when trying to send a datagram, but
no destination address is specified, and the socket has not been
connected.
[ENOMEM]-
when the system runs out of memory for
an internal data structure.
[ENOSR]-
when the system runs out of STREAMS resources.
The errno is set to the following value upon the
failure of the ioctl operation:
[EINVAL]-
when an invalid argument is passed to the driver.
References
if(7tcp),
inconfig(1Mtcp),
inet(7tcp),
ip(7tcp),
recv(3sock),
send(3sock),
streamio(7)
``Internet Group Management Protocol Version 4 (IGMPv4) parameters''
on the
inconfig(1Mtcp)
manual page
RFC 1112
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004