net/dump: Improve -net/host_net_add dump error reporting
When -net dump fails, it first reports a specific error, then a generic one, like this: $ qemu-system-x86_64 -net dump,id=foo,file=/eperm qemu-system-x86_64: -net dump,id=foo,file=/eperm: -net dump: can't open /eperm qemu-system-x86_64: -net dump,id=foo,file=/eperm: Device 'dump' could not be initialized Convert net_init_tap() to Error. This suppresses the unwanted second message. Improve the error messages to include strerror(errno) where appropriate. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-id: 1431691143-1015-5-git-send-email-armbru@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
6630886863
commit
3791f83ca9
12
net/dump.c
12
net/dump.c
@ -101,7 +101,8 @@ static NetClientInfo net_dump_info = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static int net_dump_init(NetClientState *peer, const char *device,
|
static int net_dump_init(NetClientState *peer, const char *device,
|
||||||
const char *name, const char *filename, int len)
|
const char *name, const char *filename, int len,
|
||||||
|
Error **errp)
|
||||||
{
|
{
|
||||||
struct pcap_file_hdr hdr;
|
struct pcap_file_hdr hdr;
|
||||||
NetClientState *nc;
|
NetClientState *nc;
|
||||||
@ -111,7 +112,7 @@ static int net_dump_init(NetClientState *peer, const char *device,
|
|||||||
|
|
||||||
fd = open(filename, O_CREAT | O_TRUNC | O_WRONLY | O_BINARY, 0644);
|
fd = open(filename, O_CREAT | O_TRUNC | O_WRONLY | O_BINARY, 0644);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
error_report("-net dump: can't open %s", filename);
|
error_setg_errno(errp, errno, "-net dump: can't open %s", filename);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,7 +125,7 @@ static int net_dump_init(NetClientState *peer, const char *device,
|
|||||||
hdr.linktype = 1;
|
hdr.linktype = 1;
|
||||||
|
|
||||||
if (write(fd, &hdr, sizeof(hdr)) < sizeof(hdr)) {
|
if (write(fd, &hdr, sizeof(hdr)) < sizeof(hdr)) {
|
||||||
error_report("-net dump write error: %s", strerror(errno));
|
error_setg_errno(errp, errno, "-net dump write error");
|
||||||
close(fd);
|
close(fd);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -148,7 +149,6 @@ static int net_dump_init(NetClientState *peer, const char *device,
|
|||||||
int net_init_dump(const NetClientOptions *opts, const char *name,
|
int net_init_dump(const NetClientOptions *opts, const char *name,
|
||||||
NetClientState *peer, Error **errp)
|
NetClientState *peer, Error **errp)
|
||||||
{
|
{
|
||||||
/* FIXME error_setg(errp, ...) on failure */
|
|
||||||
int len;
|
int len;
|
||||||
const char *file;
|
const char *file;
|
||||||
char def_file[128];
|
char def_file[128];
|
||||||
@ -174,7 +174,7 @@ int net_init_dump(const NetClientOptions *opts, const char *name,
|
|||||||
|
|
||||||
if (dump->has_len) {
|
if (dump->has_len) {
|
||||||
if (dump->len > INT_MAX) {
|
if (dump->len > INT_MAX) {
|
||||||
error_report("invalid length: %"PRIu64, dump->len);
|
error_setg(errp, "invalid length: %"PRIu64, dump->len);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
len = dump->len;
|
len = dump->len;
|
||||||
@ -182,5 +182,5 @@ int net_init_dump(const NetClientOptions *opts, const char *name,
|
|||||||
len = 65536;
|
len = 65536;
|
||||||
}
|
}
|
||||||
|
|
||||||
return net_dump_init(peer, "dump", name, file, len);
|
return net_dump_init(peer, "dump", name, file, len, errp);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user