Hi,
On Thu, 2015-09-03 at 16:07 +0000, Sam Nazarko wrote:
> ---
Unfortunately there is no motivation for this change. Apparently it does
something very much needed, as you have sent a patch for the issue. With
this change, how are DNS servers handed down by a DHCP server or
modified manually supposed to handled?
In order to fit into existing frameworks (which? what use cases?), I
could envision ConnMan writing it's resolv.conf into another location
entirely, say /run/connman/resolv.conf, which could then be symlinked
to /etc/resolv.conf if needed.
Comments?
Cheers,
Patrik
> src/connman.h | 2 +-
> src/main.c | 6 +++++-
> src/resolver.c | 10 +++++++++-
> 3 files changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/src/connman.h b/src/connman.h
> index 35eb3f5..0d7b500 100644
> --- a/src/connman.h
> +++ b/src/connman.h
> @@ -244,7 +244,7 @@ int __connman_inet_get_address_netmask(int ifindex,
>
> #include <connman/resolver.h>
>
> -int __connman_resolver_init(gboolean dnsproxy);
> +int __connman_resolver_init(gboolean dnsproxy, gboolean allowresolvmodify);
> void __connman_resolver_cleanup(void);
> int __connman_resolvfile_append(int index, const char *domain, const char
> *server);
> int __connman_resolvfile_remove(int index, const char *domain, const char
> *server);
> diff --git a/src/main.c b/src/main.c
> index e46fa7b..4d6f064 100644
> --- a/src/main.c
> +++ b/src/main.c
> @@ -468,6 +468,7 @@ static gchar *option_noplugin = NULL;
> static gchar *option_wifi = NULL;
> static gboolean option_detach = TRUE;
> static gboolean option_dnsproxy = TRUE;
> +static gboolean option_allowresolvmodify = TRUE;
> static gboolean option_backtrace = TRUE;
> static gboolean option_version = FALSE;
>
> @@ -505,6 +506,9 @@ static GOptionEntry options[] = {
> { "nodnsproxy", 'r', G_OPTION_FLAG_REVERSE,
> G_OPTION_ARG_NONE, &option_dnsproxy,
> "Don't enable DNS Proxy" },
> + { "noresolvmodify", 's', G_OPTION_FLAG_REVERSE,
> + G_OPTION_ARG_NONE, &option_allowresolvmodify,
> + "Don't allow resolv.conf changes. Useful if ignoring the
> primary interface" },
> { "nobacktrace", 0, G_OPTION_FLAG_REVERSE,
> G_OPTION_ARG_NONE, &option_backtrace,
> "Don't print out backtrace information" },
> @@ -687,7 +691,7 @@ int main(int argc, char *argv[])
>
> __connman_plugin_init(option_plugin, option_noplugin);
>
> - __connman_resolver_init(option_dnsproxy);
> + __connman_resolver_init(option_dnsproxy, option_allowresolvmodify);
> __connman_rtnl_start();
> __connman_dhcp_init();
> __connman_dhcpv6_init();
> diff --git a/src/resolver.c b/src/resolver.c
> index 6a64938..473412b 100644
> --- a/src/resolver.c
> +++ b/src/resolver.c
> @@ -55,6 +55,7 @@ struct entry_data {
>
> static GSList *entry_list = NULL;
> static bool dnsproxy_enabled = false;
> +static bool allowresolvmodify_enabled = true;
>
> struct resolvfile_entry {
> int index;
> @@ -89,6 +90,9 @@ static int resolvfile_export(void)
> unsigned int count;
> mode_t old_umask;
>
> + if (! allowresolvmodify_enabled)
> + return 0;
> +
> content = g_string_new("# Generated by Connection Manager\n");
>
> /*
> @@ -619,11 +623,15 @@ static void free_resolvfile(gpointer data)
> g_free(entry);
> }
>
> -int __connman_resolver_init(gboolean dnsproxy)
> +int __connman_resolver_init(gboolean dnsproxy, gboolean allowresolvmodify)
> {
> int i;
> char **ns;
>
> + DBG("allowresolvmodify %d", allowresolvmodify);
> +
> + allowresolvmodify_enabled = allowresolvmodify;
> +
> DBG("dnsproxy %d", dnsproxy);
>
> if (!dnsproxy)
> --
> 2.1.0
>
> _______________________________________________
> connman mailing list
> [email protected]
> https://lists.connman.net/mailman/listinfo/connman
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman