mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-28 19:41:16 +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>
This commit is contained in:
parent
b1256816ff
commit
997366ca7d
@ -1290,6 +1290,7 @@ virNetDevMacVLanDelete;
|
|||||||
virNetDevMacVLanCreateWithVPortProfile;
|
virNetDevMacVLanCreateWithVPortProfile;
|
||||||
virNetDevMacVLanDeleteWithVPortProfile;
|
virNetDevMacVLanDeleteWithVPortProfile;
|
||||||
virNetDevMacVLanRestartWithVPortProfile;
|
virNetDevMacVLanRestartWithVPortProfile;
|
||||||
|
virNetDevMacVLanVPortProfileRegisterCallback;
|
||||||
|
|
||||||
|
|
||||||
# virnetdevopenvswitch.h
|
# virnetdevopenvswitch.h
|
||||||
|
@ -2739,6 +2739,12 @@ qemuMigrationVPAssociatePortProfiles(virDomainDefPtr def) {
|
|||||||
goto err_exit;
|
goto err_exit;
|
||||||
}
|
}
|
||||||
VIR_DEBUG("Port profile Associate succeeded for %s", net->ifname);
|
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;
|
last_good_net = i;
|
||||||
}
|
}
|
||||||
|
@ -754,7 +754,7 @@ virNetDevMacVLanVPortProfileDestroyCallback(int watch ATTRIBUTE_UNUSED,
|
|||||||
virNetlinkCallbackDataFree((virNetlinkCallbackDataPtr)opaque);
|
virNetlinkCallbackDataFree((virNetlinkCallbackDataPtr)opaque);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
int
|
||||||
virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname,
|
virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname,
|
||||||
const unsigned char *macaddress,
|
const unsigned char *macaddress,
|
||||||
const char *linkdev,
|
const char *linkdev,
|
||||||
@ -1110,4 +1110,16 @@ int virNetDevMacVLanRestartWithVPortProfile(const char *cr_ifname ATTRIBUTE_UNUS
|
|||||||
_("Cannot create macvlan devices on this platform"));
|
_("Cannot create macvlan devices on this platform"));
|
||||||
return -1;
|
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 */
|
#endif /* ! WITH_MACVTAP */
|
||||||
|
@ -84,4 +84,12 @@ int virNetDevMacVLanRestartWithVPortProfile(const char *cr_ifname,
|
|||||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
|
||||||
ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5) ATTRIBUTE_RETURN_CHECK;
|
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__ */
|
#endif /* __UTIL_MACVTAP_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user