Revision c1261d8d slirp/slirp.c
b/slirp/slirp.c | ||
---|---|---|
734 | 734 |
} |
735 | 735 |
} |
736 | 736 |
|
737 |
/* Unlistens a redirection |
|
738 |
* |
|
739 |
* Return value: number of redirs removed */ |
|
740 |
int slirp_redir_rm(int is_udp, int host_port) |
|
741 |
{ |
|
742 |
struct socket *so; |
|
743 |
struct socket *head = (is_udp ? &udb : &tcb); |
|
744 |
int fport = htons(host_port); |
|
745 |
int n = 0; |
|
746 |
|
|
747 |
loop_again: |
|
748 |
for (so = head->so_next; so != head; so = so->so_next) { |
|
749 |
if (so->so_fport == fport) { |
|
750 |
close(so->s); |
|
751 |
sofree(so); |
|
752 |
n++; |
|
753 |
goto loop_again; |
|
754 |
} |
|
755 |
} |
|
756 |
|
|
757 |
return n; |
|
758 |
} |
|
759 |
|
|
737 | 760 |
int slirp_redir(int is_udp, int host_port, |
738 | 761 |
struct in_addr guest_addr, int guest_port) |
739 | 762 |
{ |
Also available in: Unified diff