summaryrefslogtreecommitdiffstats
path: root/slirp/slirp.c
diff options
context:
space:
mode:
authorPeter Maydell2016-04-04 13:09:27 +0200
committerPeter Maydell2016-04-04 13:09:27 +0200
commitbdc5db01c354abf19d21872cbcf51328bb8650db (patch)
treec8f390cd7e7cc6986b6a5febcdcaf5c99bc6012f /slirp/slirp.c
parentMerge remote-tracking branch 'remotes/thibault/tags/samuel-thibault-2' into s... (diff)
parentslirp: Allow disabling IPv4 or IPv6 (diff)
downloadqemu-bdc5db01c354abf19d21872cbcf51328bb8650db.tar.gz
qemu-bdc5db01c354abf19d21872cbcf51328bb8650db.tar.xz
qemu-bdc5db01c354abf19d21872cbcf51328bb8650db.zip
Merge remote-tracking branch 'remotes/thibault/tags/samuel-thibault-2' into staging
slirp updates (2) # gpg: Signature made Fri 01 Apr 2016 16:52:09 BST using RSA key ID FB6B2F1D # gpg: Good signature from "Samuel Thibault <samuel.thibault@gnu.org>" # gpg: aka "Samuel Thibault <sthibault@debian.org>" # gpg: aka "Samuel Thibault <samuel.thibault@inria.fr>" # gpg: aka "Samuel Thibault <samuel.thibault@labri.fr>" # gpg: aka "Samuel Thibault <samuel.thibault@ens-lyon.org>" # gpg: WARNING: This key is not certified with sufficiently trusted signatures! # gpg: It is not certain that the signature belongs to the owner. # Primary key fingerprint: 900C B024 B679 31D4 0F82 304B D017 8C76 7D06 9EE6 # Subkey fingerprint: F632 74CD C630 0873 CB3D 29D9 E3E5 1CE8 FB6B 2F1D * remotes/thibault/tags/samuel-thibault-2: slirp: Allow disabling IPv4 or IPv6 Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'slirp/slirp.c')
-rw-r--r--slirp/slirp.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/slirp/slirp.c b/slirp/slirp.c
index 998f27876c..fef526c5ad 100644
--- a/slirp/slirp.c
+++ b/slirp/slirp.c
@@ -200,8 +200,9 @@ static void slirp_init_once(void)
static void slirp_state_save(QEMUFile *f, void *opaque);
static int slirp_state_load(QEMUFile *f, void *opaque, int version_id);
-Slirp *slirp_init(int restricted, struct in_addr vnetwork,
+Slirp *slirp_init(int restricted, bool in_enabled, struct in_addr vnetwork,
struct in_addr vnetmask, struct in_addr vhost,
+ bool in6_enabled,
struct in6_addr vprefix_addr6, uint8_t vprefix_len,
struct in6_addr vhost6, const char *vhostname,
const char *tftp_path, const char *bootfile,
@@ -216,6 +217,9 @@ Slirp *slirp_init(int restricted, struct in_addr vnetwork,
slirp->grand = g_rand_new();
slirp->restricted = restricted;
+ slirp->in_enabled = in_enabled;
+ slirp->in6_enabled = in6_enabled;
+
if_init(slirp);
ip_init(slirp);
ip6_init(slirp);
@@ -694,6 +698,10 @@ static void arp_input(Slirp *slirp, const uint8_t *pkt, int pkt_len)
int ar_op;
struct ex_list *ex_ptr;
+ if (!slirp->in_enabled) {
+ return;
+ }
+
ar_op = ntohs(ah->ar_op);
switch(ar_op) {
case ARPOP_REQUEST: