The background info for this is in Bug 19501.
When pump fails to renew a lease and then fails to get a new lease
for the interface, it exits. Unfortunately, before exiting it does
not disable the interface or remove the IP address from the interface.
This (in combination with Bug 19501 and Bug 19502) leads to IP
address conflicts on a network. In the existing code, if the client
is unable to renew on the first attempt, it immediately tries to
get a new lease (which almost certainly fails for the same reason
the renew failed) and then exits. The interface keeps running with
the expired lease's IP address. Sooner or later the DHCP server
will hand that address out to another host (although the server
and other client should really do an arp to see if it's already
taken although MS does not -- at least in some configs). Since
pump has exited, it will not ever renew the lease.
I suspect the right thing to do (if the patch from Bug 19502 isn't
applied) may be to call pumpDisableInterface() before calling
exit(0) around pump.c:390.
I can't find any places where pump exits without first calling the ifdown scripts...