I'm sponsoring this case for Sagun Shakya and the Clearview I-Team.
The timer is set for Friday, November 17th. These proposed changes are
small and only impact unshipped interfaces. Patch binding is again
requested.
---8<--
During the implementation of libdlpi a few changes were made to the
original proposal specified in PSARC/2006/436. The changes and the
rationale for them are summarized below. A copy of the original approved
proposal has been updated with indication of changes made and an updated
libdlpi manpages has also been provided in the materials directory.
Proposed changes:
1. libdlpi error code changes [Section 1.6 Error Handling]
DLPI_ERRBASE, which was previously used internally by libdlpi, has
proven unnecessary and thus will be removed.
DLPI_ENOMEM will be removed in favor of using DLPI_SYSERR/ENOMEM.
DLPI_ENOLINK and DLPI_ENOTSTYLE2 will be added to provide a more
specific error code and to improve end-user diagnostic message.
2. dlpi_addrtype_t and dri_dstaddrtype [Section 2.1 Interface Table]
Originally, the dlpi_recvinfo_t structure had a boolean "dri_unicast"
member, which indicated the destination address type. Since the DLPI
specification does not strictly specify only two destination address
types, a future extension would be restricted with a boolean member.
Thus, dri_isunicast will be replaced with dri_dstaddrtype, which will
use a new dlpi_addrtype_t enumerated type to indicate the destination
address type.
3. dlpi_makelink() [Section 2.1 Interface Table, 2.2.1 Interfaces]
Some low-level applications walk the device tree and must convert
device name/instance pairs into DLPI link names (e.g., in order to
then call dlpi_open()). To make this easy, a dlpi_makelink()
convenience routine has been added. Since we are not aware of any
consumers outside of ON, dlpi_makelink() will be Consolidation
Private and undocumented.
4. DLPI_NOATTACH [Section 2.1 Interface Table, 2.2.2 flag usage]
Originally, we proposed the Consolidation Private routines
dlpi_attach() and dlpi_detach(), to allow applications to explicitly
attach/detach to/from a specific PPA of an open DLPI device.
However, dlpi_attach() has proven unnecessary, and will be removed.
Similarly, dlpi_detach() was only used by ifconfig to workaround an
oddity in our IP and ARP STREAMS modules. Specifically, IP and ARP
assume that they are pushed atop an *unattached* DLPI style-2 device.
Thus, ifconfig must issue a detach after dlpi_open() but prior to
pushing the modules. However, it is senseless to have dlpi_open()
attach only to subsequently call dlpi_detach(). Instead,
dlpi_detach() will be replaced by a DLPI_NOATTACH dlpi_open() flag
which indicates that an attach is not desired. (Note that the IP/ARP
behavior is questionable but outside our scope.)
5. DLPI_SERIAL [Section 2.1 Interface Table, 2.2.2 flag usage]
Although the synchronous serial line interface is not a true DLPI
link, it uses a DLPI-like message passing interface to communicate
with serial devices. With the intention of not leaving any raw users
of DLPI message types in the ON Consolidation, libdlpi will continue
to support the synchronous serial line commands (syncinit(1M),
syncstat(1M), syncloop(1M)) by providing a special Consolidation
private flag DLPI_SERIAL to the dlpi_open() routine. This flag
minimizes the impact of supporting the above mentioned commands by
allowing special treatment during the open of such synchronous serial
line interfaces.
--
meem