gnunet_gns_service.h | gnunet_gns_service.h | |||
---|---|---|---|---|
skipping to change at line 36 | skipping to change at line 36 | |||
* TODO: | * TODO: | |||
* - decide what goes into storage API and what into GNS-service API | * - decide what goes into storage API and what into GNS-service API | |||
* - decide where to pass/expose/check keys / signatures | * - decide where to pass/expose/check keys / signatures | |||
* - are GNS private keys per peer or per user? | * - are GNS private keys per peer or per user? | |||
*/ | */ | |||
#ifndef GNUNET_GNS_SERVICE_H | #ifndef GNUNET_GNS_SERVICE_H | |||
#define GNUNET_GNS_SERVICE_H | #define GNUNET_GNS_SERVICE_H | |||
#include "gnunet_util_lib.h" | #include "gnunet_util_lib.h" | |||
#include "gnunet_dnsparser_lib.h" | ||||
#include "gnunet_namestore_service.h" | #include "gnunet_namestore_service.h" | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
extern "C" | extern "C" | |||
{ | { | |||
#if 0 /* keep Emacsens' auto-indent happy */ | #if 0 /* keep Emacsens' auto-indent happy */ | |||
} | } | |||
#endif | #endif | |||
#endif | #endif | |||
skipping to change at line 57 | skipping to change at line 58 | |||
* Connection to the GNS service. | * Connection to the GNS service. | |||
*/ | */ | |||
struct GNUNET_GNS_Handle; | struct GNUNET_GNS_Handle; | |||
/** | /** | |||
* Handle to control a get operation. | * Handle to control a get operation. | |||
*/ | */ | |||
struct GNUNET_GNS_LookupHandle; | struct GNUNET_GNS_LookupHandle; | |||
/** | /** | |||
* Handle to control a shorten operation | ||||
*/ | ||||
/** | ||||
* Record types | * Record types | |||
* Based on GNUNET_DNSPARSER_TYPEs (standard DNS) | * Based on GNUNET_DNSPARSER_TYPEs (standard DNS) | |||
*/ | */ | |||
enum GNUNET_GNS_RecordType | enum GNUNET_GNS_RecordType | |||
{ | { | |||
/* Standard DNS */ | /* Standard DNS */ | |||
GNUNET_GNS_RECORD_TYPE_A = 1, | GNUNET_GNS_RECORD_TYPE_A = GNUNET_DNSPARSER_TYPE_A, | |||
GNUNET_GNS_RECORD_TYPE_NS = 2, | GNUNET_GNS_RECORD_TYPE_NS = GNUNET_DNSPARSER_TYPE_NS, | |||
GNUNET_GNS_RECORD_TYPE_CNAME = 5, | GNUNET_GNS_RECORD_TYPE_CNAME = GNUNET_DNSPARSER_TYPE_CNAME, | |||
GNUNET_GNS_RECORD_TYPE_SOA = 6, | GNUNET_GNS_RECORD_TYPE_SOA = GNUNET_DNSPARSER_TYPE_SOA, | |||
GNUNET_GNS_RECORD_TYPE_PTR = 12, | GNUNET_GNS_RECORD_TYPE_PTR = GNUNET_DNSPARSER_TYPE_PTR, | |||
GNUNET_GNS_RECORD_MX = 15, | GNUNET_GNS_RECORD_MX = GNUNET_DNSPARSER_TYPE_MX, | |||
GNUNET_GNS_RECORD_TXT = 16, | GNUNET_GNS_RECORD_TXT = GNUNET_DNSPARSER_TYPE_TXT, | |||
GNUNET_GNS_RECORD_AAAA = 28, | GNUNET_GNS_RECORD_AAAA = GNUNET_DNSPARSER_TYPE_AAAA, | |||
/* GNS specific */ | /* GNS specific */ | |||
GNUNET_GNS_RECORD_PKEY = 256 | 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. | * Initialize the connection with the GNS service. | |||
* FIXME: Do we need the ht_len? | ||||
* | * | |||
* @param cfg configuration to use | * @param cfg configuration to use | |||
* @param ht_len size of the internal hash table to use for parallel lookup | * | |||
s | * @return handle to the GNS service, or NULL on error | |||
* @return NULL on error | ||||
*/ | */ | |||
struct GNUNET_GNS_Handle * | struct GNUNET_GNS_Handle * | |||
GNUNET_GNS_connect (const struct GNUNET_CONFIGURATION_Handle *cfg, | GNUNET_GNS_connect (const struct GNUNET_CONFIGURATION_Handle *cfg); | |||
unsigned int ht_len); | ||||
/** | /** | |||
* Shutdown connection with the GNS service. | * Shutdown connection with the GNS service. | |||
* | * | |||
* @param handle connection to shut down | * @param handle connection to shut down | |||
*/ | */ | |||
void | void | |||
GNUNET_GNS_disconnect (struct GNUNET_GNS_Handle *handle); | GNUNET_GNS_disconnect (struct GNUNET_GNS_Handle *handle); | |||
/* *************** Standard API: lookup ******************* */ | /* *************** Standard API: lookup ******************* */ | |||
/** | /** | |||
* Iterator called on each result obtained for a GNS | * Iterator called on obtained result for a GNS | |||
* lookup | * lookup | |||
* | * | |||
* @param cls closure | * @param cls closure | |||
* @param name "name" of the original lookup | * @param name "name" of the original lookup | |||
* @param record the records in reply | * @param rd_count number of records | |||
* @param num_records the number of records in reply | * @param rd the records in reply | |||
*/ | */ | |||
typedef void (*GNUNET_GNS_LookupIterator) (void *cls, | typedef void (*GNUNET_GNS_LookupResultProcessor) (void *cls, | |||
const char * name, | uint32_t rd_count, | |||
const struct GNUNET_NAMESTORE_Recor | const struct GNUNET_NAMESTORE_RecordData * | |||
dData *record, | rd); | |||
unsigned int num_records); | ||||
/** | /** | |||
* Perform an asynchronous lookup operation on the GNS. | * Perform an asynchronous lookup operation on the GNS | |||
* in the default zone. | ||||
* | * | |||
* @param handle handle to the GNS service | * @param handle handle to the GNS service | |||
* @param timeout how long to wait for transmission of this request to the | * @param name the name to look up | |||
service | * @param type the GNUNET_GNS_RecordType to look for | |||
* // FIXME: what happens afterwards? | * @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 (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 handle handle to the GNS service | |||
* @param timeout timeout of request | ||||
* @param name the name to look up | * @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 type the GNUNET_GNS_RecordType to look for | |||
* @param iter function to call on each result | * @param proc function to call on result | |||
* @param iter_cls closure for iter | * @param proc_cls closure for processor | |||
* | * | |||
* @return handle to stop the async lookup | * @return handle to the queued request | |||
*/ | */ | |||
struct GNUNET_GNS_LookupHandle * | struct GNUNET_GNS_QueueEntry * | |||
GNUNET_GNS_lookup_start (struct GNUNET_GNS_Handle *handle, | GNUNET_GNS_lookup_zone (struct GNUNET_GNS_Handle *handle, | |||
struct GNUNET_TIME_Relative timeout, | ||||
const char * name, | const char * name, | |||
struct GNUNET_CRYPTO_ShortHashCode *zone, | ||||
enum GNUNET_GNS_RecordType type, | enum GNUNET_GNS_RecordType type, | |||
GNUNET_GNS_LookupIterator iter, | GNUNET_GNS_LookupResultProcessor proc, | |||
void *iter_cls); | void *proc_cls); | |||
/* *************** Standard API: shorten ******************* */ | ||||
/** | /** | |||
* Stop async GNS lookup. Frees associated resources. | * Processor called on for a name shortening result | |||
* called only once | ||||
* | * | |||
* @param lookup_handle lookup operation to stop. | * @param cls closure | |||
* @param short_name the shortened name or NULL if no result | ||||
*/ | ||||
typedef void (*GNUNET_GNS_ShortenResultProcessor) (void *cls, | ||||
const char* short_name); | ||||
/** | ||||
* Perform a name shortening operation on the GNS. | ||||
* | * | |||
* On return lookup_handle will no longer be valid, caller | * @param handle handle to the GNS service | |||
* must not use again!!! | * @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 | ||||
*/ | */ | |||
void | typedef void (*GNUNET_GNS_GetAuthResultProcessor) (void *cls, | |||
GNUNET_GNS_lookup_stop (struct GNUNET_GNS_LookupHandle *lookup_handle); | 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_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 */ | #if 0 /* keep Emacsens' auto-indent happy */ | |||
{ | { | |||
#endif | #endif | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
} | } | |||
#endif | #endif | |||
#endif | #endif | |||
/* gnunet_gns_service.h */ | /* gnunet_gns_service.h */ | |||
End of changes. 23 change blocks. | ||||
42 lines changed or deleted | 121 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |