I run my RH box on a network where IP addresses are assigned by DHCP. Also DHCP sends information on DNS servers. bump would not pick up DNS info from DHCP and would overwrite /etc/resolv.conf if I edit it manually. Had to change /etc/sysconfig/ifup to correct the problem. Here is the diff of my ifup file and the original: ---------------------cut here------------------------------ *** /etc/sysconfig/network-scripts/ifup.old Thu May 13 12:23:13 1999 --- /etc/sysconfig/network-scripts/ifup Thu May 13 12:35:04 1999 *************** *** 82,94 **** fi if [ -n "$PUMP" ]; then ! echo -n "Determining IP information for $DEVICE..." if /sbin/pump -i $DEVICE ; then echo " done." else echo " failed." exit 1 fi else if [ -z "$NETMASK" ]; then eval `/bin/ipcalc --netmask ${IPADDR}` --- 82,104 ---- fi if [ -n "$PUMP" ]; then ! echo -n "Determining IP information for $DEVICE using $BOOTPROTO..." ! if [ $BOOTPROTO = "bootp" ]; then if /sbin/pump -i $DEVICE ; then echo " done." else echo " failed." exit 1 fi + elif [ $BOOTPROTO = "dhcp" ]; then + /sbin/dhcpcd $DEVICE + if [ -e /var/run/dhcpcd-$DEVICE.pid ]; then + echo " done." + else + echo " failed." + exit 1 + fi + fi else if [ -z "$NETMASK" ]; then eval `/bin/ipcalc --netmask ${IPADDR}`
Pump should work properly for obtaining this information from a DHCP server, if it does not then it is a bug. If you are receiving DHCP information from a NT server running dhcp services, there was a known bug that has been fixed. You should get the updated pump package from ftp://updates.redhat.com.
*** Bug 3094 has been marked as a duplicate of this bug. *** I have made a bug report concerning usage of pump to configure DHCP/BOOTP interfaces. You have changed the status of the bug to resolved. I have upgraded to new pump RPM. I have reinstalled my initscripts RPM to get original ifup and ifdown scripts. I have reloaded network. Pump overwrote the /etc/resolv.conf with info provided by DHCP server. I have a caching-only named running. I want 127.0.0.1 to be the first in the list of nameservers in /etc/resolv.conf. There is no switch in pump to disable configuration of /etc/resolv.conf. I do not see any good reason for the pump to exist at all, for there are regular DHCP and BOOTP clients which are not too difficult to run. IMHO pump removes important functionality without providing any useful features or anything worth using it. Thank you. I think any linux pro will agree that it is better to make one update to initscripts then 5 updates to pump. The name "pump" is ugly too.
*** Bug 3012 has been marked as a duplicate of this bug. *** I have a linux box with two interfaces and a ppp connection. I routinely connect to a commercial intranet via ppp. I have a local net for which I have a static (private) IP address. I am also connected to RoadRunner which requires DHCP nic configuration. Roadrunner and the ppp intranet both use split DNS configurations, i.e. DNS resolution from the root down will not yield correct information for inside these intranets. In addition, I have a private network. To handle this I configure a local nameserver which is a secondary to the ppp intranet servers, and forwards to the Roadrunner servers. dhcpcd and pump both overwrite /etc/resolv.conf directly from the binaries which prevents me from disabling the behavior. dhcpcd at least uses /etc/dhcpcd/resolv.conf whereas pump does not. They should allow this behavior to be suppressed. ------- Additional Comments From notting 05/24/99 15:44 ------- chattr +i /etc/resolv.conf. :)
Guys, Here is a patch to suppress the overwrite of /etc/resolv.conf by pump. I have been using it successfully on my machine for almost a week. The init script change above forces dhcpcd to be used for dhcp resolution rather than pump. This means you have two dynamic resolvers which is less than desireable. Furthermore, dhcpcd tries very hard to overwrite /etc/resolv.conf too, so even if you use it you have still not solved the problem. I worked around the problem with dhcpcd by overwriting the generated resolv.conf with my copy. (An ugly hack but it mostly worked.) The real problem here is that both of these dynamic IP resolvers are trying to do too much. Their job is to get an IP address for an interface. They should make available the other information, nameservers etc., but should not be enforcing that information. The patch below fixes my bug (3012) by allowing me to suppress the resolver configuration since I'm not interested in any DNS information provided by DHCP. However, Bug 3094 is actually more complex than mine because he wants to integrate information from DHCP into his resolv.conf. His problem should be fixed by a patch to the init scripts that allows him to write a local dns config script where he can query DHCP nameserver info and write his resolv.conf. thanks tim diff -c pump-0.6.4/pump.c pump-nodns/pump.c *** pump-0.6.4/pump.c Mon Apr 19 15:35:37 1999 --- pump-nodns/pump.c Tue May 25 18:09:56 1999 *************** *** 163,168 **** --- 163,176 ---- } u; }; + /* I tried to find a less intrusive way to work this into doDhcp() but + I couldn't find one. I thought about using the command struct but + it isn't passed in I thought about adding more parameters to the + call stack above doDhcp(), but that seemed even more intrusive */ + static int suppress_resolv = 0; + + + static char * doDhcp(int timeout, char * device, int flags, int lease, struct intfInfo * intf); *************** *** 1070,1076 **** if (intf->set & NETINFO_HAS_GATEWAY) { chptr = setupDefaultGateway(&intf->gateway, s); } ! setupDns(intf); close(s); --- 1078,1086 ---- if (intf->set & NETINFO_HAS_GATEWAY) { chptr = setupDefaultGateway(&intf->gateway, s); } ! if (! suppress_resolv) { ! setupDns(intf); ! } close(s); *************** *** 1328,1333 **** --- 1338,1345 ---- struct command cmd, response; int cont; struct poptOption options[] = { + { "nodns", '\0', POPT_ARG_NONE, &suppress_resolv, 0, + N_("Do NOT use DHCP specified nameserver"), NULL }, { "interface", 'i', POPT_ARG_STRING, &device, 0, N_("Interface to configure (normally eth0)"), N_("iface") },
This is fixed in the errata ; pump now has directives in /etc/pump.conf to not overwrite /etc/resolv.conf.