resolved-link.c revision aaa297d4e5401fd4466632555432774863457f1d
131N/A along with systemd; If not, see <http://www.gnu.org/licenses/>.
131N/A#include "sd-network.h"
131N/A#include "alloc-util.h"
144N/A#include "parse-util.h"
131N/A#include "resolved-link.h"
131N/A#include "string-util.h"
131N/A if (l->dns_servers) {
227N/A if (!l->unicast_scope) {
if (!l->llmnr_ipv4_scope) {
if (!l->llmnr_ipv6_scope) {
if (!l->mdns_ipv4_scope) {
if (!l->mdns_ipv6_scope) {
LinkAddress *a;
const char *n = NULL;
assert(l);
assert(m);
link_add_rrs(l, false);
char **nameserver;
assert(l);
if (r == -ENODATA) {
goto clear;
goto clear;
union in_addr_union a;
DnsServer *s;
int family;
goto clear;
goto clear;
assert(l);
if (r == -ENODATA) {
goto clear;
goto clear;
if (l->llmnr_support < 0) {
r = -EINVAL;
goto clear;
assert(l);
if (r == -ENODATA) {
goto clear;
goto clear;
if (l->mdns_support < 0) {
r = -EINVAL;
goto clear;
assert(l);
if (r == -ENODATA) {
goto clear;
goto clear;
DnsSearchDomain *d;
goto clear;
goto clear;
assert(l);
r = link_update_search_domains(l);
link_add_rrs(l, false);
LinkAddress *a;
assert(l);
LinkAddress *a;
assert(l);
return NULL;
assert(l);
if (l->current_dns_server == s)
if (l->unicast_scope)
assert(l);
if (!l->current_dns_server)
return l->current_dns_server;
assert(l);
if (!l->current_dns_server)
LinkAddress *a;
assert(l);
return -ENOMEM;
a->link = l;
if (ret)
*ret = a;
return NULL;
if (a->link) {
if (a->llmnr_address_rr) {
if (a->llmnr_ptr_rr) {
free(a);
return NULL;
assert(a);
if (!force_remove &&
link_address_relevant(a) &&
a->link->manager->llmnr_host_ipv4_key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, a->link->manager->llmnr_hostname);
r = -ENOMEM;
goto fail;
if (!a->llmnr_address_rr) {
if (!a->llmnr_address_rr) {
r = -ENOMEM;
goto fail;
if (!a->llmnr_ptr_rr) {
r = dns_resource_record_new_reverse(&a->llmnr_ptr_rr, a->family, &a->in_addr, a->link->manager->llmnr_hostname);
goto fail;
r = dns_zone_put(&a->link->llmnr_ipv4_scope->zone, a->link->llmnr_ipv4_scope, a->llmnr_address_rr, true);
r = dns_zone_put(&a->link->llmnr_ipv4_scope->zone, a->link->llmnr_ipv4_scope, a->llmnr_ptr_rr, false);
if (a->llmnr_address_rr) {
if (a->llmnr_ptr_rr) {
if (!force_remove &&
link_address_relevant(a) &&
a->link->manager->llmnr_host_ipv6_key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_AAAA, a->link->manager->llmnr_hostname);
r = -ENOMEM;
goto fail;
if (!a->llmnr_address_rr) {
if (!a->llmnr_address_rr) {
r = -ENOMEM;
goto fail;
if (!a->llmnr_ptr_rr) {
r = dns_resource_record_new_reverse(&a->llmnr_ptr_rr, a->family, &a->in_addr, a->link->manager->llmnr_hostname);
goto fail;
r = dns_zone_put(&a->link->llmnr_ipv6_scope->zone, a->link->llmnr_ipv6_scope, a->llmnr_address_rr, true);
r = dns_zone_put(&a->link->llmnr_ipv6_scope->zone, a->link->llmnr_ipv6_scope, a->llmnr_ptr_rr, false);
if (a->llmnr_address_rr) {
if (a->llmnr_ptr_rr) {
fail:
assert(a);
assert(m);
assert(a);