icmp6(7P)




NAME

     icmp6 - Internet Control Message Protocol for Internet  Pro-
     tocol Version 6


SYNOPSIS

     #include <sys/socket.h>
     #include <netinet/in.h>
     #include <netinet/ip_icmp.h>
     #include <netinet/icmp6.h>

     s = socket(AF_INET6, SOCK_RAW, proto);

     t = t_open("/dev/icmp6", O_RDWR);


DESCRIPTION

     The ICMP6 protocol is the error and control message protocol
     used  with Version 6 of the Internet Protocol. It is used by
     the kernel to handle and report errors in protocol  process-
     ing. It is also used for IPv6 neighbor and router discovery,
     and for multicast group membership queries and  reports.  It
     may  also be accessed by programs using the socket interface
     or the Transport Level Interface (TLI) for network  monitor-
     ing  and  diagnostic  functions.  When  used with the socket
     interface, a "raw socket" type is used. The protocol  number
     for  ICMP6,  used in the proto parameter to the socket call,
     can be obtained  from  getprotobyname(3SOCKET).  ICMP6  file
     descriptors  and sockets are connectionless and are normally
     used with the t_sndudata / t_rcvudata  and  the  sendto()  /
     recvfrom()   calls.   They   may   also  be  used  with  the
     sendmsg()/recvgmsg() calls when sending or receiving  ancil-
     lary data.

     Outgoing packets automatically  have  an  Internet  Protocol
     Version  6  (IPv6)  header  and  zero or more IPv6 extension
     headers prepended. These headers are prepended by  the  ker-
     nel.   Unlike  ICMP  for  IPv4, the IP_HDRINCL option is not
     supported for ICMP6, so  ICMP6  applications  neither  build
     their  own  outbound  IPv6  headers, nor do they receive the
     inbound IPv6 headers  with  received  data.  IPv6  extension
     headers and relevant fields of the IPv6 header may be set or
     received  as  ancillary  data  to  a   sendmsg(3SOCKET)   or
     recvmsg(3SOCKET)  system  call.  Each  of  these  fields and
     extension headers may also be set on a per socket basis with
     the  setsockopt(3SOCKET)  system call. Such "sticky" options
     are used on all outgoing packets unless overridden by ancil-
     lary  data.  When  any  ancillary  data  is  present  with a
     sendmsg(3SOCKET) system call, all sticky options are ignored
     for that system call, but subsequently remain configured.

     ICMP6 is a datagram protocol layered  above  IPv6.  Received
     ICMP6  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 each ICMP6error message received by
     the system is provided to every  holder  of  an  open  ICMP6
     socket or TLI descriptor.


SEE ALSO

     getprotobyname(3SOCKET),  recv(3SOCKET),   recvmsg(3SOCKET),
     send(3SOCKET),     sendmsg(3SOCKET),    setsockopt(3SOCKET),
     t_rcvudata(3NSL),  t_sndudata(3NSL),   inet6(7P),   ip6(7P),
     routing(7P)

     Conta, A. and Deering, S., RFC 2463, Internet  Control  Mes-
     sage  Protocol  (ICMPv6) for the Internet Protocol Version 6
     (IPv6) Specification, The Internet Society, December 1998.


DIAGNOSTICS

     A socket operation may fail with one of the following errors
     returned:

      EISCONN
           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.

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

     ENOBUFS
           The system ran out of  memory  for  an  internal  data
           structure.

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

     ENOMEM
           The system was unable to allocate memory for an inter-
           nal data structure.

     ENOPROTOOPT
           An attempt was made to set an IPv4 socket option on an
           IPv6 socket.

     EINVAL
           An attempt was made to set  an  invalid  or  malformed
           socket option.

     EAFNOSUPPORT
           An attempt was made to bind or connect to an  IPv4  or
           mapped  address,  or  to  specify  an  IPv4  or mapped
           address as the next hop.


Man(1) output converted with man2html