X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Finclude%2Fgnunet_resolver_service.h;h=498400dc3e96be2bb75ebaba223140844c562100;hb=64e5c9e07deccefe03d6e6f1b118ca14ee4805d1;hp=ac7aebcc7e1d6e25062a304d8106fc0de40a07ad;hpb=0a217a8df1657b4334b55b0e4a6c7837a8dbcfd9;p=oweals%2Fgnunet.git diff --git a/src/include/gnunet_resolver_service.h b/src/include/gnunet_resolver_service.h index ac7aebcc7..498400dc3 100644 --- a/src/include/gnunet_resolver_service.h +++ b/src/include/gnunet_resolver_service.h @@ -53,39 +53,55 @@ typedef void (*GNUNET_RESOLVER_AddressCallback) (void *cls, /** - * Convert a string to one or more IP addresses. + * Handle to a request given to the resolver. Can be used to cancel + * the request prior to the timeout or successful execution. + */ +struct GNUNET_RESOLVER_RequestHandle; + +/** + * Create the connection to the resolver service. * - * @param sched scheduler to use * @param cfg configuration to use + */ +void +GNUNET_RESOLVER_connect (const struct GNUNET_CONFIGURATION_Handle *cfg); + + +/** + * Destroy the connection to the resolver service. + */ +void +GNUNET_RESOLVER_disconnect (void); + + +/** + * Convert a string to one or more IP addresses. + * * @param hostname the hostname to resolve - * @param domain AF_INET or AF_INET6; use AF_UNSPEC for "any" + * @param af AF_INET or AF_INET6; use AF_UNSPEC for "any" * @param callback function to call with addresses - * @param cls closure for callback + * @param callback_cls closure for callback * @param timeout how long to try resolving + * @return handle that can be used to cancel the request, NULL on error */ -void -GNUNET_RESOLVER_ip_get (struct GNUNET_SCHEDULER_Handle *sched, - struct GNUNET_CONFIGURATION_Handle *cfg, - const char *hostname, - int domain, +struct GNUNET_RESOLVER_RequestHandle * +GNUNET_RESOLVER_ip_get (const char *hostname, int af, struct GNUNET_TIME_Relative timeout, - GNUNET_RESOLVER_AddressCallback callback, void *cls); + GNUNET_RESOLVER_AddressCallback callback, + void *callback_cls); /** * Resolve our hostname to an IP address. * - * @param sched scheduler to use - * @param cfg configuration to use - * @param domain AF_INET or AF_INET6; use AF_UNSPEC for "any" + * @param af AF_INET or AF_INET6; use AF_UNSPEC for "any" * @param callback function to call with addresses * @param cls closure for callback * @param timeout how long to try resolving + * @return handle that can be used to cancel the request, NULL on error */ -void -GNUNET_RESOLVER_hostname_resolve (struct GNUNET_SCHEDULER_Handle *sched, - struct GNUNET_CONFIGURATION_Handle *cfg, - int domain, +struct GNUNET_RESOLVER_RequestHandle * +GNUNET_RESOLVER_hostname_resolve (int af, struct GNUNET_TIME_Relative timeout, GNUNET_RESOLVER_AddressCallback callback, void *cls); @@ -101,27 +117,45 @@ GNUNET_RESOLVER_hostname_resolve (struct GNUNET_SCHEDULER_Handle *sched, typedef void (*GNUNET_RESOLVER_HostnameCallback) (void *cls, const char *hostname); +/** + * Get local fully qualified domain name + * + * @return local hostname, caller must free + */ +char * +GNUNET_RESOLVER_local_fqdn_get (void); + /** - * Get an IP address as a string. + * Perform a reverse DNS lookup. * - * @param sched scheduler to use - * @param cfg configuration to use * @param sa host address * @param salen length of host address * @param do_resolve use GNUNET_NO to return numeric hostname * @param timeout how long to try resolving * @param callback function to call with hostnames * @param cls closure for callback + * @return handle that can be used to cancel the request, NULL on error + */ +struct GNUNET_RESOLVER_RequestHandle * +GNUNET_RESOLVER_hostname_get (const struct sockaddr *sa, socklen_t salen, + int do_resolve, + struct GNUNET_TIME_Relative timeout, + GNUNET_RESOLVER_HostnameCallback callback, + void *cls); + + +/** + * Cancel a request that is still pending with the resolver. + * Note that a client MUST NOT cancel a request that has + * been completed (i.e, the callback has been called to + * signal timeout or the final result). + * + * @param rh handle of request to cancel */ -void GNUNET_RESOLVER_hostname_get (struct GNUNET_SCHEDULER_Handle *sched, - struct GNUNET_CONFIGURATION_Handle *cfg, - const struct sockaddr *sa, - socklen_t salen, - int do_resolve, - struct GNUNET_TIME_Relative timeout, - GNUNET_RESOLVER_HostnameCallback callback, - void *cls); +void +GNUNET_RESOLVER_request_cancel (struct GNUNET_RESOLVER_RequestHandle *rh); + #if 0 /* keep Emacsens' auto-indent happy */ {