I recently ran into some trouble with network bridges on Arch.
This is what you get if you create a bridge on Debian:
debian# brctl addbr br0 debian# ifconfig br0 up debian# ifconfig br0 br0 Link encap:Ethernet HWaddr f6:56:ad:d8:77:f4 inet6 addr: fe80::f456:adff:fed8:77f4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:1407 (1.3 KiB) debian# ip link show br0 4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether f6:56:ad:d8:77:f4 brd ff:ff:ff:ff:ff:ff
And this is what you get if you do the same on Arch:
arch# brctl addbr br0 arch# ifconfig br0 up arch# ifconfig br0 br0 Link encap:Ethernet HWaddr 82:50:01:29:67:7F UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) arch# ip link show br0 7: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN link/ether 82:50:01:29:67:7f brd ff:ff:ff:ff:ff:ff
As you can see the interface gets no link-local IPv6 address and ip link says NO-CARRIER and DOWN.
So why is this a problem? In my case I'm experimenting with libvirt and this causes virtual networks to break with IPv6 and that's definitively not how it should be. radvd also complains that the interface has no link-local address if you want to send router announcments for this interface.
In commit 1faa4356a3bd89ea11fb92752d897cff3a20ec0e to the Linux kernel (which was before 2.6.39 got released so this is the first affected version) the behavior of bridges was changed so that they set the carrier state to off if no interfaces are connected.
You can attach any device to the bridge and everything will work but that's not exactly how I want this to be solved as this requires unnecessary addiditional configuration.
Do you know any better solutions for this problem or do you think this should be considered as a bug?