"rtl8139",
"virtio",
"e1000",
+ "e1000e",
+ "virtio-transitional",
+ "virtio-non-transitional",
+ "usb-net",
+ "spapr-vlan",
+ "lan9118",
+ "scm91c111",
);
VIR_ENUM_IMPL(virDomainNetBackend,
return 0;
}
-int
-virDomainNetStreqModelString(const virDomainNetDef *net,
- const char *model)
-{
- if (net->model)
- return net->model == virDomainNetModelTypeFromString(model);
- return STREQ_NULLABLE(net->modelstr, model);
-}
-
int
virDomainNetStrcaseeqModelString(const virDomainNetDef *net,
const char *model)
bool
virDomainNetIsVirtioModel(const virDomainNetDef *net)
{
- return (virDomainNetStreqModelString(net, "virtio") ||
- virDomainNetStreqModelString(net, "virtio-transitional") ||
- virDomainNetStreqModelString(net, "virtio-non-transitional"));
+ return (net->model == VIR_DOMAIN_NET_MODEL_VIRTIO ||
+ net->model == VIR_DOMAIN_NET_MODEL_VIRTIO_TRANSITIONAL ||
+ net->model == VIR_DOMAIN_NET_MODEL_VIRTIO_NON_TRANSITIONAL);
}
VIR_DOMAIN_NET_MODEL_RTL8139,
VIR_DOMAIN_NET_MODEL_VIRTIO,
VIR_DOMAIN_NET_MODEL_E1000,
+ VIR_DOMAIN_NET_MODEL_E1000E,
+ VIR_DOMAIN_NET_MODEL_VIRTIO_TRANSITIONAL,
+ VIR_DOMAIN_NET_MODEL_VIRTIO_NON_TRANSITIONAL,
+ VIR_DOMAIN_NET_MODEL_USB_NET,
+ VIR_DOMAIN_NET_MODEL_SPAPR_VLAN,
+ VIR_DOMAIN_NET_MODEL_LAN9118,
+ VIR_DOMAIN_NET_MODEL_SMC91C111,
VIR_DOMAIN_NET_MODEL_LAST
} virDomainNetModelType;
const char *virDomainNetGetModelString(const virDomainNetDef *net);
int virDomainNetSetModelString(virDomainNetDefPtr et,
const char *model);
-int virDomainNetStreqModelString(const virDomainNetDef *net,
- const char *model);
int virDomainNetStrcaseeqModelString(const virDomainNetDef *net,
const char *model);
bool virDomainNetIsVirtioModel(const virDomainNetDef *net);
virDomainNetSetDeviceImpl;
virDomainNetSetModelString;
virDomainNetStrcaseeqModelString;
-virDomainNetStreqModelString;
virDomainNetTypeFromString;
virDomainNetTypeSharesHostView;
virDomainNetTypeToString;
break;
case VIR_DOMAIN_DEVICE_NET:
- has_tmodel = virDomainNetStreqModelString(device.data.net,
- "virtio-transitional");
- has_ntmodel = virDomainNetStreqModelString(device.data.net,
- "virtio-non-transitional");
+ has_tmodel = device.data.net->model == VIR_DOMAIN_NET_MODEL_VIRTIO_TRANSITIONAL;
+ has_ntmodel = device.data.net->model == VIR_DOMAIN_NET_MODEL_VIRTIO_NON_TRANSITIONAL;
break;
case VIR_DOMAIN_DEVICE_HOSTDEV:
* is NULL this function may return NULL if the default model depends on the
* capabilities.
*/
-static const char *
+static int
qemuDomainDefaultNetModel(const virDomainDef *def,
virQEMUCapsPtr qemuCaps)
{
if (ARCH_IS_S390(def->os.arch))
- return "virtio";
+ return VIR_DOMAIN_NET_MODEL_VIRTIO;
if (def->os.arch == VIR_ARCH_ARMV6L ||
def->os.arch == VIR_ARCH_ARMV7L ||
def->os.arch == VIR_ARCH_AARCH64) {
if (STREQ(def->os.machine, "versatilepb"))
- return "smc91c111";
+ return VIR_DOMAIN_NET_MODEL_SMC91C111;
if (qemuDomainIsARMVirt(def))
- return "virtio";
+ return VIR_DOMAIN_NET_MODEL_VIRTIO;
/* Incomplete. vexpress (and a few others) use this, but not all
* arm boards */
- return "lan9118";
+ return VIR_DOMAIN_NET_MODEL_LAN9118;
}
/* virtio is a sensible default for RISC-V virt guests */
if (qemuDomainIsRISCVVirt(def))
- return "virtio";
+ return VIR_DOMAIN_NET_MODEL_VIRTIO;
/* In all other cases the model depends on the capabilities. If they were
* not provided don't report any default. */
if (!qemuCaps)
- return NULL;
+ return VIR_DOMAIN_NET_MODEL_UNKNOWN;
/* Try several network devices in turn; each of these devices is
* less likely be supported out-of-the-box by the guest operating
* system than the previous one */
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_RTL8139))
- return "rtl8139";
+ return VIR_DOMAIN_NET_MODEL_RTL8139;
else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_E1000))
- return "e1000";
+ return VIR_DOMAIN_NET_MODEL_E1000;
else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_NET))
- return "virtio";
+ return VIR_DOMAIN_NET_MODEL_VIRTIO;
/* We've had no luck detecting support for any network device,
* but we have to return something: might as well be rtl8139 */
- return "rtl8139";
+ return VIR_DOMAIN_NET_MODEL_RTL8139;
}
virQEMUCapsPtr qemuCaps)
{
if (net->type != VIR_DOMAIN_NET_TYPE_HOSTDEV &&
- !virDomainNetGetModelString(net)) {
- if (virDomainNetSetModelString(net,
- qemuDomainDefaultNetModel(def, qemuCaps)) < 0)
- return -1;
- }
+ !virDomainNetGetModelString(net))
+ net->model = qemuDomainDefaultNetModel(def, qemuCaps);
return 0;
}
for (i = 0; i < def->nnets; i++) {
virDomainNetDefPtr net = def->nets[i];
- if (virDomainNetStreqModelString(net, "spapr-vlan"))
+ if (net->model == VIR_DOMAIN_NET_MODEL_SPAPR_VLAN)
net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
if (qemuDomainAssignSpaprVIOAddress(def, &net->info, VIO_ADDR_NET) < 0)
* addresses for other hostdev devices.
*/
if (net->type == VIR_DOMAIN_NET_TYPE_HOSTDEV ||
- virDomainNetStreqModelString(net, "usb-net")) {
+ net->model == VIR_DOMAIN_NET_MODEL_USB_NET) {
return 0;
}
- if (virDomainNetStreqModelString(net, "virtio") ||
- virDomainNetStreqModelString(net, "virtio-non-transitional"))
+ if (net->model == VIR_DOMAIN_NET_MODEL_VIRTIO ||
+ net->model == VIR_DOMAIN_NET_MODEL_VIRTIO_NON_TRANSITIONAL)
return virtioFlags;
- if (virDomainNetStreqModelString(net, "virtio-transitional"))
+ if (net->model == VIR_DOMAIN_NET_MODEL_VIRTIO_TRANSITIONAL)
return pciFlags;
- if (virDomainNetStreqModelString(net, "e1000e"))
+ if (net->model == VIR_DOMAIN_NET_MODEL_E1000E)
return pcieFlags;
return pciFlags;