X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fresolve%2Fresolved-manager.h;h=1151029d29fdec7cdf0ace882ba6e4bd38418d8f;hp=03386f0a4f6a231554dfd4fa28258ada263047d5;hb=0e3434aeb1eed951fdbeddacc6126e10d82a1c8b;hpb=39d8db043b599a7382f94bfc904d5e108af438bd diff --git a/src/resolve/resolved-manager.h b/src/resolve/resolved-manager.h index 03386f0a4..1151029d2 100644 --- a/src/resolve/resolved-manager.h +++ b/src/resolve/resolved-manager.h @@ -30,20 +30,21 @@ #include "hashmap.h" typedef struct Manager Manager; +typedef enum Support Support; -#include "resolved-dns-query.h" -#include "resolved-dns-server.h" -#include "resolved-dns-scope.h" -#include "resolved-dns-stream.h" -#include "resolved-link.h" - -typedef enum Support { +enum Support { SUPPORT_NO, SUPPORT_YES, SUPPORT_RESOLVE, _SUPPORT_MAX, _SUPPORT_INVALID = -1 -} Support; +}; + +#include "resolved-dns-query.h" +#include "resolved-dns-server.h" +#include "resolved-dns-scope.h" +#include "resolved-dns-stream.h" +#include "resolved-link.h" struct Manager { sd_event *event; @@ -78,6 +79,9 @@ struct Manager { LIST_HEAD(DnsServer, fallback_dns_servers); DnsServer *current_dns_server; + bool read_resolv_conf; + usec_t resolv_conf_mtime; + LIST_HEAD(DnsScope, dns_scopes); DnsScope *unicast_scope; @@ -104,6 +108,9 @@ struct Manager { /* Watch the system hostname */ int hostname_fd; sd_event_source *hostname_event_source; + + /* Watch for system suspends */ + sd_bus_slot *prepare_for_sleep_slot; }; /* Manager */ @@ -111,9 +118,12 @@ struct Manager { int manager_new(Manager **ret); Manager* manager_free(Manager *m); +int manager_start(Manager *m); +int manager_read_resolv_conf(Manager *m); int manager_write_resolv_conf(Manager *m); -bool manager_known_dns_server(Manager *m, int family, const union in_addr_union *in_addr); +DnsServer *manager_set_dns_server(Manager *m, DnsServer *s); +DnsServer *manager_find_dns_server(Manager *m, int family, const union in_addr_union *in_addr); DnsServer *manager_get_dns_server(Manager *m); void manager_next_dns_server(Manager *m); @@ -129,14 +139,18 @@ int manager_llmnr_ipv6_udp_fd(Manager *m); int manager_llmnr_ipv4_tcp_fd(Manager *m); int manager_llmnr_ipv6_tcp_fd(Manager *m); -int manager_ifindex_is_loopback(Manager *m, int ifindex); int manager_find_ifindex(Manager *m, int family, const union in_addr_union *in_addr); LinkAddress* manager_find_link_address(Manager *m, int family, const union in_addr_union *in_addr); void manager_refresh_rrs(Manager *m); int manager_next_hostname(Manager *m); -int manager_our_packet(Manager *m, DnsPacket *p); +bool manager_our_packet(Manager *m, DnsPacket *p); +DnsScope* manager_find_scope(Manager *m, DnsPacket *p); + +void manager_verify_all(Manager *m); + +void manager_flush_dns_servers(Manager *m, DnsServerType t); DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);