During code review, Cathy stumbled on a change I made to ip_rcm.c that
couldn't possibly have worked.  The code is used for undoing a failed
offline request (e.g., because the DLPI link is busy).

As part of testing the undo-offline code today, I found a number of
additional issues, most of them with the undocumented "configinfo"
subcommand that has long been used by RCM for undo-offline[1]:

    * The IP interface group is not printed for ":0" interfaces,
      which means IP interfaces do not get put back into the group.

    * Logical interfaces are incorrectly reported as physical
      interfaces by configinfo, which means logical interfaces are
      never restored, and physical interfaces get clobbered with
      logical interface parameters.

    * Logical interfaces report an "index" by configinfo, which
      causes an undo-offline to fail because one cannot set an
      index on a logical interface.

    * The configinfo code erroneously outputs "addif" rather than
      "set" when configuring addresses on logical interfaces, which
      causes undo-offline to misfire.

    * The configinfo code erroneously outputs "up" before "-failover",
      which causes test addresses to incorrectly be treated as data
      addresses.

All of these issues pre-date Clearview IPMP, and I think there are
probably quite a few more lurking in this gnarly ifconfig code, but fixing
the above seems to get things basically up and running.

Separately, I noticed that some additional code in ip_rcm.c is needed
to get DHCP to work with undo-offline.  I also noticed that ip_rcm.c
should use "wait 0" when acquiring DHCP leases throughout so that RCM
is not blocked waiting for DHCP leases.

All the changes are covered here:

  http://zhadum.east/export/ws/clearview/clearview-ipmpdev/webrev/

(Only the ifconfig.c and ip_rcm.c changes are relevant.)  Seb, could you
please take a look?

[1] Again, this code is only executed when an offline fails, which is
    an unusual case.

-- 
meem

Reply via email to