diff options
author | Philipp Tölke <toelke@in.tum.de> | 2010-09-21 11:04:56 +0000 |
---|---|---|
committer | Philipp Tölke <toelke@in.tum.de> | 2010-09-21 11:04:56 +0000 |
commit | f27f0f6afa53f94878f18bef86a5f96f8aae13c4 (patch) | |
tree | 21c328f0c3520df22a755f4a8491d47e726895ef /src | |
parent | 4b7d5b4823c5f3b89f6ed98ed1ccd5862d5f8237 (diff) | |
download | gnunet-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.c | 14 |
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 | ||
62 | void receive_query(void *cls, struct GNUNET_SERVER_Client *client, const struct GNUNET_MessageHeader *message) | 62 | void 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 | } |