[This project is abandoned, see the end of this README for more information.] This program hides UDP traffic as TCP traffic in order to bypass certain firewalls. It is not designed to bypass rigorous deep packet inspection; for example, there is no window scaling; all data received as UDP will be immediately transmitted as TCP with a fixed window size. There is also no retransmission, although that could be implemented (at a detriment to the overall network health). This program is intended to be C99 and POSIX compatible, and requires only libev. If desired, it should be easily portable to use libevent instead, as it uses only basic event-based programming concepts. Example usage: # gmake [ ... ] # ./test.sh IPv4 test succeeded. IPv6 test succeeded. server# openvpn --config ... --proto udp6 --local ::1 server# udpintcp server server 11940 ::1 1194 client# udpintcp client ::1 1194 server 11940 client# openvpn --config ... --proto udp6 --remote ::1 11940 I've abandoned this project because I don't think it's that useful in practice, since meddling middleboxes tend to screw with the oddities required by UDP in TCP (no retransmissions, for one). For tunneling, SOCKS seems like a better solution, especially since QUIC is dead.