X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fresolve%2Fresolved-link.h;h=4f0702e872b7ca318a66b68dd6ebb49dc7990449;hp=07f68ab41ca0c86d3aca0deb7c84d227216b5509;hb=a9944163fe5600bce85898dae78cd68442a6ff7c;hpb=74b2466e14a1961bf3ac0e8a60cfaceec705bd59 diff --git a/src/resolve/resolved-link.h b/src/resolve/resolved-link.h index 07f68ab41..4f0702e87 100644 --- a/src/resolve/resolved-link.h +++ b/src/resolve/resolved-link.h @@ -21,24 +21,30 @@ along with systemd; If not, see . ***/ +#include + #include "in-addr-util.h" #include "ratelimit.h" typedef struct Link Link; typedef struct LinkAddress LinkAddress; -#include "resolved.h" #include "resolved-dns-server.h" #include "resolved-dns-scope.h" +#include "resolved-dns-rr.h" +#include "resolved-manager.h" struct LinkAddress { Link *link; - unsigned char family; + int family; union in_addr_union in_addr; unsigned char flags, scope; + DnsResourceRecord *llmnr_address_rr; + DnsResourceRecord *llmnr_ptr_rr; + LIST_FIELDS(LinkAddress, addresses); }; @@ -50,35 +56,36 @@ struct Link { LIST_HEAD(LinkAddress, addresses); - LIST_HEAD(DnsServer, link_dns_servers); - LIST_HEAD(DnsServer, dhcp_dns_servers); + LIST_HEAD(DnsServer, dns_servers); DnsServer *current_dns_server; - DnsScope *unicast_scope; - DnsScope *mdns_ipv4_scope; - DnsScope *mdns_ipv6_scope; + Support llmnr_support; - size_t mtu; - - char *operational_state; + DnsScope *unicast_scope; + DnsScope *llmnr_ipv4_scope; + DnsScope *llmnr_ipv6_scope; - RateLimit mdns_ratelimit; + char name[IF_NAMESIZE]; + uint32_t mtu; }; int link_new(Manager *m, Link **ret, int ifindex); Link *link_free(Link *l); int link_update_rtnl(Link *l, sd_rtnl_message *m); int link_update_monitor(Link *l); -bool link_relevant(Link *l); -LinkAddress* link_find_address(Link *l, unsigned char family, union in_addr_union *in_addr); +bool link_relevant(Link *l, int family); +LinkAddress* link_find_address(Link *l, int family, const union in_addr_union *in_addr); +void link_add_rrs(Link *l, bool force_remove); -DnsServer* link_find_dns_server(Link *l, DnsServerSource source, unsigned char family, union in_addr_union *in_addr); +DnsServer* link_set_dns_server(Link *l, DnsServer *s); +DnsServer* link_find_dns_server(Link *l, int family, const union in_addr_union *in_addr); DnsServer* link_get_dns_server(Link *l); void link_next_dns_server(Link *l); -int link_address_new(Link *l, LinkAddress **ret, unsigned char family, union in_addr_union *in_addr); +int link_address_new(Link *l, LinkAddress **ret, int family, const union in_addr_union *in_addr); LinkAddress *link_address_free(LinkAddress *a); int link_address_update_rtnl(LinkAddress *a, sd_rtnl_message *m); bool link_address_relevant(LinkAddress *l); +void link_address_add_rrs(LinkAddress *a, bool force_remove); DEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_free);