2 #include <netinet/in.h>
5 #include <sys/select.h>
6 #include <sys/socket.h>
8 #include "greprotocol.h"
10 #include "tunprotocol.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 myaddr = get_addr(argv[1]);
26 in6_addr remoteaddr = get_addr(argv[2]);
27 GREProtocol gre(myaddr, remoteaddr);
28 TUNProtocol tun("tungre");
30 Reorderer tun_reorderer(&tun);
35 FD_SET(gre.fd(), &fds);
36 FD_SET(tun.fd(), &fds);
37 int ret = select(1024, &fds, NULL, NULL, NULL);
43 if (FD_ISSET(gre.fd(), &fds)) {
44 gre.read_packet(&tun_reorderer);
46 if (FD_ISSET(tun.fd(), &fds)) {
47 tun.read_packet(&gre);