Bug 191302

Summary: ifup-eth script not working with ethernet bridging in FC5
Product: [Fedora] Fedora Reporter: Seth Noyes <sss475>
Component: initscriptsAssignee: Bill Nottingham <notting>
Status: CLOSED WORKSFORME QA Contact: Brock Organ <borgan>
Severity: medium Docs Contact:
Priority: medium    
Version: 5CC: blentz, dwmw2, rvokal, samueldg
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-12-30 19:57:16 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Seth Noyes 2006-05-10 16:51:47 UTC
Description of problem:
In Fedora Core 5 the /etc/sysconfig/network-scripts/ifup-eth shell script has
the flowing block of code:
     82 # now check the real state
     83 is_available ${REALDEVICE} || {
     84       if [ -n "$alias" ]; then
     85          echo $"$alias device ${DEVICE} does not seem to be present,
delaying initialization."
     86       else
     87          echo $"Device ${DEVICE} does not seem to be present, delaying
initialization."
     88       fi
     89       exit 1
     90 }
     91
     92 # is the device wireless? If so, configure wireless device specifics
     93 is_wireless_device ${DEVICE} && . ./ifup-wireless
Located above the bridge creation code.  The is_available check fails when
looking for the virtual device br0, and therefore dies prior to the
initialization of the bridge.


Version-Release number of selected component (if applicable):
Fedora Core 5 Vanilla Install from ISO


How reproducible:
This issue is always reproducible with the standard ifup-eth script.

Steps to Reproduce:
1. run "service network stop"
2. Create /etc/sysconfig/network-scripts/ifcfg-br0 with the following
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.2
NETMASK=255.255.255.0
ONBOOT=yes
3. Create /etc/sysconfig/network-scripts/ifcfg-eth0 with the following
DEVICE=eth0
TYPE=Ethernet
BRIDGE=br0
ONBOOT=yes
4. Create /etc/sysconfig/network-scripts/ifcfg-eth1 with the following
DEVICE=eth0
TYPE=Ethernet
BRIDGE=br0
ONBOOT=yes
5. run "service network start" 
  
Actual results:
When initializing br0 the response is "Device br0 does not seem to be present,
delaying initialization" and FAILED.

Expected results:
All OKs.

Additional info:
This issue does not occur on Fedora Core 4, and yum does not update this shell
script.  The issue appears to be contained to new installs of Fedora Core 5 only.

Comment 1 Luciano Rocha 2006-07-11 16:42:57 UTC
I had the same problem, but is now fixed in initscripts-8.31.5-1. (And the
correct component was initscripts, not bridge-utils.)

Comment 2 Samuel Díaz García 2006-09-08 17:34:17 UTC
If you use bridge iface name greater than bridge ports iface, it works.
For example: I define a bridge zlan0 with eth0 and eth2 as its ports and this works.

If I put "br0" instead "zlan0" don't works.

Comment 3 David Woodhouse 2006-09-09 07:57:33 UTC
Seems to work for me. Please provide more information about what happens when
'is_available br0' fails. It should already have created the bridge device by
then. Does it work if you add a sleep after the 'brctl addbr' line?

Comment 4 Ben Lentz 2006-12-30 19:38:23 UTC
This is happening to me as well, initscripts 8.31.1-1.

is_available br0 test never works. If I do "brctl addbr br0" then "ifup br0"
it's fine.

So, it would seem there's a new timing issue introduced in the initscripts
package between FC4 and FC5. The brctl addbr code in ifup-eth isn't running
before the is_available code in ifup, and the process is failing prematurely
because of this.

The timing issue seems code-flow related, not wall-clock related (e.g. adding a
sleep doesn't help me). In /sbin/ifup, the is_available code is executed well
before the OTHER_SCRIPT code runs /etc/sysconfig/network-scripts/ifup-eth, which
is where the brctl code lives. And because there's no provision in /sbin/ifup
prior to referencing is_available for TYPE=Bridge, it breaks. There are
provisions, however, in /sbin/ifup for VLAN interfaces, and these are placed
before the is_available check.

Perhaps a function needs to be inserted before the is_available call in
/sbin/ifup to check for TYPE=Bridge. I find it strange that the preparation for
vlan configs is setup to run vconfig from /sbin/ifup, and that the preparation
for bridging configs is setup run brctl from
/etc/sysconfig/network-scripts/ifup-eth.

I'd think we'd want them to happen at about the same time... the bonding code,
the bridging code and the vlan code. Just my two cents.

When will this be fixed?

Comment 5 Ben Lentz 2006-12-30 19:51:52 UTC
I am an idiot. This is fixed in initscripts 8.13.6-1. I should've paid closer
attention to Luciano's comment.

Can someone close this bug? I was given the impression this was still broken
because the Status was New.