diff --git a/ui/xemu-net.c b/ui/xemu-net.c index 8170f2cee4..6d7067ef63 100644 --- a/ui/xemu-net.c +++ b/ui/xemu-net.c @@ -164,19 +164,23 @@ static void remove_netdev(const char *name) qemu_del_net_client(nc); } +static void clear_slirp_port_forwards(void) +{ + void *s = slirp_get_state_from_netdev(id); + struct in_addr host_addr = { .s_addr = INADDR_ANY }; + for (int i = 0; i < g_config.net.nat.forward_ports_count; i++) { + slirp_remove_hostfwd(s, + g_config.net.nat.forward_ports[i].protocol == + CONFIG_NET_NAT_FORWARD_PORTS_PROTOCOL_UDP, + host_addr, + g_config.net.nat.forward_ports[i].host); + } +} + void xemu_net_disable(void) { if (g_config.net.backend == CONFIG_NET_BACKEND_NAT) { - void *s = slirp_get_state_from_netdev(id); - assert(s != NULL); - struct in_addr host_addr = { .s_addr = INADDR_ANY }; - for (int i = 0; i < g_config.net.nat.forward_ports_count; i++) { - slirp_remove_hostfwd(s, - g_config.net.nat.forward_ports[i].protocol == - CONFIG_NET_NAT_FORWARD_PORTS_PROTOCOL_UDP, - host_addr, - g_config.net.nat.forward_ports[i].host); - } + clear_slirp_port_forwards(); } remove_netdev(id);