gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r13188 - gnunet/src/vpn


From: gnunet
Subject: [GNUnet-SVN] r13188 - gnunet/src/vpn
Date: Thu, 7 Oct 2010 07:41:51 +0200

Author: toelke
Date: 2010-10-07 07:41:51 +0200 (Thu, 07 Oct 2010)
New Revision: 13188

Modified:
   gnunet/src/vpn/gnunet-service-dns.c
Log:
Detect and log queries for .gnunet.-Domains

Modified: gnunet/src/vpn/gnunet-service-dns.c
===================================================================
--- gnunet/src/vpn/gnunet-service-dns.c 2010-10-07 05:41:50 UTC (rev 13187)
+++ gnunet/src/vpn/gnunet-service-dns.c 2010-10-07 05:41:51 UTC (rev 13188)
@@ -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,11 +70,22 @@
        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);
        dest.sin_port = htons(53);
@@ -136,8 +148,6 @@
                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);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]