## gskdnsserver

gskdnsserver — base class for a DNS server.

## Synopsis

                        GskDnsServerClass;
                        GskDnsServer;
    GskDnsServer *      gsk_dns_server_new                  (GskDnsResolver *resolver,
                                                             GskPacketQueue *packet_queue);
    GskDnsResolver *    gsk_dns_server_peek_resolver        (GskDnsServer *server);
    void                gsk_dns_server_set_resolver         (GskDnsServer *server,
                                                             GskDnsResolver *resolver);

## Object Hierarchy

      GObject
       +----GskDnsServer

## Properties

      "packet-queue"             GskPacketQueue*       : Read / Write / Construct Only
      "resolver"                 GskDnsResolver*       : Read / Write / Construct Only

## Description

A generic DNS server. This can be made to answer questions through a sensible resolver, or it can be used to implement wacky DNS hacks.

## Details

### GskDnsServerClass

    typedef struct _GskDnsServerClass GskDnsServerClass;

Base class for DNS servers.

### GskDnsServer

    typedef struct _GskDnsServer GskDnsServer;

Base instance for DNS servers. A DNS server is packet-based and must handle an arbitrary number of requests.

### gsk_dns_server_new ()

    GskDnsServer *      gsk_dns_server_new                  (GskDnsResolver *resolver,
                                                             GskPacketQueue *packet_queue);

Allocate a DNS server using the optional `resolver` to answer questions.

`resolver` : | the resolver to query for answers to incoming questions.
`packet_queue` : | transport for incoming DNS requests and outgoing responses.
Returns : | the newly allocated DNS server.

### gsk_dns_server_peek_resolver ()

    GskDnsResolver *    gsk_dns_server_peek_resolver        (GskDnsServer *server);

Obtain a peeked reference at the resolver which this server is using to answer questions.

`server` : | the server to inspect.
Returns : | a GskDnsResolver if one is being used, or NULL.

### gsk_dns_server_set_resolver ()

    void                gsk_dns_server_set_resolver         (GskDnsServer *server,
                                                             GskDnsResolver *resolver);

Set the DNS server's resolver.

`server` : | the server to affect.
`resolver` : | the DNS resolver to use, or NULL to stop using any resolver.

## Property Details

### The `"packet-queue"` property

      "packet-queue"             GskPacketQueue*       : Read / Write / Construct Only

raw i/o handle to use for requests/responses.

### The `"resolver"` property

      "resolver"                 GskDnsResolver*       : Read / Write / Construct Only

DNS resolver to obtain responses from.