mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
conf: put interface <backend> parsing/formatting separate functions
In preparation for adding more stuff to <backend>. Signed-off-by: Laine Stump <laine@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
7f6bb51eb9
commit
efd286a760
@ -8988,6 +8988,26 @@ virDomainNetDefParseXMLDriver(virDomainNetDef *def,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
virDomainNetBackendParseXML(xmlNodePtr node,
|
||||||
|
virDomainNetDef *def)
|
||||||
|
{
|
||||||
|
g_autofree char *tap = virXMLPropString(node, "tap");
|
||||||
|
g_autofree char *vhost = virXMLPropString(node, "vhost");
|
||||||
|
|
||||||
|
if (tap)
|
||||||
|
def->backend.tap = virFileSanitizePath(tap);
|
||||||
|
|
||||||
|
if (vhost &&
|
||||||
|
def->type != VIR_DOMAIN_NET_TYPE_HOSTDEV &&
|
||||||
|
virDomainNetIsVirtioModel(def)) {
|
||||||
|
def->backend.vhost = virFileSanitizePath(vhost);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
virDomainNetDefParseXMLRequireSource(virDomainNetDef *def,
|
virDomainNetDefParseXMLRequireSource(virDomainNetDef *def,
|
||||||
xmlNodePtr source_node)
|
xmlNodePtr source_node)
|
||||||
@ -9034,12 +9054,12 @@ virDomainNetDefParseXML(virDomainXMLOption *xmlopt,
|
|||||||
xmlNodePtr mac_node = NULL;
|
xmlNodePtr mac_node = NULL;
|
||||||
xmlNodePtr target_node = NULL;
|
xmlNodePtr target_node = NULL;
|
||||||
xmlNodePtr coalesce_node = NULL;
|
xmlNodePtr coalesce_node = NULL;
|
||||||
|
xmlNodePtr backend_node = NULL;
|
||||||
VIR_XPATH_NODE_AUTORESTORE(ctxt)
|
VIR_XPATH_NODE_AUTORESTORE(ctxt)
|
||||||
int rv;
|
int rv;
|
||||||
g_autofree char *macaddr = NULL;
|
g_autofree char *macaddr = NULL;
|
||||||
g_autofree char *model = NULL;
|
g_autofree char *model = NULL;
|
||||||
g_autofree char *linkstate = NULL;
|
g_autofree char *linkstate = NULL;
|
||||||
g_autofree char *tap = NULL;
|
|
||||||
unsigned int virtualport_flags = 0;
|
unsigned int virtualport_flags = 0;
|
||||||
bool parse_filterref = false;
|
bool parse_filterref = false;
|
||||||
const char *prefix = xmlopt ? xmlopt->config.netPrefix : NULL;
|
const char *prefix = xmlopt ? xmlopt->config.netPrefix : NULL;
|
||||||
@ -9337,9 +9357,6 @@ virDomainNetDefParseXML(virDomainXMLOption *xmlopt,
|
|||||||
(virNetDevVlanParse(vlan_node, ctxt, &def->vlan) < 0))
|
(virNetDevVlanParse(vlan_node, ctxt, &def->vlan) < 0))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if ((tap = virXPathString("string(./backend/@tap)", ctxt)))
|
|
||||||
def->backend.tap = virFileSanitizePath(tap);
|
|
||||||
|
|
||||||
if ((mac_node = virXPathNode("./mac", ctxt))) {
|
if ((mac_node = virXPathNode("./mac", ctxt))) {
|
||||||
if ((macaddr = virXMLPropString(mac_node, "address"))) {
|
if ((macaddr = virXMLPropString(mac_node, "address"))) {
|
||||||
if (virMacAddrParse((const char *)macaddr, &def->mac) < 0) {
|
if (virMacAddrParse((const char *)macaddr, &def->mac) < 0) {
|
||||||
@ -9394,12 +9411,9 @@ virDomainNetDefParseXML(virDomainXMLOption *xmlopt,
|
|||||||
if (virDomainNetDefParseXMLDriver(def, ctxt) < 0)
|
if (virDomainNetDefParseXMLDriver(def, ctxt) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (def->type != VIR_DOMAIN_NET_TYPE_HOSTDEV &&
|
if ((backend_node = virXPathNode("./backend", ctxt)) &&
|
||||||
virDomainNetIsVirtioModel(def)) {
|
virDomainNetBackendParseXML(backend_node, def) < 0) {
|
||||||
g_autofree char *vhost = virXPathString("string(./backend/@vhost)", ctxt);
|
return NULL;
|
||||||
|
|
||||||
if (vhost)
|
|
||||||
def->backend.vhost = virFileSanitizePath(vhost);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def->linkstate = VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DEFAULT;
|
def->linkstate = VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DEFAULT;
|
||||||
@ -23298,6 +23312,21 @@ virDomainNetTeamingInfoFormat(virDomainNetTeamingInfo *teaming,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
virDomainNetBackendFormat(virBuffer *buf,
|
||||||
|
virDomainNetBackend *backend)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (!(backend->tap || backend->vhost))
|
||||||
|
return;
|
||||||
|
|
||||||
|
virBufferAddLit(buf, "<backend");
|
||||||
|
virBufferEscapeString(buf, " tap='%s'", backend->tap);
|
||||||
|
virBufferEscapeString(buf, " vhost='%s'", backend->vhost);
|
||||||
|
virBufferAddLit(buf, "/>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
virDomainNetDefFormat(virBuffer *buf,
|
virDomainNetDefFormat(virBuffer *buf,
|
||||||
virDomainNetDef *def,
|
virDomainNetDef *def,
|
||||||
@ -23598,12 +23627,9 @@ virDomainNetDefFormat(virBuffer *buf,
|
|||||||
virXMLFormatElement(buf, "driver", &driverAttrBuf, &driverChildBuf);
|
virXMLFormatElement(buf, "driver", &driverAttrBuf, &driverChildBuf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (def->backend.tap || def->backend.vhost) {
|
|
||||||
virBufferAddLit(buf, "<backend");
|
virDomainNetBackendFormat(buf, &def->backend);
|
||||||
virBufferEscapeString(buf, " tap='%s'", def->backend.tap);
|
|
||||||
virBufferEscapeString(buf, " vhost='%s'", def->backend.vhost);
|
|
||||||
virBufferAddLit(buf, "/>\n");
|
|
||||||
}
|
|
||||||
if (def->filter) {
|
if (def->filter) {
|
||||||
if (virNWFilterFormatParamAttributes(buf, def->filterparams,
|
if (virNWFilterFormatParamAttributes(buf, def->filterparams,
|
||||||
def->filter) < 0)
|
def->filter) < 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user