int err;
int tapfd = -1;
int vnet_hdr = 0;
+ int template_ifname = 0;
if (net->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
virNetworkPtr network = virNetworkLookupByName(conn,
return -1;
}
+ char ebuf[1024];
+ if (!driver->brctl && (err = brInit(&driver->brctl))) {
+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
+ _("cannot initialize bridge support: %s"),
+ virStrerror(err, ebuf, sizeof ebuf));
+ return -1;
+ }
+
if (!net->ifname ||
STRPREFIX(net->ifname, "vnet") ||
strchr(net->ifname, '%')) {
virReportOOMError(conn);
return -1;
}
- }
-
- char ebuf[1024];
- if (!driver->brctl && (err = brInit(&driver->brctl))) {
- qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
- _("cannot initialize bridge support: %s"),
- virStrerror(err, ebuf, sizeof ebuf));
- return -1;
+ /* avoid exposing vnet%d in dumpxml or error outputs */
+ template_ifname = 1;
}
if (qemuCmdFlags & QEMUD_CMD_FLAG_VNET_HDR &&
qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
_("Failed to add tap interface to bridge. "
"%s is not a bridge device"), brname);
+ } else if (template_ifname) {
+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
+ _("Failed to add tap interface to bridge '%s' : %s"),
+ brname, virStrerror(err, ebuf, sizeof ebuf));
} else {
qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
_("Failed to add tap interface '%s' "
"to bridge '%s' : %s"),
net->ifname, brname, virStrerror(err, ebuf, sizeof ebuf));
}
+ if (template_ifname)
+ VIR_FREE(net->ifname);
return -1;
}
virDomainNetDefPtr net,
const char *bridge)
{
+ brControl *brctl = NULL;
int tapfd = -1;
+ int template_ifname = 0;
int err;
- brControl *brctl = NULL;
-
- if (!net->ifname ||
- STRPREFIX(net->ifname, "vnet") ||
- strchr(net->ifname, '%')) {
- VIR_FREE(net->ifname);
- if (!(net->ifname = strdup("vnet%d")))
- goto no_memory;
- }
if ((err = brInit(&brctl))) {
char ebuf[1024];
goto error;
}
+ if (!net->ifname ||
+ STRPREFIX(net->ifname, "vnet") ||
+ strchr(net->ifname, '%')) {
+ VIR_FREE(net->ifname);
+ if (!(net->ifname = strdup("vnet%d")))
+ goto no_memory;
+ /* avoid exposing vnet%d in dumpxml or error outputs */
+ template_ifname = 1;
+ }
+
if ((err = brAddTap(brctl, bridge,
&net->ifname, BR_TAP_PERSIST, &tapfd))) {
if (errno == ENOTSUP) {
umlReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
_("Failed to add tap interface to bridge. "
"%s is not a bridge device"), bridge);
+ } else if (template_ifname) {
+ char ebuf[1024];
+ umlReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
+ _("Failed to add tap interface to bridge '%s' : %s"),
+ bridge, virStrerror(err, ebuf, sizeof ebuf));
} else {
char ebuf[1024];
umlReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
"to bridge '%s' : %s"),
net->ifname, bridge, virStrerror(err, ebuf, sizeof ebuf));
}
+ if (template_ifname)
+ VIR_FREE(net->ifname);
goto error;
}
close(tapfd);