[PATCH RFC 0/3] Reflect MAC change in live domain XML

Michal Privoznik posted 3 patches 10 months, 1 week ago
Failed in applying to current master (apply log)
examples/c/misc/event-test.c        | 14 +++++
include/libvirt/libvirt-domain.h    | 28 +++++++++
src/conf/domain_event.c             | 93 +++++++++++++++++++++++++++++
src/conf/domain_event.h             | 12 ++++
src/libvirt_private.syms            |  2 +
src/qemu/qemu_domain.c              | 34 ++++++++++-
src/qemu/qemu_domain.h              |  3 +-
src/qemu/qemu_driver.c              | 11 ++--
src/qemu/qemu_process.c             |  2 +-
src/remote/remote_daemon_dispatch.c | 32 ++++++++++
src/remote/remote_driver.c          | 34 +++++++++++
src/remote/remote_protocol.x        | 17 +++++-
tools/virsh-domain-event.c          | 20 +++++++
13 files changed, 294 insertions(+), 8 deletions(-)
[PATCH RFC 0/3] Reflect MAC change in live domain XML
Posted by Michal Privoznik 10 months, 1 week ago
These are RFC patches. I'd like to start a discussion on the following
problem:

A mgmt application has info tied to an <interface/> (stored elsewhere,
not important right now). And they use basically the only piece of
information that's visible in both host and guest: MAC address. No, user
aliases are not visible in the guest. Therefore, when they query the
guest-agent (e.g. via 'virsh domifaddr --source agent') they can
reconstruct their knowledge on NICs.

But there's a catch - if user decides to change MAC address form inside
of the VM. Then the only link between host and guest is broken.

Now, we could make the guest-agent report both current and permanent MAC
address. But unfortunately, libvirt's virDomainInterfaceAddresses() is
not prepared for that.

Now, I don't recall why we decided to not update MAC address in the live
XML on change, but maybe somebody else does. Or we can pass the event
from QEMU to the mgmt application so that it can update its state.

Michal Prívozník (3):
  qemu: Reflect MAC address change in live domain XML
  Introduce NIC_MAC_CHANGE event
  qemu: Emit NIC_MAC_CHANGE event

 examples/c/misc/event-test.c        | 14 +++++
 include/libvirt/libvirt-domain.h    | 28 +++++++++
 src/conf/domain_event.c             | 93 +++++++++++++++++++++++++++++
 src/conf/domain_event.h             | 12 ++++
 src/libvirt_private.syms            |  2 +
 src/qemu/qemu_domain.c              | 34 ++++++++++-
 src/qemu/qemu_domain.h              |  3 +-
 src/qemu/qemu_driver.c              | 11 ++--
 src/qemu/qemu_process.c             |  2 +-
 src/remote/remote_daemon_dispatch.c | 32 ++++++++++
 src/remote/remote_driver.c          | 34 +++++++++++
 src/remote/remote_protocol.x        | 17 +++++-
 tools/virsh-domain-event.c          | 20 +++++++
 13 files changed, 294 insertions(+), 8 deletions(-)

-- 
2.39.3

Re: [PATCH RFC 0/3] Reflect MAC change in live domain XML
Posted by Martin Kletzander 9 months, 1 week ago
On Wed, Jun 28, 2023 at 12:53:34PM +0200, Michal Privoznik wrote:
>These are RFC patches. I'd like to start a discussion on the following
>problem:
>

We need to decide if we want to inform users in the live XML that the
MAC changed (no matter the setting of trustGuestRxFilters), idea below.

We could then add a flag to virDomainInterfaceAddresses() that switches
to the other MAC address.

>A mgmt application has info tied to an <interface/> (stored elsewhere,
>not important right now). And they use basically the only piece of
>information that's visible in both host and guest: MAC address. No, user
>aliases are not visible in the guest. Therefore, when they query the
>guest-agent (e.g. via 'virsh domifaddr --source agent') they can
>reconstruct their knowledge on NICs.
>
>But there's a catch - if user decides to change MAC address form inside
>of the VM. Then the only link between host and guest is broken.
>
>Now, we could make the guest-agent report both current and permanent MAC
>address. But unfortunately, libvirt's virDomainInterfaceAddresses() is
>not prepared for that.
>
>Now, I don't recall why we decided to not update MAC address in the live
>XML on change, but maybe somebody else does. Or we can pass the event
>from QEMU to the mgmt application so that it can update its state.
>

Could that be that referring to the interface would be troublesome?  Can
we add something like "current MAC address" in case it was changed?

>Michal Prívozník (3):
>  qemu: Reflect MAC address change in live domain XML
>  Introduce NIC_MAC_CHANGE event
>  qemu: Emit NIC_MAC_CHANGE event
>
> examples/c/misc/event-test.c        | 14 +++++
> include/libvirt/libvirt-domain.h    | 28 +++++++++
> src/conf/domain_event.c             | 93 +++++++++++++++++++++++++++++
> src/conf/domain_event.h             | 12 ++++
> src/libvirt_private.syms            |  2 +
> src/qemu/qemu_domain.c              | 34 ++++++++++-
> src/qemu/qemu_domain.h              |  3 +-
> src/qemu/qemu_driver.c              | 11 ++--
> src/qemu/qemu_process.c             |  2 +-
> src/remote/remote_daemon_dispatch.c | 32 ++++++++++
> src/remote/remote_driver.c          | 34 +++++++++++
> src/remote/remote_protocol.x        | 17 +++++-
> tools/virsh-domain-event.c          | 20 +++++++
> 13 files changed, 294 insertions(+), 8 deletions(-)
>
>-- 
>2.39.3
>