http://www.freebsd.org/~sam/bridge.patch
This patch adds locking and also overhauls the bridge code some to do things like replace explicit numbers with #defines and cleanup the debugging code.
This is only mildly related, but maybe someone feels like looking at this in addition to your locking changes...
I have a PR about the bridge code sitting at http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/41632; the latest patch is at http://www.isi.edu/larse/software/bridge.patch
It does two things:
1. Disables bridging for IPv6. This is probably too aggressive, since bridging is only problematic for link-local packets, but it makes a routed IPv6 configuration coexist with a bridged IPv4 one.
A much better fix would be an overhaul of the bridge code so that each bridge has a single link-local address, instead of one per physical interface. (Similar to how it should/must only have one IPv4 address, but link-locals are auto-assigned.) Essentially, make a bridge set its own pseudo interface.
2. It forwards a copy of bridged packets to bpfs attached to interfaces in the bridge set that have no carrier. This makes dhcpd work on an interface of a bridge set that is unplugged.
Again, a much better fix would be to have bridge sets show up as pseudo interfaces that dhcpd's bpf can then listen on.
I think you mentioned in the past that NetBSD (OpenBSD?) has bridge code that implements the pseudo-device approach?
Lars
PS: I needed both these changes for our Soekris-based "rent-a-subnet" box: http://www.isi.edu/tethernet/
--
Lars Eggert <[EMAIL PROTECTED]> USC Information Sciences Institute
smime.p7s
Description: S/MIME Cryptographic Signature