icmp(7) —
NAME
icmp − Internet Control Message Protocol
SYNOPSIS
#include <sys/socket.h>
#include <netinet/in.h>
s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
or
#include <sys/tiuser.h>
s = t_open("/dev/ip", O_RDWR, NULL);
DESCRIPTION
The Internet Control Message Protocol (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. Access via TLI is also possible by using /dev/ip as the STREAM device. The proto parameter to the socket call to create an ICMP socket is obtained from getprotobyname (see getprotoent(3I)). ICMP sockets are connectionless and are normally used with the sendto and recvfrom 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(3I) and write(2) or send(3I) system calls may be used).
With TLI, the stream must be bound to IPPROTO_ICMP. The address is a single byte in length. The t_sndudata(3N) and t_rcvudata(3N) calls may then be used.
Outgoing packets currently must have an IP header prefixed to them (based on the destination address). Incoming packets are received with the IP header and options intact.
SEE ALSO
recv(3I), send(3I), intro(7N), inet(7), ip(7).
t_bind(3N), t_open(3N), t_rcvudata(3N), t_sndudata(3N) in the INTERACTIVE SDS Guide and Programmer’s Reference Manual.
DIAGNOSTICS
A socket operation may fail with one of the following errors returned:
[EISCONN] when trying to establish a connection on a socket that 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;
[ENOBUFS] when the system runs out of memory for an internal data structure;
[EADDRNOTAVAIL]
when an attempt is made to create a socket with a network address for which no network interface exists.
\*U — Version 1.0