From e96b0929c5f814b5d630d5dd12683d62ec02daec Mon Sep 17 00:00:00 2001 From: =?utf8?q?Philipp=20T=C3=B6lke?= Date: Thu, 7 Oct 2010 05:41:51 +0000 Subject: [PATCH] Detect and log queries for .gnunet.-Domains --- src/vpn/gnunet-service-dns.c | 14 ++++++++++++-- 1 file 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 @@ #include "gnunet-vpn-packet.h" #include "gnunet-vpn-pretty-print.h" #include "gnunet_container_lib.h" +#include "gnunet-dns-parser.h" struct dns_cls { struct GNUNET_SCHEDULER_Handle *sched; @@ -69,10 +70,21 @@ void unhijack(unsigned short port) { GNUNET_OS_start_process(NULL, NULL, "gnunet-helper-hijack-dns", "gnunet-hijack-dns", "-d", port_s, NULL); } +/** + * This receives the dns-payload from the daemon-vpn and sends it on over the udp-socket + */ void receive_query(void *cls, struct GNUNET_SERVER_Client *client, const struct GNUNET_MessageHeader *message) { struct query_packet* pkt = (struct query_packet*)message; struct dns_pkt* dns = (struct dns_pkt*)pkt->data; + struct dns_pkt_parsed* pdns = parse_dns_packet(dns); + + if (pdns->queries[0]->namelen > 9 && + 0 == strncmp(pdns->queries[0]->name+(pdns->queries[0]->namelen - 9), ".gnunet.", 9)) { + GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Query for .gnunet!\n"); + } + + GNUNET_free(pdns); struct sockaddr_in dest; memset(&dest, 0, sizeof dest); @@ -136,8 +148,6 @@ static void read_response (void *cls, const struct GNUNET_SCHEDULER_TaskContext answer->pkt.dst_port = query_states[dns->s.id].local_port; memcpy(answer->pkt.data, buf, r); - pkt_printf_dns((struct dns_pkt*)buf); - GNUNET_CONTAINER_DLL_insert_after(mycls.head, mycls.tail, mycls.tail, answer); /* 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); -- 2.25.1