From 8ec3f20513e9c84aa157b5cac3efac374af0da9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20Bastian?= Date: Wed, 3 Jun 2020 14:54:26 +0200 Subject: [PATCH] Listen to tun and write back --- main.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/main.cpp b/main.cpp index 469b0cb..b1199c1 100644 --- a/main.cpp +++ b/main.cpp @@ -1,14 +1,33 @@ #include #include +#include #include "TunDevice.hpp" +static const size_t BUFFER_SIZE = 1500; +static volatile bool stopped = false; + +void stop_sig_handler(int signal) { + printf("Received signal %d. Stopping.\n", signal); + stopped = true; +} + int main(void) { + char read_buffer[BUFFER_SIZE]; + + signal(SIGINT, stop_sig_handler); try { TunDevice tun_dev("cvpn%d"); - printf("Tunnel device opened: <%s>, fd <%d>.\nSleeping 10 seconds.\n", + printf("Tunnel device opened: <%s>, fd <%d>.\n", tun_dev.get_dev_name().c_str(), tun_dev.get_fd()); - sleep(10); + while(!stopped) { + size_t packet_size = tun_dev.read_packet(read_buffer, BUFFER_SIZE); + + if(packet_size > 0) { + printf("Received packet of size %lu.\n", packet_size); + tun_dev.write_packet(read_buffer, packet_size); + } + } printf("Shutting down.\n"); } catch(const TunDevice::InitializationError& exn) { fprintf(stderr, "ERROR: %s\n", exn.what());