X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Finclude%2Fgnunet_gns_service.h;h=8a1099444075b367477cd605605a0361eaa19136;hb=17047b7bcbe3f1756028058a9887416c6afab5d8;hp=7f2bd790d94a2e57b77ac9e9dd0d77c30911648c;hpb=9deab19cc53c6c1324af2193cef9686875a39c16;p=oweals%2Fgnunet.git diff --git a/src/include/gnunet_gns_service.h b/src/include/gnunet_gns_service.h index 7f2bd790d..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-2013 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 @@ -84,7 +92,41 @@ GNUNET_GNS_disconnect (struct GNUNET_GNS_Handle *handle); */ typedef void (*GNUNET_GNS_LookupResultProcessor) (void *cls, uint32_t rd_count, - const struct GNUNET_NAMESTORE_RecordData *rd); + const struct GNUNET_GNSRECORD_Data *rd); + +/** + * Iterator called on obtained result for a GNS lookup. + * + * @param cls closure + * @param rd_count number of records in @a rd + * @param rd the records in reply + */ +typedef void (*GNUNET_GNS_ReverseLookupResultProcessor) (void *cls, + const char* name); + + +/** + * Options for the GNS lookup. + */ +enum GNUNET_GNS_LocalOptions +{ + /** + * Defaults, look in cache, then in DHT. + */ + GNUNET_GNS_LO_DEFAULT = 0, + + /** + * 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 + +}; /** @@ -94,7 +136,7 @@ typedef void (*GNUNET_GNS_LookupResultProcessor) (void *cls, * @param name the name to look up * @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 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 @@ -107,13 +149,30 @@ typedef void (*GNUNET_GNS_LookupResultProcessor) (void *cls, struct GNUNET_GNS_LookupRequest * GNUNET_GNS_lookup (struct GNUNET_GNS_Handle *handle, const char *name, - const struct GNUNET_CRYPTO_EccPublicKey *zone, - int type, - int only_cached, - const struct GNUNET_CRYPTO_EccPrivateKey *shorten_zone_key, + 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 an asynchronous reverse lookup operation on the GNS. + * + * @param handle handle to the GNS service + * @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_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 lookup request @@ -131,6 +190,6 @@ GNUNET_GNS_lookup_cancel (struct GNUNET_GNS_LookupRequest *lr); } #endif - #endif -/* gnunet_gns_service.h */ + +/** @} */ /* end of group */