mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-06 21:15:22 +00:00
qemu,util: fix netlink callback registration for migration
This patch adds a netlink callback when migrating a VEPA enabled
virtual machine. It fixes a Bug where a VM would not request a port
association when it was cleared by lldpad.
This patch requires the latest git version of lldpad to work.
Signed-off-by: D. Herrendoerfer <d.herrendoerfer@herrendoerfer.name>
(cherry picked from commit 997366ca7d
)
This commit is contained in:
parent
27ef74ff40
commit
965e7f1452
@ -1290,6 +1290,7 @@ virNetDevMacVLanDelete;
|
||||
virNetDevMacVLanCreateWithVPortProfile;
|
||||
virNetDevMacVLanDeleteWithVPortProfile;
|
||||
virNetDevMacVLanRestartWithVPortProfile;
|
||||
virNetDevMacVLanVPortProfileRegisterCallback;
|
||||
|
||||
|
||||
# virnetdevopenvswitch.h
|
||||
|
@ -2739,6 +2739,12 @@ qemuMigrationVPAssociatePortProfiles(virDomainDefPtr def) {
|
||||
goto err_exit;
|
||||
}
|
||||
VIR_DEBUG("Port profile Associate succeeded for %s", net->ifname);
|
||||
|
||||
if (virNetDevMacVLanVPortProfileRegisterCallback(net->ifname, net->mac,
|
||||
virDomainNetGetActualDirectDev(net), def->uuid,
|
||||
virDomainNetGetActualVirtPortProfile(net),
|
||||
VIR_NETDEV_VPORT_PROFILE_OP_CREATE))
|
||||
goto err_exit;
|
||||
}
|
||||
last_good_net = i;
|
||||
}
|
||||
|
@ -754,7 +754,7 @@ virNetDevMacVLanVPortProfileDestroyCallback(int watch ATTRIBUTE_UNUSED,
|
||||
virNetlinkCallbackDataFree((virNetlinkCallbackDataPtr)opaque);
|
||||
}
|
||||
|
||||
static int
|
||||
int
|
||||
virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname,
|
||||
const unsigned char *macaddress,
|
||||
const char *linkdev,
|
||||
@ -1110,4 +1110,16 @@ int virNetDevMacVLanRestartWithVPortProfile(const char *cr_ifname ATTRIBUTE_UNUS
|
||||
_("Cannot create macvlan devices on this platform"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
int virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname ATTRIBUTE_UNUSED,
|
||||
const unsigned char *macaddress ATTRIBUTE_UNUSED,
|
||||
const char *linkdev ATTRIBUTE_UNUSED,
|
||||
const unsigned char *vmuuid ATTRIBUTE_UNUSED,
|
||||
virNetDevVPortProfilePtr virtPortProfile ATTRIBUTE_UNUSED,
|
||||
enum virNetDevVPortProfileOp vmOp ATTRIBUTE_UNUSED)
|
||||
{
|
||||
virReportSystemError(ENOSYS, "%s",
|
||||
_("Cannot create macvlan devices on this platform"));
|
||||
return -1;
|
||||
}
|
||||
#endif /* ! WITH_MACVTAP */
|
||||
|
@ -84,4 +84,12 @@ int virNetDevMacVLanRestartWithVPortProfile(const char *cr_ifname,
|
||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
|
||||
ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5) ATTRIBUTE_RETURN_CHECK;
|
||||
|
||||
int virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname,
|
||||
const unsigned char *macaddress ,
|
||||
const char *linkdev,
|
||||
const unsigned char *vmuuid,
|
||||
virNetDevVPortProfilePtr virtPortProfile,
|
||||
enum virNetDevVPortProfileOp vmOp)
|
||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
|
||||
ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5) ATTRIBUTE_RETURN_CHECK;
|
||||
#endif /* __UTIL_MACVTAP_H__ */
|
||||
|
Loading…
Reference in New Issue
Block a user