ICMP(7) DEVICES AND MODULES ICMP(7)
NAME
ICMP - Internet Control Message Protocol
SYNOPSIS
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ipicmp.h>
s = socket(AFINET, SOCKRAW, proto);
t = topen("/dev/icmp", ORDWR);
DESCRIPTION
ICMP is the error and control message protocol used by the
Internet protocol family. It is used by the kernel to han-
dle and report errors in protocol processing. It may also
be accessed by programs using the socket interface or the
Transport Level Interface (TLI) for network monitoring and
diagnostic functions. When used with the socket interface,
a raw socket type is used. The protocol number for ICMP,
used in the proto parameter to the socket call, can be
obtained from getprotobyname() [see getprotoent(3N)]. ICMP
file descriptors and sockets are connectionless, and are
normally used with the tsndudata / trcvudata and the
sendto() / recvfrom() calls.
Outgoing packets automatically have an Internet Protocol
(IP) header prepended to them. Incoming packets are pro-
vided to the user with the IP header and options intact.
ICMP is an datagram protocol layered above IP. It is used
internally by the protcol code for various purposes includ-
ing routing, fault isolation, and congestion control.
Receipt of an ICMP redirect message will add a new entry in
the routing table, or modify an existing one. ICMP messages
are routinely sent by the protocol code. Received ICMP mes-
sages may be reflected back to users of higher-level proto-
cols such as TCP or UDP as error returns from system calls.
A copy of all ICMP message received by the system is pro-
vided to every holder of an open ICMP socket or TLI descrip-
tor.
SEE ALSO
send(2), getprotoent(3N), recvfrom(3N), trcvudata(3N),
tsndudata(3N), routing(4), inet(7), ip(7).
Postel, Jon, Internet Control Message Protocol - DARPA
Internet Program Protocol Specification, RFC 792, Network
Information Center, SRI International, Menlo Park, Calif.,
September 1981.
1
ICMP(7) DEVICES AND MODULES ICMP(7)
DIAGNOSTICS
A socket operation may fail with one of the following errors
returned:
EISCONN An attempt was made to establish a con-
nection 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 An attempt was made to send a datagram,
but no destination address is specified,
and the socket has not been connected.
ENOBUFS The system ran out of memory for an
internal data structure.
EADDRNOTAVAIL An attempt was made to create a socket
with a network address for which no net-
work interface exists.
NOTES
Replies to ICMP echo messages which are source routed are
not sent back using inverted source routes, but rather go
back through the normal routing mechanisms.
2