#include "reorderer.h"
#include "tunprotocol.h"
#include "rsdecoder.h"
+#include "pacer.h"
using namespace std;
in6_addr myaddr = get_addr(argv[1]);
in6_addr remoteaddr = get_addr(argv[2]);
GREProtocol gre(myaddr, remoteaddr);
+ Pacer gre_pacer(&gre, 40000, 6);
TUNProtocol tun("tungre");
- Reorderer tun_reorderer(&tun);
+ Pacer tun_pacer(&tun, 40000, 6);
+ Reorderer tun_reorderer(&tun_pacer);
RSDecoder tun_decoder(&tun_reorderer);
fd_set fds;
FD_ZERO(&fds);
for ( ;; ) {
+ timeval tv = { 1, 0 };
FD_SET(gre.fd(), &fds);
FD_SET(tun.fd(), &fds);
- int ret = select(1024, &fds, NULL, NULL, NULL);
+ tun_pacer.possibly_adjust_tv(&tv);
+ int ret = select(1024, &fds, NULL, NULL, &tv);
if (ret == -1) {
perror("select");
continue;
gre.read_packet(&tun_decoder);
}
if (FD_ISSET(tun.fd(), &fds)) {
- tun.read_packet(&gre);
+ tun.read_packet(&gre_pacer);
}
+ tun_pacer.possibly_flush_packets();
}
}