2 #include <netinet/in.h>
5 #include <sys/select.h>
6 #include <sys/socket.h>
8 #include "greprotocol.h"
10 #include "rsencoder.h"
14 in6_addr get_addr(const char *str) {
16 if (inet_pton(AF_INET6, str, &ret) != 1) {
17 fprintf(stderr, "Could not parse %s\n", str);
23 int main(int argc, char **argv)
25 in6_addr addr_a = get_addr(argv[1]);
26 in6_addr addr_b = get_addr(argv[2]);
27 in6_addr myaddr = get_addr(argv[3]);
28 GREProtocol gre_a(myaddr, addr_a);
29 GREProtocol gre_b(myaddr, addr_b);
30 RSEncoder rs_a(&gre_a);
31 RSEncoder rs_b(&gre_b);
32 Reorderer reorder_a(&rs_a);
33 Reorderer reorder_b(&rs_b);
38 FD_SET(gre_a.fd(), &fds);
39 FD_SET(gre_b.fd(), &fds);
40 int ret = select(1024, &fds, NULL, NULL, NULL);
46 if (FD_ISSET(gre_a.fd(), &fds)) {
47 gre_a.read_packet(&reorder_b);
49 if (FD_ISSET(gre_b.fd(), &fds)) {
50 gre_b.read_packet(&reorder_a);