## 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.

## Properties

### 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.