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/