resolved-dns-server.h revision 3e684349c2cead2e6fd2f816c34eb17daba23a49
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun#pragma once
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun/***
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun This file is part of systemd.
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun Copyright 2014 Lennart Poettering
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun systemd is free software; you can redistribute it and/or modify it
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun under the terms of the GNU Lesser General Public License as published by
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun the Free Software Foundation; either version 2.1 of the License, or
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun (at your option) any later version.
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun systemd is distributed in the hope that it will be useful, but
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun WITHOUT ANY WARRANTY; without even the implied warranty of
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun Lesser General Public License for more details.
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun You should have received a copy of the GNU Lesser General Public License
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun along with systemd; If not, see <http://www.gnu.org/licenses/>.
b9bf3918f6eaf7747bcbfbd02792bcbe4a052784nilgun***/
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun#include "in-addr-util.h"
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilguntypedef struct DnsServer DnsServer;
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilguntypedef enum DnsServerSource DnsServerSource;
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilguntypedef enum DnsServerType {
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun DNS_SERVER_SYSTEM,
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun DNS_SERVER_FALLBACK,
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun DNS_SERVER_LINK,
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun} DnsServerType;
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun#include "resolved-manager.h"
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun#include "resolved-link.h"
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgunstruct DnsServer {
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun Manager *manager;
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun DnsServerType type;
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun Link *link;
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun int family;
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun union in_addr_union address;
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun bool marked:1;
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun LIST_FIELDS(DnsServer, servers);
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun};
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgunint dns_server_new(
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun Manager *m,
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun DnsServer **s,
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun DnsServerType type,
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun Link *l,
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun int family,
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun const union in_addr_union *address);
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgunDnsServer* dns_server_free(DnsServer *s);
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgununsigned long dns_server_hash_func(const void *p, const uint8_t hash_key[HASH_KEY_SIZE]);
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgunint dns_server_compare_func(const void *a, const void *b);
988d399c4943f830cc91ff3fedfd29f4b6f6bf7fnilgun