summary refs log tree commit diff stats
path: root/slirp/udp.c
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2012-02-29 19:14:23 +0100
committerJan Kiszka <jan.kiszka@siemens.com>2012-03-13 14:05:49 +0100
commita68adc220603baffc355ecea8865b3ea9707ab00 (patch)
treef2f2c89ddcae603aff1cb0bd44ab169f4d06f4c4 /slirp/udp.c
parentf37343197708d90f119007ce5ecc2503be9c04c1 (diff)
downloadfocaccia-qemu-a68adc220603baffc355ecea8865b3ea9707ab00.tar.gz
focaccia-qemu-a68adc220603baffc355ecea8865b3ea9707ab00.zip
slirp: Cleanup resources on instance removal
Close & free sockets when shutting down a slirp instance, also release
all buffers.

CC: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Diffstat (limited to 'slirp/udp.c')
-rw-r--r--slirp/udp.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/slirp/udp.c b/slirp/udp.c
index 5b060f397b..ced509656d 100644
--- a/slirp/udp.c
+++ b/slirp/udp.c
@@ -49,6 +49,14 @@ udp_init(Slirp *slirp)
     slirp->udb.so_next = slirp->udb.so_prev = &slirp->udb;
     slirp->udp_last_so = &slirp->udb;
 }
+
+void udp_cleanup(Slirp *slirp)
+{
+    while (slirp->udb.so_next != &slirp->udb) {
+        udp_detach(slirp->udb.so_next);
+    }
+}
+
 /* m->m_data  points at ip packet header
  * m->m_len   length ip packet
  * ip->ip_len length data (IPDU)