
On Mon, Nov 06, 2023 at 02:38:49 -0500, Laine Stump wrote:
The hostdev version of the <driver> subelement appears in four places:
* The domain XML in the <hostdev> and <interface type='hostdev'> elements (that's 2)
* The network XML inside <forward> when the network is a pool of SRIOV VFs
* the <networkport> XML, which is used to communicate between the hypervisor driver and network driver.
In order to make the pending addition of a new attribute to <driver> in all these cases simpler, this patch refactors the parsing of <driver> in all four places to use virXMLProp*() and virXMLFormatElement().
Making all of the different instances of the separate parse/format for <driver> look nearly identical will make it easier to see that the upcoming patch that converges all four to use a common parser/formatter is a functional NOP.
Signed-off-by: Laine Stump <laine@redhat.com> --- src/conf/domain_conf.c | 28 ++++++++++++++++------------ src/conf/network_conf.c | 26 ++++++++++++-------------- src/conf/network_conf.h | 2 +- src/conf/virnetworkportdef.c | 28 ++++++++++++++++++---------- src/conf/virnetworkportdef.h | 2 +- 5 files changed, 48 insertions(+), 38 deletions(-)
[...]
@@ -351,10 +355,14 @@ virNetworkPortDefFormatBuf(virBuffer *buf, } virBufferAddLit(buf, ">\n"); virBufferAdjustIndent(buf, 2); - if (def->plug.hostdevpci.driver) - virBufferEscapeString(buf, "<driver name='%s'/>\n", + + if (def->plug.hostdevpci.driver) { + virBufferEscapeString(&driverAttrBuf, " name='%s'", virNetworkForwardDriverNameTypeToString( def->plug.hostdevpci.driver));
Please remove the linebreak;
+ } + + virXMLFormatElement(buf, "driver", &driverAttrBuf, NULL);
virPCIDeviceAddressFormat(buf, def->plug.hostdevpci.addr, false); virBufferAdjustIndent(buf, -2); diff --git a/src/conf/virnetworkportdef.h b/src/conf/virnetworkportdef.h index 48e73dbefd..bfe1dae9ea 100644 --- a/src/conf/virnetworkportdef.h +++ b/src/conf/virnetworkportdef.h @@ -69,7 +69,7 @@ struct _virNetworkPortDef { } direct; struct { virPCIDeviceAddress addr; /* PCI Address of device */ - int driver; /* virNetworkForwardDriverNameType */ + unsigned int driver; /* virNetworkForwardDriverNameType */
Use the proper enum type here. Reviewed-by: Peter Krempa <pkrempa@redhat.com>