Brussels is providing legacy support for ndd by fielding the 
ND_SET/ND_GET ioctls in the shim dld layer. So attempts 
to use the ndd calls will still work, post-brussels, 
though the drivers will be liberated of the ugly cut/pasted,
undocumented calls to ndd interfaces like nd_getset()

At our last iteam meeting, we were discussing ways of
addressing driver.conf(4) similarly. Let's say that some
property <foo> is now supported as a Brussels property
(a classic example would be foo = default_mtu for
Jumbo Frames). Three options were suggested

1. provide support via scripts (or via code in dladm/dladmd)
   that parses driver.conf on reboot, or when update_drv is run,
   and converts the input to dladm configuration input. This
   method has several drawbacks- the biggest one is that
   certain drivers won't be able to access the most
   current administrative state via the dladm repository until
   he conversion-procedure is run. Implementation of this method
   is also likely to be complex, and therefore error-prone.

2. clearly document that <foo> is no longer supported via driver.conf
   and that dladm should be used instead. Provide scripts  for
   each Brussels-ized driver for users to run, to convert existing
   driver.conf syntax to linkprop.conf syntax. 

   It's important to get the documentation right, for this option.
   The driver's 7D man page will clearly have to be documented to 
   contain the dladm invocation for setting <foo>, but it's not
   clear (to me, at least) where we should document the end of support
   for driver.conf setting of <foo>- the problem is that 
   current driver.conf keywords are themselves not documented
   in a predictable way. Some drivers (qfe, dmfe, eri) have a precedence
   of publishing Platform notes. This may be the option to adopt.
   Also, adopting this method alone would restrict us from backporting
   so s10ux. 

3. As we convert each driver, we provide some backward compatibility
   crutches, by doing
      if (mac_prop_get(/* .. */) || ddi_prop_get(<foo>, /* ... */) {
                /* 
                 * set <foo>; maybe log a message that the user
                 * should be using dladm instead of driver.conf 
                 * to set <foo>. 
                 */
     }
   This method leaves us with potentially redundant calls to 
   ddi_prop_get(), but does match the method adopted by 
   PSARC 2003/344, where attempts to set things like <if>:ip_forwarding
   via ndd results in a WARNING message. (For the curious, the message 
   itself is something like
    "WARNING: The <if>:ip*_forwarding ndd variables are obsolete and
     may be removed in a future release of Solaris.  Use ifconfig(1M) to
     manipulate the forwarding status of an interface.")


My own preference would be for a combination of #2 and #3. For Nevada,
#2 alone is the cleanest approach. Votes? Other ideas?

--Sowmini


Reply via email to