icmp - Internet Control Message Protocol


#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
socket(AF_INET, SOCK_RAW, proto);


ICMP is the error and control message protocol used by IP
and the Internet protocol family. It may be accessed through a ``raw
socket'' for
network monitoring and diagnostic functions. The proto pa
rameter to the
socket call to create an ICMP socket is obtained from get
ICMP sockets are connectionless, and are normally used with
the sendto(2)
and recvfrom(2) calls, though the connect(2) call may also
be used to fix
the destination for future packets (in which case the
read(2) or recv(2)
and write(2) or send(2) system calls may be used).
Outgoing packets automatically have an IP header prepended
to them (based
on the destination address). Incoming packets are received
with the IP
header and options intact.
MIB Variables
The ICMP protocol implements a number of variables in the
branch of the sysctl(3) MIB.
maskrepl (boolean) Enable/disable replies to ICMP
Address Mask
Request packets. Defaults to false.
maskfake (unsigned integer) When maskrepl is set
and this
value is non-zero, it will be used in
stead of the
real address mask when the system
replies to an ICMP
Address Mask Request packet. Defaults
to 0.
icmplim (integer) Bandwidth limit for ICMP
replies in pack
ets/second. Used when icmplim_output is
Defaults to 200.
icmplim_output (boolean) Enable/disable bandwidth lim
iting of ICMP
replies. Defaults to true.
drop_redirect (boolean) Enable/disable dropping of
ICMP Redirect
packets. Defaults to false.
log_redirect (boolean) Enable/disable logging of ICMP
packets. Defaults to false.
bmcastecho (boolean) Enable/disable ICMP replies
received via
broadcast or multicast. Defaults to
reply_src (str) An interface name used for the
ICMP reply
source in response to packets which are
not directly
addressed to us. By default continue
with normal
source selection.


A socket operation may fail with one of the following errors
[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 speci
fied and the
socket is already connected;
[ENOTCONN] when trying to send a datagram, but no
address is specified, and the socket has
not been connected;
[ENOBUFS] when the system runs out of memory for an
data structure;
[EADDRNOTAVAIL] when an attempt is made to create a sock
et with a net
work address for which no network inter
face exists.


recv(2), send(2), inet(4), intro(4), ip(4)


The icmp protocol appeared in 4.3BSD.
BSD March 21, 2003
Copyright © 2010-2020 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout