DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

icmp(ADMP)


icmp -- Internet control message protocol

Syntax

Programmer's interface:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);

#include <paths.h> #include <fcntl.h> #include <netinet/in_systm.h> #include <netinet/ip.h> #include <netinet/ip_icmp.h> #include <netinet/ip_var.h> #include <netinet/icmp_var.h>

fd = open(_PATH_ICMP, flags);

Description

ICMP is the error and control message (or device) protocol used by IP and the Internet protocol family. It may be accessed through a ``raw socket'' for network monitoring and diagnostic functions. The IPPROTO_ICMP parameter to the socket call to create an ICMP socket is obtained from getprotobyname (See getprotoent(SLIB).) ICMP sockets are connectionless, and are normally used with the sendto and recvfrom calls; the connect(SSC) call may also be used to fix the destination for future packets (in which case the read(S) or recv(SSC) and write(S) or send(SSC) 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.

The ICMP 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>, are supported by the ICMP driver:


SIOCGICMPSTATS
Fetch the ICMP statistics structure. The argument passed to the I_STR call is a pointer to an icmpstat 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:

[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 connected.

[ENOSR]
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.
The errno is set to the following value upon the failure of the ioctl operation:

[EINVAL]
when no argument/NULL argument is passed to the driver.

Files

/dev/inet/icmp

See also

Intro(ADMP), inet(ADMP), ip(ADMP), maskreply(ADMN), recv(SSC), send(SSC), streamio(M)

Standards conformance

icmp is conformant with:

RFC 792 (STD 5), RFC 950 (STD 5)


© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003