2 #include <netinet/in.h>
5 #include <sys/select.h>
6 #include <sys/socket.h>
8 #include "greprotocol.h"
13 in6_addr get_addr(const char *str) {
15 if (inet_pton(AF_INET6, str, &ret) != 1) {
16 fprintf(stderr, "Could not parse %s\n", str);
22 int main(int argc, char **argv)
24 in6_addr addr_a = get_addr(argv[1]);
25 in6_addr addr_b = get_addr(argv[2]);
26 in6_addr myaddr = get_addr(argv[3]);
27 GREProtocol gre_a(myaddr, addr_a);
28 GREProtocol gre_b(myaddr, addr_b);
29 Reorderer dst_a(&gre_a);
30 Reorderer dst_b(&gre_b);
35 FD_SET(gre_a.fd(), &fds);
36 FD_SET(gre_b.fd(), &fds);
37 int ret = select(1024, &fds, NULL, NULL, NULL);
43 if (FD_ISSET(gre_a.fd(), &fds)) {
44 gre_a.read_packet(&dst_b);
46 if (FD_ISSET(gre_b.fd(), &fds)) {
47 gre_b.read_packet(&dst_a);