bhyve: convert to net model enum

The bhyve driver only works with the virtio and e1000 models,
which we already have in the enum. Some error reporting is
slightly downgraded to avoid some subtle usage of modelstr

Acked-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
Cole Robinson 2019-01-17 19:59:21 -05:00
parent 0f8358555a
commit c0cf17c280
2 changed files with 8 additions and 17 deletions

View File

@ -57,16 +57,10 @@ bhyveBuildNetArgStr(virConnectPtr conn,
int ret = -1; int ret = -1;
virDomainNetType actualType = virDomainNetGetActualType(net); virDomainNetType actualType = virDomainNetGetActualType(net);
if (!virDomainNetGetModelString(net)) { if (net->model == VIR_DOMAIN_NET_MODEL_VIRTIO) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("NIC model must be specified"));
return -1;
}
if (virDomainNetStreqModelString(net, "virtio")) {
if (VIR_STRDUP(nic_model, "virtio-net") < 0) if (VIR_STRDUP(nic_model, "virtio-net") < 0)
return -1; return -1;
} else if (virDomainNetStreqModelString(net, "e1000")) { } else if (net->model == VIR_DOMAIN_NET_MODEL_E1000) {
if ((bhyveDriverGetCaps(conn) & BHYVE_CAP_NET_E1000) != 0) { if ((bhyveDriverGetCaps(conn) & BHYVE_CAP_NET_E1000) != 0) {
if (VIR_STRDUP(nic_model, "e1000") < 0) if (VIR_STRDUP(nic_model, "e1000") < 0)
return -1; return -1;
@ -77,9 +71,8 @@ bhyveBuildNetArgStr(virConnectPtr conn,
return -1; return -1;
} }
} else { } else {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("NIC model '%s' is not supported"), _("NIC model is not supported"));
virDomainNetGetModelString(net));
return -1; return -1;
} }

View File

@ -492,7 +492,7 @@ bhyveParsePCINet(virDomainDefPtr def,
unsigned pcislot, unsigned pcislot,
unsigned pcibus, unsigned pcibus,
unsigned function, unsigned function,
const char *model, int model,
const char *config) const char *config)
{ {
/* -s slot,virtio-net,tapN[,mac=xx:xx:xx:xx:xx:xx] */ /* -s slot,virtio-net,tapN[,mac=xx:xx:xx:xx:xx:xx] */
@ -511,9 +511,7 @@ bhyveParsePCINet(virDomainDefPtr def,
if (VIR_STRDUP(net->data.bridge.brname, "virbr0") < 0) if (VIR_STRDUP(net->data.bridge.brname, "virbr0") < 0)
goto error; goto error;
if (virDomainNetSetModelString(net, model) < 0) net->model = model;
goto error;
net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI; net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI;
net->info.addr.pci.slot = pcislot; net->info.addr.pci.slot = pcislot;
net->info.addr.pci.bus = pcibus; net->info.addr.pci.bus = pcibus;
@ -621,10 +619,10 @@ bhyveParseBhyvePCIArg(virDomainDefPtr def,
conf); conf);
else if (STREQ(emulation, "virtio-net")) else if (STREQ(emulation, "virtio-net"))
bhyveParsePCINet(def, xmlopt, caps, pcislot, bus, function, bhyveParsePCINet(def, xmlopt, caps, pcislot, bus, function,
"virtio", conf); VIR_DOMAIN_NET_MODEL_VIRTIO, conf);
else if (STREQ(emulation, "e1000")) else if (STREQ(emulation, "e1000"))
bhyveParsePCINet(def, xmlopt, caps, pcislot, bus, function, bhyveParsePCINet(def, xmlopt, caps, pcislot, bus, function,
"e1000", conf); VIR_DOMAIN_NET_MODEL_E1000, conf);
VIR_FREE(emulation); VIR_FREE(emulation);
VIR_FREE(slotdef); VIR_FREE(slotdef);