virsh: Make domif-setlink work more than once

In virsh, we have this convenient domif-setlink command, which is
just a wrapper over virDomainUpdateDeviceFlags() and which allows
setting link state of given guest NIC. It does so by fetching
corresponding <interface/> XML snippet and either putting <link
state=''/> into it, OR if the element already exists setting the
attribute to desired value. The XML is then fed into the update
API.

There's, however, a small bug in detecting the pre-existence of
the element and its attribute. The code looks at "link"
attribute, while in fact, the attribute is called "state".

Resolves: https://gitlab.com/libvirt/libvirt/-/issues/426
Fixes: e575bf082e
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Michal Privoznik 2023-01-30 10:55:22 +01:00
parent 9f8fba7501
commit 6f3f6c0f76

View File

@ -3209,7 +3209,7 @@ cmdDomIfSetLink(vshControl *ctl, const vshCmd *cmd)
} }
} }
if (xmlHasProp(linkNode, BAD_CAST "link")) if (xmlHasProp(linkNode, BAD_CAST "state"))
stateAttr = xmlSetProp(linkNode, BAD_CAST "state", BAD_CAST state); stateAttr = xmlSetProp(linkNode, BAD_CAST "state", BAD_CAST state);
else else
stateAttr = xmlNewProp(linkNode, BAD_CAST "state", BAD_CAST state); stateAttr = xmlNewProp(linkNode, BAD_CAST "state", BAD_CAST state);