#include "platform.h"
#include "plugin_block.h"
+#include "gnunet_block_dns.h"
#define DEBUG_DHT GNUNET_NO
case GNUNET_BLOCK_TYPE_DNS:
if (xquery_size != 0)
return GNUNET_BLOCK_EVALUATION_REQUEST_INVALID;
+
if (reply_block_size == 0)
return GNUNET_BLOCK_EVALUATION_REQUEST_VALID;
- return GNUNET_BLOCK_EVALUATION_OK_LAST;
+
+ if (reply_block_size < sizeof(struct GNUNET_DNS_Record))
+ return GNUNET_BLOCK_EVALUATION_RESULT_INVALID;
+
+ const struct GNUNET_DNS_Record* rec = reply_block;
+ if(reply_block_size != (sizeof(struct GNUNET_DNS_Record) + rec->namelen - 1))
+ return GNUNET_BLOCK_EVALUATION_RESULT_INVALID;
+
+ /* How to decide whether there are no more? */
+ return GNUNET_BLOCK_EVALUATION_OK_MORE;
default:
return GNUNET_BLOCK_EVALUATION_TYPE_NOT_SUPPORTED;
}
{
if (type != GNUNET_BLOCK_TYPE_DNS)
return GNUNET_SYSERR;
- return GNUNET_SYSERR;
+ GNUNET_CRYPTO_hash(block, block_size, key);
+ return GNUNET_OK;
}
/**
--- /dev/null
+#ifndef _GNVPN_BLOCKDNS_H_
+#define _GNVPN_BLOCKDNS_H_
+
+#include "gnunet_common.h"
+
+/**
+ * Bitmask describing what ip-services are supported by services
+ * It is 2 bytes long
+ */
+struct GNUNET_ipservices {
+ unsigned UDP:1 GNUNET_PACKED;
+ unsigned TCP:1 GNUNET_PACKED;
+ unsigned RESERVED:14 GNUNET_PACKED;
+};
+
+/**
+ * This is the structure describing an dns-record such as www.gnunet.
+ */
+struct GNUNET_DNS_Record
+{
+ /**
+ * The peer providing this service
+ */
+ struct GNUNET_PeerIdentity peer;
+
+ /**
+ * The descriptor for the service
+ * (a peer may provide more than one service)
+ */
+ GNUNET_HashCode service_descriptor;
+
+ /**
+ * What connection-types (UDP, TCP, ...) are supported by the service
+ */
+ struct GNUNET_ipservices connectiontypes;
+
+ /**
+ * The length of the name of the service
+ */
+ unsigned char namelen;
+
+ /**
+ * The name of the service
+ * This is namelen bytes
+ */
+ char name[1];
+};
+
+#endif
+++ /dev/null
-#ifndef _GNVPN_BLOCKDNS_H_
-#define _GNVPN_BLOCKDNS_H_
-
-#include "gnunet_common.h"
-
-/**
- * Bitmask describing what ip-services are supported by services
- * It is 2 bytes long
- */
-struct GNUNET_ipservices {
- unsigned UDP:1 GNUNET_PACKED;
- unsigned TCP:1 GNUNET_PACKED;
- unsigned RESERVED:14 GNUNET_PACKED;
-};
-
-/**
- * This is the structure describing an dns-record such as www.gnunet.
- */
-struct GNUNET_DNS_Record
-{
- /**
- * The peer providing this service
- */
- struct GNUNET_PeerIdentity peer;
-
- /**
- * The descriptor for the service
- * (a peer may provide more than one service)
- */
- GNUNET_HashCode service_descriptor;
-
- /**
- * What connection-types (UDP, TCP, ...) are supported by the service
- */
- struct GNUNET_ipservices connectiontypes;
-
- /**
- * The length of the name of the service
- */
- unsigned char namelen;
-
- /**
- * The name of the service
- * This is namelen bytes
- */
- char name[1];
-};
-
-#endif