> > 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. > 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. A vlan is a bus network, not a set of point-point connections. I haven't checked whether the proposed patch gets this right. I suspect it probably doesn't. This is why the initial patch that had clients talking to each other directly was completely wrong. Paul -- 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