[libvirt] [PATCH 6/9] qemuBuildHostNetStr: Explicitly enumerate net types
John Ferlan
jferlan at redhat.com
Thu Sep 22 22:56:19 UTC 2016
On 08/16/2016 11:41 AM, Michal Privoznik wrote:
> We tend to prevent using 'default' in switches. And it is for a
> good reason - control may end up in paths we wouldn't want for
> new values. In this specific case, if qemuBuildHostNetStr is
> called over VIR_DOMAIN_NET_TYPE_VHOSTUSER it would produce
> meaningless output. Fortunately, there no such call yet.
>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> src/qemu/qemu_command.c | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
I agree in principal, although this function is called by both
qemu_command and qemu_hotplug...
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index e6b3d9d..12f3a6b 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -3660,9 +3660,21 @@ qemuBuildHostNetStr(virDomainNetDefPtr net,
> break;
>
> case VIR_DOMAIN_NET_TYPE_USER:
> - default:
> + case VIR_DOMAIN_NET_TYPE_INTERNAL:
> virBufferAddLit(&buf, "user");
> break;
> +
> + case VIR_DOMAIN_NET_TYPE_HOSTDEV:
> + /* Should have been handled earlier via PCI/USB hotplug code. */
True for the hotplug code - it diverts the HOSTDEV call to
qemuDomainAttachHostDevice... The qemu_command code would not call here
and perhaps even could be considered an error. The problem with
returning NULL here is if it *ever* happened, you'd get that failed for
some reason error.
> + virObjectUnref(cfg);
> + return NULL;
> +
> + case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
> + /* Unsupported yet. */
So, could this too produce meaningless code? Although not called, so I
suppose no big deal. (thinking while typing)...
> + break;
> +
> + case VIR_DOMAIN_NET_TYPE_LAST:
Similarly meaningless code, but would also be an error ostensibly
wouldn't it? Why not move the HOSTDEV down here (with that same
comment)... Generate a real error (invalid type=%d), do the Unref and
return NULL, then call it a good.
John
> + break;
> }
>
> if (vlan >= 0) {
>
More information about the libvir-list
mailing list