[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 13/38] l2tpv3: Improve -netdev/netdev_add/-net/..
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH v3 13/38] l2tpv3: Improve -netdev/netdev_add/-net/... error reporting |
Date: |
Tue, 16 Oct 2018 19:41:33 +0200 |
When -netdev l2tpv3 fails, it first reports a specific error, then a
generic one, like this:
$ qemu-system-x86_64 -netdev l2tpv3,id=foo,src=,dst=,txsession=1
qemu-system-x86_64: -netdev l2tpv3,id=foo,src=,dst=,txsession=1:
l2tpv3_open : could not resolve src, errno = Name or service not known
qemu-system-x86_64: Device 'l2tpv3' could not be initialized
With the command line, the messages go to stderr. In HMP, they go to
the monitor. In QMP, the second one becomes the error reply, and the
first one goes to stderr.
Convert net_init_tap() to Error. This suppresses the unwanted second
message, and makes the specific error the QMP error reply.
Cc: Jason Wang <address@hidden>
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
---
net/l2tpv3.c | 25 ++++++++++++-------------
1 file changed, 12 insertions(+), 13 deletions(-)
diff --git a/net/l2tpv3.c b/net/l2tpv3.c
index 6745b78990..81db24dc8c 100644
--- a/net/l2tpv3.c
+++ b/net/l2tpv3.c
@@ -28,6 +28,7 @@
#include <netdb.h>
#include "net/net.h"
#include "clients.h"
+#include "qapi/error.h"
#include "qemu-common.h"
#include "qemu/error-report.h"
#include "qemu/option.h"
@@ -528,7 +529,6 @@ int net_init_l2tpv3(const Netdev *netdev,
const char *name,
NetClientState *peer, Error **errp)
{
- /* FIXME error_setg(errp, ...) on failure */
const NetdevL2TPv3Options *l2tpv3;
NetL2TPV3State *s;
NetClientState *nc;
@@ -555,7 +555,7 @@ int net_init_l2tpv3(const Netdev *netdev,
}
if ((l2tpv3->has_offset) && (l2tpv3->offset > 256)) {
- error_report("l2tpv3_open : offset must be less than 256 bytes");
+ error_setg(errp, "offset must be less than 256 bytes");
goto outerr;
}
@@ -563,6 +563,8 @@ int net_init_l2tpv3(const Netdev *netdev,
if (l2tpv3->has_rxcookie && l2tpv3->has_txcookie) {
s->cookie = true;
} else {
+ error_setg(errp,
+ "require both 'rxcookie' and 'txcookie' or neither");
goto outerr;
}
} else {
@@ -578,7 +580,7 @@ int net_init_l2tpv3(const Netdev *netdev,
if (l2tpv3->has_udp && l2tpv3->udp) {
s->udp = true;
if (!(l2tpv3->has_srcport && l2tpv3->has_dstport)) {
- error_report("l2tpv3_open : need both src and dst port for udp");
+ error_setg(errp, "need both src and dst port for udp");
goto outerr;
} else {
srcport = l2tpv3->srcport;
@@ -639,20 +641,19 @@ int net_init_l2tpv3(const Netdev *netdev,
gairet = getaddrinfo(l2tpv3->src, srcport, &hints, &result);
if ((gairet != 0) || (result == NULL)) {
- error_report(
- "l2tpv3_open : could not resolve src, errno = %s",
- gai_strerror(gairet)
- );
+ error_setg(errp, "could not resolve src, errno = %s",
+ gai_strerror(gairet));
goto outerr;
}
fd = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
if (fd == -1) {
fd = -errno;
- error_report("l2tpv3_open : socket creation failed, errno = %d", -fd);
+ error_setg(errp, "socket creation failed, errno = %d",
+ -fd);
goto outerr;
}
if (bind(fd, (struct sockaddr *) result->ai_addr, result->ai_addrlen)) {
- error_report("l2tpv3_open : could not bind socket err=%i", errno);
+ error_setg(errp, "could not bind socket err=%i", errno);
goto outerr;
}
if (result) {
@@ -677,10 +678,8 @@ int net_init_l2tpv3(const Netdev *netdev,
result = NULL;
gairet = getaddrinfo(l2tpv3->dst, dstport, &hints, &result);
if ((gairet != 0) || (result == NULL)) {
- error_report(
- "l2tpv3_open : could not resolve dst, error = %s",
- gai_strerror(gairet)
- );
+ error_setg(errp, "could not resolve dst, error = %s",
+ gai_strerror(gairet));
goto outerr;
}
--
2.17.1
- [Qemu-devel] [PATCH v3 12/38] migration: Fix !replay_can_snapshot() error handling, (continued)
- [Qemu-devel] [PATCH v3 12/38] migration: Fix !replay_can_snapshot() error handling, Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 08/38] 9pfs: Fix CLI parsing crash on error, Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 09/38] pc: Fix machine property nvdimm-persistence error handling, Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 05/38] vfio: Use warn_report() & friends to report warnings, Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 01/38] error: Fix use of error_prepend() with &error_fatal, &error_abort, Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 03/38] block: Use warn_report() & friends to report warnings, Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 18/38] vl: Clean up error reporting in parse_add_fd(), Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 07/38] char: Use error_printf() to print help and such, Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 20/38] vl: Clean up error reporting in chardev_init_func(), Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 10/38] ioapic: Fix error handling in realize(), Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 13/38] l2tpv3: Improve -netdev/netdev_add/-net/... error reporting,
Markus Armbruster <=
- [Qemu-devel] [PATCH v3 02/38] Use error_fatal to simplify obvious fatal errors (again), Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 11/38] smbios: Clean up error handling in smbios_add(), Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 16/38] xen/pt: Fix incomplete conversion to realize(), Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 15/38] numa: Fix QMP command set-numa-node error handling, Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 14/38] net/socket: Fix invalid socket type error handling, Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 22/38] vl: Clean up error reporting in mon_init_func(), Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 06/38] vfio: Clean up error reporting after previous commit, Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 29/38] tpm: Clean up error reporting in tpm_init_tpmdev(), Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 32/38] vl: Assert drive_new() does not fail in default_drive(), Markus Armbruster, 2018/10/16
- [Qemu-devel] [PATCH v3 38/38] vpc: Fail open on bad header checksum, Markus Armbruster, 2018/10/16