Paul Brook wrote: > > > A simple "Something changed, please try your filter again" callback > > > automatically covers all these cases. > > > > It doesn't, if tap has no memory of how many clients require a filter. > > I'm talking about a callback for devices requesting an inbound > filter. Devices implementing outgoing (device->vlan) filters just do > as they're told. So am I. > > If tap just answers "YES and installs the kernel filter" or "NO and > > doesn't install the kernel filter" and doesn't remember how many > > clients need a filter, then: > >... > > In other words, tap needs to distinguish three states: > > > > "1 filter requested and installed in the kernel" > > ">1 filter requested, none installed in the kernel" > > "0 filters requested, none installed in the kernel" > > Absolutely not. This is the reason we have separate the "request an incoming > filter" API from the "provide an outgoing filter" callback. It allows the > vlan code to arbitrate in the middle. I'm guessing that "vlan code to arbitrate in the middle" is exactly what I've suggested. Maybe the description was messed up. Substitute something else for "tap" in the above: "The _vlan arbitration code which talks to the tap device_ needs to distinguish three states...". > A vlan is a bus network, not a set of point-point connections. Yes, this is what I've assumed. The callback you suggest for devices requesting an inbound filter will infinite-loop when there's two such devices on the same vlan bus, because each time the callback is called, that device will re-issue its filter request which triggers the callback on the other similar device. Back and forth. To avoid the infinite loop, the vlan code in the middle (if that's where you want it, and I agree) has to distinguish between no inbound filters requested by attached devices, and multiple incompatible inbound filters requested by attached devices. -- Jamie -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html