OSDN Git Service

slirp: Explicitely mark host-forwarding sockets
authorJan Kiszka <jan.kiszka@siemens.com>
Wed, 24 Jun 2009 12:42:29 +0000 (14:42 +0200)
committerAnthony Liguori <aliguori@us.ibm.com>
Mon, 29 Jun 2009 13:52:45 +0000 (08:52 -0500)
Mark sockets that describe host forwardings. This is required for their
(and only their) proper deletion and for pretty-printing.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
slirp/slirp.c
slirp/socket.h
slirp/udp.c

index 08c10f2..ad35c1f 100644 (file)
@@ -793,11 +793,11 @@ int slirp_add_hostfwd(int is_udp, struct in_addr host_addr, int host_port,
     }
     if (is_udp) {
         if (!udp_listen(host_addr.s_addr, htons(host_port), guest_addr.s_addr,
-                        htons(guest_port), 0))
+                        htons(guest_port), SS_HOSTFWD))
             return -1;
     } else {
         if (!tcp_listen(host_addr.s_addr, htons(host_port), guest_addr.s_addr,
-                        htons(guest_port), 0))
+                        htons(guest_port), SS_HOSTFWD))
             return -1;
     }
     return 0;
index 2cf476c..979b191 100644 (file)
@@ -72,6 +72,7 @@ struct socket {
 #define SS_FACCEPTONCE         0x200   /* If set, the SS_FACCEPTCONN socket will die after one accept */
 
 #define SS_PERSISTENT_MASK     0xf000  /* Unremovable state bits */
+#define SS_HOSTFWD             0x1000  /* Socket describes host->guest forwarding */
 
 extern struct socket tcb;
 
index 3722845..60fe754 100644 (file)
@@ -667,7 +667,7 @@ udp_listen(u_int32_t haddr, u_int hport, u_int32_t laddr, u_int lport,
           so->so_expire = 0;
 
        so->so_state &= SS_PERSISTENT_MASK;
-       so->so_state |= SS_ISFCONNECTED;
+       so->so_state |= SS_ISFCONNECTED | flags;
 
        return so;
 }