[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r13218 - gnunet/src/vpn
From: |
gnunet |
Subject: |
[GNUnet-SVN] r13218 - gnunet/src/vpn |
Date: |
Fri, 8 Oct 2010 11:03:37 +0200 |
Author: toelke
Date: 2010-10-08 11:03:37 +0200 (Fri, 08 Oct 2010)
New Revision: 13218
Modified:
gnunet/src/vpn/Makefile.am
gnunet/src/vpn/gnunet-service-dns.c
Log:
lookup .gnunet-addresses in the dht
Modified: gnunet/src/vpn/Makefile.am
===================================================================
--- gnunet/src/vpn/Makefile.am 2010-10-08 09:03:37 UTC (rev 13217)
+++ gnunet/src/vpn/Makefile.am 2010-10-08 09:03:37 UTC (rev 13218)
@@ -51,6 +51,7 @@
$(top_builddir)/src/core/libgnunetcore.la \
$(top_builddir)/src/statistics/libgnunetstatistics.la \
$(top_builddir)/src/util/libgnunetutil.la \
+ $(top_builddir)/src/dht/libgnunetdht.la \
$(GN_LIBINTL)
#check_PROGRAMS = \
Modified: gnunet/src/vpn/gnunet-service-dns.c
===================================================================
--- gnunet/src/vpn/gnunet-service-dns.c 2010-10-08 09:03:37 UTC (rev 13217)
+++ gnunet/src/vpn/gnunet-service-dns.c 2010-10-08 09:03:37 UTC (rev 13218)
@@ -33,12 +33,17 @@
#include "gnunet-vpn-pretty-print.h"
#include "gnunet_container_lib.h"
#include "gnunet-dns-parser.h"
+#include "gnunet_dht_service.h"
+#include "gnunet_block_lib.h"
+#include "gnunet_block_dns.h"
struct dns_cls {
struct GNUNET_SCHEDULER_Handle *sched;
struct GNUNET_NETWORK_Handle *dnsout;
+ struct GNUNET_DHT_Handle *dht;
+
unsigned short dnsoutport;
struct answer_packet_list *head;
@@ -70,6 +75,20 @@
GNUNET_OS_start_process(NULL, NULL, "gnunet-helper-hijack-dns",
"gnunet-hijack-dns", "-d", port_s, NULL);
}
+void receive_dht(void *cls,
+ struct GNUNET_TIME_Absolute exp,
+ const GNUNET_HashCode *key,
+ const struct GNUNET_PeerIdentity *const *get_path,
+ const struct GNUNET_PeerIdentity *const *put_path,
+ enum GNUNET_BLOCK_Type type,
+ size_t size,
+ const void *data)
+{
+ GNUNET_assert(type == GNUNET_BLOCK_TYPE_DNS);
+ const struct GNUNET_DNS_Record* rec = data;
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Got block of size %s, peer: %08x, desc:
%08x\n", size, *((unsigned int*)&rec->peer), *((unsigned
int*)&rec->service_descriptor));
+}
+
/**
* This receives the dns-payload from the daemon-vpn and sends it on over the
udp-socket
*/
@@ -82,6 +101,20 @@
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_HashCode key;
+ GNUNET_CRYPTO_hash(pdns->queries[0]->name,
pdns->queries[0]->namelen, &key);
+ GNUNET_DHT_get_start(mycls.dht,
+ GNUNET_TIME_UNIT_MINUTES,
+ GNUNET_BLOCK_TYPE_DNS,
+ &key,
+ GNUNET_DHT_RO_NONE,
+ NULL,
+ 0,
+ NULL,
+ 0,
+ receive_dht,
+ NULL);
+ goto out;
}
GNUNET_free(pdns);
@@ -98,6 +131,7 @@
/* int r = */ GNUNET_NETWORK_socket_sendto(mycls.dnsout, dns,
ntohs(pkt->hdr.size) - sizeof(struct query_packet) + 1, (struct sockaddr*)
&dest, sizeof dest);
+out:
GNUNET_SERVER_receive_done(client, GNUNET_OK);
}
@@ -168,6 +202,7 @@
const struct GNUNET_SCHEDULER_TaskContext *tc)
{
unhijack(mycls.dnsoutport);
+ GNUNET_DHT_disconnect(mycls.dht);
}
/**
@@ -195,6 +230,8 @@
}
}
+ mycls.dht = GNUNET_DHT_connect(sched, cfg, 1024);
+
struct sockaddr_in addr;
mycls.sched = sched;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r13218 - gnunet/src/vpn,
gnunet <=