On 10/06/2014 10:32 AM, John Ferlan wrote:
On 10/02/2014 12:39 PM, Laine Stump wrote:
> These patches set up an event handler for qemu's NIC_RX_FILTER_CHANGED
> event, which is sent whenever a guest makes a change to a network
> device's unicast/multicast filter, vlan table, or MAC address (as long
> as there has been no previous event of the same type sent for the same
> interface without a corresponding query-rx-filter sent back from
> qemu).
>
> The handler checks if it is appropriate to respond to the
> NIC_RX_FILTER_CHANGED event (based on device type and configuration)
> and takes appropriate action. Currently it checks if the guest
> interface has been configured with trustGuestRxFilters='yes' (defaults
> to 'no' for security reasons), and if the host side device is
> macvtap. If so, and the MAC address on the guest has changed, the MAC
> address of the macvtap device is changed to match.
>
> The result of this is that networking from the guest will continue to
> work if the mac address of a macvtap-connected network device is
> changed from within the guest, as long as trustGuestRxFilters='yes'
> (previously changing the MAC address in the guest would break
> networking).
>
> Changes from V1:
>
> Responded to review comments from John Ferlan, Amos Kong, and Tom
> Krowiak, updated to indicate support was added in 1.2.10 rather than
> 1.2.9, and added an extra patch which puts a new .txt file in the qemu
> directory describing the mechanics of a qemu event handler (lifted
> from the commit log message of 5/7)
>
> Laine Stump (7):
> conf: add trustGuestRxFilters attribute to network and domain
> interface
> network: set interface actual trustGuestRxFilters from
> network/portgroup
> util: define virNetDevRxFilter and basic utility functions
> qemu: qemuMonitorQueryRxFilter - retrieve guest netdev rx-filter
> qemu: setup infrastructure to handle NIC_RX_FILTER_CHANGED event
> qemu: change macvtap device MAC address in response to
> NIC_RX_FILTER_CHANGED
> qemu: add short document on qemu event handlers
>
> docs/formatdomain.html.in | 40 +++-
> docs/formatnetwork.html.in | 29 ++-
> docs/schemas/domaincommon.rng | 5 +
> docs/schemas/network.rng | 10 +
> src/conf/domain_conf.c | 42 ++++
> src/conf/domain_conf.h | 3 +
> src/conf/network_conf.c | 36 ++++
> src/conf/network_conf.h | 2 +
> src/libvirt_private.syms | 5 +
> src/network/bridge_driver.c | 10 +
> src/qemu/EVENTHANDLERS.txt | 77 +++++++
> src/qemu/qemu_domain.h | 1 +
> src/qemu/qemu_driver.c | 105 ++++++++++
> src/qemu/qemu_monitor.c | 39 ++++
> src/qemu/qemu_monitor.h | 11 +
> src/qemu/qemu_monitor_json.c | 232 +++++++++++++++++++++
> src/qemu/qemu_monitor_json.h | 3 +
> src/qemu/qemu_process.c | 42 ++++
> src/util/virnetdev.c | 31 +++
> src/util/virnetdev.h | 42 +++-
> tests/Makefile.am | 1 +
> tests/networkxml2xmlin/vepa-net.xml | 4 +-
> tests/networkxml2xmlout/vepa-net.xml | 4 +-
> .../qemuxml2argv-net-virtio-network-portgroup.xml | 4 +-
> 24 files changed, 761 insertions(+), 17 deletions(-)
> create mode 100644 src/qemu/EVENTHANDLERS.txt
>
Beyond nit noted in patch 7 from my git am...
ACK series
Okay. I fixed that, re-ordered the patches to put that last patch prior
to the commit that implements the event handler, and changed the commit
log message for that one to point to the documentation in the file
rather than repeating it. The result has been pushed.
Thanks for the reviews!