| < 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/ | ||||