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