]> git.sesse.net Git - greproxy/blobdiff - tunprotocol.cpp
Merge branch 'master' of morgental.zrh.sesse.net:greproxy
[greproxy] / tunprotocol.cpp
index b8b63a3736f02dfd1d5c84259a97050b59d1e70c..7a52362c5482ee8e93a7d0cab04038b9faac2c89 100644 (file)
@@ -1,9 +1,10 @@
-#include <string.h>
 #include <fcntl.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
 #include <netinet/in.h>
-#include <arpa/inet.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <unistd.h>
 #include <linux/if.h>
 #include <linux/if_tun.h>
 
@@ -38,10 +39,10 @@ int tun_open(const char *name) {
 }  // namespace
 
 TUNProtocol::TUNProtocol(const char *devname)
-       : tunfd(tun_open(devname)) {
+       : tunfd(tun_open(devname)), seq(0) {
 }
 
-void TUNProtocol::send_packet(uint16_t proto, const string &data)
+void TUNProtocol::send_packet(uint16_t proto, const string &data, int incoming_seq)
 {
        char buf[4096];
 
@@ -68,7 +69,7 @@ int TUNProtocol::fd() const
        return tunfd;
 }
 
-void TUNProtocol::read_packet(Protocol *sender)
+void TUNProtocol::read_packet(Sender *sender)
 {
        char buf[4096];
        int ret = read(tunfd, buf, sizeof(buf));
@@ -88,6 +89,6 @@ void TUNProtocol::read_packet(Protocol *sender)
        ptr += 2;
        //fprintf(stderr, "tun packet: flags=%x proto=%x len=%d\n",
        //      flags, proto, ret - 4);
-       sender->send_packet(proto, string(ptr, buf + ret));
+       sender->send_packet(proto, string(ptr, buf + ret), seq++);
 }