mirror of https://gitee.com/openkylin/libvirt.git
conf: clarify what is returned for actual bandwidth and vlan
In practice, if a virDomainNetDef has a virDomainActualNetDef allocated, the ActualNetDef will *always* contain the bandwidth and vlan data from the NetDef (unless there was also a portgroup involved - see networkAllocateActualDevice()). However, virDomainNetGetActual(Bandwidth|Vlan)() were coded to make it appear as if it might be possible to have a valid bandwidth/vlan in the NetDef, but a NULL in the ActualNetDef. Believing this un-truth could lead to writing unnecessarily defensive code when dealing with the virDomainGetActual*() functions, so this patch makes it more obvious: If there is an ActualNetDef, it will always have a copy of the various appropriate bits from its parent NetDef, and the virDomainGetActual* function will *always* return the data from the ActualNetDef, not from the NetDef. The reason for this effective-NOP patch is that a subsequent patch to change virDomainNetDefFormat will rely on the above rule.
This commit is contained in:
parent
60f70542f9
commit
6d4ffae4fc
|
@ -18638,8 +18638,11 @@ virDomainNetGetActualVirtPortProfile(virDomainNetDefPtr iface)
|
||||||
virNetDevBandwidthPtr
|
virNetDevBandwidthPtr
|
||||||
virDomainNetGetActualBandwidth(virDomainNetDefPtr iface)
|
virDomainNetGetActualBandwidth(virDomainNetDefPtr iface)
|
||||||
{
|
{
|
||||||
|
/* if there is an ActualNetDef, *always* return
|
||||||
|
* its bandwidth rather than the NetDef's bandwidth.
|
||||||
|
*/
|
||||||
if (iface->type == VIR_DOMAIN_NET_TYPE_NETWORK &&
|
if (iface->type == VIR_DOMAIN_NET_TYPE_NETWORK &&
|
||||||
iface->data.network.actual && iface->data.network.actual->bandwidth) {
|
iface->data.network.actual) {
|
||||||
return iface->data.network.actual->bandwidth;
|
return iface->data.network.actual->bandwidth;
|
||||||
}
|
}
|
||||||
return iface->bandwidth;
|
return iface->bandwidth;
|
||||||
|
@ -18648,13 +18651,18 @@ virDomainNetGetActualBandwidth(virDomainNetDefPtr iface)
|
||||||
virNetDevVlanPtr
|
virNetDevVlanPtr
|
||||||
virDomainNetGetActualVlan(virDomainNetDefPtr iface)
|
virDomainNetGetActualVlan(virDomainNetDefPtr iface)
|
||||||
{
|
{
|
||||||
|
virNetDevVlanPtr vlan = &iface->vlan;
|
||||||
|
|
||||||
|
/* if there is an ActualNetDef, *always* return
|
||||||
|
* its vlan rather than the NetDef's vlan.
|
||||||
|
*/
|
||||||
if (iface->type == VIR_DOMAIN_NET_TYPE_NETWORK &&
|
if (iface->type == VIR_DOMAIN_NET_TYPE_NETWORK &&
|
||||||
iface->data.network.actual &&
|
iface->data.network.actual)
|
||||||
iface->data.network.actual->vlan.nTags > 0)
|
vlan = &iface->data.network.actual->vlan;
|
||||||
return &iface->data.network.actual->vlan;
|
|
||||||
if (iface->vlan.nTags > 0)
|
if (vlan->nTags > 0)
|
||||||
return &iface->vlan;
|
return vlan;
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return listens[i] from the appropriate union for the graphics
|
/* Return listens[i] from the appropriate union for the graphics
|
||||||
|
|
Loading…
Reference in New Issue