net: clean up network at qemu process termination

We don't clean up network if fails to parse "-device" parameters without
calling net_cleanup(). I touch a problem, the tap device which is
created by qemu-ifup script could not be removed by qemu-ifdown script.
Some similar problems also exist in vl.c

In this patch, if network initialization successes, a cleanup function
will be registered to be called at qemu process termination.

Signed-off-by: Amos Kong <akong@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Amos Kong 2012-12-11 22:20:15 +08:00 committed by Stefan Hajnoczi
parent 2c0331f4f7
commit f30dbae63a

4
vl.c
View File

@ -3762,6 +3762,9 @@ int main(int argc, char **argv, char **envp)
} }
configure_icount(icount_option); configure_icount(icount_option);
/* clean up network at qemu process termination */
atexit(&net_cleanup);
if (net_init_clients() < 0) { if (net_init_clients() < 0) {
exit(1); exit(1);
} }
@ -4014,7 +4017,6 @@ int main(int argc, char **argv, char **envp)
main_loop(); main_loop();
bdrv_close_all(); bdrv_close_all();
pause_all_vcpus(); pause_all_vcpus();
net_cleanup();
res_free(); res_free();
return 0; return 0;