aboutsummaryrefslogtreecommitdiff
path: root/slirp.c
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2009-07-22 17:03:52 +0200
committerAnthony Liguori <aliguori@us.ibm.com>2009-07-27 14:08:23 -0500
commitc9d8a3ee266ca78950e8310436fde8f3af9969fb (patch)
treece16d781e93b27299642fa7e4725d8eaa804f9df /slirp.c
parentbbe3de82745cf6fabcf59344f08cd7c58149d25e (diff)
downloadslirp-c9d8a3ee266ca78950e8310436fde8f3af9969fb.zip
slirp-c9d8a3ee266ca78950e8310436fde8f3af9969fb.tar.gz
slirp-c9d8a3ee266ca78950e8310436fde8f3af9969fb.tar.bz2
slirp: Fix guestfwd for incoming data
Unless a virtual server address was explicitly defined (which is impossible with the legacy -net channel format), guestfwd did not properly forwarded host->guest packets. This patch fixes it. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'slirp.c')
-rw-r--r--slirp.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/slirp.c b/slirp.c
index 67dad75..a01b029 100644
--- a/slirp.c
+++ b/slirp.c
@@ -793,19 +793,19 @@ int slirp_add_hostfwd(Slirp *slirp, int is_udp, struct in_addr host_addr,
}
int slirp_add_exec(Slirp *slirp, int do_pty, const void *args,
- struct in_addr guest_addr, int guest_port)
+ struct in_addr *guest_addr, int guest_port)
{
- if (!guest_addr.s_addr) {
- guest_addr.s_addr = slirp->vnetwork_addr.s_addr |
- (htonl(0x0204) & ~slirp->vnetwork_mask.s_addr);
+ if (!guest_addr->s_addr) {
+ guest_addr->s_addr = slirp->vnetwork_addr.s_addr |
+ (htonl(0x0204) & ~slirp->vnetwork_mask.s_addr);
}
- if ((guest_addr.s_addr & slirp->vnetwork_mask.s_addr) !=
+ if ((guest_addr->s_addr & slirp->vnetwork_mask.s_addr) !=
slirp->vnetwork_addr.s_addr ||
- guest_addr.s_addr == slirp->vhost_addr.s_addr ||
- guest_addr.s_addr == slirp->vnameserver_addr.s_addr) {
+ guest_addr->s_addr == slirp->vhost_addr.s_addr ||
+ guest_addr->s_addr == slirp->vnameserver_addr.s_addr) {
return -1;
}
- return add_exec(&slirp->exec_list, do_pty, (char *)args, guest_addr,
+ return add_exec(&slirp->exec_list, do_pty, (char *)args, *guest_addr,
htons(guest_port));
}