Red Hat Bugzilla – Bug 56395
ifup / ifdown / network reload doesn't work
Last modified: 2014-03-16 22:24:25 EDT
From Bugzilla Helper:
User-Agent: Mozilla/4.78 [en] (X11; U; Linux 2.4.7-10 i686)
Description of problem:
On a default RedHat Linux 7.2 install I have 3 ethernet cards. I wished to
switch eth0 from using the 3c59x card in the machine to using the 8139too.
I changed the modules.conf to reflect this, but a network reload didn't
switch the cards. Doing an lsmod reveiled that the kernel still had the
3c59x module loaded and was using it specificaly for that interface. I had
to reboot the server to get the module to change. I also changed the
interface IP's using linuxconf and it created the following ifcfg-eth0 file
in the /etc/sysconfig/network-scripts:
Again I changed the IP address of this interface to 10.0.0.45 and a network
reload didn't work. I also tried to run an ifdown eth0; ifup eth0, but that
too wouldn't change the IP address. I ended up having to reboot the
computer again to get it to change the IP...
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Get machine totally running fine
2. Change 1 ethernet card's IP address in cfg file, or change the kernel
module for that ethernet card to point to another ethernet card in your
3. Run a network reload or an ifdown eth0; ifup eth0
No output error. Scripts simply didn't change the IPs. I could manually
change it if I ran the ifconfig eth0 10.0.0.45 netmask 255.255.254.0
Found the new version on rawhide for initscripts-6.40.2-1.i386.rpm and that
fixed the IP change, but it still doesn't work correctly if I change NICs. When
I move from the 8139too to the 3c59x it doesn't seem to handle that correctly. I
still need to reboot.
This issue here is that eth? -> card mapping isn't done by the various scripts,
or even /etc/modules.conf, but by the kernel itself.
What happens is: sombody asks for eth0. Kernel tells modprobe to load eth0,
and the associated modules inits. During that initialisation, it grabs its
name. If it finds two cards, it can allocate two names.
Then the next card's driver loads, and the next card is named in sequence.
The problem is that once a driver 'owns' a name, it doesn't give it up until you
remove the module from the kernel - often over a reboot.
One partial solution is that the scripts should attempt to rmmod all unused
modules during the network reload, but you still can get weird behaviour...
Closing bugs on older, no longer supported, releases. Apologies for any lack of
This is not something we're specifically going to handle in the initscript at
this point; note that if you use HWADDR in the config files in current code, it
will attempt to rename the devices to match what you want.