ICMP(4P) ICMP(4P) NAME icmp - Internet Control Message Protocol SYNOPSIS #include #include s = socket(AF_INET, SOCK_RAW, proto); DESCRIPTION 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 _p_r_o_t_o parameter to the socket call to create an ICMP socket is obtained from _g_e_t_p_r_o_t_o_‐ _b_y_n_a_m_e(3N). ICMP sockets are connectionless, and are normally used with the _s_e_n_d_t_o and _r_e_c_v_f_r_o_m calls, though the _c_o_n_n_e_c_t(2) call may also be used to fix the destination for future packets (in which case the _r_e_a_d(2) or _r_e_c_v(2) and _w_r_i_t_e(2) or _s_e_n_d(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. DIAGNOSTICS A socket operation may fail with one of the following errors returned: [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 hasn’t been con‐ nected; [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 net‐ work address for which no network interface exists. SEE ALSO send(2), recv(2), intro(4N), inet(4F), ip(4P) 4.3 Berkeley Distribution May 16, 1986 ICMP(4P)