diff options
Diffstat (limited to 'src/gns/gns.h')
-rw-r--r-- | src/gns/gns.h | 125 |
1 files changed, 107 insertions, 18 deletions
diff --git a/src/gns/gns.h b/src/gns/gns.h index cb47c81..408b686 100644 --- a/src/gns/gns.h +++ b/src/gns/gns.h @@ -18,6 +18,8 @@ Boston, MA 02111-1307, USA. */ +#include "gnunet_gns_service.h" + /** * @file gns/gns.h * @brief IPC messages between GNS API and GNS service @@ -26,6 +28,13 @@ #ifndef GNS_H #define GNS_H +#define GNUNET_GNS_TLD "gnunet" +#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 + GNUNET_NETWORK_STRUCT_BEGIN /** @@ -39,21 +48,24 @@ struct GNUNET_GNS_ClientLookupMessage struct GNUNET_MessageHeader header; /** - * A key. TODO some uid + * Unique identifier for this request (for key collisions). */ - GNUNET_HashCode key; + uint32_t id GNUNET_PACKED; /** - * Unique identifier for this request (for key collisions). + * Should we look up in the default zone? */ - // FIXME: unaligned - uint64_t unique_id; + uint32_t use_default_zone GNUNET_PACKED; + + /** + * If use_default_zone is empty this zone is used for lookup + */ + struct GNUNET_CRYPTO_ShortHashCode zone; /** * the type of record to look up */ - // FIXME: bad type - should be of GNUNET_GNS_RecordType - int type; + enum GNUNET_GNS_RecordType type; /* Followed by the name to look up */ }; @@ -62,7 +74,7 @@ struct GNUNET_GNS_ClientLookupMessage /** * Message from GNS service to client: new results. */ -struct GNUNET_GNS_ClientResultMessage +struct GNUNET_GNS_ClientLookupResultMessage { /** * Header of type GNUNET_MESSAGE_TYPE_GNS_CLIENT_RESULT @@ -72,26 +84,103 @@ struct GNUNET_GNS_ClientResultMessage /** * 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 */ - uint32_t num_records; + uint32_t rd_count; // FIXME: what format has a GNS_Record? - /* followed by num_records GNUNET_GNS_Records*/ + /* 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; + + /** + * If use_default_zone is empty this zone is used for lookup + */ + struct GNUNET_CRYPTO_ShortHashCode 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 |