aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhilipp Tölke <toelke@in.tum.de>2010-09-21 11:04:56 +0000
committerPhilipp Tölke <toelke@in.tum.de>2010-09-21 11:04:56 +0000
commitf27f0f6afa53f94878f18bef86a5f96f8aae13c4 (patch)
tree21c328f0c3520df22a755f4a8491d47e726895ef /src
parent4b7d5b4823c5f3b89f6ed98ed1ccd5862d5f8237 (diff)
downloadgnunet-f27f0f6afa53f94878f18bef86a5f96f8aae13c4.tar.gz
gnunet-f27f0f6afa53f94878f18bef86a5f96f8aae13c4.zip
Send DNS-Queries on to the original destination
Diffstat (limited to 'src')
-rw-r--r--src/vpn/gnunet-service-dns.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/vpn/gnunet-service-dns.c b/src/vpn/gnunet-service-dns.c
index a2eac3647..cd521921e 100644
--- a/src/vpn/gnunet-service-dns.c
+++ b/src/vpn/gnunet-service-dns.c
@@ -61,12 +61,20 @@ void unhijack(unsigned short port) {
61 61
62void receive_query(void *cls, struct GNUNET_SERVER_Client *client, const struct GNUNET_MessageHeader *message) 62void receive_query(void *cls, struct GNUNET_SERVER_Client *client, const struct GNUNET_MessageHeader *message)
63{ 63{
64 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Received query!\n");
65 struct query_packet* pkt = (struct query_packet*)message; 64 struct query_packet* pkt = (struct query_packet*)message;
66 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Of length %d\n", ntohs(pkt->hdr.size)); 65 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Received query of length %d\n", ntohs(pkt->hdr.size));
67 struct dns_pkt* dns = (struct dns_pkt*)pkt->data; 66 struct dns_pkt* dns = (struct dns_pkt*)pkt->data;
68 67
69 pkt_printf_dns(dns); 68 struct sockaddr_in dest;
69 memset(&dest, 0, sizeof dest);
70 dest.sin_port = htons(53);
71 dest.sin_addr.s_addr = pkt->orig_to;
72 /* TODO:
73 * State merken, damit die Antwort korrekt zurückgeschickt werden kann
74 */
75
76 int r = GNUNET_NETWORK_socket_sendto(mycls.dnsout, dns, ntohs(pkt->hdr.size) - sizeof(struct query_packet) + 1, (struct sockaddr*) &dest, sizeof dest);
77 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "send %d bytes to socket\n", r);
70 78
71 GNUNET_SERVER_receive_done(client, GNUNET_OK); 79 GNUNET_SERVER_receive_done(client, GNUNET_OK);
72} 80}