aboutsummaryrefslogtreecommitdiff
path: root/slirp/ip_icmp.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/ip_icmp.c
parentf37343197708d90f119007ce5ecc2503be9c04c1 (diff)
downloadqemu-a68adc220603baffc355ecea8865b3ea9707ab00.zip
qemu-a68adc220603baffc355ecea8865b3ea9707ab00.tar.gz
qemu-a68adc220603baffc355ecea8865b3ea9707ab00.tar.bz2
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/ip_icmp.c')
-rw-r--r--slirp/ip_icmp.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/slirp/ip_icmp.c b/slirp/ip_icmp.c
index 5dbf21d..d571fd0 100644
--- a/slirp/ip_icmp.c
+++ b/slirp/ip_icmp.c
@@ -66,6 +66,13 @@ void icmp_init(Slirp *slirp)
slirp->icmp_last_so = &slirp->icmp;
}
+void icmp_cleanup(Slirp *slirp)
+{
+ while (slirp->icmp.so_next != &slirp->icmp) {
+ icmp_detach(slirp->icmp.so_next);
+ }
+}
+
static int icmp_send(struct socket *so, struct mbuf *m, int hlen)
{
struct ip *ip = mtod(m, struct ip *);