[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r12453 - gnunet/src/vpn,
gnunet <=