Skip to content

Commit

Permalink
nspawn: check if the DNS stub is listening for requests
Browse files Browse the repository at this point in the history
  • Loading branch information
dm0- committed Mar 31, 2017
1 parent 7ed1565 commit 7357272
Showing 1 changed file with 19 additions and 4 deletions.
23 changes: 19 additions & 4 deletions src/nspawn/nspawn.c
Expand Up @@ -1321,17 +1321,32 @@ static int setup_timezone(const char *dest) {
return 0;
}

static int resolved_running(void) {
static int resolved_listening(void) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
_cleanup_free_ char *dns_stub_listener_mode = NULL;
int r;

/* Check if resolved is running */
/* Check if resolved is listening */

r = sd_bus_open_system(&bus);
if (r < 0)
return r;

return bus_name_has_owner(bus, "org.freedesktop.resolve1", NULL);
r = bus_name_has_owner(bus, "org.freedesktop.resolve1", NULL);
if (r <= 0)
return r;

r = sd_bus_get_property_string(bus,
"org.freedesktop.resolve1",
"/org/freedesktop/resolve1",
"org.freedesktop.resolve1.Manager",
"DNSStubListener",
NULL,
&dns_stub_listener_mode);
if (r < 0)
return r;

return STR_IN_SET(dns_stub_listener_mode, "udp", "yes");
}

static int setup_resolv_conf(const char *dest) {
Expand All @@ -1358,7 +1373,7 @@ static int setup_resolv_conf(const char *dest) {
}

if (access("/usr/lib/systemd/resolv.conf", F_OK) >= 0 &&
resolved_running() > 0) {
resolved_listening() > 0) {

/* resolved is enabled on the host. In this, case bind mount its static resolv.conf file into the
* container, so that the container can use the host's resolver. Given that network namespacing is
Expand Down

0 comments on commit 7357272

Please sign in to comment.