icmp, ICMP - Internet Control Message Protocol


     #include <sys/socket.h>
     #include <netinet/in.h>
     #include <netinet/ip_icmp.h>
     s = socket(AF_INET, SOCK_RAW, proto);
     t = t_open("/dev/icmp", O_RDWR);


     ICMP is the error and control message protocol used  by  the
     Internet protocol family. It is used by the kernel to handle
     and report errors in protocol processing.  It  may  also  be
     accessed by programs using the socket interface or the Tran-
     sport Level Interface (TLI) for network monitoring and diag-
     nostic  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(3SOCKET). ICMP file descriptors
     and  sockets  are connectionless, and are normally used with
     the t_sndudata / t_rcvudata and the  sendto()  /  recvfrom()

     Outgoing packets automatically  have  an  Internet  Protocol
     (IP) header prepended to them. Incoming packets are provided
     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  mes-
     sages  are  routinely  sent  by the protocol code.  Received
     ICMP messages may be reflected back to users of higher-level
     protocols  such  as  TCP or UDP as error returns from system
     calls.  A copy of all ICMP message received by the system is
     provided  to  every  holder  of  an  open ICMP socket or TLI


     getprotobyname(3SOCKET),    recv(3SOCKET),    send(3SOCKET),
     t_rcvudata(3NSL),    t_sndudata(3NSL),   inet(7P),   ip(7P),

     Postel, Jon,  Internet  Control  Message  Protocol  -  DARPA
     Internet  Program  Protocol  Specification, RFC 792, Network
     Information Center, SRI International, Menlo  Park,  Calif.,
     September 1981.


     A socket operation may fail with one of the following errors

           An attempt was made 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.

           An attempt was made to send a datagram, but no  desti-
           nation  address  is  specified, and the socket has not
           been connected.

           The system ran out of  memory  for  an  internal  data

           An attempt was made to create a socket with a  network
           address for which no network interface exists.


     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.

Man(1) output converted with man2html