< draft-ietf-ipngwg-rfc2553bis-04.txt   draft-ietf-ipngwg-rfc2553bis-05.txt >
IPNG Working Group R.E. Gilligan IPNG Working Group R.E. Gilligan
INTERNET-DRAFT: draft-ietf-ipngwg-rfc2553bis-04.txt Cache Flow INTERNET-DRAFT: draft-ietf-ipngwg-rfc2553bis-05.txt Cache Flow
Obsoletes RFC 2553 S. Thomson Obsoletes RFC 2553 S. Thomson
Cisco Cisco
J. Bound J. Bound
J. McCann
Compaq Compaq
W. R. Stevens W. R. Stevens
November 2001 February 2002
Basic Socket Interface Extensions for IPv6 Basic Socket Interface Extensions for IPv6
<draft-ietf-ipngwg-rfc2553bis-04.txt> <draft-ietf-ipngwg-rfc2553bis-05.txt>
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026. all provisions of Section 10 of RFC2026.
This document is a submission by the Internet Protocol IPv6 Working This document is a submission by the Internet Protocol IPv6 Working
Group of the Internet Engineering Task Force (IETF). Comments should Group of the Internet Engineering Task Force (IETF). Comments should
be submitted to the ipng@sunroof.eng.sun.com mailing list. be submitted to the ipng@sunroof.eng.sun.com mailing list.
skipping to change at page 2, line 4 skipping to change at page 2, line 5
wide variety of non-Unix systems. TCP/IP applications written using the wide variety of non-Unix systems. TCP/IP applications written using the
sockets API have in the past enjoyed a high degree of portability and we sockets API have in the past enjoyed a high degree of portability and we
would like the same portability with IPv6 applications. But changes are would like the same portability with IPv6 applications. But changes are
required to the sockets API to support IPv6 and this memo describes required to the sockets API to support IPv6 and this memo describes
these changes. These include a new socket address structure to carry these changes. These include a new socket address structure to carry
IPv6 addresses, new address conversion functions, and some new socket IPv6 addresses, new address conversion functions, and some new socket
options. These extensions are designed to provide access to the basic options. These extensions are designed to provide access to the basic
IPv6 features required by TCP and UDP applications, including IPv6 features required by TCP and UDP applications, including
multicasting, while introducing a minimum of change into the system and multicasting, while introducing a minimum of change into the system and
providing complete compatibility for existing IPv4 applications. providing complete compatibility for existing IPv4 applications.
Additional extensions for advanced IPv6 features (raw sockets and access Additional extensions for advanced IPv6 features (raw sockets and access
to the IPv6 extension headers) are defined in another document [4]. to the IPv6 extension headers) are defined in another document [4].
Table of Contents: Table of Contents:
1. Introduction.................................................4 1. Introduction.................................................4
2. Design Considerations........................................4 2. Design Considerations........................................4
2.1 What Needs to be Changed....................................4 2.1 What Needs to be Changed....................................4
2.2 Data Types..................................................6 2.2 Data Types..................................................6
2.3 Headers.....................................................6 2.3 Headers.....................................................6
2.4 Structures..................................................6 2.4 Structures...................................................6
3. Socket Interface.............................................6 3. Socket Interface.............................................6
3.1 IPv6 Address Family and Protocol Family.....................6 3.1 IPv6 Address Family and Protocol Family.....................6
3.2 IPv6 Address Structure......................................6 3.2 IPv6 Address Structure......................................6
3.3 Socket Address Structure for 4.3BSD-Based Systems...........7 3.3 Socket Address Structure for 4.3BSD-Based Systems...........7
3.4 Socket Address Structure for 4.4BSD-Based Systems...........8 3.4 Socket Address Structure for 4.4BSD-Based Systems...........8
3.5 The Socket Functions........................................9 3.5 The Socket Functions........................................9
3.6 Compatibility with IPv4 Applications.......................10 3.6 Compatibility with IPv4 Applications.......................10
3.7 Compatibility with IPv4 Nodes..............................10 3.7 Compatibility with IPv4 Nodes..............................10
3.8 IPv6 Wildcard Address......................................10 3.8 IPv6 Wildcard Address......................................10
3.9 IPv6 Loopback Address......................................11 3.9 IPv6 Loopback Address......................................11
3.10 Portability Additions.....................................12 3.10 Portability Additions.....................................12
4. Interface Identification....................................14 4. Interface Identification....................................14
4.1 Name-to-Index..............................................14 4.1 Name-to-Index..............................................14
4.2 Index-to-Name..............................................14 4.2 Index-to-Name..............................................14
4.3 Return All Interface Names and Indexes.....................15 4.3 Return All Interface Names and Indexes......................15
4.4 Free Memory................................................15 4.4 Free Memory................................................15
5. Socket Options..............................................16 5. Socket Options..............................................16
5.1 Unicast Hop Limit..........................................16 5.1 Unicast Hop Limit..........................................16
5.2 Sending and Receiving Multicast Packets....................17 5.2 Sending and Receiving Multicast Packets....................17
5.3 IPV6_V6ONLY option for AF_INET6 Sockets....................18 5.3 IPV6_V6ONLY option for AF_INET6 Sockets....................18
6. Library Functions...........................................19 6. Library Functions...........................................19
6.1 Protocol-Independent Nodename and Service Name Translation.19 6.1 Protocol-Independent Nodename and Service Name Translation.19
6.2 Socket Address Structure to Nodename and Service Name......24 6.2 Socket Address Structure to Nodename and Service Name......24
6.3 Address Conversion Functions...............................26 6.3 Address Conversion Functions...............................26
6.4 Address Testing Macros.....................................27 6.4 Address Testing Macros.....................................27
7. Summary of New Definitions..................................28 7. Summary of New Definitions..................................28
8. Security Considerations.....................................29 8. Security Considerations.....................................29
9. Year 2000 Considerations....................................29 9. Year 2000 Considerations....................................29
Changes made to rfc2553bis-03 to rfc2553bis-04.................29 Changes made to rfc2553bis-04 to rfc2553bis-05.................29
Changes made to rfc2553bis-03 to rfc2553bis-04.................30
Changes made to rfc2553bis-02 to rfc2553bis-03.................30 Changes made to rfc2553bis-02 to rfc2553bis-03.................30
Changes made to rfc2553bis-01 to rfc2553bis-02.................30 Changes made to rfc2553bis-01 to rfc2553bis-02.................30
Changes made to rfc2553bis-00 to rfc2553bis-01.................30 Changes made to rfc2553bis-00 to rfc2553bis-01.................30
Changes made rfc2553 to rfc2553bis-00:.........................30 Changes made rfc2553 to rfc2553bis-00:.........................30
Acknowledgments................................................31 Acknowledgments................................................31
References.....................................................31 References.....................................................31
Authors' Addresses.............................................32 Authors' Addresses.............................................32
1. Introduction 1. Introduction
While IPv4 addresses are 32 bits long, IPv6 interfaces are identified by While IPv4 addresses are 32 bits long, IPv6 interfaces are identified by
skipping to change at page 10, line 46 skipping to change at page 10, line 46
in Section 6.1 and 6.2). in Section 6.1 and 6.2).
Applications may use PF_INET6 sockets to open TCP connections to IPv4 Applications may use PF_INET6 sockets to open TCP connections to IPv4
nodes, or send UDP packets to IPv4 nodes, by simply encoding the nodes, or send UDP packets to IPv4 nodes, by simply encoding the
destination's IPv4 address as an IPv4-mapped IPv6 address, and passing destination's IPv4 address as an IPv4-mapped IPv6 address, and passing
that address, within a sockaddr_in6 structure, in the connect() or that address, within a sockaddr_in6 structure, in the connect() or
sendto() call. When applications use PF_INET6 sockets to accept TCP sendto() call. When applications use PF_INET6 sockets to accept TCP
connections from IPv4 nodes, or receive UDP packets from IPv4 nodes, the connections from IPv4 nodes, or receive UDP packets from IPv4 nodes, the
system returns the peer's address to the application in the accept(), system returns the peer's address to the application in the accept(),
recvfrom(), or getpeername() call using a sockaddr_in6 structure encoded recvfrom(), or getpeername() call using a sockaddr_in6 structure encoded
this way. this way..
Few applications will likely need to know which type of node they are Few applications will likely need to know which type of node they are
interoperating with. However, for those applications that do need to interoperating with. However, for those applications that do need to
know, the IN6_IS_ADDR_V4MAPPED() macro, defined in Section 6.7, is know, the IN6_IS_ADDR_V4MAPPED() macro, defined in Section 6.7, is
provided. provided.
3.8 IPv6 Wildcard Address 3.8 IPv6 Wildcard Address
While the bind() function allows applications to select the source IP While the bind() function allows applications to select the source IP
address of UDP packets and TCP connections, applications often want the address of UDP packets and TCP connections, applications often want the
skipping to change at page 18, line 60 skipping to change at page 19, line 4
option. By default this option is turned off. option. By default this option is turned off.
Here is an example of setting this option: Here is an example of setting this option:
int on = 1; int on = 1;
if (setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, if (setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY,
(char *)&on, sizeof(on)) == -1) (char *)&on, sizeof(on)) == -1)
perror("setsockopt IPV6_V6ONLY"); perror("setsockopt IPV6_V6ONLY");
else else
printf("IPV6_V6ONLY set\n"); printf("IPV6_V6ONLY set0);
Note - This option has no effect on the use of IPv4 Mapped addresses Note - This option has no effect on the use of IPv4 Mapped addresses
which enter a node as a valid IPv6 addresses for IPv6 communications as which enter a node as a valid IPv6 addresses for IPv6 communications as
defined by Stateless IP/ICMP Translation Algorithm (SIIT) [8]. defined by Stateless IP/ICMP Translation Algorithm (SIIT) [8].
6. Library Functions 6. Library Functions
New library functions are needed to perform a variety of operations with New library functions are needed to perform a variety of operations with
IPv6 addresses. Functions are needed to lookup IPv6 addresses in the IPv6 addresses. Functions are needed to lookup IPv6 addresses in the
Domain Name System (DNS). Both forward lookup (nodename-to-address Domain Name System (DNS). Both forward lookup (nodename-to-address
skipping to change at page 29, line 46 skipping to change at page 29, line 46
IPv6 provides a number of new security mechanisms, many of which need to IPv6 provides a number of new security mechanisms, many of which need to
be accessible to applications. Companion memos detailing the extensions be accessible to applications. Companion memos detailing the extensions
to the socket interfaces to support IPv6 security are being written. to the socket interfaces to support IPv6 security are being written.
9. Year 2000 Considerations 9. Year 2000 Considerations
There are no issues for this draft concerning the Year 2000 issue There are no issues for this draft concerning the Year 2000 issue
regarding the use of dates. regarding the use of dates.
Changes made to rfc2553bis-04 to rfc2553bis-05
1. Added Jack McCann as coauthor for signicant work on draft 04.
Changes made to rfc2553bis-03 to rfc2553bis-04 Changes made to rfc2553bis-03 to rfc2553bis-04
1. Alignments with [3]. 1. Alignments with [3].
Changes made to rfc2553bis-02 to rfc2553bis-03 Changes made to rfc2553bis-02 to rfc2553bis-03
1. Edits only. 1. Edits only.
Changes made to rfc2553bis-01 to rfc2553bis-02 Changes made to rfc2553bis-01 to rfc2553bis-02
skipping to change at line 1664 skipping to change at page 32, line 43
Edison, NJ 08837 Edison, NJ 08837
Telephone: 732-635-3086 Telephone: 732-635-3086
Email: sethomso@cisco.com Email: sethomso@cisco.com
Jim Bound Jim Bound
Compaq Computer Corporation Compaq Computer Corporation
110 Spitbrook Road ZKO3-3/W20 110 Spitbrook Road ZKO3-3/W20
Nashua, NH 03062 Nashua, NH 03062
Telephone: 603-884-0062 Telephone: 603-884-0062
Email: Jim.Bound@compaq.com Email: Jim.Bound@compaq.com
Jack McCann
Compaq Computer Corporation
110 Spitbrook Road ZKO3-3/W20
Nashua, NH 03062
Telephone: 603-884-2608
Email: John.McCann@compaq.com
 End of changes. 13 change blocks. 
9 lines changed or deleted 15 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/