aboutsummaryrefslogtreecommitdiff
path: root/slirp.c
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-08-25 22:12:49 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-08-25 22:12:49 +0000
commited332eeaf23a455ced679165c645b00a0f6e98de (patch)
tree4f465c7e11cdb2dc5d89e39f10782d3330ff62c2 /slirp.c
parent287ff16ad177dbf088d855a37dbfb0673b223674 (diff)
downloadslirp-ed332eeaf23a455ced679165c645b00a0f6e98de.zip
slirp-ed332eeaf23a455ced679165c645b00a0f6e98de.tar.gz
slirp-ed332eeaf23a455ced679165c645b00a0f6e98de.tar.bz2
port redirection support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1054 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'slirp.c')
-rw-r--r--slirp.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/slirp.c b/slirp.c
index 8bc82c0..f2f3180 100644
--- a/slirp.c
+++ b/slirp.c
@@ -616,3 +616,18 @@ void if_encap(const uint8_t *ip_data, int ip_data_len)
memcpy(buf + sizeof(struct ethhdr), ip_data, ip_data_len);
slirp_output(buf, ip_data_len + ETH_HLEN);
}
+
+int slirp_redir(int is_udp, int host_port, struct in_addr guest_addr,
+ int guest_port)
+{
+ if (is_udp) {
+ if (!udp_listen(htons(host_port), guest_addr.s_addr, htons(guest_port),
+ 0))
+ return -1;
+ } else {
+ if (!solisten(htons(host_port), guest_addr.s_addr, htons(guest_port),
+ 0))
+ return -1;
+ }
+ return 0;
+}