4 #include <sys/socket.h>
6 #include <netinet/in.h>
12 #include "greprotocol.h"
14 #include "reorderer.h"
15 #include "tunprotocol.h"
19 in6_addr get_addr(const char *str) {
21 if (inet_pton(AF_INET6, str, &ret) != 1) {
22 fprintf(stderr, "Could not parse %s\n", str);
28 int main(int argc, char **argv)
30 in6_addr addr_a = get_addr(argv[1]);
31 in6_addr addr_b = get_addr(argv[2]);
32 in6_addr myaddr = get_addr(argv[3]);
33 GREProtocol gre_a(myaddr, addr_a);
34 GREProtocol gre_b(myaddr, addr_b);
35 Reorderer dst_a(&gre_a);
36 Reorderer dst_b(&gre_b);
41 FD_SET(gre_a.fd(), &fds);
42 FD_SET(gre_b.fd(), &fds);
43 int ret = select(1024, &fds, NULL, NULL, NULL);
49 if (FD_ISSET(gre_a.fd(), &fds)) {
50 gre_a.read_packet(&dst_b);
52 if (FD_ISSET(gre_b.fd(), &fds)) {
53 gre_b.read_packet(&dst_a);