2017-11-18 17:09:20 +01:00
|
|
|
/* SPDX-License-Identifier: LGPL-2.1+ */
|
2015-11-24 21:12:51 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "macro.h"
|
|
|
|
|
|
|
|
typedef struct DnsSearchDomain DnsSearchDomain;
|
|
|
|
|
|
|
|
typedef enum DnsSearchDomainType {
|
|
|
|
DNS_SEARCH_DOMAIN_SYSTEM,
|
|
|
|
DNS_SEARCH_DOMAIN_LINK,
|
|
|
|
} DnsSearchDomainType;
|
|
|
|
|
|
|
|
#include "resolved-link.h"
|
|
|
|
#include "resolved-manager.h"
|
|
|
|
|
|
|
|
struct DnsSearchDomain {
|
|
|
|
Manager *manager;
|
|
|
|
|
|
|
|
unsigned n_ref;
|
|
|
|
|
|
|
|
DnsSearchDomainType type;
|
|
|
|
Link *link;
|
|
|
|
|
|
|
|
char *name;
|
|
|
|
|
|
|
|
bool marked:1;
|
2016-01-25 23:19:49 +01:00
|
|
|
bool route_only:1;
|
2015-11-24 21:12:51 +01:00
|
|
|
|
|
|
|
bool linked:1;
|
|
|
|
LIST_FIELDS(DnsSearchDomain, domains);
|
|
|
|
};
|
|
|
|
|
|
|
|
int dns_search_domain_new(
|
|
|
|
Manager *m,
|
|
|
|
DnsSearchDomain **ret,
|
|
|
|
DnsSearchDomainType type,
|
|
|
|
Link *link,
|
|
|
|
const char *name);
|
|
|
|
|
|
|
|
DnsSearchDomain* dns_search_domain_ref(DnsSearchDomain *d);
|
|
|
|
DnsSearchDomain* dns_search_domain_unref(DnsSearchDomain *d);
|
|
|
|
|
|
|
|
void dns_search_domain_unlink(DnsSearchDomain *d);
|
|
|
|
void dns_search_domain_move_back_and_unmark(DnsSearchDomain *d);
|
|
|
|
|
|
|
|
void dns_search_domain_unlink_all(DnsSearchDomain *first);
|
|
|
|
void dns_search_domain_unlink_marked(DnsSearchDomain *first);
|
|
|
|
void dns_search_domain_mark_all(DnsSearchDomain *first);
|
|
|
|
|
|
|
|
int dns_search_domain_find(DnsSearchDomain *first, const char *name, DnsSearchDomain **ret);
|
|
|
|
|
2015-11-25 20:47:27 +01:00
|
|
|
static inline const char* DNS_SEARCH_DOMAIN_NAME(DnsSearchDomain *d) {
|
|
|
|
return d ? d->name : NULL;
|
|
|
|
}
|
|
|
|
|
2015-11-24 21:12:51 +01:00
|
|
|
DEFINE_TRIVIAL_CLEANUP_FUNC(DnsSearchDomain*, dns_search_domain_unref);
|