mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
User Networking: Enable removal of redirections
Using the new host_net_redir command you can easily create redirections on the fly while your VM is running. While that's great, it's missing the removal of redirections, in case you want to have a port closed again at a later point in time. This patch adds support for removal of redirections. Signed-off-by: Alexander Graf <agraf@suse.de> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
8a43b1ea7f
commit
c1261d8d16
6 changed files with 71 additions and 5 deletions
|
@ -734,6 +734,29 @@ void if_encap(const uint8_t *ip_data, int ip_data_len)
|
|||
}
|
||||
}
|
||||
|
||||
/* Unlistens a redirection
|
||||
*
|
||||
* Return value: number of redirs removed */
|
||||
int slirp_redir_rm(int is_udp, int host_port)
|
||||
{
|
||||
struct socket *so;
|
||||
struct socket *head = (is_udp ? &udb : &tcb);
|
||||
int fport = htons(host_port);
|
||||
int n = 0;
|
||||
|
||||
loop_again:
|
||||
for (so = head->so_next; so != head; so = so->so_next) {
|
||||
if (so->so_fport == fport) {
|
||||
close(so->s);
|
||||
sofree(so);
|
||||
n++;
|
||||
goto loop_again;
|
||||
}
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
int slirp_redir(int is_udp, int host_port,
|
||||
struct in_addr guest_addr, int guest_port)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue