mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
util: reset MAC address of macvtap passthrough physdev after disassociate
libvirt always resets the MAC address of the physdev used for macvtap passthrough when the guest is finished with it. This was happening prior to the 802.1Qb[gh] DISASSOCIATE command, and was quite often failing, presumably because the driver wouldn't allow the MAC address to be reset while the association was still active, with a log message like this: virNetDevSetMAC:168 : Cannot set interface MAC to 00:00:00:00:00:00 on 'eth13': Cannot assign requested address This patch changes the order - we now do the 802.1Qb[gh] disassociate and delete the macvtap interface first, then and reset the MAC address.
This commit is contained in:
parent
81da8bc73b
commit
29cc45cb79
@ -935,14 +935,6 @@ int virNetDevMacVLanDeleteWithVPortProfile(const char *ifname,
|
||||
int ret = 0;
|
||||
int vf = -1;
|
||||
|
||||
if (mode == VIR_NETDEV_MACVLAN_MODE_PASSTHRU) {
|
||||
if (virtPortProfile &&
|
||||
virtPortProfile->virtPortType == VIR_NETDEV_VPORT_PROFILE_8021QBH)
|
||||
ignore_value(virNetDevRestoreMacAddress(linkdev, stateDir));
|
||||
else
|
||||
ignore_value(virNetDevRestoreNetConfig(linkdev, vf, stateDir));
|
||||
}
|
||||
|
||||
if (ifname) {
|
||||
if (virNetDevVPortProfileDisassociate(ifname,
|
||||
virtPortProfile,
|
||||
@ -955,6 +947,14 @@ int virNetDevMacVLanDeleteWithVPortProfile(const char *ifname,
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
if (mode == VIR_NETDEV_MACVLAN_MODE_PASSTHRU) {
|
||||
if (virtPortProfile &&
|
||||
virtPortProfile->virtPortType == VIR_NETDEV_VPORT_PROFILE_8021QBH)
|
||||
ignore_value(virNetDevRestoreMacAddress(linkdev, stateDir));
|
||||
else
|
||||
ignore_value(virNetDevRestoreNetConfig(linkdev, vf, stateDir));
|
||||
}
|
||||
|
||||
virNetlinkEventRemoveClient(0, macaddr, NETLINK_ROUTE);
|
||||
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user