Advanced Sockets Application Program Interface (API) for IPv6
RFC 3542

Document Type RFC - Informational (June 2003; Errata)
Obsoletes RFC 2292
Last updated 2015-10-14
Stream IETF
Formats plain text pdf html bibtex
Stream WG state (None)
Document shepherd No shepherd assigned
IESG IESG state RFC 3542 (Informational)
Consensus Boilerplate Unknown
Telechat date
Responsible AD Thomas Narten
IESG note Published as 3542.
Send notices to <mrw@windriver.com>
Network Working Group                                         W. Stevens
Request for Comments: 3542                                     M. Thomas
Obsoletes: 2292                                               Consultant
Category: Informational                                      E. Nordmark
                                                                     Sun
                                                               T. Jinmei
                                                                 Toshiba
                                                                May 2003

     Advanced Sockets Application Program Interface (API) for IPv6

Status of this Memo

   This memo provides information for the Internet community.  It does
   not specify an Internet standard of any kind.  Distribution of this
   memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2003).  All Rights Reserved.

Abstract

   This document provides sockets Application Program Interface (API) to
   support "advanced" IPv6 applications, as a supplement to a separate
   specification, RFC 3493.  The expected applications include Ping,
   Traceroute, routing daemons and the like, which typically use raw
   sockets to access IPv6 or ICMPv6 header fields.  This document
   proposes some portable interfaces for applications that use raw
   sockets under IPv6.  There are other features of IPv6 that some
   applications will need to access: interface identification
   (specifying the outgoing interface and determining the incoming
   interface), IPv6 extension headers, and path Maximum Transmission
   Unit (MTU) information.  This document provides API access to these
   features too.  Additionally, some extended interfaces to libraries
   for the "r" commands are defined.  The extension will provide better
   backward compatibility to existing implementations that are not
   IPv6-capable.

Stevens, et al.              Informational                      [Page 1]
RFC 3542             Advanced Sockets API for IPv6              May 2003

Table of Contents

   1.   Introduction ..............................................  3
   2.   Common Structures and Definitions .........................  5
        2.1  The ip6_hdr Structure ................................  6
             2.1.1  IPv6 Next Header Values .......................  6
             2.1.2  IPv6 Extension Headers ........................  7
             2.1.3  IPv6 Options ..................................  8
        2.2  The icmp6_hdr Structure .............................. 10
             2.2.1  ICMPv6 Type and Code Values ................... 10
             2.2.2  ICMPv6 Neighbor Discovery Definitions ......... 11
             2.2.3  Multicast Listener Discovery Definitions ...... 14
             2.2.4  ICMPv6 Router Renumbering Definitions ......... 14
        2.3  Address Testing Macros ............................... 16
        2.4  Protocols File ....................................... 16
   3.   IPv6 Raw Sockets .......................................... 17
        3.1  Checksums ............................................ 18
        3.2  ICMPv6 Type Filtering ................................ 19
        3.3  ICMPv6 Verification of Received Packets .............. 22
   4.   Access to IPv6 and Extension Headers ...................... 22
        4.1  TCP Implications ..................................... 24
        4.2  UDP and Raw Socket Implications ...................... 25
   5.   Extensions to Socket Ancillary Data ....................... 26
        5.1  CMSG_NXTHDR .......................................... 26
        5.2  CMSG_SPACE ........................................... 26
        5.3  CMSG_LEN ............................................. 27
   6.   Packet Information ........................................ 27
        6.1  Specifying/Receiving the Interface ................... 28
        6.2  Specifying/Receiving Source/Destination Address ...... 29
        6.3  Specifying/Receiving the Hop Limit ................... 29
        6.4  Specifying the Next Hop Address ...................... 30
        6.5  Specifying/Receiving the Traffic Class value ......... 31
        6.6  Additional Errors with sendmsg() and setsockopt() .... 32
        6.7  Summary of Outgoing Interface Selection .............. 32
   7.   Routing Header Option ..................................... 33
        7.1  inet6_rth_space ...................................... 35
        7.2  inet6_rth_init ....................................... 35
        7.3  inet6_rth_add ........................................ 36
        7.4  inet6_rth_reverse .................................... 36
        7.5  inet6_rth_segments ................................... 36
        7.6  inet6_rth_getaddr .................................... 36
Show full document text