* [Qemu-devel] [PULL] slirp: Handle whole 127.0.0.0/8 network as local addresses.
@ 2012-08-03 21:43 Jan Kiszka
0 siblings, 0 replies; only message in thread
From: Jan Kiszka @ 2012-08-03 21:43 UTC (permalink / raw)
To: Anthony Liguori; +Cc: qemu-devel, Anders Waldenborg
[-- Attachment #1: Type: text/plain, Size: 2850 bytes --]
The following changes since commit 0f66998ff6d5d2133b9b08471a44e13b11119e50:
vnc: disable VNC password authentication (security type 2) when in FIPS mode (2012-08-03 14:28:40 -0500)
are available in the git repository at:
git://git.kiszka.org/qemu.git queues/slirp
Anders Waldenborg (1):
slirp: Handle whole 127.0.0.0/8 network as local addresses.
slirp/main.h | 1 +
slirp/slirp.c | 3 +++
slirp/tcp_subr.c | 7 +++++--
3 files changed, 9 insertions(+), 2 deletions(-)
---
slirp: Handle whole 127.0.0.0/8 network as local addresses.
Changes so translation of remote address to the host's ip address in
the virtual network happens for all addresses in the 127.0.0.0/8
network, not just 127.0.0.1.
This fixes so that hostfwd bound to addresses such as 127.0.0.2 works.
Signed-off-by: Anders Waldenborg <anders@0x63.nu>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
slirp/main.h | 1 +
slirp/slirp.c | 3 +++
slirp/tcp_subr.c | 7 +++++--
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/slirp/main.h b/slirp/main.h
index 028df4b..bf601e2 100644
--- a/slirp/main.h
+++ b/slirp/main.h
@@ -31,6 +31,7 @@ extern char *exec_shell;
extern u_int curtime;
extern fd_set *global_readfds, *global_writefds, *global_xfds;
extern struct in_addr loopback_addr;
+extern in_addr_t loopback_mask;
extern char *username;
extern char *socket_path;
extern int towrite_max;
diff --git a/slirp/slirp.c b/slirp/slirp.c
index 90473eb..9787104 100644
--- a/slirp/slirp.c
+++ b/slirp/slirp.c
@@ -29,6 +29,8 @@
/* host loopback address */
struct in_addr loopback_addr;
+/* host loopback network mask */
+in_addr_t loopback_mask;
/* emulated hosts use the MAC addr 52:55:IP:IP:IP:IP */
static const uint8_t special_ethaddr[ETH_ALEN] = {
@@ -191,6 +193,7 @@ static void slirp_init_once(void)
#endif
loopback_addr.s_addr = htonl(INADDR_LOOPBACK);
+ loopback_mask = htonl(IN_CLASSA_NET);
}
static void slirp_state_save(QEMUFile *f, void *opaque);
diff --git a/slirp/tcp_subr.c b/slirp/tcp_subr.c
index 0a545c4..025b374 100644
--- a/slirp/tcp_subr.c
+++ b/slirp/tcp_subr.c
@@ -435,8 +435,11 @@ tcp_connect(struct socket *inso)
so->so_fport = addr.sin_port;
so->so_faddr = addr.sin_addr;
/* Translate connections from localhost to the real hostname */
- if (so->so_faddr.s_addr == 0 || so->so_faddr.s_addr == loopback_addr.s_addr)
- so->so_faddr = slirp->vhost_addr;
+ if (so->so_faddr.s_addr == 0 ||
+ (so->so_faddr.s_addr & loopback_mask) ==
+ (loopback_addr.s_addr & loopback_mask)) {
+ so->so_faddr = slirp->vhost_addr;
+ }
/* Close the accept() socket, set right state */
if (inso->so_state & SS_FACCEPTONCE) {
--
1.7.3.4
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2012-08-03 21:44 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-03 21:43 [Qemu-devel] [PULL] slirp: Handle whole 127.0.0.0/8 network as local addresses Jan Kiszka
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.