charon.plugins.resolve.file = /etc/resolv.conf
- File where to add DNS server entries.
+ File where to add DNS server entries if not using resolvconf(8).
charon.plugins.resolve.resolvconf.iface_prefix = lo.inet.ipsec.
Prefix used for interface names sent to resolvconf(8).
a valid interface name according to the rules defined by resolvconf. Also,
it should have a high priority according to the order defined in
**interface-order**(5).
+
+charon.plugins.resolve.resolvconf.path = /sbin/resolvconf
+ Path/command for resolvconf(8).
+
+ Path/command for **resolvconf**(8). The command is executed by a shell, so
+ "resolvconf" will work if it's in $PATH of the daemon.
+
+ If not configured, **resolvconf**(8) will be used if found at the default
+ location. Otherwise, the file in _charon.plugins.resolve.file_ will be
+ modfied directly.
char *file;
/**
- * Use resolvconf instead of writing directly to resolv.conf
+ * Path/command for resolvconf(8)
*/
- bool use_resolvconf;
+ char *resolvconf;
/**
* Prefix to be used for interface names sent to resolvconf
/* we use the nameserver's IP address as part of the interface name to
* make them unique */
process = process_start_shell(NULL, install ? &in : NULL, &out, NULL,
- "2>&1 %s %s %s%H", RESOLVCONF_EXEC,
+ "2>&1 %s %s %s%H", this->resolvconf,
install ? "-a" : "-d", this->iface_prefix, addr);
if (!process)
this->mutex->lock(this->mutex);
if (array_bsearch(this->servers, addr, dns_server_find, &found) == -1)
{
- if (this->use_resolvconf)
+ if (this->resolvconf)
{
handled = invoke_resolvconf(this, addr, TRUE);
}
}
else
{
- if (this->use_resolvconf)
+ if (this->resolvconf)
{
invoke_resolvconf(this, addr, FALSE);
}
.destroy = _destroy,
},
.mutex = mutex_create(MUTEX_TYPE_DEFAULT),
- .file = lib->settings->get_str(lib->settings, "%s.plugins.resolve.file",
- RESOLV_CONF, lib->ns),
+ .file = lib->settings->get_str(lib->settings,
+ "%s.plugins.resolve.file", RESOLV_CONF, lib->ns),
+ .resolvconf = lib->settings->get_str(lib->settings,
+ "%s.plugins.resolve.resolvconf.path",
+ NULL, lib->ns),
+ .iface_prefix = lib->settings->get_str(lib->settings,
+ "%s.plugins.resolve.resolvconf.iface_prefix",
+ RESOLVCONF_PREFIX, lib->ns),
);
- if (stat(RESOLVCONF_EXEC, &st) == 0)
+ if (!this->resolvconf && stat(RESOLVCONF_EXEC, &st) == 0)
{
- this->use_resolvconf = TRUE;
- this->iface_prefix = lib->settings->get_str(lib->settings,
- "%s.plugins.resolve.resolvconf.iface_prefix",
- RESOLVCONF_PREFIX, lib->ns);
+ this->resolvconf = RESOLVCONF_EXEC;
}
+ if (this->resolvconf)
+ {
+ DBG1(DBG_CFG, "using '%s' to install DNS servers", this->resolvconf);
+ }
+ else
+ {
+ DBG1(DBG_CFG, "install DNS servers in '%s'", this->file);
+ }
return &this->public;
}