1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

virDomainNetDefFormat: Modernize <source/> formatting

The <source/> child element of <interface/> is formatted the old
way. Switch to virXMLFormatElement().

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
Michal Privoznik 2023-01-31 16:41:19 +01:00
parent 3a7c6e0c4c
commit 95c5ff9890

View File

@ -23681,7 +23681,6 @@ virDomainNetDefFormat(virBuffer *buf,
{ {
virDomainNetType actualType = virDomainNetGetActualType(def); virDomainNetType actualType = virDomainNetGetActualType(def);
bool publicActual = false; bool publicActual = false;
int sourceLines = 0;
const char *typeStr; const char *typeStr;
virDomainHostdevDef *hostdef = NULL; virDomainHostdevDef *hostdef = NULL;
char macstr[VIR_MAC_STRING_BUFLEN]; char macstr[VIR_MAC_STRING_BUFLEN];
@ -23745,6 +23744,8 @@ virDomainNetDefFormat(virBuffer *buf,
if (virDomainActualNetDefContentsFormat(buf, def, false, flags, xmlopt) < 0) if (virDomainActualNetDefContentsFormat(buf, def, false, flags, xmlopt) < 0)
return -1; return -1;
} else { } else {
g_auto(virBuffer) sourceAttrBuf = VIR_BUFFER_INITIALIZER;
g_auto(virBuffer) sourceChildBuf = VIR_BUFFER_INIT_CHILD(buf);
/* ...but if we've asked for the inactive XML (rather than /* ...but if we've asked for the inactive XML (rather than
* status), or to report the ActualDef as a separate <actual> * status), or to report the ActualDef as a separate <actual>
* subelement (this is how we privately store interface * subelement (this is how we privately store interface
@ -23754,17 +23755,16 @@ virDomainNetDefFormat(virBuffer *buf,
*/ */
switch (def->type) { switch (def->type) {
case VIR_DOMAIN_NET_TYPE_NETWORK: case VIR_DOMAIN_NET_TYPE_NETWORK:
virBufferEscapeString(buf, "<source network='%s'", virBufferEscapeString(&sourceAttrBuf, " network='%s'",
def->data.network.name); def->data.network.name);
virBufferEscapeString(buf, " portgroup='%s'", virBufferEscapeString(&sourceAttrBuf, " portgroup='%s'",
def->data.network.portgroup); def->data.network.portgroup);
if (virUUIDIsValid(def->data.network.portid) && if (virUUIDIsValid(def->data.network.portid) &&
!(flags & (VIR_DOMAIN_DEF_FORMAT_INACTIVE))) { !(flags & (VIR_DOMAIN_DEF_FORMAT_INACTIVE))) {
char portidstr[VIR_UUID_STRING_BUFLEN]; char portidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(def->data.network.portid, portidstr); virUUIDFormat(def->data.network.portid, portidstr);
virBufferEscapeString(buf, " portid='%s'", portidstr); virBufferEscapeString(&sourceAttrBuf, " portid='%s'", portidstr);
} }
sourceLines++;
break; break;
case VIR_DOMAIN_NET_TYPE_ETHERNET: case VIR_DOMAIN_NET_TYPE_ETHERNET:
@ -23772,31 +23772,23 @@ virDomainNetDefFormat(virBuffer *buf,
case VIR_DOMAIN_NET_TYPE_VHOSTUSER: case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
if (def->data.vhostuser->type == VIR_DOMAIN_CHR_TYPE_UNIX) { if (def->data.vhostuser->type == VIR_DOMAIN_CHR_TYPE_UNIX) {
virBufferAddLit(buf, "<source type='unix'"); virBufferAddLit(&sourceAttrBuf, " type='unix'");
virBufferEscapeString(buf, " path='%s'", virBufferEscapeString(&sourceAttrBuf, " path='%s'",
def->data.vhostuser->data.nix.path); def->data.vhostuser->data.nix.path);
virBufferAsprintf(buf, " mode='%s'", virBufferAsprintf(&sourceAttrBuf, " mode='%s'",
def->data.vhostuser->data.nix.listen ? def->data.vhostuser->data.nix.listen ?
"server" : "client"); "server" : "client");
sourceLines++;
if (def->data.vhostuser->data.nix.reconnect.enabled) { if (def->data.vhostuser->data.nix.reconnect.enabled) {
virBufferAddLit(buf, ">\n"); virDomainChrSourceReconnectDefFormat(&sourceChildBuf,
sourceLines++;
virBufferAdjustIndent(buf, 2);
virDomainChrSourceReconnectDefFormat(buf,
&def->data.vhostuser->data.nix.reconnect); &def->data.vhostuser->data.nix.reconnect);
virBufferAdjustIndent(buf, -2);
} }
} }
break; break;
case VIR_DOMAIN_NET_TYPE_BRIDGE: case VIR_DOMAIN_NET_TYPE_BRIDGE:
if (def->data.bridge.brname) { virBufferEscapeString(&sourceAttrBuf, " bridge='%s'",
virBufferEscapeString(buf, "<source bridge='%s'", def->data.bridge.brname);
def->data.bridge.brname);
sourceLines++;
}
break; break;
case VIR_DOMAIN_NET_TYPE_SERVER: case VIR_DOMAIN_NET_TYPE_SERVER:
@ -23804,42 +23796,32 @@ virDomainNetDefFormat(virBuffer *buf,
case VIR_DOMAIN_NET_TYPE_MCAST: case VIR_DOMAIN_NET_TYPE_MCAST:
case VIR_DOMAIN_NET_TYPE_UDP: case VIR_DOMAIN_NET_TYPE_UDP:
if (def->data.socket.address) { if (def->data.socket.address) {
virBufferAsprintf(buf, "<source address='%s' port='%d'", virBufferAsprintf(&sourceAttrBuf, " address='%s' port='%d'",
def->data.socket.address, def->data.socket.address,
def->data.socket.port); def->data.socket.port);
} else { } else {
virBufferAsprintf(buf, "<source port='%d'", virBufferAsprintf(&sourceAttrBuf, " port='%d'",
def->data.socket.port); def->data.socket.port);
} }
sourceLines++;
if (def->type != VIR_DOMAIN_NET_TYPE_UDP) if (def->type != VIR_DOMAIN_NET_TYPE_UDP)
break; break;
virBufferAddLit(buf, ">\n"); virBufferAsprintf(&sourceChildBuf, "<local address='%s' port='%d'/>\n",
sourceLines++;
virBufferAdjustIndent(buf, 2);
virBufferAsprintf(buf, "<local address='%s' port='%d'/>\n",
def->data.socket.localaddr, def->data.socket.localaddr,
def->data.socket.localport); def->data.socket.localport);
virBufferAdjustIndent(buf, -2);
break; break;
case VIR_DOMAIN_NET_TYPE_INTERNAL: case VIR_DOMAIN_NET_TYPE_INTERNAL:
if (def->data.internal.name) { virBufferEscapeString(&sourceAttrBuf, " name='%s'",
virBufferEscapeString(buf, "<source name='%s'", def->data.internal.name);
def->data.internal.name);
sourceLines++;
}
break; break;
case VIR_DOMAIN_NET_TYPE_DIRECT: case VIR_DOMAIN_NET_TYPE_DIRECT:
virBufferEscapeString(buf, "<source dev='%s'", virBufferEscapeString(&sourceAttrBuf, " dev='%s'",
def->data.direct.linkdev); def->data.direct.linkdev);
virBufferAsprintf(buf, " mode='%s'", virBufferAsprintf(&sourceAttrBuf, " mode='%s'",
virNetDevMacVLanModeTypeToString(def->data.direct.mode)); virNetDevMacVLanModeTypeToString(def->data.direct.mode));
sourceLines++;
break; break;
case VIR_DOMAIN_NET_TYPE_HOSTDEV: case VIR_DOMAIN_NET_TYPE_HOSTDEV:
@ -23850,33 +23832,24 @@ virDomainNetDefFormat(virBuffer *buf,
break; break;
case VIR_DOMAIN_NET_TYPE_VDPA: case VIR_DOMAIN_NET_TYPE_VDPA:
if (def->data.vdpa.devicepath) { virBufferEscapeString(&sourceAttrBuf, " dev='%s'",
virBufferEscapeString(buf, "<source dev='%s'", def->data.vdpa.devicepath);
def->data.vdpa.devicepath); break;
sourceLines++;
}
break;
case VIR_DOMAIN_NET_TYPE_VDS: { case VIR_DOMAIN_NET_TYPE_VDS: {
char switchidstr[VIR_UUID_STRING_BUFLEN]; char switchidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(def->data.vds.switch_id, switchidstr); virUUIDFormat(def->data.vds.switch_id, switchidstr);
virBufferEscapeString(buf, "<source switchid='%s'", switchidstr); virBufferEscapeString(&sourceAttrBuf, " switchid='%s'", switchidstr);
virBufferAsprintf(buf, " portid='%lld'", def->data.vds.port_id); virBufferAsprintf(&sourceAttrBuf, " portid='%lld'", def->data.vds.port_id);
virBufferEscapeString(buf, " portgroupid='%s'", def->data.vds.portgroup_id); virBufferEscapeString(&sourceAttrBuf, " portgroupid='%s'", def->data.vds.portgroup_id);
virBufferAsprintf(buf, " connectionid='%lld'", def->data.vds.connection_id); virBufferAsprintf(&sourceAttrBuf, " connectionid='%lld'", def->data.vds.connection_id);
sourceLines++;
break; break;
} }
case VIR_DOMAIN_NET_TYPE_USER: case VIR_DOMAIN_NET_TYPE_USER:
if (def->backend.type == VIR_DOMAIN_NET_BACKEND_PASST && if (def->backend.type == VIR_DOMAIN_NET_BACKEND_PASST)
def->sourceDev) { virBufferEscapeString(&sourceAttrBuf, " dev='%s'", def->sourceDev);
virBufferEscapeString(buf, "<source dev='%s'", def->sourceDev);
sourceLines++;
}
break; break;
case VIR_DOMAIN_NET_TYPE_NULL: case VIR_DOMAIN_NET_TYPE_NULL:
@ -23884,27 +23857,12 @@ virDomainNetDefFormat(virBuffer *buf,
break; break;
} }
/* if sourceLines == 0 - no <source> info at all so far
* sourceLines == 1 - first line written, no terminating ">"
* sourceLines > 1 - multiple lines, including subelements
*/
if (def->hostIP.nips || def->hostIP.nroutes) { if (def->hostIP.nips || def->hostIP.nroutes) {
if (sourceLines == 0) { if (virDomainNetIPInfoFormat(&sourceChildBuf, &def->hostIP) < 0)
virBufferAddLit(buf, "<source>\n");
sourceLines += 2;
} else if (sourceLines == 1) {
virBufferAddLit(buf, ">\n");
sourceLines++;
}
virBufferAdjustIndent(buf, 2);
if (virDomainNetIPInfoFormat(buf, &def->hostIP) < 0)
return -1; return -1;
virBufferAdjustIndent(buf, -2);
} }
if (sourceLines == 1)
virBufferAddLit(buf, "/>\n"); virXMLFormatElement(buf, "source", &sourceAttrBuf, &sourceChildBuf);
else if (sourceLines > 1)
virBufferAddLit(buf, "</source>\n");
if (virNetDevVlanFormat(&def->vlan, buf) < 0) if (virNetDevVlanFormat(&def->vlan, buf) < 0)
return -1; return -1;
@ -23922,7 +23880,6 @@ virDomainNetDefFormat(virBuffer *buf,
(flags & VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET) && (flags & VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET) &&
(virDomainActualNetDefFormat(buf, def, flags, xmlopt) < 0)) (virDomainActualNetDefFormat(buf, def, flags, xmlopt) < 0))
return -1; return -1;
} }
if (virDomainNetIPInfoFormat(buf, &def->guestIP) < 0) if (virDomainNetIPInfoFormat(buf, &def->guestIP) < 0)