Background: --------- "IPv6 Advanced Sockets API" (PSARC 2002/508) documents support for RFC 2292bis (now RFC 3542). In S8 support for an earlier revision of RFC 2292bis had been implemented. One difference not caught in PSARC 2002/508 between the early revision of 2292bis and the final version were changes in the use of socket option IPV6_RECVDSTOPTS. This case deals with managing those differences. 2002/508 project had a Minor release binding and was integrated into s10_47. This case also has a Minor release binding, and changes the Evolving (now Standard; RFC 3542) interfaces from 2002/508. Because 2002/508 hasn't been in an actual Minor release yet, it's asserted that these changes are proper. Details: ------- The IPv6 specification calls out a set of headers that can occur in an IPv6 packet and a suggested order. Those are: IPv6 header Hop-by-Hop Options header Destination Options header Routing header Fragment header Authentication header Encapsulating Security Payload header Destination Options header upper-layer header Note that the Destination Options header can occur twice. An occurrence of this header before the routing header indicates it is processed by destinations listed in the routing header and the initial destination address field. An occurrence of this header after the routing header is processed by only the final destination. In the revision of 2292bis implemented in S8, IPV6_RECVRTHDRDSTOPTS was used to turn on receipt of the first header and IPV6_RECVDSTOPTS was used to turn on receipt of the second header. In the final revision of 2292bis (RFC 3542), IPV6_RECVDSTOPTS is used to turn on both, and the user should use header ordering to figure out which is which. To maintain backwards binary and source compatibility, IPV6_RECVRTHDRDSTOPTS will be restored to the functionality shipped with S8 (this functionality was broken with 2002/508). Note that the KAME source base still supports this option. IPV6_RECVRTHDRDSTOPTS is now marked Obsolete. For IPV6_RECVDSTOPTS we will leave the old option value in place and restore the old semantics for binary compatibility. But due to the name clash we will rename it to _OLD_IPV6_RECVDSTOPTS which will be Consolidation Private. [Note that there will be some binary incompatibilities between releases of Sx and previous Solaris release until the change proposed in this case is released.] If a program is compiled setting IPV6_RECVRTHDRDSTOPTS (old) and IPV6_RECVDSTOPTS (new), the outcome will be to get both option headers just as if the program had only specified IPV6_RECVDSTOPTS. If a program that expects the old semantics and uses only IPV6_RECVDSTOPTS is recompiled then it will start receiving two headers. Currently there are not any options that should occur before the routing header so the impact should be small. The ip6(7P) man page will be changed: *************** *** 163,169 **** IPV6_RECVRTHDRDSTOPTS Enable/disable receipt of the inbound packet's ! intermediate-hops options extension header. IPV6_RECVTCLASS Enable/disable receipt of the traffic class of the --- 163,171 ---- IPV6_RECVRTHDRDSTOPTS Enable/disable receipt of the inbound packet's ! intermediate-hops options extension header. This ! option is Obsolete. IPV6_RECVDSTOPTS turns on ! receipt of both destination option headers. IPV6_RECVTCLASS Enable/disable receipt of the traffic class of the