There should be a way to distinguish between unicast and brodcast on link layer
Current netkit runs umlswitch with '-hub' argument that is making a difference between unicast and broadcast very thin on link layer. This commit removes '-hub' argument, making umlswitch working as a switch and not a hub. I'm not sure this is very good idea because '-hub' was definitely used on purpose.
Usually I see uml_switch as an unique wire between several machines connected in the same named domain. Thus I don't think this is the good idea, especially if I use an UML machine as a switch with bridge mode. The only real advantage would be performance with an very big number of packet, and I don't think that the main goal of netkit.
Why do you think that the switch mode will cause problems if UML machine is used as a switch? uml_switch is very simple and even does not have STP. Besides, named domain now looks like a collusion domain, but modern ethernet protocols work only if switches are used. So eth0 in UML does not work as eth0 in real machine if uml_swicth is congigured as a hub .
To simplify my comment: I prefer in some labs to see the named domain as a wire, not a switch.
If the switch behavior is really needed, one solution is to add a "flag" to change it in lab.conf. For instance, we can imagine a global variable '__configuration( to set specific behavior in lab.conf, for instance:
__configuration[real_switch] = 1
The '__configuration' would be a nice feature to add in next release of Netkit, and will keep compatibility with previous bahavior.