virNetDevVPortProfile *
virNetDevVPortProfileParse(xmlNodePtr node, unsigned int flags)
{
- g_autofree char *virtPortType = NULL;
g_autofree virNetDevVPortProfile *virtPort = NULL;
xmlNodePtr parameters;
virtPort = g_new0(virNetDevVPortProfile, 1);
- if ((virtPortType = virXMLPropString(node, "type")) &&
- (virtPort->virtPortType = virNetDevVPortTypeFromString(virtPortType)) <= 0) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("unknown virtualport type %1$s"), virtPortType);
+ if (virXMLPropEnum(node, "type",
+ virNetDevVPortTypeFromString,
+ VIR_XML_PROP_NONZERO,
+ &virtPort->virtPortType) < 0) {
return NULL;
}
case VIR_NETDEV_VPORT_PROFILE_NONE:
case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH:
case VIR_NETDEV_VPORT_PROFILE_8021QBG:
+ case VIR_NETDEV_VPORT_PROFILE_MIDONET:
case VIR_NETDEV_VPORT_PROFILE_LAST:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("virtualport type %1$s is currently not supported on interfaces of type hostdev"),
case VIR_NETDEV_VPORT_PROFILE_NONE:
case VIR_NETDEV_VPORT_PROFILE_8021QBG:
case VIR_NETDEV_VPORT_PROFILE_8021QBH:
+ case VIR_NETDEV_VPORT_PROFILE_MIDONET:
break;
case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH:
if (virNetDevOpenvswitchGetMigrateData(&mig->net[i].portdata,
return NULL;
}
break;
+ case VIR_NETDEV_VPORT_PROFILE_LAST:
default:
break;
}
break;
case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH:
+ case VIR_NETDEV_VPORT_PROFILE_MIDONET:
if (STRNEQ(a->profileID, b->profileID) ||
memcmp(a->interfaceID, b->interfaceID, VIR_UUID_BUFLEN) != 0)
return false;
break;
+ case VIR_NETDEV_VPORT_PROFILE_LAST:
default:
break;
}
{
const char *missing = NULL;
- if (!virtport || virtport->virtPortType == VIR_NETDEV_VPORT_PROFILE_NONE)
+ if (!virtport)
return 0;
switch (virtport->virtPortType) {
if (!virtport->interfaceID_specified)
missing = "interfaceid";
break;
+
+ case VIR_NETDEV_VPORT_PROFILE_NONE:
+ case VIR_NETDEV_VPORT_PROFILE_LAST:
+ break;
}
if (missing) {
{
const char *extra = NULL;
- if (!virtport || virtport->virtPortType == VIR_NETDEV_VPORT_PROFILE_NONE)
+ if (!virtport)
return 0;
switch (virtport->virtPortType) {
break;
case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH:
+ case VIR_NETDEV_VPORT_PROFILE_MIDONET:
if (virtport->managerID_specified)
extra = "managerid";
else if (virtport->typeID_specified)
else if (virtport->instanceID_specified)
extra = "instanceid";
break;
+
+ case VIR_NETDEV_VPORT_PROFILE_NONE:
+ case VIR_NETDEV_VPORT_PROFILE_LAST:
+ break;
}
if (extra) {
switch (virtPort->virtPortType) {
case VIR_NETDEV_VPORT_PROFILE_NONE:
case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH:
+ case VIR_NETDEV_VPORT_PROFILE_MIDONET:
case VIR_NETDEV_VPORT_PROFILE_LAST:
break;
switch (virtPort->virtPortType) {
case VIR_NETDEV_VPORT_PROFILE_NONE:
case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH:
+ case VIR_NETDEV_VPORT_PROFILE_MIDONET:
case VIR_NETDEV_VPORT_PROFILE_LAST:
break;
/* profile data for macvtap (VEPA) and openvswitch */
typedef struct _virNetDevVPortProfile virNetDevVPortProfile;
struct _virNetDevVPortProfile {
- int virtPortType; /* enum virNetDevVPortProfile */
+ virNetDevVPortProfileType virtPortType;
/* these members are used when virtPortType == 802.1Qbg */
uint8_t managerID;
bool managerID_specified;