The project team is ready to integrate this case, and implementation
differs slightly from the approved spec.  Below are the details of these
deviations.  In my opinion, these are minor enough that they can be
included in this case as spec updates.  Please let me know if you
disagree, and I can also file a separate case (which would likely be
self-reviewed).

1. Additions for libdlpi.so

   The approved spec contained the following text:

      Moreover, in order to shield applications from the details of
      accessing these and other upcoming DLPI devices proposed by
      Clearview, we will be proposing a public libdlpi.so library as
      part of an upcoming case.

   That case was PSARC 2006/436, and the dlpi_open() function is the
   function that shields applications from the details of DLPI device
   access.  Two new dlpi_open() flags are being included with this
   case to implement this:

   DLPI_DEVIPNET        Causes dlpi_open() to only open DLPI style-1
                        devices from the /dev/ipnet directory.

   DLPI_IPNETINFO       Causes dlpi_open() to issue a DLIPNETINFO
                        ioctl to the DLPI device after opening it,
                        thereby enabling the inclusion of
                        dl_ipnetinfo_t headers in front of received
                        packets from /dev/ipnet or /dev/lo0 devices.

   A new libdlpi error code, DLPI_EIPNETINFONOTSUP, is also included.
   The dlpi_open() function fails with this error if the
   DLPI_IPNETINFO flag was set but the device opened doesn't support
   the DLIOCIPNETINFO ioctl.

2. Miscellaneous Symbol Name Changes

   Original Interface     New Interface                 Comment
   -----------------------------------------------------------------------
   DL_IOC_IPNET_INFO      DLIOCIPNETINFO                <sys/dlpi.h>
   struct dl_ipnet_info   dl_ipnetinfo_t                <sys/dlpi.h>
   net_getlif_flags()     net_getlifflags()             <sys/neti.h>
   ips_register_hook()    ipobs_register_hook()         (Project Private)
   ips_unregister_hook()  ipobs_unregister_hook()       (Project Private)
   zoneid                 zone                          snoop keyword
   PRIV_IP_OBSERVABILITY  PRIV_NET_OBSERVABILITY

3. <inet/ipnet.h> Not Committed

   As approved, the <inet/ipnet.h> was a Committed interface because
   it contained the Committed DL_IOC_IPNET_INFO ioctl, the
   dl_ipnet_info header, and the DL_IPNETINFO_VERSION constant.  These
   are moved to <sys/dlpi.h> (and renamed in some cases, see section
   2), and <inet/ipnet.h> is now Project-Private.

4. Changes to Netinfo

   The project did not need to introduce the NE_SET_ZONE NIC event as
   originally anticipated, so this is no longer included in this case.

   The previously Committed net_getlifflags() and net_getlifzone()
   functions, and NE_LIF_UP and NE_LIF_DOWN NIC events will be
   Consolidation-Private, as there is very little implementation
   experience to warrant their being Committed, and the project team
   doesn't feel confident further sedimenting the concept of "logical
   interfaces" into this API.

5. Clarification of Project-Private ipobs_* Kernel Interfaces

   The case documented the use of ipobs_register_hook() and
   ipobs_unregister_hook() for consumers like the ipnet module to gain
   access to IP packets.

   The case was silent on how access to those packets would be
   achieved.  The following set of Project-Private functions are used
   for this purpose:

      ipobs_init(ip_stack_t *ipst)

          Called in IP's stack initialization function to initialize
          the IP observability callback list and other private
          per-stack data structures.

      ipobs_fini(ip_stack_t *ipst)

          Called in IP's stack tear-down function to free what was
          instantiated in ipobs_init().

      ipobs_hook(mblk_t *mp, ipobs_hook_type_t htype, zoneid_t zsrc,
          zoneid_t zdst, ill_t *ill, int ipver, uint32_t hlen,
          ip_stack_t ipst)

          The function used to distribute an IP packet to registered
          consumers.



Reply via email to