8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / man / man7p / icmp6.7p
blobd00493040d05b9b6932b3b7f7a413a9efeb58d4c
1 '\" te
2 .\" Copyright (C) 1999, Sun Microsystems,
3 .\" Inc. All Rights Reserved
4 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
5 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
6 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
7 .TH ICMP6 7P "Dec 03, 2015"
8 .SH NAME
9 icmp6 \- Internet Control Message Protocol for Internet Protocol Version 6
10 .SH SYNOPSIS
11 .LP
12 .nf
13 #include <sys/socket.h>
14 #include <netinet/in.h>
15 #include <netinet/ip_icmp.h>
16 #include <netinet/icmp6.h>
17 .fi
19 .LP
20 .nf
21 s = socket(AF_INET6, SOCK_RAW, proto);
22 .fi
24 .LP
25 .nf
26 t = t_open("/dev/icmp6", O_RDWR);
27 .fi
29 .SH DESCRIPTION
30 .LP
31 The \fBICMP6\fR protocol is the error and control message protocol used with
32 Version 6 of the Internet Protocol. It is used by the kernel to handle and
33 report errors in protocol processing. It is also used for \fBIPv6\fR neighbor
34 and router discovery, and for multicast group membership queries and reports.
35 It may also be accessed by programs using the socket interface or the Transport
36 Level Interface (\fBTLI\fR) for network monitoring and diagnostic functions.
37 When used with the socket interface, a "raw socket" type is used. The protocol
38 number for \fBICMP6\fR, used in the \fIproto\fR parameter to the socket call,
39 can be obtained from \fBgetprotobyname\fR(3SOCKET). \fBICMP6\fR file
40 descriptors and sockets are connectionless and are normally used with the
41 \fBt_sndudata\fR / \fBt_rcvudata\fR and the \fBsendto()\fR / \fBrecvfrom()\fR
42 calls. They may also be used with the \fBsendmsg()\fR/\fBrecvgmsg()\fR calls
43 when sending or receiving ancillary data. In order to send \fBICMP6\fR packets,
44 a process needs the \fBPRIV_NET_ICMPACCESS\fR privilege. (See
45 \fBprivileges\fR(5) for more information on privileges.)
46 .sp
47 .LP
48 Outgoing packets automatically have an Internet Protocol Version 6 (\fBIPv6\fR)
49 header and zero or more \fBIPv6\fR extension headers prepended. These headers
50 are prepended by the kernel. Unlike \fBICMP\fR for \fBIPv4\fR, the
51 \fBIP_HDRINCL\fR option is not supported for \fBICMP6\fR, so \fBICMP6\fR
52 applications neither build their own outbound \fBIPv6\fR headers, nor do they
53 receive the inbound \fBIPv6\fR headers with received data. \fBIPv6\fR extension
54 headers and relevant fields of the \fBIPv6\fR header may be set or received as
55 ancillary data to a \fBsendmsg\fR(3SOCKET) or \fBrecvmsg\fR(3SOCKET) system
56 call. Each of these fields and extension headers may also be set on a per
57 socket basis with the \fBsetsockopt\fR(3SOCKET) system call. Such "sticky"
58 options are used on all outgoing packets unless overridden by ancillary data.
59 When any ancillary data is present with a \fBsendmsg\fR(3SOCKET) system call,
60 all sticky options are ignored for that system call, but subsequently remain
61 configured.
62 .sp
63 .LP
64 \fBICMP6\fR is a datagram protocol layered above \fBIPv6\fR. Received
65 \fBICMP6\fR messages may be reflected back to users of higher-level protocols
66 such as \fBTCP\fR or \fBUDP\fR as error returns from system calls. A copy of
67 each \fBICMP6\fR error message received by the system is provided to every
68 holder of an open \fBICMP6\fR socket or \fBTLI\fR descriptor.
69 .SH SEE ALSO
70 .LP
71 \fBgetprotobyname\fR(3SOCKET), \fBrecv\fR(3SOCKET), \fBrecvmsg\fR(3SOCKET),
72 \fBsend\fR(3SOCKET), \fBsendmsg\fR(3SOCKET), \fBsetsockopt\fR(3SOCKET),
73 \fBt_rcvudata\fR(3NSL), \fBt_sndudata\fR(3NSL), \fBprivileges\fR(5),
74 \fBinet6\fR(7P), \fBip6\fR(7P), \fBrouting\fR(7P)
75 .sp
76 .LP
77 Conta, A. and Deering, S., \fIRFC 2463, Internet Control Message Protocol
78 (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification\fR, The
79 Internet Society, December 1998.
80 .SH DIAGNOSTICS
81 .LP
82 A socket operation may fail with one of the following errors returned:
83 .sp
84 .ne 2
85 .na
86 \fB\fBEISCONN\fR\fR
87 .ad
88 .RS 17n
89 An attempt was made to establish a connection on a socket which already has
90 one, or when trying to send a datagram with the destination address specified
91 and the socket is already connected.
92 .RE
94 .sp
95 .ne 2
96 .na
97 \fB\fBENOTCONN\fR\fR
98 .ad
99 .RS 17n
100 An attempt was made to send a datagram, but no destination address is
101 specified, and the socket has not been connected.
105 .ne 2
107 \fB\fBENOBUFS\fR\fR
109 .RS 17n
110 The system ran out of memory for an internal data structure.
114 .ne 2
116 \fB\fBEADDRNOTAVAIL\fR\fR
118 .RS 17n
119 An attempt was made to create a socket with a network address for which no
120 network interface exists.
124 .ne 2
126 \fB\fBENOMEM\fR\fR
128 .RS 17n
129 The system was unable to allocate memory for an internal data structure.
133 .ne 2
135 \fB\fBENOPROTOOPT\fR\fR
137 .RS 17n
138 An attempt was made to set an \fBIPv4\fR socket option on an \fBIPv6\fR socket.
142 .ne 2
144 \fB\fBEINVAL\fR\fR
146 .RS 17n
147 An attempt was made to set an invalid or malformed socket option.
151 .ne 2
153 \fB\fBEAFNOSUPPORT\fR\fR
155 .RS 17n
156 An attempt was made to bind or connect to an \fBIPv4\fR or mapped address, or
157 to specify an \fBIPv4\fR or mapped address as the next hop.