Interface changed after 'started' event in hook

Michal Prívozník mprivozn at
Tue Oct 25 09:00:01 UTC 2022

On 10/23/22 18:57, Christopher Pereira wrote:
> Hi,
> We have a libvirt-qemu hook script that intercepts the "started" event
> and configures the virtual network interface (we set a private IP,
> remove the interface from the virtual bridge and set some custom iptable
> rules).
> After upgrading from libvirt 3.2 to 4.5 we noticed that the interface is
> configured *after* the 'started' event is triggered and thus our custom
> configuration is overwritten (the IP we set is removed).
> As a workaround we added a "sleep 5" to our scripts which works, but we
> wonder what is the correct way to avoid libvirt to change the virtual
> interface after the 'started' event is triggered to keep our custom
> configuration.
> We have currently this setting:
>     <interface type='bridge'>
>       <mac address='*********'/>
>       <source bridge='virbr0'/>
>       <model type='virtio'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x03'
> function='0x0'/>
>     </interface>
> What would be the correct setting to avoid libvirt to change the
> interface after the hook is triggered?

Looking into the current code, the hook is called only after the domain
was started up:

qemuProcessFinishStartup(virQEMUDriver *driver,
                         virDomainObj *vm,
                         virDomainAsyncJob asyncJob,
                         bool startCPUs,
                         virDomainPausedReason pausedReason)
    if (qemuProcessStartHook(driver, vm,
                             VIR_HOOK_SUBOP_BEGIN) < 0)
        return -1;

    return 0;

There might have been a problem in the past, but honestly, it's more
than 4 years old release. Therefore, if you could reproduce it with
something more recent you have higher chance of somebody looking deeper
into it.


More information about the libvir-list mailing list