Provided by: libgetdns-dev_0.9.0-1_amd64 bug

NAME

       getdns_context, getdns_context_create, getdns_context_create_with_memory_functions,
       getdns_context_create_with_extended_memory_functions, getdns_context_destroy,
       getdns_context_get_api_information -- getdns context create and destroy routines

LIBRARY

       DNS Resolver library (libgetdns, -lgetdns)

SYNOPSIS

       #include <getdns.h>

       getdns_return_t
       getdns_context_create (getdns_context ** context,
          int set_from_os)

       getdns_return_t
       getdns_context_create_with_memory_functions (getdns_context ** context,
          int set_from_os,
          void *(*malloc) (size_t),
          void *(*realloc) (void *, size_t),
          void (*free) (void *))

       getdns_return_t
       getdns_context_create_with_extended_memory_functions (getdns_context **context,
          int set_from_os,
          void *userarg,
          void *(*malloc) (void *userarg, size_t),
          void *(*realloc) (void *userarg, void *, size_t),
          void (*free) (void *userarg, void *))

       void
       getdns_context_destroy (getdns_context *context)

       getdns_dict *
       getdns_context_get_api_information (getdns_context *context)

DESCRIPTION

       Calls  to  getdns  functions  require a DNS context, which is a group of API settings that affect how DNS
       calls are made. For most applications, a default context is sufficient.

       To create a new DNS context, use the function:
          getdns_return_t getdns_context_create (getdns_context_t *context, bool set_from_os)

       The call to getdns_context_create immediately returns a context that can be used with  other  API  calls;
       that context contains the API's default values. Most applications will want set_from_os set to true.

       To  clean  up the context, including cleaning up all outstanding transactions that were called using this
       context, use the function:
          void getdns_context_destroy (getdns_context_t context)

       When getdns_context_destroy() returns, the application knows that all outstanding transactions associated
       with   this   context   will   have   been   called;   callbacks   that   had   not  been  called  before
       getdns_context_destroy() was called will  be  called  with  a  callback_type  of  GETDNS_CALLBACK_CANCEL.
       getdns_context_destroy() returns after all of the needed cleanup is done and callbacks are made.

       context  Used  to  return the pointer to an opaque structure.  The caller passes the address of a pointer
          (decl: getdns_context *context; passed as &context) which will be populated as a result  of  returning
          from  the function.  The result is a newly allocated and initialized context (if there are no errors).
          In the getdns_destroy_context function this is the context whose associated memory will be released.

       set_from_os If set_from_os is 0 then the caller must provide forwarding name servers if running  in  stub
          mode.  If set_from_os is 1 then the system files are used to initialize the context.  /etc/resolv.conf
          is used to populate  forwarders  when  running  as  a  stub  resolver  (only  "nameserver"  lines  are
          recognized).   If  set_from_os  is 1 /etc/hosts entries are preferred before resorting to a DNS query.
          Errors in the system files will not prevent the context form being constructed.

       userarg In the extended use case this argument is passed unchanged  to  each  of  the  memory  management
          functions each time they are called.

       malloc  The  function  that will be used for creating response dicts (and the members within the response
          dicts).  By default the system malloc is used.

       realloc The function that will be used for creating response dicts (and the members within  the  response
          dicts).  By default the system realloc is used.

       free  The function that will be used for releasing storage for response dicts (and the members within the
          response dicts).  By default the system free is used.

DESCRIPTION (LONG)

       Many calls in the DNS API require a DNS context. A DNS context contains  the  information  that  the  API
       needs in order to process DNS calls, such as the locations of upstream DNS servers, DNSSEC trust anchors,
       and so on. The internal structure of the DNS context is opaque, and might be different on each OS. When a
       context is passed to any function, it must be an allocated context; the context must not be NULL.

       A  typical  application  using  this  API  doesn't  need  to know anything about contexts. Basically, the
       application creates a default context, uses it  in  the  functions  that  require  a  context,  and  then
       deallocates  it when done. Context manipulation is available for more DNS-aware programs, but is unlikely
       to be of interest to applications that just want the results  of  lookups  for  A,  AAAA,  SRV,  and  PTR
       records.

       It  is expected that contexts in implementations of the API will not necessarily be thread-safe, but they
       will not be thread-hostile. A context should not be used by multiple threads: create a  new  context  for
       use  on  a different thread. It is just fine for an application to have many contexts, and some DNS-heavy
       applications will certainly want to have many even if the application uses a single thread.

       When the context is used in the API for the first time and set_from_os is 1,  the  API  starts  replacing
       some  of  the  values  with  values  from  the  OS,  such  as  those that would be found in res_query(3),
       /etc/resolv.conf, and so on, then proceeds with the new function. Some advanced users will not  want  the
       API  to  change  the values to the OS's defaults; if set_from_os is 0, the API will not do any updates to
       the initial values based on changes in the OS. For example, this might be useful if the API is acting  as
       a  stub  resolver that is using a specific upstream recursive resolver chosen by the application, not the
       one that might come back from DHCP.

RETURN VALUES

       Upon successful completion each of these functions return GETDNS_RETURN_GOOD ,  otherwise  the  following
       error values are returned:

       GETDNS_RETURN_GENERIC_ERROR  memory  allocation  failed  or  some  other  untoward  thing  happened while
       initializing the context

       GETDNS_RETURN_BAD_CONTEXT if the context pointer is invalid (getdns_context_destroy)

       The getdns_dict returned by getdns_context_get_api_information  must  be  destroyed  by  the  called  and
       includes the following name/value pairs:

       version_string
              a bindata containing a printable string of the version of the DNS API implemented by this library

       implementation_string
              a bindata containing a printable string set by the implementation

       resolution_type
              an int equal to GETDNS_RESOLUTION_RECURSING or GETDNS_RESOLUTION_STUB

       all_context
              a getdns_dict with names for all the types of context, feed it to getdns_pretty_print_dict (3) for
              something easily readable

EXAMPLES

       TBD

FILES

       /etc/hosts
       /etc/resolv.conf

SEE ALSO

       libgetdns(3),         getdns_address(3),          getdns_address_sync(3),          getdns_context_set(3),
       getdns_context_set_context_update_callback(3),         getdns_general(3),         getdns_general_sync(3),
       getdns_hostname(3), getdns_hostname_sync(3), getdns_service(3), getdns_service_sync(3).