aboutsummaryrefslogtreecommitdiffstats
path: root/man7/ipv6.7
diff options
context:
space:
mode:
authorMichael Kerrisk <mtk.manpages@gmail.com>2008-08-08 16:28:06 +0000
committerMichael Kerrisk <mtk.manpages@gmail.com>2008-08-08 16:28:06 +0000
commit10874173dba2edf045eebd9e85945970182dbaf6 (patch)
treeec42e47e1a8fc25ca4e816fd99a570404f3aa5c5 /man7/ipv6.7
parentea6ac50ed39e1c963454c837065ef7beeaccb0b8 (diff)
downloadman-pages-10874173dba2edf045eebd9e85945970182dbaf6.tar.gz
s/PF_/AF_/ for socket family conistants. Reasons: the AF_ and
PF_ constants have always had the same values; there never has been a protocol family that had more than one address family, and POSIX.1-2001 only specifies the AF_* constants.
Diffstat (limited to 'man7/ipv6.7')
-rw-r--r--man7/ipv6.7335
1 files changed, 8 insertions, 327 deletions
diff --git a/man7/ipv6.7 b/man7/ipv6.7
index 024cd50732..c4e0bedfc5 100644
--- a/man7/ipv6.7
+++ b/man7/ipv6.7
@@ -1,327 +1,8 @@
-.\" This man page is Copyright (C) 2000 Andi Kleen <ak@muc.de>.
-.\" Permission is granted to distribute possibly modified copies
-.\" of this page provided the header is included verbatim,
-.\" and in case of nontrivial modification author and date
-.\" of the modification is added to the header.
-.\" $Id: ipv6.7,v 1.3 2000/12/20 18:10:31 ak Exp $
-.TH IPV6 7 2008-07-17 "Linux" "Linux Programmer's Manual"
-.SH NAME
-ipv6, PF_INET6 \- Linux IPv6 protocol implementation
-.SH SYNOPSIS
-.B #include <sys/socket.h>
-.br
-.B #include <netinet/in.h>
-.sp
-.IB tcp6_socket " = socket(PF_INET6, SOCK_STREAM, 0);"
-.br
-.IB raw6_socket " = socket(PF_INET6, SOCK_RAW, " protocol ");"
-.br
-.IB udp6_socket " = socket(PF_INET6, SOCK_DGRAM, " protocol ");"
-.SH DESCRIPTION
-Linux 2.2 optionally implements the Internet Protocol, version 6.
-This man page contains a description of the IPv6 basic API as
-implemented by the Linux kernel and glibc 2.1.
-The interface
-is based on the BSD sockets interface; see
-.BR socket (7).
-.PP
-The IPv6 API aims to be mostly compatible with the
-.BR ip (7)
-v4 API.
-Only differences are described in this man page.
-.PP
-To bind an
-.B AF_INET6
-socket to any process the local address should be copied from the
-.I in6addr_any
-variable which has
-.I in6_addr
-type.
-In static initializations
-.B IN6ADDR_ANY_INIT
-may also be used, which expands to a constant expression.
-Both of them are in network order.
-.PP
-The IPv6 loopback address (::1) is available in the global
-.I in6addr_loopback
-variable.
-For initializations
-.B IN6ADDR_LOOPBACK_INIT
-should be used.
-.PP
-IPv4 connections can be handled with the v6 API by using the
-v4-mapped-on-v6 address type;
-thus a program only needs only to support this API type to
-support both protocols.
-This is handled transparently by the address
-handling functions in libc.
-.PP
-IPv4 and IPv6 share the local port space.
-When you get an IPv4 connection
-or packet to a IPv6 socket its source address will be mapped
-to v6 and it will be mapped to v6.
-.SS "Address Format"
-.in +4n
-.nf
-struct sockaddr_in6 {
- uint16_t sin6_family; /* AF_INET6 */
- uint16_t sin6_port; /* port number */
- uint32_t sin6_flowinfo; /* IPv6 flow information */
- struct in6_addr sin6_addr; /* IPv6 address */
- uint32_t sin6_scope_id; /* Scope ID (new in 2.4) */
-};
-
-struct in6_addr {
- unsigned char s6_addr[16]; /* IPv6 address */
-};
-.fi
-.in
-.sp
-.I sin6_family
-is always set to
-.BR AF_INET6 ;
-.I sin6_port
-is the protocol port (see
-.I sin_port
-in
-.BR ip (7));
-.I sin6_flowinfo
-is the IPv6 flow identifier;
-.I sin6_addr
-is the 128-bit IPv6 address.
-.I sin6_scope_id
-is an ID of depending of on the scope of the address.
-It is new in Linux 2.4.
-Linux only supports it for link scope addresses, in that case
-.I sin6_scope_id
-contains the interface index (see
-.BR netdevice (7))
-.PP
-IPv6 supports several address types: unicast to address a single
-host, multicast to address a group of hosts,
-anycast to address the nearest member of a group of hosts
-(not implemented in Linux), IPv4-on-IPv6 to
-address a IPv4 host, and other reserved address types.
-.PP
-The address notation for IPv6 is a group of 16 2-digit hexadecimal
-numbers, separated with a \(aq:\(aq.
-\&"::" stands for a string of 0 bits.
-Special addresses are ::1 for loopback and ::FFFF:<IPv4 address>
-for IPv4-mapped-on-IPv6.
-.PP
-The port space of IPv6 is shared with IPv4.
-.SS "Socket Options"
-IPv6 supports some protocol-specific socket options that can be set with
-.BR setsockopt (2)
-and read with
-.BR getsockopt (2).
-The socket option level for IPv6 is
-.BR IPPROTO_IPV6 .
-A boolean integer flag is zero when it is false, otherwise true.
-.TP
-.B IPV6_ADDRFORM
-Turn an
-.B AF_INET6
-socket into a socket of a different address family.
-Only
-.B AF_INET
-is currently supported for that.
-It is only allowed for IPv6 sockets
-that are connected and bound to a v4-mapped-on-v6 address.
-The argument is a pointer to an integer containing
-.BR AF_INET .
-This is useful to pass v4-mapped sockets as file descriptors to
-programs that don't know how to deal with the IPv6 API.
-.TP
-.B IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP
-Control membership in multicast groups.
-Argument is a pointer to a
-.I struct ipv6_mreq
-structure.
-.\" FIXME IPV6_CHECKSUM is not documented, and probably should be
-.\" FIXME IPV6_JOIN_ANYCAST is not documented, and probably should be
-.\" FIXME IPV6_LEAVE_ANYCAST is not documented, and probably should be
-.\" FIXME IPV6_RECVPKTINFO is not documented, and probably should be
-.\" FIXME IPV6_2292PKTINFO is not documented, and probably should be
-.\" FIXME there are probably many other IPV6_* socket options that
-.\" should be documented
-.TP
-.B IPV6_MTU
-Set the MTU to be used for the socket.
-The MTU is limited by the device
-MTU or the path mtu when path mtu discovery is enabled.
-Argument is a pointer to integer.
-.TP
-.B IPV6_MTU_DISCOVER
-Control path mtu discovery on the socket.
-See
-.B IP_MTU_DISCOVER
-in
-.BR ip (7)
-for details.
-.TP
-.B IPV6_MULTICAST_HOPS
-Set the multicast hop limit for the socket.
-Argument is a pointer to an
-integer.
-\-1 in the value means use the route default, otherwise it should be
-between 0 and 255.
-.TP
-.B IPV6_MULTICAST_IF
-Set the device for outgoing multicast packets on the socket.
-This is only allowed
-for
-.B SOCK_DGRAM
-and
-.B SOCK_RAW
-socket.
-The argument is a pointer to an interface index (see
-.BR netdevice (7))
-in an integer.
-.TP
-.B IPV6_MULTICAST_LOOP
-Control whether the socket sees multicast packets that it has send itself.
-Argument is a pointer to boolean.
-.TP
-.B IPV6_PKTINFO
-Set delivery of the
-.B IPV6_PKTINFO
-control message on incoming datagrams.
-Only allowed for
-.B SOCK_DGRAM
-or
-.B SOCK_RAW
-sockets.
-Argument is a pointer to a boolean value in an integer.
-.TP
-.nh
-.B IPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPS, IPV6_HOPOPTS, IPV6_FLOWINFO, IPV6_HOPLIMIT
-.hy
-Set delivery of control messages for incoming datagrams containing
-extension headers from the received packet.
-.B IPV6_RTHDR
-delivers the routing header,
-.B IPV6_AUTHHDR
-delivers the authentication header,
-.B IPV6_DSTOPTS
-delivers the destination options,
-.B IPV6_HOPOPTS
-delivers the hop options,
-.B IPV6_FLOWINFO
-delivers an integer containing the flow ID,
-.B IPV6_HOPLIMIT
-delivers an integer containing the hop count of the packet.
-The control messages have the same type as the socket option.
-All these header options can also be set for outgoing packets
-by putting the appropriate control message into the control buffer of
-.BR sendmsg (2).
-Only allowed for
-.B SOCK_DGRAM
-or
-.B SOCK_RAW
-sockets.
-Argument is a pointer to a boolean value.
-.TP
-.B IPV6_RECVERR
-Control receiving of asynchronous error options.
-See
-.B IP_RECVERR
-in
-.BR ip (7)
-for details.
-Argument is a pointer to boolean.
-.TP
-.B IPV6_ROUTER_ALERT
-Pass forwarded packets containing a router alert hop-by-hop option to
-this socket.
-Only allowed for SOCK_RAW sockets.
-The tapped packets are not forwarded by the kernel, it is the
-user's responsibility to send them out again.
-Argument is a pointer to an integer.
-A positive integer indicates a router alert option value to intercept.
-Packets carrying a router alert option with a value field containing
-this integer will be delivered to the socket.
-A negative integer disables delivery of packets with router alert options
-to this socket.
-.TP
-.B IPV6_UNICAST_HOPS
-Set the unicast hop limit for the socket.
-Argument is a pointer to an integer.
-\-1 in the value means use the route default,
-otherwise it should be between 0 and 255.
-.TP
-.BR IPV6_V6ONLY " (since Linux 2.4.21 and 2.6)"
-.\" See RFC 3493
-If this flag is set to true (non-zero), then the socket is restricted
-to sending and receiving IPv6 packets only.
-In this case, an IPv4 and an IPv6 application can bind
-to a single port at the same time.
-
-If this flag is set to false (zero),
-then the socket can be used to send and receive packets
-to and from an IPv6 address or an IPv4-mapped IPv6 address.
-
-The argument is a pointer to a boolean value in an integer.
-
-The default value for this flag is defined by the contents of the file
-.BR /proc/sys/net/ipv6/bindv6only .
-The default value for that file is 0 (false).
-.\" FLOWLABEL_MGR, FLOWINFO_SEND
-.SH VERSIONS
-The older
-.I libinet6
-libc5 based IPv6 API implementation for Linux is not described here
-and may vary in details.
-.PP
-Linux 2.4 will break binary compatibility for the
-.I sockaddr_in6
-for 64-bit
-hosts by changing the alignment of
-.I in6_addr
-and adding an additional
-.I sin6_scope_id
-field.
-The kernel interfaces stay compatible, but a program including
-.I sockaddr_in6
-or
-.I in6_addr
-into other structures may not be.
-This is not
-a problem for 32-bit hosts like i386.
-.PP
-The
-.I sin6_flowinfo
-field is new in Linux 2.4.
-It is transparently passed/read by the kernel
-when the passed address length contains it.
-Some programs that pass a longer address buffer and then
-check the outgoing address length may break.
-.SH "NOTES"
-The
-.I sockaddr_in6
-structure is bigger than the generic
-.IR sockaddr .
-Programs that assume that all address types can be stored safely in a
-.I struct sockaddr
-need to be changed to use
-.I struct sockaddr_storage
-for that instead.
-.SH BUGS
-The IPv6 extended API as in RFC\ 2292 is currently only partly
-implemented;
-although the 2.2 kernel has near complete support for receiving options,
-the macros for generating IPv6 options are missing in glibc 2.1.
-.PP
-IPSec support for EH and AH headers is missing.
-.PP
-Flow label management is not complete and not documented here.
-.PP
-This man page is not complete.
-.SH "SEE ALSO"
-.BR cmsg (3),
-.BR ip (7)
-.PP
-RFC\ 2553: IPv6 BASIC API.
-Linux tries to be compliant to this.
-.PP
-RFC\ 2460: IPv6 specification.
+.TH IPV6 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH IPV6 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH IPV6 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH IPV6 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH IPV6 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH IPV6 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH IPV6 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH IPV6 7 2008-08-07 "Linux" "Linux Programmer's Manual"