Merge remote-tracking branch 'origin/master' into credentials
[oweals/gnunet.git] / src / gns / gns.h
index df964939a93324f9b465360b9027108818e23df2..d77bf53c6aed09e31e73034859826f4145e5d96c 100644 (file)
@@ -1,10 +1,10 @@
 /*
       This file is part of GNUnet
 /*
       This file is part of GNUnet
-      (C) 2012 Christian Grothoff (and other contributing authors)
+      Copyright (C) 2012-2013 GNUnet e.V.
 
       GNUnet is free software; you can redistribute it and/or modify
       it under the terms of the GNU General Public License as published
 
       GNUnet is free software; you can redistribute it and/or modify
       it under the terms of the GNU General Public License as published
-      by the Free Software Foundation; either version 2, or (at your
+      by the Free Software Foundation; either version 3, or (at your
       option) any later version.
 
       GNUnet is distributed in the hope that it will be useful, but
       option) any later version.
 
       GNUnet is distributed in the hope that it will be useful, but
 
       You should have received a copy of the GNU General Public License
       along with GNUnet; see the file COPYING.  If not, write to the
 
       You should have received a copy of the GNU General Public License
       along with GNUnet; see the file COPYING.  If not, write to the
-      Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-      Boston, MA 02111-1307, USA.
+      Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+      Boston, MA 02110-1301, USA.
  */
  */
-
-#include "gnunet_gns_service.h"
-
 /**
  * @file gns/gns.h
  * @brief IPC messages between GNS API and GNS service
 /**
  * @file gns/gns.h
  * @brief IPC messages between GNS API and GNS service
 #ifndef GNS_H
 #define GNS_H
 
 #ifndef GNS_H
 #define GNS_H
 
-GNUNET_NETWORK_STRUCT_BEGIN
+#include "gnunet_gns_service.h"
 
 /**
 
 /**
- * Message from client to GNS service to lookup records.
+ * Name of the GNS TLD.
  */
  */
-struct GNUNET_GNS_ClientLookupMessage
-{
-  /**
-    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_LOOKUP
-   */
-  struct GNUNET_MessageHeader header;
-
-  /**
-   * A key. TODO some uid
-   */
-  GNUNET_HashCode key;
+#define GNUNET_GNS_TLD "gnu"
 
 
-  /**
  * Unique identifier for this request (for key collisions).
  */
-  uint64_t unique_id GNUNET_PACKED;
+/**
* Name of the zone key TLD.
+ */
+#define GNUNET_GNS_TLD_ZKEY "zkey"
 
 
-  /**
-   * the type of record to look up
-   */
-  // FIXME: bad type - should be of GNUNET_GNS_RecordType
-  enum GNUNET_GNS_RecordType type;
+/**
+ * TLD name used to indicate relative names.
+ */
+#define GNUNET_GNS_TLD_PLUS "+"
 
 
-  /* Followed by the name to look up */
-};
 
 
+GNUNET_NETWORK_STRUCT_BEGIN
 
 /**
 
 /**
- * Message from GNS service to client: new results.
+ * Message from client to GNS service to lookup records.
  */
  */
-struct GNUNET_GNS_ClientLookupResultMessage
+struct LookupMessage
 {
   /**
 {
   /**
-    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_RESULT
+   * Header of type #GNUNET_MESSAGE_TYPE_GNS_LOOKUP
    */
   struct GNUNET_MessageHeader header;
 
   /**
    * Unique identifier for this request (for key collisions).
    */
    */
   struct GNUNET_MessageHeader header;
 
   /**
    * Unique identifier for this request (for key collisions).
    */
-  // FIXME: unaligned
-  uint64_t unique_id;
+  uint32_t id GNUNET_PACKED;
 
   /**
 
   /**
-   * A key. TODO some uid
-   * // FIXME: why hash?
+   * Zone that is to be used for lookup
    */
    */
-  GNUNET_HashCode key;
-
-  /**
-   * The number of records contained in response
-   */  
-  uint32_t rd_count;
-
-  // FIXME: what format has a GNS_Record?
-  /* followed by rd_count GNUNET_NAMESTORE_RecordData structs*/
-
-};
+  struct GNUNET_CRYPTO_EcdsaPublicKey zone;
 
 
-/**
- * Message from client to GNS service to lookup records.
- */
-struct GNUNET_GNS_ClientShortenMessage
-{
   /**
   /**
-    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN
+   * Local options for where to look for results
+   * (an `enum GNUNET_GNS_LocalOptions` in NBO).
    */
    */
-  struct GNUNET_MessageHeader header;
+  int16_t options GNUNET_PACKED;
 
   /**
 
   /**
-   * A key. TODO some uid
+   * Always 0.
    */
    */
-  GNUNET_HashCode key;
+  int16_t reserved GNUNET_PACKED;
 
   /**
 
   /**
-   * Unique identifier for this request (for key collisions).
+   * the type of record to look up
    */
    */
-  // FIXME: unaligned
-  uint64_t unique_id GNUNET_PACKED;
+  int32_t type GNUNET_PACKED;
 
 
-  /* Followed by the name to shorten up */
+  /* Followed by the zero-terminated name to look up */
 };
 
 
 /**
 };
 
 
 /**
- * Message from GNS service to client: shorten result.
+ * Message from GNS service to client: new results.
  */
  */
-struct GNUNET_GNS_ClientShortenResultMessage
+struct LookupResultMessage
 {
   /**
 {
   /**
-    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN_RESULT
+    * Header of type #GNUNET_MESSAGE_TYPE_GNS_LOOKUP_RESULT
    */
   struct GNUNET_MessageHeader header;
 
   /**
    * Unique identifier for this request (for key collisions).
    */
    */
   struct GNUNET_MessageHeader header;
 
   /**
    * Unique identifier for this request (for key collisions).
    */
-  // FIXME: unaligned
-  uint64_t unique_id GNUNET_PACKED;
+  uint32_t id GNUNET_PACKED;
 
   /**
 
   /**
-   * A key. TODO some uid
-   * // FIXME: why hash?
+   * The number of records contained in response
    */
    */
-  GNUNET_HashCode key;
+  uint32_t rd_count GNUNET_PACKED;
 
 
-  /* followed by the shortened name or '\0' for no result*/
+  /* followed by rd_count GNUNET_GNSRECORD_Data structs*/
 
 };
 
 };
+
+
 GNUNET_NETWORK_STRUCT_END
 
 #endif
 GNUNET_NETWORK_STRUCT_END
 
 #endif