I'm sponsoring this case for myself. The timeout is set for 10/8/2007
(please disregard the earlier timeout of 10/10/2007).
Introduction
------------
Over the years, the Solaris sockets API has accrued a variety of methods
to send or receive packets over a specific IP interface. This case
proposes to simplify and rationalize the landscape by removing
IP_XMIT_IF and extending IP_BOUND_IF to match the behavior and
commitment level of IPV6_BOUND_IF. Since both IP_XMIT_IF and
IP_BOUND_IF have been Consolidation Private, patch binding is requested.
Details
-------
The IP_XMIT_IF socket option was originally introduced with Mobile IP
(PSARC/2001/350) as a consolidation-private mechanism to force unicast
and multicast traffic to be sent out a specific IP interface. While
Mobile IP has been EOL'd (PSARC/2007/311), IP_XMIT_IF was not removed
because our in.routed implementation was making use of it. However, we
later realized that in.routed's needs would be better-suited by the
IP_PKTINFO facility (PSARC/2006/466), allowing removal of IP_XMIT_IF.
Google and koders.com reveal no external consumers of IP_XMIT_IF.
The IP_BOUND_IF socket option was never ARC'd, but arrived in ON during
IPv6 development, apparently to parallel the stable IPV6_BOUND_IF socket
option documented in ip6(7P). However, for reasons lost in the sands of
time, IP_BOUND_IF currently supports only broadcast traffic. We propose
to rationalize IP_BOUND_IF to match IPV6_BOUND_IF by adding support for
unicast and multicast traffic as well. IP_BOUND_IF will also be
promoted to Committed and described in ip(7P).
To summarize, the current landscape for sending/receiving packets over
a specific IP interface is:
UNICAST MULTICAST BROADCAST DIRECTION STICKY
IP_XMIT_IF yes yes no send yes
IP_BOUND_IF no no yes both yes
IPV6_BOUND_IF yes yes n/a both yes
IP_MULTICAST_IF no yes no send yes
IPV6_MULTICAST_IF no yes no send yes
IP_PKTINFO yes yes yes send no
IPV6_PKTINFO yes yes n/a send no
... and our proposed landscape is:
UNICAST MULTICAST BROADCAST DIRECTION STICKY
IP_BOUND_IF yes yes yes both yes
IPV6_BOUND_IF yes yes n/a both yes
IP_MULTICAST_IF no yes no send yes
IPV6_MULTICAST_IF no yes no send yes
IP_PKTINFO yes yes yes send no
IPV6_PKTINFO yes yes n/a send no
[ Above, "DIRECTION" refers to the API's ability to limit whether a
given socket will send or receive packets over a particular IP
interface. IP_PKTINFO can identify what IP interface a given packet
was received on, but does not prevent the reception. ]
--
meem