mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
util: use new virNetDev*NetConfig() functions for hostdev setup/teardown
virHostdevNetConfigReplace() and virHostdevNetConfigRestore() are modified to use the new virNetDev*NetConfig() functions. Note that due to the VF's original MAC addresses being saved after it has already been un-bound from the host net driver, the actual current VF MAC address won't be saved (because it no longer exists) - only the "admin MAC" will be saved. This reflects existing behavior that will be fixed in an upcoming patch.
This commit is contained in:
parent
b91a336384
commit
9c004d55d0
@ -450,10 +450,13 @@ virHostdevNetConfigReplace(virDomainHostdevDefPtr hostdev,
|
||||
goto cleanup;
|
||||
}
|
||||
} else {
|
||||
/* Set only mac and vlan */
|
||||
if (virNetDevReplaceNetConfig(linkdev, vf,
|
||||
&hostdev->parent.data.net->mac,
|
||||
vlan, stateDir) < 0) {
|
||||
/* Save/Set only mac and vlan */
|
||||
|
||||
if (virNetDevSaveNetConfig(linkdev, vf, stateDir, true) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (virNetDevSetNetConfig(linkdev, vf, &hostdev->parent.data.net->mac,
|
||||
vlan, NULL, true) < 0) {
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
@ -506,9 +509,23 @@ virHostdevNetConfigRestore(virDomainHostdevDefPtr hostdev,
|
||||
NULL,
|
||||
port_profile_associate);
|
||||
} else {
|
||||
ret = virNetDevRestoreNetConfig(linkdev, vf, stateDir);
|
||||
if (ret < 0 && oldStateDir != NULL)
|
||||
ret = virNetDevRestoreNetConfig(linkdev, vf, oldStateDir);
|
||||
virMacAddrPtr MAC = NULL;
|
||||
virMacAddrPtr adminMAC = NULL;
|
||||
virNetDevVlanPtr vlan = NULL;
|
||||
|
||||
ret = virNetDevReadNetConfig(linkdev, vf, stateDir, &adminMAC, &vlan, &MAC);
|
||||
if (ret < 0 && oldStateDir)
|
||||
ret = virNetDevReadNetConfig(linkdev, vf, oldStateDir,
|
||||
&adminMAC, &vlan, &MAC);
|
||||
|
||||
if (ret == 0) {
|
||||
ignore_value(virNetDevSetNetConfig(linkdev, vf,
|
||||
adminMAC, vlan, MAC, true));
|
||||
}
|
||||
|
||||
VIR_FREE(MAC);
|
||||
VIR_FREE(adminMAC);
|
||||
virNetDevVlanFree(vlan);
|
||||
}
|
||||
|
||||
VIR_FREE(linkdev);
|
||||
|
Loading…
Reference in New Issue
Block a user