X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Finclude%2Fgnunet_gns_service.h;h=36ca0ab5e81de2e9adaa4ef1736d1fab12da73d5;hb=27c12911f4f2aba2d90099270d70de846e83854f;hp=4e040f7778469aaea109180ee8ef8d5b0e4975f8;hpb=a9e83be91832bfa07b33c8d865cab9f00df05b78;p=oweals%2Fgnunet.git diff --git a/src/include/gnunet_gns_service.h b/src/include/gnunet_gns_service.h index 4e040f777..36ca0ab5e 100644 --- a/src/include/gnunet_gns_service.h +++ b/src/include/gnunet_gns_service.h @@ -1,6 +1,6 @@ /* This file is part of GNUnet - (C) 2012 Christian Grothoff (and other contributing authors) + (C) 2012-2013 Christian Grothoff (and other contributing authors) GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -22,14 +22,7 @@ * @file include/gnunet_gns_service.h * @brief API to the GNS service * @author Martin Schanzenbach - * - * TODO: - * - decide what goes into storage API and what into GNS-service API - * - decide where to pass/expose/check keys / signatures - * - are GNS private keys per peer or per user? */ - - #ifndef GNUNET_GNS_SERVICE_H #define GNUNET_GNS_SERVICE_H @@ -47,46 +40,26 @@ extern "C" /** - * Connection to the GNS service. + * String we use to indicate the local master zone or a + * root entry in the current zone. */ -struct GNUNET_GNS_Handle; +#define GNUNET_GNS_MASTERZONE_STR "+" /** - * Handle to control a get operation. + * Connection to the GNS service. */ -struct GNUNET_GNS_LookupHandle; +struct GNUNET_GNS_Handle; /** - * Handle to control a shorten operation + * Handle to control a lookup operation. */ +struct GNUNET_GNS_LookupRequest; -/** - * Record types - * Based on GNUNET_DNSPARSER_TYPEs (standard DNS) - */ -enum GNUNET_GNS_RecordType -{ - /* Standard DNS */ - GNUNET_GNS_RECORD_TYPE_A = GNUNET_DNSPARSER_TYPE_A, - GNUNET_GNS_RECORD_TYPE_NS = GNUNET_DNSPARSER_TYPE_NS, - GNUNET_GNS_RECORD_TYPE_CNAME = GNUNET_DNSPARSER_TYPE_CNAME, - GNUNET_GNS_RECORD_TYPE_SOA = GNUNET_DNSPARSER_TYPE_SOA, - GNUNET_GNS_RECORD_TYPE_PTR = GNUNET_DNSPARSER_TYPE_PTR, - GNUNET_GNS_RECORD_MX = GNUNET_DNSPARSER_TYPE_MX, - GNUNET_GNS_RECORD_TXT = GNUNET_DNSPARSER_TYPE_TXT, - GNUNET_GNS_RECORD_AAAA = GNUNET_DNSPARSER_TYPE_AAAA, - - /* GNS specific */ - GNUNET_GNS_RECORD_PKEY = GNUNET_NAMESTORE_TYPE_PKEY, - GNUNET_GNS_RECORD_PSEU = GNUNET_NAMESTORE_TYPE_PSEU, - GNUNET_GNS_RECORD_ANY = GNUNET_NAMESTORE_TYPE_ANY -}; /** * Initialize the connection with the GNS service. * * @param cfg configuration to use - * * @return handle to the GNS service, or NULL on error */ struct GNUNET_GNS_Handle * @@ -102,138 +75,54 @@ void GNUNET_GNS_disconnect (struct GNUNET_GNS_Handle *handle); -/* *************** Standard API: lookup ******************* */ - /** - * Iterator called on obtained result for a GNS - * lookup + * Iterator called on obtained result for a GNS lookup. * * @param cls closure - * @param name "name" of the original lookup - * @param rd_count number of records + * @param rd_count number of records in @a rd * @param rd the records in reply */ typedef void (*GNUNET_GNS_LookupResultProcessor) (void *cls, - uint32_t rd_count, - const struct GNUNET_NAMESTORE_RecordData *rd); - + uint32_t rd_count, + const struct GNUNET_GNSRECORD_Data *rd); /** - * Perform an asynchronous lookup operation on the GNS - * in the default zone. + * Perform an asynchronous lookup operation on the GNS. * * @param handle handle to the GNS service * @param name the name to look up - * @param type the GNUNET_GNS_RecordType to look for + * @param zone zone to look in + * @param type the GNS record type to look for + * @param only_cached #GNUNET_YES to only check locally (not in the DHT) + * @param shorten_zone_key the private key of the shorten zone (can be NULL); + * specify to enable automatic shortening (given a PSEU + * record, if a given pseudonym is not yet used in the + * shorten zone, we automatically add the respective zone + * under that name) * @param proc function to call on result * @param proc_cls closure for processor - * * @return handle to the queued request */ -struct GNUNET_GNS_QueueEntry * +struct GNUNET_GNS_LookupRequest * GNUNET_GNS_lookup (struct GNUNET_GNS_Handle *handle, - const char * name, - enum GNUNET_GNS_RecordType type, - GNUNET_GNS_LookupResultProcessor proc, - void *proc_cls); - -/** - * Perform an asynchronous lookup operation on the GNS - * in the zone specified by 'zone'. - * - * @param handle handle to the GNS service - * @param name the name to look up - * @param zone the zone to start the resolution in - * @param type the GNUNET_GNS_RecordType to look for - * @param proc function to call on result - * @param proc_cls closure for processor - * - * @return handle to the queued request - */ -struct GNUNET_GNS_QueueEntry * -GNUNET_GNS_lookup_zone (struct GNUNET_GNS_Handle *handle, - const char * name, - struct GNUNET_CRYPTO_ShortHashCode *zone, - enum GNUNET_GNS_RecordType type, - GNUNET_GNS_LookupResultProcessor proc, - void *proc_cls); - -/* *************** Standard API: shorten ******************* */ + const char *name, + const struct GNUNET_CRYPTO_EcdsaPublicKey *zone, + int type, + int only_cached, + const struct GNUNET_CRYPTO_EcdsaPrivateKey *shorten_zone_key, + GNUNET_GNS_LookupResultProcessor proc, + void *proc_cls); /** - * Processor called on for a name shortening result - * called only once + * Cancel pending lookup request * - * @param cls closure - * @param short_name the shortened name or NULL if no result + * @param lr the lookup request to cancel */ -typedef void (*GNUNET_GNS_ShortenResultProcessor) (void *cls, - const char* short_name); - - -/** - * Perform a name shortening operation on the GNS. - * - * @param handle handle to the GNS service - * @param name the name to look up - * @param proc function to call on result - * @param proc_cls closure for processor - * @return handle to the operation - */ -struct GNUNET_GNS_QueueEntry * -GNUNET_GNS_shorten (struct GNUNET_GNS_Handle *handle, - const char * name, - GNUNET_GNS_ShortenResultProcessor proc, - void *proc_cls); - - -/** - * Perform a name shortening operation on the GNS. - * - * @param handle handle to the GNS service - * @param name the name to look up - * @param zone the zone to start the resolution in - * @param proc function to call on result - * @param proc_cls closure for processor - * @return handle to the operation - */ -struct GNUNET_GNS_QueueEntry * -GNUNET_GNS_shorten_zone (struct GNUNET_GNS_Handle *handle, - const char * name, - struct GNUNET_CRYPTO_ShortHashCode *zone, - GNUNET_GNS_ShortenResultProcessor proc, - void *proc_cls); - -/* *************** Standard API: get authority ******************* */ - - -/** - * Processor called on for a name shortening result - * called only once - * - * @param cls closure - * @param auth_name the name of the auhtority or NULL - */ -typedef void (*GNUNET_GNS_GetAuthResultProcessor) (void *cls, - const char* short_name); - +void +GNUNET_GNS_lookup_cancel (struct GNUNET_GNS_LookupRequest *lr); -/** - * Perform an authority lookup for a given name. - * - * @param handle handle to the GNS service - * @param name the name to look up authority for - * @param proc function to call on result - * @param proc_cls closure for processor - * @return handle to the operation - */ -struct GNUNET_GNS_QueueEntry * -GNUNET_GNS_get_authority (struct GNUNET_GNS_Handle *handle, - const char * name, - GNUNET_GNS_GetAuthResultProcessor proc, - void *proc_cls); #if 0 /* keep Emacsens' auto-indent happy */ {