Merge remote-tracking branch 'origin/master' into credentials
[oweals/gnunet.git] / src / gns / gns.h
index 80ebb128877be554fc4f3f0e3d5f12d68ee62188..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
 
-#define GNUNET_GNS_TLD "gnunet"
+#include "gnunet_gns_service.h"
+
+/**
+ * Name of the GNS TLD.
+ */
+#define GNUNET_GNS_TLD "gnu"
+
+/**
+ * Name of the zone key TLD.
+ */
 #define GNUNET_GNS_TLD_ZKEY "zkey"
 #define GNUNET_GNS_TLD_ZKEY "zkey"
-#define GNUNET_GNS_DHT_MAX_UPDATE_INTERVAL 3600
 
 
-#define MAX_DNS_LABEL_LENGTH 63
-#define MAX_DNS_NAME_LENGTH 253
+/**
+ * TLD name used to indicate relative names.
+ */
+#define GNUNET_GNS_TLD_PLUS "+"
+
 
 GNUNET_NETWORK_STRUCT_BEGIN
 
 /**
  * Message from client to GNS service to lookup records.
  */
 
 GNUNET_NETWORK_STRUCT_BEGIN
 
 /**
  * Message from client to GNS service to lookup records.
  */
-struct GNUNET_GNS_ClientLookupMessage
+struct LookupMessage
 {
   /**
 {
   /**
-    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_LOOKUP
+   * Header of type #GNUNET_MESSAGE_TYPE_GNS_LOOKUP
    */
   struct GNUNET_MessageHeader header;
 
    */
   struct GNUNET_MessageHeader header;
 
@@ -53,41 +61,37 @@ struct GNUNET_GNS_ClientLookupMessage
   uint32_t id GNUNET_PACKED;
 
   /**
   uint32_t id GNUNET_PACKED;
 
   /**
-   * Should we look up in the default zone?
-   */
-  uint32_t use_default_zone GNUNET_PACKED;
-
-  /**
-   * If use_default_zone is empty this zone is used for lookup
+   * Zone that is to be used for lookup
    */
    */
-  struct GNUNET_CRYPTO_ShortHashCode zone;
+  struct GNUNET_CRYPTO_EcdsaPublicKey zone;
 
   /**
 
   /**
-   * Should we use a shorten zone?
+   * Local options for where to look for results
+   * (an `enum GNUNET_GNS_LocalOptions` in NBO).
    */
    */
-  uint32_t use_shorten_zone GNUNET_PACKED;
+  int16_t options GNUNET_PACKED;
 
   /**
 
   /**
-   * If use_shorten_zone is set use this zone for shortening
+   * Always 0.
    */
    */
-  struct GNUNET_CRYPTO_ShortHashCode shorten_zone;
+  int16_t reserved GNUNET_PACKED;
 
   /**
    * the type of record to look up
    */
 
   /**
    * the type of record to look up
    */
-  enum GNUNET_GNS_RecordType type;
+  int32_t type GNUNET_PACKED;
 
 
-  /* Followed by the name to look up */
+  /* Followed by the zero-terminated name to look up */
 };
 
 
 /**
  * Message from GNS service to client: new results.
  */
 };
 
 
 /**
  * Message from GNS service to client: new results.
  */
-struct GNUNET_GNS_ClientLookupResultMessage
+struct LookupResultMessage
 {
   /**
 {
   /**
-    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_RESULT
+    * Header of type #GNUNET_MESSAGE_TYPE_GNS_LOOKUP_RESULT
    */
   struct GNUNET_MessageHeader header;
 
    */
   struct GNUNET_MessageHeader header;
 
@@ -98,109 +102,14 @@ struct GNUNET_GNS_ClientLookupResultMessage
 
   /**
    * The number of records contained in response
 
   /**
    * 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*/
-
-};
-
-/**
- * Message from client to GNS service to shorten names.
- */
-struct GNUNET_GNS_ClientShortenMessage
-{
-  /**
-    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN
-   */
-  struct GNUNET_MessageHeader header;
-
-  /**
-   * Unique identifier for this request
-   */
-  uint32_t id GNUNET_PACKED;
-
-  /**
-   * Should we look up in the default zone?
    */
    */
-  uint32_t use_default_zone GNUNET_PACKED;
+  uint32_t rd_count GNUNET_PACKED;
 
 
-  /**
-   * If use_default_zone is empty this zone is used for lookup
-   */
-  struct GNUNET_CRYPTO_ShortHashCode zone;
-  
-  /**
-   * Should we use a shorten zone?
-   */
-  uint32_t use_shorten_zone GNUNET_PACKED;
+  /* followed by rd_count GNUNET_GNSRECORD_Data structs*/
 
 
-  /**
-   * If use_shorten_zone is set use this zone for shortening
-   */
-  struct GNUNET_CRYPTO_ShortHashCode shorten_zone;
-  
-  /* Followed by the name to shorten up */
 };
 
 
 };
 
 
-/**
- * Message from GNS service to client: shorten result.
- */
-struct GNUNET_GNS_ClientShortenResultMessage
-{
-  /**
-    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_SHORTEN_RESULT
-   */
-  struct GNUNET_MessageHeader header;
-
-  /**
-   * Unique identifier for this request (for key collisions).
-   */
-  uint32_t id GNUNET_PACKED;
-
-  /* followed by the shortened name or '\0' for no result*/
-
-};
-
-/**
- * Message from client to GNS service to lookup an authority of a name.
- */
-struct GNUNET_GNS_ClientGetAuthMessage
-{
-  /**
-    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH
-   */
-  struct GNUNET_MessageHeader header;
-
-  /**
-   * Unique identifier for this request
-   */
-  uint32_t id GNUNET_PACKED;
-
-  /* Followed by the name to get authority for */
-};
-
-
-/**
- * Message from GNS service to client: authority result.
- */
-struct GNUNET_GNS_ClientGetAuthResultMessage
-{
-  /**
-    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_GET_AUTH_RESULT
-   */
-  struct GNUNET_MessageHeader header;
-
-  /**
-   * Unique identifier for this request (for key collisions).
-   */
-  uint32_t id GNUNET_PACKED;
-
-  /* followed by the authority part of the name or '\0' for no result*/
-
-};
 GNUNET_NETWORK_STRUCT_END
 
 #endif
 GNUNET_NETWORK_STRUCT_END
 
 #endif