[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 36/64] slirp: add a callback to log guest errors
From: |
Samuel Thibault |
Subject: |
[Qemu-devel] [PULL 36/64] slirp: add a callback to log guest errors |
Date: |
Wed, 19 Dec 2018 00:04:14 +0100 |
From: Marc-André Lureau <address@hidden>
Signed-off-by: Marc-André Lureau <address@hidden>
Signed-off-by: Samuel Thibault <address@hidden>
---
net/slirp.c | 7 +++++++
slirp/dhcpv6.c | 6 +++---
slirp/ip6_icmp.c | 7 +++----
slirp/libslirp.h | 2 ++
4 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/net/slirp.c b/net/slirp.c
index a7802ddbcc..00f7306b69 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -23,6 +23,7 @@
*/
#include "qemu/osdep.h"
+#include "qemu/log.h"
#include "net/slirp.h"
@@ -140,8 +141,14 @@ static NetClientInfo net_slirp_info = {
.cleanup = net_slirp_cleanup,
};
+static void net_slirp_guest_error(const char *msg)
+{
+ qemu_log_mask(LOG_GUEST_ERROR, "%s", msg);
+}
+
static const SlirpCb slirp_cb = {
.output = net_slirp_output,
+ .guest_error = net_slirp_guest_error,
};
static int net_slirp_init(NetClientState *peer, const char *model,
diff --git a/slirp/dhcpv6.c b/slirp/dhcpv6.c
index 943a13bca8..5d703e8ae6 100644
--- a/slirp/dhcpv6.c
+++ b/slirp/dhcpv6.c
@@ -50,7 +50,7 @@ struct requested_infos {
* the odata region, thus the caller must keep odata valid as long as it
* needs to access the requested_infos struct.
*/
-static int dhcpv6_parse_info_request(uint8_t *odata, int olen,
+static int dhcpv6_parse_info_request(Slirp *slirp, uint8_t *odata, int olen,
struct requested_infos *ri)
{
int i, req_opt;
@@ -61,7 +61,7 @@ static int dhcpv6_parse_info_request(uint8_t *odata, int olen,
int len = odata[2] << 8 | odata[3];
if (len + 4 > olen) {
- qemu_log_mask(LOG_GUEST_ERROR, "Guest sent bad DHCPv6 packet!\n");
+ slirp->cb->guest_error("Guest sent bad DHCPv6 packet!");
return -E2BIG;
}
@@ -121,7 +121,7 @@ static void dhcpv6_info_request(Slirp *slirp, struct
sockaddr_in6 *srcsas,
struct mbuf *m;
uint8_t *resp;
- if (dhcpv6_parse_info_request(odata, olen, &ri) < 0) {
+ if (dhcpv6_parse_info_request(slirp, odata, olen, &ri) < 0) {
return;
}
diff --git a/slirp/ip6_icmp.c b/slirp/ip6_icmp.c
index 595647b1b1..3f74d172f4 100644
--- a/slirp/ip6_icmp.c
+++ b/slirp/ip6_icmp.c
@@ -342,8 +342,7 @@ static void ndp_input(struct mbuf *m, Slirp *slirp, struct
ip6 *ip,
case ICMP6_NDP_RA:
DEBUG_CALL(" type = Router Advertisement");
- qemu_log_mask(LOG_GUEST_ERROR,
- "Warning: guest sent NDP RA, but shouldn't");
+ slirp->cb->guest_error("Warning: guest sent NDP RA, but shouldn't");
break;
case ICMP6_NDP_NS:
@@ -376,8 +375,8 @@ static void ndp_input(struct mbuf *m, Slirp *slirp, struct
ip6 *ip,
case ICMP6_NDP_REDIRECT:
DEBUG_CALL(" type = Redirect");
- qemu_log_mask(LOG_GUEST_ERROR,
- "Warning: guest sent NDP REDIRECT, but shouldn't");
+ slirp->cb->guest_error(
+ "Warning: guest sent NDP REDIRECT, but shouldn't");
break;
}
}
diff --git a/slirp/libslirp.h b/slirp/libslirp.h
index a5d1b27b5e..3e0aa19f4b 100644
--- a/slirp/libslirp.h
+++ b/slirp/libslirp.h
@@ -13,6 +13,8 @@ typedef struct Slirp Slirp;
typedef struct SlirpCb {
/* Send an ethernet frame to the guest network. */
void (*output)(void *opaque, const uint8_t *pkt, int pkt_len);
+ /* Print a message for an error due to guest misbehavior. */
+ void (*guest_error)(const char *msg);
} SlirpCb;
--
2.19.2
- [Qemu-devel] [PULL 20/64] slirp: remove unused HAVE_SYS_BITYPES_H, (continued)
- [Qemu-devel] [PULL 20/64] slirp: remove unused HAVE_SYS_BITYPES_H, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 06/64] slirp: rename /extra/chardev, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 18/64] slirp: remove the disabled readv()/writev() code path, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 17/64] slirp: remove FULL_BOLT, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 29/64] slirp: remove unused HAVE_INET_ATON, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 23/64] slirp: remove unused HAVE_ARPA_INET_H, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 16/64] slirp: remove PROBE_CONN dead-code, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 10/64] slirp: replace the poor-man string split with g_strsplit(), Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 08/64] slirp: remove Monitor dependency, return a string for info, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 21/64] slirp: remove NO_UNIX_SOCKETS, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 36/64] slirp: add a callback to log guest errors,
Samuel Thibault <=
- [Qemu-devel] [PULL 30/64] slirp: replace HOST_WORDS_BIGENDIAN with glib equivalent, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 26/64] slirp: remove HAVE_SYS_IOCTL_H, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 33/64] slirp: remove unused global slirp_instance, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 42/64] net: do not depend on slirp internals, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 34/64] slirp: replace error_report() with g_critical(), Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 27/64] slirp: remove HAVE_SYS_FILIO_H, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 25/64] slirp: remove unused HAVE_SYS_SELECT_H, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 22/64] slirp: remove unused HAVE_SYS_STROPTS_H, Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 38/64] slirp: remove unused sbflush(), Samuel Thibault, 2018/12/18
- [Qemu-devel] [PULL 31/64] slirp: replace SIZEOF_CHAR_P with glib equivalent, Samuel Thibault, 2018/12/18