Merge remote-tracking branch 'origin/master' into credentials
[oweals/gnunet.git] / src / gns / gns.h
index 695722b785864287f783ee505d5ec8bcf46fa12a..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.
  */
  */
-
 /**
  * @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"
 
 
+/**
+ * Name of the GNS TLD.
+ */
+#define GNUNET_GNS_TLD "gnu"
+
+/**
+ * Name of the zone key TLD.
+ */
+#define GNUNET_GNS_TLD_ZKEY "zkey"
+
+/**
+ * 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.
  */
 
 /**
  * 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;
 
   /**
    * 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;
 
   /**
 
   /**
-   * the type of record to look up
+   * Zone that is to be used for lookup
+   */
+  struct GNUNET_CRYPTO_EcdsaPublicKey zone;
+
+  /**
+   * Local options for where to look for results
+   * (an `enum GNUNET_GNS_LocalOptions` in NBO).
+   */
+  int16_t options GNUNET_PACKED;
+
+  /**
+   * Always 0.
    */
    */
-  // FIXME: bad type
-  int type;
+  int16_t reserved GNUNET_PACKED;
 
   /**
 
   /**
-   * Length of name to lookup
-   * // FIXME: redundant
+   * the type of record to look up
    */
    */
-  uint32_t namelen;
+  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_ClientResultMessage
+struct LookupResultMessage
 {
   /**
 {
   /**
-    * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_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;
-
-  /**
-   * A key. TODO some uid
-   * // FIXME: why hash?
-   */
-  GNUNET_HashCode key;
+  uint32_t id GNUNET_PACKED;
 
   /**
    * The number of records contained in response
 
   /**
    * The number of records contained in response
-   */  
-  uint32_t num_records;
+   */
+  uint32_t rd_count GNUNET_PACKED;
 
 
-  // FIXME: what format has a GNS_Record?
-  /* followed by num_records GNUNET_GNS_Records*/
+  /* followed by rd_count GNUNET_GNSRECORD_Data structs*/
 
 };
 
 
 };