If the system has two ethernet interfaces, one configured with dhcp using pump, connected to a cable modem, and the other one configured manually for the local network, if the interfaces are brought down e.g. by changing runlevel, the dhcp configured interface will not be able to obtain a new ip when the runlevel is changed to something where the network is enabled again. This is because the second ethernet interface retains it's IP address even though it's down. When pump tries to get an IP from dhcp, it uses the IP of the second card as the source address for the request, and as a result the cable modem filters out the request, and pump never gets a reply. My proposed fix is to change line 46 of /sbin/ifdown to "ifconfig ${DEVICE} 0.0.0.0 down" (the change is the added 0.0.0.0) so the ip of the second interface will get removed from the interface. Then pump will send out requests from an IP address that is accepted by the cable modem.
This sounds more like a problem with pump; it shouldn't be sending the requests like that.
In the pump-0.7.8 source code, function pumpDhcpRun there is program code to reset the client address to all zero. Obviously this code has no effect as the outgoing IP address is inserted by kernel. The socket is standard datagram socket, not a raw one. Also having similar setup myself as most of the people here complaining about pump not working on RH6.2, I also run into problem where DHCPc request was sent from a NIC which was _not_ specified on the pump command line. It looked like kernel made a decision to output the broadcast packet (255.255.255.255:67) from the other NIC. There seem to be some major problems with the kernel, not the pump itself.
This should be fixed in pump 0.8, available from ftp://people.redhat.com/ewt -- please try it.
I can confirm this _not_ to work. I built the pump 0.8 from the sources given, but it does not seem to help. My test was simple: ifdown to the interface using DHCP and it won't ifup. I had to ifdown the other interface using static address and manually specify it to have address 0.0.0.0 and after that the DHCP i-face got up. To me it looks like nothing changed.