gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r12453 - gnunet/src/vpn


From: gnunet
Subject: [GNUnet-SVN] r12453 - gnunet/src/vpn
Date: Tue, 3 Aug 2010 20:59:06 +0200

Author: toelke
Date: 2010-08-03 20:59:06 +0200 (Tue, 03 Aug 2010)
New Revision: 12453

Modified:
   gnunet/src/vpn/gnunet-daemon-vpn.c
   gnunet/src/vpn/gnunet-vpn-packet.h
   gnunet/src/vpn/gnunet-vpn-pretty-print.c
   gnunet/src/vpn/gnunet-vpn-pretty-print.h
Log:
handle ipv4-packets

Modified: gnunet/src/vpn/gnunet-daemon-vpn.c
===================================================================
--- gnunet/src/vpn/gnunet-daemon-vpn.c  2010-08-03 18:58:59 UTC (rev 12452)
+++ gnunet/src/vpn/gnunet-daemon-vpn.c  2010-08-03 18:59:06 UTC (rev 12453)
@@ -66,7 +66,7 @@
        mycls->helper_in = GNUNET_DISK_pipe(1);
        mycls->helper_out = GNUNET_DISK_pipe(1);
 
-       mycls->helper_pid = GNUNET_OS_start_process(mycls->helper_in, 
mycls->helper_out, "gnunet-vpn-helper", "gnunet-vpn-helper", NULL);
+       mycls->helper_pid = GNUNET_OS_start_process(mycls->helper_in, 
mycls->helper_out, "gnunet-helper-vpn", "gnunet-helper-vpn", NULL);
 
        mycls->fh_from_helper = GNUNET_DISK_pipe_handle (mycls->helper_out, 
GNUNET_DISK_PIPE_END_READ);
 
@@ -112,23 +112,36 @@
 static void message_token(void *cls, void *client, const struct 
GNUNET_MessageHeader *message) {
        if (ntohs(message->type) != GNUNET_MESSAGE_TYPE_VPN_HELPER) return;
 
-       struct ip6_pkt *pkt6 = (struct ip6_pkt*) message;
-       struct ip6_tcp *pkt6_tcp;
-       struct ip6_udp *pkt6_udp;
+       struct tun_pkt *pkt_tun = (struct tun_pkt*) message;
 
-       pkt_printf(pkt6);
-       switch(pkt6->ip6_hdr.nxthdr) {
-               case 0x06:
-                       pkt6_tcp = (struct ip6_tcp*)pkt6;
-                       pkt_printf_ip6tcp(pkt6_tcp);
-                       break;
-               case 0x11:
-                       pkt6_udp = (struct ip6_udp*)pkt6;
-                       pkt_printf_ip6udp(pkt6_udp);
-                       if (ntohs(pkt6_udp->udp_hdr.dpt) == 53) {
-                               pkt_printf_ip6dns((struct 
ip6_udp_dns*)pkt6_udp);
-                       }
-                       break;
+       fprintf(stderr, "Packet, Type: %x\n", ntohs(pkt_tun->tun.type));
+
+       if (ntohs(pkt_tun->tun.type) == 0x86dd) {
+               struct ip6_pkt *pkt6 = (struct ip6_pkt*) message;
+               struct ip6_tcp *pkt6_tcp;
+               struct ip6_udp *pkt6_udp;
+
+               pkt_printf(pkt6);
+               switch(pkt6->ip6_hdr.nxthdr) {
+                       case 0x06:
+                               pkt6_tcp = (struct ip6_tcp*)pkt6;
+                               pkt_printf_ip6tcp(pkt6_tcp);
+                               break;
+                       case 0x11:
+                               pkt6_udp = (struct ip6_udp*)pkt6;
+                               pkt_printf_ip6udp(pkt6_udp);
+                               if (ntohs(pkt6_udp->udp_hdr.dpt) == 53) {
+                                       pkt_printf_ip6dns((struct 
ip6_udp_dns*)pkt6_udp);
+                               }
+                               break;
+               }
+       } else if (ntohs(pkt_tun->tun.type) == 0x0800) {
+               struct ip_pkt *pkt = (struct ip_pkt*) message;
+               struct ip_udp *udp = (struct ip_udp*) message;
+               fprintf(stderr, "IPv4\n");
+               if (pkt->ip_hdr.proto == 0x11 && ntohl(udp->ip_hdr.dadr) == 
0x0a0a0a02 && ntohs(udp->udp_hdr.dpt) == 53 ) {
+                       pkt_printf_ipdns((struct ip_udp_dns*)udp);
+               }
        }
 
 }

Modified: gnunet/src/vpn/gnunet-vpn-packet.h
===================================================================
--- gnunet/src/vpn/gnunet-vpn-packet.h  2010-08-03 18:58:59 UTC (rev 12452)
+++ gnunet/src/vpn/gnunet-vpn-packet.h  2010-08-03 18:59:06 UTC (rev 12453)
@@ -100,7 +100,17 @@
        unsigned char* data;
 };
 
+struct udp_dns {
+       struct udp_pkt udp_hdr;
+       struct dns_pkt data;
+};
+
 // Complete Packets
+struct tun_pkt {
+       struct GNUNET_MessageHeader shdr;
+       struct pkt_tun tun;
+};
+
 struct ip6_pkt {
        struct GNUNET_MessageHeader shdr;
        struct pkt_tun tun;
@@ -128,8 +138,7 @@
        struct GNUNET_MessageHeader shdr;
        struct pkt_tun tun;
        struct ip6_hdr ip6_hdr;
-       struct udp_pkt udp_hdr;
-       struct dns_pkt data;
+       struct udp_dns udp_dns;
 };
 
 struct ip_pkt {
@@ -146,12 +155,11 @@
        struct udp_pkt udp_hdr;
        unsigned char data[1];
 };
-
 struct ip_udp_dns {
        struct GNUNET_MessageHeader shdr;
        struct pkt_tun tun;
        struct ip_hdr ip_hdr;
-       struct udp_pkt udp_hdr;
-       struct dns_pkt data;
+       struct udp_dns udp_dns;
 };
+
 #endif

Modified: gnunet/src/vpn/gnunet-vpn-pretty-print.c
===================================================================
--- gnunet/src/vpn/gnunet-vpn-pretty-print.c    2010-08-03 18:58:59 UTC (rev 
12452)
+++ gnunet/src/vpn/gnunet-vpn-pretty-print.c    2010-08-03 18:59:06 UTC (rev 
12453)
@@ -254,7 +254,7 @@
        return 0;
 }}}
 
-void pkt_printf_ip6dns(struct ip6_udp_dns* pkt) {{{
+void pkt_printf_dns(struct udp_dns* pkt) {{{
        printf("DNS-Packet:\n");
        printf("\tid: %d\n", ntohs(pkt->data.id));
        printf("\t%d: %s\n", pkt->data.qr, pkt->data.qr == 0 ? "query" : 
"response");
@@ -292,3 +292,11 @@
                printf("query for %s type=%d (%s) class=%d (%s)\n", 
queries[i]->name, ntohs(queries[i]->qtype), 
dns_types(ntohs(queries[i]->qtype)), ntohs(queries[i]->qclass), 
dns_classes(ntohs(queries[i]->qclass)));
        }
 }}}
+
+void pkt_printf_ip6dns(struct ip6_udp_dns* pkt) {{{
+       pkt_printf_dns(&pkt->udp_dns);
+}}}
+
+void pkt_printf_ipdns(struct ip_udp_dns* pkt) {{{
+       pkt_printf_dns(&pkt->udp_dns);
+}}}

Modified: gnunet/src/vpn/gnunet-vpn-pretty-print.h
===================================================================
--- gnunet/src/vpn/gnunet-vpn-pretty-print.h    2010-08-03 18:58:59 UTC (rev 
12452)
+++ gnunet/src/vpn/gnunet-vpn-pretty-print.h    2010-08-03 18:59:06 UTC (rev 
12453)
@@ -11,4 +11,5 @@
 void pkt_printf_ip6udp(struct ip6_udp* pkt);
 void pkt_printf_ip6dns(struct ip6_udp_dns* pkt);
 
+void pkt_printf_ipdns(struct ip_udp_dns* pkt);
 #endif




reply via email to

[Prev in Thread] Current Thread [Next in Thread]