mirror of
https://github.com/qemu/qemu.git
synced 2024-11-27 22:03:35 +08:00
net: improve error message for missing netdev backend
The current message when using '-net user...' with SLIRP disabled at compile time is: qemu-system-x86_64: -net user: Parameter 'type' expects a net backend type (maybe it is not compiled into this binary) An observation is that we're using the 'netdev->type' field here which is an enum value, produced after QAPI has converted from its string form. IOW, at this point in the code, we know that the user's specified type name was a valid network backend. The only possible scenario that can make the backend init function be NULL, is if support for that backend was disabled at build time. Given this, we don't need to caveat our error message with a 'maybe' hint, we can be totally explicit. The use of QERR_INVALID_PARAMETER_VALUE doesn't really lend itself to user friendly error message text. Since this is not used to set a specific QAPI error class, we can simply stop using this pre-formatted error text and provide something better. Thus the new message is: qemu-system-x86_64: -net user: network backend 'user' is not compiled into this binary The case of passing 'hubport' for -net is also given a message reminding people they should have used -netdev/-nic instead, as this backend type is only valid for the modern syntax. Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
8801ccd050
commit
7d0e12af59
18
net/net.c
18
net/net.c
@ -1036,19 +1036,23 @@ static int net_client_init1(const Netdev *netdev, bool is_netdev, Error **errp)
|
||||
if (is_netdev) {
|
||||
if (netdev->type == NET_CLIENT_DRIVER_NIC ||
|
||||
!net_client_init_fun[netdev->type]) {
|
||||
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "type",
|
||||
"a netdev backend type");
|
||||
error_setg(errp, "network backend '%s' is not compiled into this binary",
|
||||
NetClientDriver_str(netdev->type));
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
if (netdev->type == NET_CLIENT_DRIVER_NONE) {
|
||||
return 0; /* nothing to do */
|
||||
}
|
||||
if (netdev->type == NET_CLIENT_DRIVER_HUBPORT ||
|
||||
!net_client_init_fun[netdev->type]) {
|
||||
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "type",
|
||||
"a net backend type (maybe it is not compiled "
|
||||
"into this binary)");
|
||||
if (netdev->type == NET_CLIENT_DRIVER_HUBPORT) {
|
||||
error_setg(errp, "network backend '%s' is only supported with -netdev/-nic",
|
||||
NetClientDriver_str(netdev->type));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!net_client_init_fun[netdev->type]) {
|
||||
error_setg(errp, "network backend '%s' is not compiled into this binary",
|
||||
NetClientDriver_str(netdev->type));
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user