I did try that version. Bug still exists. I think I know why you were unable to reproduce. It looks like the bug only manifests itself when ip is working on an interface which has an alias. That's what I get for writing a bug report at 2:30 am.
See attached file for debug output from Xen's network-bridge script. The end of the output is where the script dies when 'ip addr flush' throws the error. On Sun, Jun 07, 2009 at 02:06:16PM +0200, Andreas Henriksson babbled thus: > On s??n, 2009-06-07 at 14:01 +0200, Andreas Henriksson wrote: > > On s??n, 2009-06-07 at 02:10 -0400, Mike Edwards wrote: > > [...] > > > 'ip addr flush' fails with error > > > 'Failed to send flush request: Cannot assign requested address' on first > > > try for any given interface. Subsequent invocations appear to work. > > [...] > > > To replicate: Run 'ip addr flush <dev>', where <dev> is an interface > > > that has not yet been flushed. It is unknown whether this bug requires > > > a Xen kernel to replicate, or if it happens with other Lenny kernels. > > > > I'm not able to reproduce. > [...] > > I'm on sid which has iproute version 20090324-1. Could you please test > with this version to see if the problem you are experiencing has already > been fixed? > > > -- > Regards, > Andreas Henriksson -- Mike Edwards | If this email address disappears, Unsolicited advertisments to | assume it was spammed to death. To this address are not welcome. | reach me in that case, s/-.*@/@/ "Our progress as a nation can be no swifter than our progress in education. The human mind is our fundamental resource." -- John F. Kennedy
+ echo 'args: start' args: start ++ dirname /etc/xen/scripts/network-bridge + dir=/etc/xen/scripts + . /etc/xen/scripts/xen-script-common.sh ++ set -e + . /etc/xen/scripts/xen-network-common.sh ++ '[' -e /etc/SuSE-release ']' ++ which ifup + findCommand start + for arg in '"$@"' + expr index start = + command=start + return + evalVariables start + for arg in '"$@"' + expr index start = '>' 1 + modprobe netloop ++ ip route list 0.0.0.0/0 ++ sed 's/.*dev \([a-z]\+[0-9]\+\).*$/\1/' + netdev=eth0 + is_network_root ++ awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $3; }}' /etc/mtab + local rootfs=xfs ++ awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $4; }}' /etc/mtab + local rootopts=rw + [[ xfs =~ \^nfs ]] + [[ rw =~ _netdev ]] + return 1 + netdev=eth0 + bridge=eth0 + antispoof=no + pdev=peth0 + tdev=tmpbridge + case "$command" in + op_start + '[' eth0 = null ']' + link_exists peth0 + ip link show peth0 + return 1 + create_bridge tmpbridge + local bridge=tmpbridge + '[' '!' -e /sys/class/net/tmpbridge/bridge ']' + brctl addbr tmpbridge + brctl stp tmpbridge off + brctl setfd tmpbridge 0 + preiftransfer eth0 + true + transfer_addrs eth0 tmpbridge + local src=eth0 + local dst=tmpbridge + ip addr show dev tmpbridge + egrep -q '^ *inet ' + ip addr show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:1c:c0:c1:a3:2b brd ff:ff:ff:ff:ff:ff inet 192.168.1.18/23 brd 192.168.1.255 scope global eth0 inet 192.168.1.180/23 brd 192.168.1.255 scope global secondary eth0:0 inet6 fe80::21c:c0ff:fec1:a32b/64 scope link valid_lft forever preferred_lft forever + ip addr show dev eth0 + egrep '^ *inet ' + sed -e ' s/inet/ip addr add/ s...@\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/[0-9]\+\)@\1@ s/eth0/dev tmpbridge label tmpbridge/ s/secondary// ' + sh -x -e + ip addr add 192.168.1.18/23 brd 192.168.1.255 scope global dev tmpbridge label tmpbridge + ip addr add 192.168.1.180/23 brd 192.168.1.255 scope global dev tmpbridge label tmpbridge:0 + ip route list + sed -ne ' /dev tmpbridge\( \|$\)/ { s/^/ip route del / p }' + sh -x -e + ifdown eth0 + ip link set eth0 name peth0 + ip link set tmpbridge name eth0 + setup_bridge_port peth0 + local dev=peth0 + ip link set peth0 down + ip addr flush peth0 Failed to send flush request: Cannot assign requested address