From nobody Thu May 2 15:19:06 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518541045777446.5996463887294; Tue, 13 Feb 2018 08:57:25 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 02BB77C835; Tue, 13 Feb 2018 16:57:24 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CD16962667; Tue, 13 Feb 2018 16:57:23 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 766C718033E9; Tue, 13 Feb 2018 16:57:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1DGvDW0009272 for ; Tue, 13 Feb 2018 11:57:13 -0500 Received: by smtp.corp.redhat.com (Postfix) id 02E25B2890; Tue, 13 Feb 2018 16:57:13 +0000 (UTC) Received: from localhost.localdomain (dhcp-93.gsslab.fab.redhat.com [10.33.9.93]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6816FB2887; Tue, 13 Feb 2018 16:57:12 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Tue, 13 Feb 2018 16:57:05 +0000 Message-Id: <20180213165707.29888-2-berrange@redhat.com> In-Reply-To: <20180213165707.29888-1-berrange@redhat.com> References: <20180213165707.29888-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 1/3] Turn on -Wswitch-enum and fix all problems it identifies X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 13 Feb 2018 16:57:24 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 As a general rule any time we switch() on something that is an enum, we want to have a case for every enum constant. The -Wswitch warning will report any switch where we've violated this rule, except if that switch has a default case. Unfortunately it is reasonable to want to list all enum constants *and* also have a default case. To get a warning in that scenario requires that we turn on -Wswitch-enum. When we do this, we then have to then fixup various switches that used an enum but relied on a default: to silence warnings. Mostly this involved adding missing enum cases, but in some places it was more practical to silence the warning by casting the enum to an int, since we don't care about covering all enums. Signed-off-by: Daniel P. Berrang=C3=A9 --- m4/virt-compile-warnings.m4 | 7 +++-- src/conf/domain_audit.c | 1 + src/conf/domain_conf.c | 47 +++++++++++++++++++++++++++= ---- src/conf/nwfilter_conf.c | 32 ++++++++++++++++++++- src/esx/esx_driver.c | 1 + src/esx/esx_vi.c | 11 +++++--- src/esx/esx_vi_types.c | 9 +++--- src/hyperv/hyperv_driver.c | 18 ++++++++++-- src/libxl/libxl_driver.c | 2 +- src/lxc/lxc_container.c | 7 +++-- src/lxc/lxc_controller.c | 10 ++++++- src/lxc/lxc_driver.c | 40 +++++++++++++++++++++++--- src/nwfilter/nwfilter_ebiptables_driver.c | 16 +++++++---- src/nwfilter/nwfilter_learnipaddr.c | 6 +++- src/qemu/qemu_command.c | 28 ++++++++++++------ src/qemu/qemu_domain.c | 21 ++++++++++++++ src/qemu/qemu_driver.c | 27 ++++++++++++------ src/qemu/qemu_hotplug.c | 36 +++++++++++++++++++---- src/qemu/qemu_migration.c | 11 +++++++- src/qemu/qemu_process.c | 2 ++ src/rpc/virnetclient.c | 2 ++ src/rpc/virnetclientprogram.c | 1 + src/rpc/virnetserverprogram.c | 4 +++ src/security/security_driver.c | 1 + src/util/virconf.c | 13 ++++++++- src/util/virfirewall.c | 7 +++-- src/util/virlog.c | 10 ++++++- src/util/virnetdevvportprofile.c | 11 +++++++- src/vmx/vmx.c | 27 ++++++++++++++++-- src/xenconfig/xen_common.c | 17 +++++++++-- src/xenconfig/xen_xl.c | 8 +++++- tools/virt-host-validate-qemu.c | 3 +- 32 files changed, 369 insertions(+), 67 deletions(-) diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4 index b9c974842..918764d36 100644 --- a/m4/virt-compile-warnings.m4 +++ b/m4/virt-compile-warnings.m4 @@ -47,8 +47,6 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[ dontwarn=3D"$dontwarn -Wlong-long" # We allow manual list of all enum cases without default: dontwarn=3D"$dontwarn -Wswitch-default" - # We allow optional default: instead of listing all enum values - dontwarn=3D"$dontwarn -Wswitch-enum" # Not a problem since we don't use -fstrict-overflow dontwarn=3D"$dontwarn -Wstrict-overflow" # Not a problem since we don't use -funsafe-loop-optimizations @@ -182,6 +180,11 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[ # that one off, so we need to manually enable this again wantwarn=3D"$wantwarn -Wjump-misses-init" =20 + # GNULIB explicitly filters it out, preferring -Wswitch + # but that doesn't report missing enums if a default: + # is present. + wantwarn=3D"$wantwarn -Wswitch-enum" + # GNULIB turns on -Wformat=3D2 which implies -Wformat-nonliteral, # so we need to manually re-exclude it. Also, older gcc 4.2 # added an implied ATTRIBUTE_NONNULL on any parameter marked diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c index 723c73736..82868bca7 100644 --- a/src/conf/domain_audit.c +++ b/src/conf/domain_audit.c @@ -586,6 +586,7 @@ virDomainAuditTPM(virDomainObjPtr vm, virDomainTPMDefPt= r tpm, "virt=3D%s resrc=3Ddev reason=3D%s %s uuid=3D%s %s", virt, reason, vmname, uuidstr, device); break; + case VIR_DOMAIN_TPM_TYPE_LAST: default: break; } diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index fb732a0c2..89be27490 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -11564,8 +11564,21 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlo= pt, def->filterparams =3D filterparams; filterparams =3D NULL; break; - default: + case VIR_DOMAIN_NET_TYPE_USER: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_DIRECT: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: break; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected network type %d"), def->type); + goto error; } } =20 @@ -14645,6 +14658,12 @@ virDomainVideoDefaultRAM(const virDomainDef *def, /* QEMU use 64M as the minimal video memory for qxl device */ return 64 * 1024; =20 + case VIR_DOMAIN_VIDEO_TYPE_DEFAULT: + case VIR_DOMAIN_VIDEO_TYPE_VBOX: + case VIR_DOMAIN_VIDEO_TYPE_PARALLELS: + case VIR_DOMAIN_VIDEO_TYPE_VIRTIO: + case VIR_DOMAIN_VIDEO_TYPE_GOP: + case VIR_DOMAIN_VIDEO_TYPE_LAST: default: return 0; } @@ -14679,6 +14698,16 @@ virDomainVideoDefaultType(const virDomainDef *def) return VIR_DOMAIN_VIDEO_TYPE_PARALLELS; case VIR_DOMAIN_VIRT_BHYVE: return VIR_DOMAIN_VIDEO_TYPE_GOP; + case VIR_DOMAIN_VIRT_QEMU: + case VIR_DOMAIN_VIRT_KQEMU: + case VIR_DOMAIN_VIRT_KVM: + case VIR_DOMAIN_VIRT_LXC: + case VIR_DOMAIN_VIRT_UML: + case VIR_DOMAIN_VIRT_OPENVZ: + case VIR_DOMAIN_VIRT_HYPERV: + case VIR_DOMAIN_VIRT_PHYP: + case VIR_DOMAIN_VIRT_NONE: + case VIR_DOMAIN_VIRT_LAST: default: return VIR_DOMAIN_VIDEO_TYPE_DEFAULT; } @@ -27779,7 +27808,7 @@ virDomainObjGetState(virDomainObjPtr dom, int *reas= on) void virDomainObjSetState(virDomainObjPtr dom, virDomainState state, int reason) { - int last =3D -1; + int last; =20 switch (state) { case VIR_DOMAIN_NOSTATE: @@ -27806,11 +27835,8 @@ virDomainObjSetState(virDomainObjPtr dom, virDomai= nState state, int reason) case VIR_DOMAIN_PMSUSPENDED: last =3D VIR_DOMAIN_PMSUSPENDED_LAST; break; + case VIR_DOMAIN_LAST: default: - last =3D -1; - } - - if (last < 0) { VIR_ERROR(_("invalid domain state: %d"), state); return; } @@ -27974,6 +28000,15 @@ virDomainNetGetActualVirtPortProfile(virDomainNetD= efPtr iface) default: return NULL; } + case VIR_DOMAIN_NET_TYPE_USER: + case VIR_DOMAIN_NET_TYPE_ETHERNET: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_UDP: + case VIR_DOMAIN_NET_TYPE_LAST: default: return NULL; } diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index 5d6423e06..9e8c725f9 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -2153,8 +2153,35 @@ virNWFilterRuleValidate(virNWFilterRuleDefPtr rule) } } break; - default: + case VIR_NWFILTER_RULE_PROTOCOL_NONE: + case VIR_NWFILTER_RULE_PROTOCOL_MAC: + case VIR_NWFILTER_RULE_PROTOCOL_VLAN: + case VIR_NWFILTER_RULE_PROTOCOL_STP: + case VIR_NWFILTER_RULE_PROTOCOL_ARP: + case VIR_NWFILTER_RULE_PROTOCOL_RARP: + case VIR_NWFILTER_RULE_PROTOCOL_TCP: + case VIR_NWFILTER_RULE_PROTOCOL_ICMP: + case VIR_NWFILTER_RULE_PROTOCOL_IGMP: + case VIR_NWFILTER_RULE_PROTOCOL_UDP: + case VIR_NWFILTER_RULE_PROTOCOL_UDPLITE: + case VIR_NWFILTER_RULE_PROTOCOL_ESP: + case VIR_NWFILTER_RULE_PROTOCOL_AH: + case VIR_NWFILTER_RULE_PROTOCOL_SCTP: + case VIR_NWFILTER_RULE_PROTOCOL_ALL: + case VIR_NWFILTER_RULE_PROTOCOL_TCPoIPV6: + case VIR_NWFILTER_RULE_PROTOCOL_ICMPV6: + case VIR_NWFILTER_RULE_PROTOCOL_UDPoIPV6: + case VIR_NWFILTER_RULE_PROTOCOL_UDPLITEoIPV6: + case VIR_NWFILTER_RULE_PROTOCOL_ESPoIPV6: + case VIR_NWFILTER_RULE_PROTOCOL_AHoIPV6: + case VIR_NWFILTER_RULE_PROTOCOL_SCTPoIPV6: + case VIR_NWFILTER_RULE_PROTOCOL_ALLoIPV6: break; + case VIR_NWFILTER_RULE_PROTOCOL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected nwfilter protocol %d"), rule->prtclTy= pe); + return -1; } =20 return ret; @@ -3064,7 +3091,10 @@ virNWFilterRuleDefDetailsFormat(virBufferPtr buf, virBufferAddLit(buf, "false"); break; =20 + case DATATYPE_IPSETNAME: + case DATATYPE_IPSETFLAGS: case DATATYPE_STRING: + case DATATYPE_LAST: default: virBufferAsprintf(buf, "UNSUPPORTED DATATYPE 0x%02x\n", diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index f57536205..c5f04efa8 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -3603,6 +3603,7 @@ esxDomainGetSchedulerParametersFlags(virDomainPtr dom= ain, params[i].value.i =3D -3; break; =20 + case esxVI_SharesLevel_Undefined: default: virReportError(VIR_ERR_INTERNAL_ERROR, _("Shares level has unknown value %d"), diff --git a/src/esx/esx_vi.c b/src/esx/esx_vi.c index edf52ff82..103f72606 100644 --- a/src/esx/esx_vi.c +++ b/src/esx/esx_vi.c @@ -483,7 +483,7 @@ esxVI_SharedCURL_Lock(CURL *handle ATTRIBUTE_UNUSED, cu= rl_lock_data data, size_t i; esxVI_SharedCURL *shared =3D userptr; =20 - switch (data) { + switch ((int)data) { case CURL_LOCK_DATA_SHARE: i =3D 0; break; @@ -511,7 +511,7 @@ esxVI_SharedCURL_Unlock(CURL *handle ATTRIBUTE_UNUSED, = curl_lock_data data, size_t i; esxVI_SharedCURL *shared =3D userptr; =20 - switch (data) { + switch ((int)data) { case CURL_LOCK_DATA_SHARE: i =3D 0; break; @@ -1563,6 +1563,7 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char = *methodName, =20 break; =20 + case esxVI_Occurrence_Undefined: default: virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid argument (occurrence)")); @@ -2280,9 +2281,11 @@ esxVI_LookupObjectContentByType(esxVI_Context *ctx, type, root->type); break; =20 + case esxVI_Occurrence_None: + case esxVI_Occurrence_Undefined: default: - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Invalid occurrence value")); + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Invalid occurrence value %d"), occurrence); break; } =20 diff --git a/src/esx/esx_vi_types.c b/src/esx/esx_vi_types.c index be35af861..74183f830 100644 --- a/src/esx/esx_vi_types.c +++ b/src/esx/esx_vi_types.c @@ -544,7 +544,7 @@ VIR_LOG_INIT("esx.esx_vi_types"); =20 #define ESX_VI__TEMPLATE__DISPATCH(_actual_type, _actual_type_name, __type= , \ _dispatch, _error_return) \ - switch (_actual_type) { \ + switch ((int)_actual_type) { \ _dispatch \ \ case esxVI_Type_##__type: \ @@ -690,7 +690,7 @@ VIR_LOG_INIT("esx.esx_vi_types"); return -1; \ } \ \ - switch (type) { \ + switch ((int)type) { \ _dispatch \ \ case esxVI_Type_##__type: \ @@ -967,7 +967,7 @@ esxVI_AnyType_DeepCopy(esxVI_AnyType **dest, esxVI_AnyT= ype *src) goto failure; } =20 - switch (src->type) { + switch ((int)src->type) { case esxVI_Type_Boolean: (*dest)->boolean =3D src->boolean; break; @@ -1071,7 +1071,7 @@ esxVI_AnyType_Deserialize(xmlNodePtr node, esxVI_AnyT= ype **anyType) (*anyType)->_name =3D number; \ } while (0) =20 - switch ((*anyType)->type) { + switch ((int)(*anyType)->type) { case esxVI_Type_Boolean: if (STREQ((*anyType)->value, "true")) { (*anyType)->boolean =3D esxVI_Boolean_True; @@ -1876,6 +1876,7 @@ esxVI_VirtualMachinePowerState_ConvertToLibvirt case esxVI_VirtualMachinePowerState_Suspended: return VIR_DOMAIN_PAUSED; =20 + case esxVI_VirtualMachinePowerState_Undefined: default: return VIR_DOMAIN_NOSTATE; } diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c index ee94fd351..e512b626e 100644 --- a/src/hyperv/hyperv_driver.c +++ b/src/hyperv/hyperv_driver.c @@ -1656,13 +1656,27 @@ hypervDebugHandler(const char *message, debug_level= _e level, switch (level) { case DEBUG_LEVEL_ERROR: case DEBUG_LEVEL_CRITICAL: - VIR_ERROR(_("openwsman error: %s"), message); + case DEBUG_LEVEL_ALWAYS: + VIR_ERROR(_("openwsman: %s"), message); break; =20 case DEBUG_LEVEL_WARNING: - VIR_WARN("openwsman warning: %s", message); + VIR_WARN("openwsman: %s", message); break; =20 + case DEBUG_LEVEL_MESSAGE: + VIR_INFO("openwsman: %s", message); + break; + + case DEBUG_LEVEL_INFO: + VIR_INFO("openwsman: %s", message); + break; + + case DEBUG_LEVEL_DEBUG: + VIR_DEBUG("openwsman: %s", message); + break; + + case DEBUG_LEVEL_NONE: default: /* Ignore the rest */ break; diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index be11134fb..4b52de36f 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -4497,7 +4497,7 @@ libxlDomainGetSchedulerType(virDomainPtr dom, int *np= arams) =20 if (nparams) *nparams =3D 0; - switch (sched_id) { + switch ((int)sched_id) { case LIBXL_SCHEDULER_SEDF: name =3D "sedf"; break; diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c index 96fceaf1b..ec641c3ca 100644 --- a/src/lxc/lxc_container.c +++ b/src/lxc/lxc_container.c @@ -2035,7 +2035,7 @@ static int lxcContainerDropCapabilities(virDomainDefP= tr def, break; =20 case VIR_DOMAIN_CAPABILITIES_POLICY_DEFAULT: - switch ((virDomainCapsFeature) i) { + switch (i) { case VIR_DOMAIN_CAPS_FEATURE_SYS_BOOT: /* No use of reboot */ toDrop =3D !keepReboot && (state !=3D VIR_TRISTATE_SWITCH_= ON); break; @@ -2066,10 +2066,11 @@ static int lxcContainerDropCapabilities(virDomainDe= fPtr def, } break; =20 + case VIR_DOMAIN_CAPABILITIES_POLICY_LAST: default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Unsupported capabilities policy: %s"), - virDomainCapabilitiesPolicyTypeToString(policy)= ); + _("Unsupported capabilities policy: %d"), + policy); } } =20 diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c index c5e67df93..f9f26570c 100644 --- a/src/lxc/lxc_controller.c +++ b/src/lxc/lxc_controller.c @@ -395,8 +395,16 @@ static int virLXCControllerGetNICIndexes(virLXCControl= lerPtr ctrl) case VIR_DOMAIN_NET_TYPE_INTERNAL: case VIR_DOMAIN_NET_TYPE_DIRECT: case VIR_DOMAIN_NET_TYPE_HOSTDEV: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported net type %s"), + virDomainNetTypeToString(ctrl->def->nets[i]->ty= pe)); + goto cleanup; + case VIR_DOMAIN_NET_TYPE_LAST: default: - break; + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unexpected net type %d"), + ctrl->def->nets[i]->type); + goto cleanup; } } =20 diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 961baa344..7d6568cdf 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -3968,10 +3968,22 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn, if (!(veth =3D virLXCProcessSetupInterfaceDirect(conn, vm->def, ne= t))) goto cleanup; } break; - default: + case VIR_DOMAIN_NET_TYPE_USER: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Network device type is not supported")); goto cleanup; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), actualType); + goto cleanup; } /* Set bandwidth or warn if requested and not supported. */ actualBandwidth =3D virDomainNetGetActualBandwidth(net); @@ -4011,6 +4023,15 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn, ignore_value(virNetDevMacVLanDelete(veth)); break; =20 + case VIR_DOMAIN_NET_TYPE_USER: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: + case VIR_DOMAIN_NET_TYPE_LAST: default: /* no-op */ break; @@ -4446,13 +4467,24 @@ lxcDomainDetachDeviceNetLive(virDomainObjPtr vm, * the host side. Further the container can change * the mac address of NIC name, so we can't easily * find out which guest NIC it maps to + */ case VIR_DOMAIN_NET_TYPE_DIRECT: - */ - - default: + case VIR_DOMAIN_NET_TYPE_USER: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Only bridged veth devices can be detached")); goto cleanup; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), actualType); + goto cleanup; } =20 virDomainAuditNet(vm, detach, NULL, "detach", true); diff --git a/src/nwfilter/nwfilter_ebiptables_driver.c b/src/nwfilter/nwfil= ter_ebiptables_driver.c index b8682a113..c624337f4 100644 --- a/src/nwfilter/nwfilter_ebiptables_driver.c +++ b/src/nwfilter/nwfilter_ebiptables_driver.c @@ -320,11 +320,17 @@ _printDataType(virNWFilterVarCombIterPtr vars, VIR_FREE(flags); break; =20 + case DATATYPE_STRING: + case DATATYPE_STRINGCOPY: + case DATATYPE_BOOLEAN: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Cannot print data type %x"), item->datatype); + return -1; + case DATATYPE_LAST: default: virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unhandled datatype %x"), item->datatype); + _("Unexpected datatype %x"), item->datatype); return -1; - break; } =20 return 0; @@ -1183,7 +1189,7 @@ _iptablesCreateRuleInstance(virFirewallPtr fw, =20 PRINT_IPT_ROOT_CHAIN(chain, chainPrefix, ifname); =20 - switch (rule->prtclType) { + switch ((int)rule->prtclType) { case VIR_NWFILTER_RULE_PROTOCOL_TCP: case VIR_NWFILTER_RULE_PROTOCOL_TCPoIPV6: fwrule =3D virFirewallAddRule(fw, layer, @@ -1873,7 +1879,7 @@ ebtablesCreateRuleInstance(virFirewallPtr fw, #define INST_ITEM_MASK(S, I, MASK, C) \ INST_ITEM_2PARMS(S, I, MASK, C, "/") =20 - switch (rule->prtclType) { + switch ((int)rule->prtclType) { case VIR_NWFILTER_RULE_PROTOCOL_MAC: fwrule =3D virFirewallAddRule(fw, VIR_FIREWALL_LAYER_ETHERNET, "-t", "nat", @@ -2677,7 +2683,7 @@ ebtablesCreateTmpSubChainFW(virFirewallPtr fw, fwrule =3D virFirewallAddRule(fw, VIR_FIREWALL_LAYER_ETHERNET, "-t", "nat", "-A", rootchain, NULL); =20 - switch (protoidx) { + switch ((int)protoidx) { case L2_PROTO_MAC_IDX: break; case L2_PROTO_STP_IDX: diff --git a/src/nwfilter/nwfilter_learnipaddr.c b/src/nwfilter/nwfilter_le= arnipaddr.c index 5b95f0e61..9ca063957 100644 --- a/src/nwfilter/nwfilter_learnipaddr.c +++ b/src/nwfilter/nwfilter_learnipaddr.c @@ -430,7 +430,7 @@ learnIPAddressThread(void *arg) } virBufferAddLit(&buf, "src port 67 and dst port 68"); break; - default: + case DETECT_STATIC: if (techdriver->applyBasicRules(req->ifname, &req->macaddr) < 0) { req->status =3D EINVAL; @@ -438,6 +438,10 @@ learnIPAddressThread(void *arg) } virBufferAsprintf(&buf, "ether host %s or ether dst ff:ff:ff:ff:ff= :ff", macaddr); + break; + default: + req->status =3D EINVAL; + goto done; } =20 if (virBufferError(&buf)) { diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 6c73cd7bf..03390e651 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2634,7 +2634,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainD= ef, case VIR_DOMAIN_CONTROLLER_TYPE_SCSI: switch ((virDomainControllerModelSCSI) def->model) { case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI: - switch ((virDomainDeviceAddressType) address_type) { + switch (address_type) { case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW: virBufferAddLit(&buf, "virtio-scsi-ccw"); break; @@ -2680,7 +2680,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainD= ef, break; =20 case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL: - switch ((virDomainDeviceAddressType) address_type) { + switch (address_type) { case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI: virBufferAddLit(&buf, "virtio-serial-pci"); break; @@ -3389,12 +3389,18 @@ qemuBuildNicDevStr(virDomainDefPtr def, case VIR_DOMAIN_NET_VIRTIO_TX_MODE_TIMER: virBufferAddLit(&buf, "timer"); break; + + case VIR_DOMAIN_NET_VIRTIO_TX_MODE_DEFAULT: + break; + + case VIR_DOMAIN_NET_VIRTIO_TX_MODE_LAST: default: /* this should never happen, if it does, we need * to add another case to this switch. */ - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("unrecognized virtio-net-pci 'tx' opt= ion")); + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected NIC tx mode %d"), + net->driver.virtio.txmode); goto error; } } else { @@ -6529,7 +6535,7 @@ qemuBuildGlobalControllerCommandLine(virCommandPtr cm= d, bool cap =3D false; bool machine =3D false; =20 - switch ((virDomainControllerModelPCI) cont->model) { + switch (cont->model) { case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT: hoststr =3D "i440FX-pcihost"; cap =3D virQEMUCapsGet(qemuCaps, QEMU_CAPS_I440FX_PCI_HOLE= 64_SIZE); @@ -6872,7 +6878,7 @@ qemuBuildCpuCommandLine(virCommandPtr cmd, if (cpu_flags && !cpu) { const char *default_model; =20 - switch (def->os.arch) { + switch ((int)def->os.arch) { case VIR_ARCH_I686: default_model =3D "qemu32"; break; @@ -6918,7 +6924,7 @@ qemuBuildObsoleteAccelArg(virCommandPtr cmd, bool disableKVM =3D false; bool enableKVM =3D false; =20 - switch (def->virtType) { + switch ((int)def->virtType) { case VIR_DOMAIN_VIRT_QEMU: if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM)) disableKVM =3D true; @@ -7892,8 +7898,14 @@ qemuBuildGraphicsSPICECommandLine(virQEMUDriverConfi= gPtr cfg, case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_CLIENT: virBufferAddLit(&opt, "agent-mouse=3Don,"); break; - default: + case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_DEFAULT: break; + case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected mouse mode %d"), + graphics->data.spice.mousemode); + goto error; } } =20 diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 178ec24ae..f6e28447d 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2806,6 +2806,27 @@ qemuDomainDefAddDefaultDevices(virDomainDefPtr def, addPCIRoot =3D true; break; =20 + case VIR_ARCH_ARMV6L: + case VIR_ARCH_ARMV7B: + case VIR_ARCH_CRIS: + case VIR_ARCH_ITANIUM: + case VIR_ARCH_LM32: + case VIR_ARCH_M68K: + case VIR_ARCH_MICROBLAZE: + case VIR_ARCH_MICROBLAZEEL: + case VIR_ARCH_MIPS: + case VIR_ARCH_MIPSEL: + case VIR_ARCH_MIPS64: + case VIR_ARCH_MIPS64EL: + case VIR_ARCH_OR32: + case VIR_ARCH_PARISC: + case VIR_ARCH_PARISC64: + case VIR_ARCH_PPCLE: + case VIR_ARCH_UNICORE32: + case VIR_ARCH_XTENSA: + case VIR_ARCH_XTENSAEB: + case VIR_ARCH_NONE: + case VIR_ARCH_LAST: default: break; } diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index bbce5bd81..0b8976010 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -3041,13 +3041,8 @@ qemuCompressGetCommand(virQEMUSaveFormat compression) ret =3D virCommandNew(prog); virCommandAddArg(ret, "-dc"); =20 - switch (compression) { - case QEMU_SAVE_FORMAT_LZOP: + if (compression =3D=3D QEMU_SAVE_FORMAT_LZOP) virCommandAddArg(ret, "--ignore-warn"); - break; - default: - break; - } =20 return ret; } @@ -17820,11 +17815,19 @@ qemuDomainOpenGraphics(virDomainPtr dom, case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: protocol =3D "spice"; break; - default: + case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + case VIR_DOMAIN_GRAPHICS_TYPE_RDP: + case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Can only open VNC or SPICE graphics backends, no= t %s"), virDomainGraphicsTypeToString(vm->def->graphics[idx= ]->type)); goto endjob; + case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), + vm->def->graphics[idx]->type); + goto endjob; } =20 if (qemuSecuritySetImageFDLabel(driver->securityManager, vm->def, fd) = < 0) @@ -17884,11 +17887,19 @@ qemuDomainOpenGraphicsFD(virDomainPtr dom, case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: protocol =3D "spice"; break; - default: + case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + case VIR_DOMAIN_GRAPHICS_TYPE_RDP: + case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Can only open VNC or SPICE graphics backends, no= t %s"), virDomainGraphicsTypeToString(vm->def->graphics[idx= ]->type)); goto cleanup; + case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), + vm->def->graphics[idx]->type); + goto cleanup; } =20 if (qemuSecuritySetSocketLabel(driver->securityManager, vm->def) < 0) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index c9868de77..0d7d02c25 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -2992,11 +2992,25 @@ qemuDomainChangeNetFilter(virDomainObjPtr vm, case VIR_DOMAIN_NET_TYPE_BRIDGE: case VIR_DOMAIN_NET_TYPE_NETWORK: break; - default: + case VIR_DOMAIN_NET_TYPE_USER: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_DIRECT: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("filters not supported on interfaces of type %s"), virDomainNetTypeToString(virDomainNetGetActualType(= newdev))); return -1; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), + virDomainNetGetActualType(newdev)); + return -1; } =20 virDomainConfNWFilterTeardown(olddev); @@ -3291,12 +3305,17 @@ qemuDomainChangeNet(virQEMUDriverPtr driver, /* all handled in common code directly below this switch */ break; =20 - default: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("unable to change config on '%s' network type= "), virDomainNetTypeToString(newdev->type)); - break; - + goto cleanup; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), newdev->type); + goto cleanup; } } else { /* interface type has changed. There are a few special cases @@ -3675,10 +3694,17 @@ qemuDomainChangeGraphics(virQEMUDriverPtr driver, } break; =20 - default: + case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + case VIR_DOMAIN_GRAPHICS_TYPE_RDP: + case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: virReportError(VIR_ERR_INTERNAL_ERROR, _("unable to change config on '%s' graphics type"),= type); break; + case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), dev->type); + break; } =20 cleanup: diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 3641b801f..fe3342b38 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -1437,11 +1437,20 @@ qemuMigrationJobName(virDomainObjPtr vm) =20 switch (priv->job.asyncJob) { case QEMU_ASYNC_JOB_MIGRATION_OUT: - return _("migration job"); + return _("migration out job"); case QEMU_ASYNC_JOB_SAVE: return _("domain save job"); case QEMU_ASYNC_JOB_DUMP: return _("domain core dump job"); + case QEMU_ASYNC_JOB_NONE: + return _("no job"); + case QEMU_ASYNC_JOB_MIGRATION_IN: + return _("migration in job"); + case QEMU_ASYNC_JOB_SNAPSHOT: + return _("snapshot job"); + case QEMU_ASYNC_JOB_START: + return _("start job"); + case QEMU_ASYNC_JOB_LAST: default: return _("job"); } diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 10211de87..b86ecda93 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -690,6 +690,8 @@ qemuProcessHandleShutdown(qemuMonitorPtr mon ATTRIBUTE_= UNUSED, detail =3D VIR_DOMAIN_EVENT_SHUTDOWN_HOST; break; =20 + case VIR_TRISTATE_BOOL_ABSENT: + case VIR_TRISTATE_BOOL_LAST: default: detail =3D VIR_DOMAIN_EVENT_SHUTDOWN_FINISHED; break; diff --git a/src/rpc/virnetclient.c b/src/rpc/virnetclient.c index 8aeacf877..0c8d58c32 100644 --- a/src/rpc/virnetclient.c +++ b/src/rpc/virnetclient.c @@ -1287,6 +1287,8 @@ virNetClientCallDispatch(virNetClientPtr client) case VIR_NET_STREAM_HOLE: /* Sparse stream protocol*/ return virNetClientCallDispatchStream(client); =20 + case VIR_NET_CALL: + case VIR_NET_CALL_WITH_FDS: default: virReportError(VIR_ERR_RPC, _("got unexpected RPC call prog %d vers %d proc %d = type %d"), diff --git a/src/rpc/virnetclientprogram.c b/src/rpc/virnetclientprogram.c index d81a05542..505b40fc4 100644 --- a/src/rpc/virnetclientprogram.c +++ b/src/rpc/virnetclientprogram.c @@ -384,6 +384,7 @@ int virNetClientProgramCall(virNetClientProgramPtr prog, virNetClientProgramDispatchError(prog, msg); goto error; =20 + case VIR_NET_CONTINUE: default: virReportError(VIR_ERR_RPC, _("Unexpected message status %d"), msg->header.stat= us); diff --git a/src/rpc/virnetserverprogram.c b/src/rpc/virnetserverprogram.c index 557651ffb..75b0052cd 100644 --- a/src/rpc/virnetserverprogram.c +++ b/src/rpc/virnetserverprogram.c @@ -324,6 +324,10 @@ int virNetServerProgramDispatch(virNetServerProgramPtr= prog, ret =3D 0; break; =20 + case VIR_NET_REPLY: + case VIR_NET_REPLY_WITH_FDS: + case VIR_NET_MESSAGE: + case VIR_NET_STREAM_HOLE: default: virReportError(VIR_ERR_RPC, _("Unexpected message type %u"), diff --git a/src/security/security_driver.c b/src/security/security_driver.c index 4800d5255..a845dc799 100644 --- a/src/security/security_driver.c +++ b/src/security/security_driver.c @@ -82,6 +82,7 @@ virSecurityDriverPtr virSecurityDriverLookup(const char *= name, } break; =20 + case SECURITY_DRIVER_ERROR: default: return NULL; } diff --git a/src/util/virconf.c b/src/util/virconf.c index a82a509ca..af806dd73 100644 --- a/src/util/virconf.c +++ b/src/util/virconf.c @@ -296,7 +296,10 @@ virConfSaveValue(virBufferPtr buf, virConfValuePtr val) virBufferAddLit(buf, " ]"); break; } + case VIR_CONF_LAST: default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected conf value type %d"), val->type); return -1; } return 0; @@ -986,13 +989,21 @@ int virConfGetValueStringList(virConfPtr conf, } ATTRIBUTE_FALLTHROUGH; =20 - default: + case VIR_CONF_LLONG: + case VIR_CONF_ULLONG: + case VIR_CONF_NONE: virReportError(VIR_ERR_INTERNAL_ERROR, compatString ? _("%s: expected a string or string list for '%s' pa= rameter") : _("%s: expected a string list for '%s' parameter"), conf->filename, setting); return -1; + + case VIR_CONF_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected value type %d"), cval->type); + return -1; } =20 return 1; diff --git a/src/util/virfirewall.c b/src/util/virfirewall.c index ff1bb8307..e7da48264 100644 --- a/src/util/virfirewall.c +++ b/src/util/virfirewall.c @@ -827,9 +827,12 @@ virFirewallApplyRule(virFirewallPtr firewall, if (virFirewallApplyRuleFirewallD(rule, ignoreErrors, &output) < 0) return -1; break; + + case VIR_FIREWALL_BACKEND_AUTOMATIC: + case VIR_FIREWALL_BACKEND_LAST: default: - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Unexpected firewall engine backend")); + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected firewall engine backend %d"), current= Backend); return -1; } =20 diff --git a/src/util/virlog.c b/src/util/virlog.c index 4f66cc5e5..ecbee71cf 100644 --- a/src/util/virlog.c +++ b/src/util/virlog.c @@ -1206,10 +1206,18 @@ virLogGetOutputs(void) virLogDestinationTypeToString(dest), virLogOutputs[i]->name); break; - default: + case VIR_LOG_TO_STDERR: + case VIR_LOG_TO_JOURNALD: virBufferAsprintf(&outputbuf, "%d:%s", virLogOutputs[i]->priority, virLogDestinationTypeToString(dest)); + break; + case VIR_LOG_TO_OUTPUT_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected log output type %d"), dest); + virLogUnlock(); + return NULL; } } virLogUnlock(); diff --git a/src/util/virnetdevvportprofile.c b/src/util/virnetdevvportprof= ile.c index db495a754..4c0a64e43 100644 --- a/src/util/virnetdevvportprofile.c +++ b/src/util/virnetdevvportprofile.c @@ -1071,6 +1071,9 @@ virNetDevVPortProfileOp8021Qbg(const char *ifname, case VIR_NETDEV_VPORT_PROFILE_LINK_OP_PREASSOCIATE: op =3D PORT_REQUEST_PREASSOCIATE; break; + case VIR_NETDEV_VPORT_PROFILE_LINK_OP_PREASSOCIATE_RR: + op =3D PORT_REQUEST_PREASSOCIATE_RR; + break; case VIR_NETDEV_VPORT_PROFILE_LINK_OP_ASSOCIATE: op =3D PORT_REQUEST_ASSOCIATE; break; @@ -1191,10 +1194,16 @@ virNetDevVPortProfileOp8021Qbh(const char *ifname, false); break; =20 - default: + case VIR_NETDEV_VPORT_PROFILE_LINK_OP_PREASSOCIATE: virReportError(VIR_ERR_INTERNAL_ERROR, _("operation type %d not supported"), virtPortOp); rc =3D -1; + break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected operation type %d"), virtPortOp); + rc =3D -1; + break; } =20 cleanup: diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 7a749f93a..5855a11c8 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -3283,11 +3283,19 @@ virVMXFormatConfig(virVMXContext *ctx, virDomainXML= OptionPtr xmlopt, virDomainDe =20 break; =20 - default: + case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + case VIR_DOMAIN_GRAPHICS_TYPE_RDP: + case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: + case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported graphics type '%s'"), virDomainGraphicsTypeToString(def->graphics[i]-= >type)); goto cleanup; + + case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), def->graphi= cs[i]->type); } } =20 @@ -3782,10 +3790,25 @@ virVMXFormatEthernet(virDomainNetDefPtr def, int co= ntroller, controller); break; =20 - default: + case VIR_DOMAIN_NET_TYPE_ETHERNET: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_NETWORK: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_DIRECT: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported net type= '%s'"), virDomainNetTypeToString(def->type)); return -1; + + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected network type %d"), def->type); + return -1; } =20 /* def:mac -> vmx:addressType, vmx:(generated)Address, vmx:checkMACAdd= ress */ diff --git a/src/xenconfig/xen_common.c b/src/xenconfig/xen_common.c index ca3b4dee6..c3fe5d39d 100644 --- a/src/xenconfig/xen_common.c +++ b/src/xenconfig/xen_common.c @@ -1258,10 +1258,23 @@ xenFormatNet(virConnectPtr conn, } break; =20 + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_DIRECT: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: + case VIR_DOMAIN_NET_TYPE_USER: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported net type= '%s'"), + virDomainNetTypeToString(net->type)); + goto cleanup; + + case VIR_DOMAIN_NET_TYPE_LAST: default: virReportError(VIR_ERR_INTERNAL_ERROR, - _("unsupported network type %d"), - net->type); + _("Unexpected network type %d"), net->type); goto cleanup; } =20 diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c index 2ef80eb83..e61784aff 100644 --- a/src/xenconfig/xen_xl.c +++ b/src/xenconfig/xen_xl.c @@ -1641,8 +1641,14 @@ xenFormatXLSpice(virConfPtr conf, virDomainDefPtr de= f) if (xenConfigSetInt(conf, "spicevdagent", 1) < 0) return -1; break; - default: + case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_DEFAULT: break; + case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected mouse mode %d"), + graphics->data.spice.mousemode); + return -1; } } =20 diff --git a/tools/virt-host-validate-qemu.c b/tools/virt-host-validate-qem= u.c index 2aa396e3a..d7573ea8b 100644 --- a/tools/virt-host-validate-qemu.c +++ b/tools/virt-host-validate-qemu.c @@ -33,13 +33,14 @@ int virHostValidateQEMU(void) int ret =3D 0; bool hasHwVirt =3D false; bool hasVirtFlag =3D false; + virArch arch =3D virArchFromHost(); const char *kvmhint =3D _("Check that CPU and firmware supports virtua= lization " "and kvm module is loaded"); =20 if (!(flags =3D virHostValidateGetCPUFlags())) return -1; =20 - switch (virArchFromHost()) { + switch ((int)arch) { case VIR_ARCH_I686: case VIR_ARCH_X86_64: hasVirtFlag =3D true; --=20 2.16.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 15:19:06 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518541201200681.7036740883664; Tue, 13 Feb 2018 09:00:01 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7663A820F3; Tue, 13 Feb 2018 16:59:59 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 494585C259; Tue, 13 Feb 2018 16:59:59 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 123B54A46D; Tue, 13 Feb 2018 16:59:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1DGvD2C009283 for ; Tue, 13 Feb 2018 11:57:13 -0500 Received: by smtp.corp.redhat.com (Postfix) id 90555B2890; Tue, 13 Feb 2018 16:57:13 +0000 (UTC) Received: from localhost.localdomain (dhcp-93.gsslab.fab.redhat.com [10.33.9.93]) by smtp.corp.redhat.com (Postfix) with ESMTP id 30D20B2887; Tue, 13 Feb 2018 16:57:13 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Tue, 13 Feb 2018 16:57:06 +0000 Message-Id: <20180213165707.29888-3-berrange@redhat.com> In-Reply-To: <20180213165707.29888-1-berrange@redhat.com> References: <20180213165707.29888-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 2/3] Fix more switch fallthrough identified by gcc8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 13 Feb 2018 17:00:00 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 GCC 8 became more fussy/clear about detecting switch fallthroughs. First it doesn't like it if you have a fallthrough attribute that is not before a case statement. e.g. FOO: BAR: WIZZ: ATTRIBUTE_FALLTHROUGH; Is unacceptable as there's no final case statement, so while FOO & BAR are falling through, WIZZ is not falling through. IOW, GCC wants us to write FOO: BAR: ATTRIBUTE_FALLTHROUGH; WIZZ: Second, it will report risk of fallthrough even if you have a case statement for every single enum value, but only if the switch is nested inside another switch and the outer case statement has no final break. This is is in fact valid because despite the fact that we have cast from "int" to the enum typedef, nothing guarantees that the variable we're switching on only contains values that have corresponding switch labels. e.g. int domstate =3D 87539319; switch ((virDomainState)domstate) { ... } will not match enum value, but also not raise any kind of compiler warning. So it is right to complain about risk of fallthrough if no default: is present. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_domain.c | 14 +++++++------- src/qemu/qemu_domain_address.c | 11 +++++++++++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index f6e28447d..e262588c3 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -175,9 +175,9 @@ qemuDomainAsyncJobPhaseToString(qemuDomainAsyncJob job, case QEMU_ASYNC_JOB_NONE: case QEMU_ASYNC_JOB_LAST: ATTRIBUTE_FALLTHROUGH; + default: + return "none"; } - - return "none"; } =20 int @@ -199,12 +199,12 @@ qemuDomainAsyncJobPhaseFromString(qemuDomainAsyncJob = job, case QEMU_ASYNC_JOB_NONE: case QEMU_ASYNC_JOB_LAST: ATTRIBUTE_FALLTHROUGH; + default: + if (STREQ(phase, "none")) + return 0; + else + return -1; } - - if (STREQ(phase, "none")) - return 0; - else - return -1; } =20 =20 diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index e28119e4b..42c7c0b12 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -532,6 +532,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_CONTROLLER_MODEL_USB_QUSB2: /* xen only */ case VIR_DOMAIN_CONTROLLER_MODEL_USB_NONE: case VIR_DOMAIN_CONTROLLER_MODEL_USB_LAST: + default: return 0; } =20 @@ -553,6 +554,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, return pciFlags; =20 case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: + default: return 0; } =20 @@ -562,6 +564,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_CONTROLLER_TYPE_FDC: case VIR_DOMAIN_CONTROLLER_TYPE_CCID: case VIR_DOMAIN_CONTROLLER_TYPE_LAST: + default: /* should be 0 */ return pciFlags; } @@ -605,6 +608,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_SOUND_MODEL_PCSPK: case VIR_DOMAIN_SOUND_MODEL_USB: case VIR_DOMAIN_SOUND_MODEL_LAST: + default: return 0; } =20 @@ -622,6 +626,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_DISK_BUS_SATA: case VIR_DOMAIN_DISK_BUS_SD: case VIR_DOMAIN_DISK_BUS_LAST: + default: return 0; } =20 @@ -734,6 +739,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_MEMBALLOON_MODEL_XEN: case VIR_DOMAIN_MEMBALLOON_MODEL_NONE: case VIR_DOMAIN_MEMBALLOON_MODEL_LAST: + default: return 0; } =20 @@ -743,6 +749,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, return virtioFlags; =20 case VIR_DOMAIN_RNG_MODEL_LAST: + default: return 0; } =20 @@ -755,6 +762,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_WATCHDOG_MODEL_IB700: case VIR_DOMAIN_WATCHDOG_MODEL_DIAG288: case VIR_DOMAIN_WATCHDOG_MODEL_LAST: + default: return 0; } =20 @@ -775,6 +783,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_VIDEO_TYPE_DEFAULT: case VIR_DOMAIN_VIDEO_TYPE_GOP: case VIR_DOMAIN_VIDEO_TYPE_LAST: + default: return 0; } =20 @@ -791,6 +800,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_INPUT_BUS_XEN: case VIR_DOMAIN_INPUT_BUS_PARALLELS: case VIR_DOMAIN_INPUT_BUS_LAST: + default: return 0; } =20 @@ -806,6 +816,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SCLP: case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE: case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST: + default: return 0; } =20 --=20 2.16.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 15:19:06 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518541049487383.7246713163265; Tue, 13 Feb 2018 08:57:29 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id EB098C058ECE; Tue, 13 Feb 2018 16:57:27 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C1E2A60473; Tue, 13 Feb 2018 16:57:27 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 73DFC4A46E; Tue, 13 Feb 2018 16:57:27 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1DGvEr5009322 for ; Tue, 13 Feb 2018 11:57:14 -0500 Received: by smtp.corp.redhat.com (Postfix) id 2A1BAB2898; Tue, 13 Feb 2018 16:57:14 +0000 (UTC) Received: from localhost.localdomain (dhcp-93.gsslab.fab.redhat.com [10.33.9.93]) by smtp.corp.redhat.com (Postfix) with ESMTP id BE7ACB2887; Tue, 13 Feb 2018 16:57:13 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Tue, 13 Feb 2018 16:57:07 +0000 Message-Id: <20180213165707.29888-4-berrange@redhat.com> In-Reply-To: <20180213165707.29888-1-berrange@redhat.com> References: <20180213165707.29888-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 3/3] Disable gcc8 -Wcast-function-type warnings from -Wextra X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Tue, 13 Feb 2018 16:57:28 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 The -Wextra flag bundle gained a new warning -Wcast-function-type. This complains if you cast between two function prototypes where the number of parameters or their data types are not compatible. Unfortunately we need such "bad" function casts for our event callbacks. It is possible to silence the warning by first casting to the generic "void (*)(void)" function prototype, but that is rather ugly to add throughout libvirt code. Signed-off-by: Daniel P. Berrang=C3=A9 --- m4/virt-compile-warnings.m4 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4 index 918764d36..fc185aef3 100644 --- a/m4/virt-compile-warnings.m4 +++ b/m4/virt-compile-warnings.m4 @@ -175,6 +175,8 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[ # with gl_MANYWARN_COMPLEMENT # So we have -W enabled, and then have to explicitly turn off... wantwarn=3D"$wantwarn -Wno-sign-compare" + # We do "bad" function casts all the time for event callbacks + wantwarn=3D"$wantwarn -Wno-cast-function-type" =20 # GNULIB expects this to be part of -Wc++-compat, but we turn # that one off, so we need to manually enable this again --=20 2.16.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list