From 7069d7bd471fbf6cf838159a124a73c3bcb18095 Mon Sep 17 00:00:00 2001 From: Asias He Date: Thu, 23 Aug 2012 20:47:50 +0800 Subject: [PATCH] kvm tools: Make tcp between guest/host virtual ip work in UIP mode This pach makes tcp between 'guest ip' and 'host virtual ip' work in UIP mode. (The defulat guest ip is 192.168.33.15, host virtual ip is 192.168.33.1) guest$ wget http://192.168.33.1/file guest$ ssh 192.168.33.1 Without this patch, user has to figure out the ip address of host's interface (e.g. eth0) and use that ip address to access host. With this patch, user can simply use the virtual host ip. Signed-off-by: Asias He Signed-off-by: Pekka Enberg --- tools/kvm/net/uip/tcp.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/kvm/net/uip/tcp.c b/tools/kvm/net/uip/tcp.c index 586a45cfd448..68a1d6e69cf3 100644 --- a/tools/kvm/net/uip/tcp.c +++ b/tools/kvm/net/uip/tcp.c @@ -3,6 +3,7 @@ #include #include #include +#include static int uip_tcp_socket_close(struct uip_tcp_socket *sk, int how) { @@ -66,8 +67,11 @@ static struct uip_tcp_socket *uip_tcp_socket_alloc(struct uip_tx_arg *arg, u32 s sk->fd = socket(AF_INET, SOCK_STREAM, 0); sk->addr.sin_family = AF_INET; - sk->addr.sin_addr.s_addr = dip; sk->addr.sin_port = dport; + sk->addr.sin_addr.s_addr = dip; + + if (ntohl(dip) == arg->info->host_ip) + sk->addr.sin_addr.s_addr = inet_addr("127.0.0.1"); ret = connect(sk->fd, (struct sockaddr *)&sk->addr, sizeof(sk->addr)); if (ret) { -- 2.39.5