lxc: Converting 'if, else' logic into a 'switch, case'

The structure used to handle network entries was based on 'if,else'
conditions. This commit converts this ugly structure into a switch to
clearify each option of the handler.

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
Julio Faracco 2019-02-18 16:09:10 -03:00 committed by John Ferlan
parent 087a7c9a88
commit ac62e297db
2 changed files with 59 additions and 16 deletions

View File

@ -35,6 +35,20 @@
VIR_LOG_INIT("lxc.lxc_native");
VIR_ENUM_IMPL(virLXCNetworkConfigEntry, VIR_LXC_NETWORK_CONFIG_LAST,
"name",
"type",
"link",
"hwaddr",
"flags",
"macvlan.mode",
"vlan.id",
"ipv4",
"ipv4.gateway",
"ipv6",
"ipv6.gateway"
);
static virDomainFSDefPtr
lxcCreateFSDef(int type,
const char *src,
@ -626,37 +640,49 @@ lxcNetworkParseDataIPs(const char *name,
static int
lxcNetworkParseDataSuffix(const char *name,
lxcNetworkParseDataSuffix(const char *entry,
virConfValuePtr value,
lxcNetworkParseData *parseData)
{
if (STREQ(name, "type")) {
int elem = virLXCNetworkConfigEntryTypeFromString(entry);
switch (elem) {
case VIR_LXC_NETWORK_CONFIG_TYPE:
if (lxcNetworkParseDataType(value, parseData) < 0)
return -1;
}
else if (STREQ(name, "link"))
break;
case VIR_LXC_NETWORK_CONFIG_LINK:
parseData->link = value->str;
else if (STREQ(name, "hwaddr"))
break;
case VIR_LXC_NETWORK_CONFIG_HWADDR:
parseData->mac = value->str;
else if (STREQ(name, "flags"))
break;
case VIR_LXC_NETWORK_CONFIG_FLAGS:
parseData->flag = value->str;
else if (STREQ(name, "macvlan.mode"))
break;
case VIR_LXC_NETWORK_CONFIG_MACVLAN_MODE:
parseData->macvlanmode = value->str;
else if (STREQ(name, "vlan.id"))
break;
case VIR_LXC_NETWORK_CONFIG_VLAN_ID:
parseData->vlanid = value->str;
else if (STREQ(name, "name"))
break;
case VIR_LXC_NETWORK_CONFIG_NAME:
parseData->name = value->str;
else if (STREQ(name, "ipv4") ||
STREQ(name, "ipv6")) {
if (lxcNetworkParseDataIPs(name, value, parseData) < 0)
break;
case VIR_LXC_NETWORK_CONFIG_IPV4:
case VIR_LXC_NETWORK_CONFIG_IPV6:
if (lxcNetworkParseDataIPs(entry, value, parseData) < 0)
return -1;
} else if (STREQ(name, "ipv4.gateway")) {
break;
case VIR_LXC_NETWORK_CONFIG_IPV4_GATEWAY:
parseData->gateway_ipv4 = value->str;
} else if (STREQ(name, "ipv6.gateway")) {
break;
case VIR_LXC_NETWORK_CONFIG_IPV6_GATEWAY:
parseData->gateway_ipv6 = value->str;
} else {
break;
default:
VIR_WARN("Unhandled network property: %s = %s",
name,
entry,
value->str);
return -1;
}

View File

@ -25,6 +25,23 @@
# define LXC_CONFIG_FORMAT "lxc-tools"
typedef enum {
VIR_LXC_NETWORK_CONFIG_NAME,
VIR_LXC_NETWORK_CONFIG_TYPE,
VIR_LXC_NETWORK_CONFIG_LINK,
VIR_LXC_NETWORK_CONFIG_HWADDR,
VIR_LXC_NETWORK_CONFIG_FLAGS,
VIR_LXC_NETWORK_CONFIG_MACVLAN_MODE,
VIR_LXC_NETWORK_CONFIG_VLAN_ID,
VIR_LXC_NETWORK_CONFIG_IPV4,
VIR_LXC_NETWORK_CONFIG_IPV4_GATEWAY,
VIR_LXC_NETWORK_CONFIG_IPV6,
VIR_LXC_NETWORK_CONFIG_IPV6_GATEWAY,
VIR_LXC_NETWORK_CONFIG_LAST,
} virLXCNetworkConfigEntry;
VIR_ENUM_DECL(virLXCNetworkConfigEntry);
virDomainDefPtr lxcParseConfigString(const char *config,
virCapsPtr caps,
virDomainXMLOptionPtr xmlopt);