X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Finclude%2Fgnunet_gns_service.h;h=8a1099444075b367477cd605605a0361eaa19136;hb=17047b7bcbe3f1756028058a9887416c6afab5d8;hp=a3d78bfdfc9911a518aad89931a2690f23533d0d;hpb=ddaa74459d323d7b8a51809c54f0b7fa122f3150;p=oweals%2Fgnunet.git diff --git a/src/include/gnunet_gns_service.h b/src/include/gnunet_gns_service.h index a3d78bfdf..8a1099444 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) + Copyright (C) 2012-2014 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 @@ -14,14 +14,22 @@ 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 include/gnunet_gns_service.h - * @brief API to the GNS service * @author Martin Schanzenbach + * + * @file + * API to the GNS service + * + * @defgroup gns GNS service + * GNU Name System + * + * @see [Documentation](https://gnunet.org/gns-implementation) + * + * @{ */ #ifndef GNUNET_GNS_SERVICE_H #define GNUNET_GNS_SERVICE_H @@ -55,101 +63,11 @@ struct GNUNET_GNS_Handle; */ struct GNUNET_GNS_LookupRequest; -/** - * Handle to control a shorten operation. - */ -struct GNUNET_GNS_ShortenRequest; - -/** - * Handle to control a get authority operation - */ -struct GNUNET_GNS_GetAuthRequest; - -/** - * Record types - * Based on GNUNET_DNSPARSER_TYPEs (standard DNS) - */ -enum GNUNET_GNS_RecordType -{ - /** - * A 'struct in_addr' - */ - GNUNET_GNS_RECORD_A = GNUNET_DNSPARSER_TYPE_A, - - /** - * A 'char *' - */ - GNUNET_GNS_RECORD_NS = GNUNET_DNSPARSER_TYPE_NS, - - /** - * A 'char *' - */ - GNUNET_GNS_RECORD_CNAME = GNUNET_DNSPARSER_TYPE_CNAME, - - /** - * A 'struct soa_data' - */ - GNUNET_GNS_RECORD_SOA = GNUNET_DNSPARSER_TYPE_SOA, - - /** - * A 'struct srv_data' - */ - GNUNET_GNS_RECORD_SRV = GNUNET_DNSPARSER_TYPE_SRV, - - /** - * A 'char *' - */ - GNUNET_GNS_RECORD_PTR = GNUNET_DNSPARSER_TYPE_PTR, - - /** - * A 'uint16_t' and a 'char *' - */ - GNUNET_GNS_RECORD_MX = GNUNET_DNSPARSER_TYPE_MX, - - /** - * A 'char *' - */ - GNUNET_GNS_RECORD_TXT = GNUNET_DNSPARSER_TYPE_TXT, - - /** - * A 'struct in6_addr' - */ - GNUNET_GNS_RECORD_AAAA = GNUNET_DNSPARSER_TYPE_AAAA, - - /* GNS specific */ - /** - * A 'struct GNUNET_CRYPTO_ShortHashCode' - */ - GNUNET_GNS_RECORD_PKEY = GNUNET_NAMESTORE_TYPE_PKEY, - - /** - * A 'char *' - */ - GNUNET_GNS_RECORD_PSEU = GNUNET_NAMESTORE_TYPE_PSEU, - GNUNET_GNS_RECORD_ANY = GNUNET_NAMESTORE_TYPE_ANY, - - /** - * A 'char *' - */ - GNUNET_GNS_RECORD_LEHO = GNUNET_NAMESTORE_TYPE_LEHO, - - /** - * A 'struct vpn_data' - */ - GNUNET_GNS_RECORD_VPN = GNUNET_NAMESTORE_TYPE_VPN, - - /** - * Revocation, no data. - */ - GNUNET_GNS_RECORD_REV = GNUNET_NAMESTORE_TYPE_REV -}; - /** * 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 * @@ -165,182 +83,105 @@ 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 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); - - + const struct GNUNET_GNSRECORD_Data *rd); /** - * Perform an asynchronous lookup operation on the GNS - * in the default zone. - * - * @param handle handle to the GNS service - * @param name the name to look up - * @param type the GNUNET_GNS_RecordType to look for - * @param only_cached GNUNET_NO to only check locally not DHT for performance - * @param shorten_key the private key of the shorten zone (can be NULL) - * @param proc function to call on result - * @param proc_cls closure for processor + * Iterator called on obtained result for a GNS lookup. * - * @return handle to the queued request + * @param cls closure + * @param rd_count number of records in @a rd + * @param rd the records in reply */ -struct GNUNET_GNS_LookupRequest* -GNUNET_GNS_lookup (struct GNUNET_GNS_Handle *handle, - const char * name, - enum GNUNET_GNS_RecordType type, - int only_cached, - struct GNUNET_CRYPTO_EccPrivateKey *shorten_key, - GNUNET_GNS_LookupResultProcessor proc, - void *proc_cls); +typedef void (*GNUNET_GNS_ReverseLookupResultProcessor) (void *cls, + const char* name); /** - * 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 only_cached GNUNET_YES to only check locally not DHT for performance - * @param shorten_key the private key of the shorten zone (can be NULL) - * @param proc function to call on result - * @param proc_cls closure for processor - * - * @return handle to the queued request + * Options for the GNS lookup. */ -struct GNUNET_GNS_LookupRequest* -GNUNET_GNS_lookup_zone (struct GNUNET_GNS_Handle *handle, - const char * name, - struct GNUNET_CRYPTO_ShortHashCode *zone, - enum GNUNET_GNS_RecordType type, - int only_cached, - struct GNUNET_CRYPTO_EccPrivateKey *shorten_key, - GNUNET_GNS_LookupResultProcessor proc, - void *proc_cls); - - -/** - * Cancel pending lookup request - * - * @param lr the lookup request to cancel - */ -void -GNUNET_GNS_cancel_lookup_request (struct GNUNET_GNS_LookupRequest *lr); +enum GNUNET_GNS_LocalOptions +{ + /** + * Defaults, look in cache, then in DHT. + */ + GNUNET_GNS_LO_DEFAULT = 0, -/* *************** Standard API: shorten ******************* */ + /** + * Never look in the DHT, keep request to local cache. + */ + GNUNET_GNS_LO_NO_DHT = 1, + /** + * For the rightmost label, only look in the cache (it + * is our master zone), for the others, the DHT is OK. + */ + GNUNET_GNS_LO_LOCAL_MASTER = 2 -/** - * Processor called on for a name shortening result - * called only once - * - * @param cls closure - * @param short_name the shortened name or NULL if no result / error - */ -typedef void (*GNUNET_GNS_ShortenResultProcessor) (void *cls, - const char* short_name); +}; /** - * Perform a name shortening operation on the GNS. + * Perform an asynchronous lookup operation on the GNS. * * @param handle handle to the GNS service * @param name the name to look up - * @param private_zone the public zone of the private zone - * @param shorten_zone the public zone of the shorten zone + * @param zone zone to look in + * @param type the GNS record type to look for + * @param options local options for the lookup + * @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 operation + * @return handle to the queued request */ -struct GNUNET_GNS_ShortenRequest* -GNUNET_GNS_shorten (struct GNUNET_GNS_Handle *handle, - const char * name, - struct GNUNET_CRYPTO_ShortHashCode *private_zone, - struct GNUNET_CRYPTO_ShortHashCode *shorten_zone, - GNUNET_GNS_ShortenResultProcessor proc, - void *proc_cls); - +struct GNUNET_GNS_LookupRequest * +GNUNET_GNS_lookup (struct GNUNET_GNS_Handle *handle, + const char *name, + const struct GNUNET_CRYPTO_EcdsaPublicKey *zone, + uint32_t type, + enum GNUNET_GNS_LocalOptions options, + const struct GNUNET_CRYPTO_EcdsaPrivateKey *shorten_zone_key, + GNUNET_GNS_LookupResultProcessor proc, + void *proc_cls); /** - * Perform a name shortening operation on the GNS. + * Perform an asynchronous reverse lookup operation on the GNS. * * @param handle handle to the GNS service - * @param name the name to look up - * @param private_zone the public zone of the private zone - * @param shorten_zone the public zone of the shorten zone - * @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 + * @param zone_key zone to find a name for + * @param root_key our zone + * @param proc processor to call on result + * @param proc_cls closure for @a proc + * @return handle to the request */ -struct GNUNET_GNS_ShortenRequest* -GNUNET_GNS_shorten_zone (struct GNUNET_GNS_Handle *handle, - const char * name, - struct GNUNET_CRYPTO_ShortHashCode *private_zone, - struct GNUNET_CRYPTO_ShortHashCode *shorten_zone, - struct GNUNET_CRYPTO_ShortHashCode *zone, - GNUNET_GNS_ShortenResultProcessor proc, - void *proc_cls); +struct GNUNET_GNS_ReverseLookupRequest* +GNUNET_GNS_reverse_lookup (struct GNUNET_GNS_Handle *handle, + const struct GNUNET_CRYPTO_EcdsaPublicKey *zone_key, + const struct GNUNET_CRYPTO_EcdsaPublicKey *root_key, + GNUNET_GNS_ReverseLookupResultProcessor proc, + void *proc_cls); /** - * Cancel pending shorten request + * Cancel pending lookup request * - * @param sr the lookup request to cancel + * @param lr the lookup request to cancel */ void -GNUNET_GNS_cancel_shorten_request (struct GNUNET_GNS_ShortenRequest *sr); - - -/* *************** 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); - - -/** - * 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_GetAuthRequest* -GNUNET_GNS_get_authority (struct GNUNET_GNS_Handle *handle, - const char * name, - GNUNET_GNS_GetAuthResultProcessor proc, - void *proc_cls); - +GNUNET_GNS_lookup_cancel (struct GNUNET_GNS_LookupRequest *lr); -/** - * Cancel pending get auth request - * - * @param gar the lookup request to cancel - */ -void -GNUNET_GNS_cancel_get_auth_request (struct GNUNET_GNS_GetAuthRequest *gar); #if 0 /* keep Emacsens' auto-indent happy */ { @@ -349,6 +190,6 @@ GNUNET_GNS_cancel_get_auth_request (struct GNUNET_GNS_GetAuthRequest *gar); } #endif - #endif -/* gnunet_gns_service.h */ + +/** @} */ /* end of group */