diff options
author | Philipp Tölke <toelke@in.tum.de> | 2010-10-07 05:41:51 +0000 |
---|---|---|
committer | Philipp Tölke <toelke@in.tum.de> | 2010-10-07 05:41:51 +0000 |
commit | e96b0929c5f814b5d630d5dd12683d62ec02daec (patch) | |
tree | 7ca4c9d1a51d7feba58fb262e1e835656e47685c /src | |
parent | 5452bed087d821e8f0c3ec5dda6348cbe343e9e4 (diff) | |
download | gnunet-e96b0929c5f814b5d630d5dd12683d62ec02daec.tar.gz gnunet-e96b0929c5f814b5d630d5dd12683d62ec02daec.zip |
Detect and log queries for .gnunet.-Domains
Diffstat (limited to 'src')
-rw-r--r-- | src/vpn/gnunet-service-dns.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/vpn/gnunet-service-dns.c b/src/vpn/gnunet-service-dns.c index 229741252..1545d6cb2 100644 --- a/src/vpn/gnunet-service-dns.c +++ b/src/vpn/gnunet-service-dns.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include "gnunet-vpn-packet.h" | 32 | #include "gnunet-vpn-packet.h" |
33 | #include "gnunet-vpn-pretty-print.h" | 33 | #include "gnunet-vpn-pretty-print.h" |
34 | #include "gnunet_container_lib.h" | 34 | #include "gnunet_container_lib.h" |
35 | #include "gnunet-dns-parser.h" | ||
35 | 36 | ||
36 | struct dns_cls { | 37 | struct dns_cls { |
37 | struct GNUNET_SCHEDULER_Handle *sched; | 38 | struct GNUNET_SCHEDULER_Handle *sched; |
@@ -69,10 +70,21 @@ void unhijack(unsigned short port) { | |||
69 | GNUNET_OS_start_process(NULL, NULL, "gnunet-helper-hijack-dns", "gnunet-hijack-dns", "-d", port_s, NULL); | 70 | GNUNET_OS_start_process(NULL, NULL, "gnunet-helper-hijack-dns", "gnunet-hijack-dns", "-d", port_s, NULL); |
70 | } | 71 | } |
71 | 72 | ||
73 | /** | ||
74 | * This receives the dns-payload from the daemon-vpn and sends it on over the udp-socket | ||
75 | */ | ||
72 | void receive_query(void *cls, struct GNUNET_SERVER_Client *client, const struct GNUNET_MessageHeader *message) | 76 | void receive_query(void *cls, struct GNUNET_SERVER_Client *client, const struct GNUNET_MessageHeader *message) |
73 | { | 77 | { |
74 | struct query_packet* pkt = (struct query_packet*)message; | 78 | struct query_packet* pkt = (struct query_packet*)message; |
75 | struct dns_pkt* dns = (struct dns_pkt*)pkt->data; | 79 | struct dns_pkt* dns = (struct dns_pkt*)pkt->data; |
80 | struct dns_pkt_parsed* pdns = parse_dns_packet(dns); | ||
81 | |||
82 | if (pdns->queries[0]->namelen > 9 && | ||
83 | 0 == strncmp(pdns->queries[0]->name+(pdns->queries[0]->namelen - 9), ".gnunet.", 9)) { | ||
84 | GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Query for .gnunet!\n"); | ||
85 | } | ||
86 | |||
87 | GNUNET_free(pdns); | ||
76 | 88 | ||
77 | struct sockaddr_in dest; | 89 | struct sockaddr_in dest; |
78 | memset(&dest, 0, sizeof dest); | 90 | memset(&dest, 0, sizeof dest); |
@@ -136,8 +148,6 @@ static void read_response (void *cls, const struct GNUNET_SCHEDULER_TaskContext | |||
136 | answer->pkt.dst_port = query_states[dns->s.id].local_port; | 148 | answer->pkt.dst_port = query_states[dns->s.id].local_port; |
137 | memcpy(answer->pkt.data, buf, r); | 149 | memcpy(answer->pkt.data, buf, r); |
138 | 150 | ||
139 | pkt_printf_dns((struct dns_pkt*)buf); | ||
140 | |||
141 | GNUNET_CONTAINER_DLL_insert_after(mycls.head, mycls.tail, mycls.tail, answer); | 151 | GNUNET_CONTAINER_DLL_insert_after(mycls.head, mycls.tail, mycls.tail, answer); |
142 | 152 | ||
143 | /* struct GNUNET_CONNECTION_TransmitHandle* th = */ GNUNET_SERVER_notify_transmit_ready(query_states[dns->s.id].client, len, GNUNET_TIME_UNIT_FOREVER_REL, &send_answer, query_states[dns->s.id].client); | 153 | /* struct GNUNET_CONNECTION_TransmitHandle* th = */ GNUNET_SERVER_notify_transmit_ready(query_states[dns->s.id].client, len, GNUNET_TIME_UNIT_FOREVER_REL, &send_answer, query_states[dns->s.id].client); |