diff --git a/packages/network/connman/package.mk b/packages/network/connman/package.mk index 03730e5514..fea296af86 100644 --- a/packages/network/connman/package.mk +++ b/packages/network/connman/package.mk @@ -86,6 +86,7 @@ post_makeinstall_target() { cp ../src/main.conf $INSTALL/etc/connman sed -i $INSTALL/etc/connman/main.conf \ -e "s|^# BackgroundScanning.*|BackgroundScanning = true|g" \ + -e "s|^# UseGatewaysAsTimeservers.*|UseGatewaysAsTimeservers = false|g" \ -e "s|^# FallbackNameservers.*|FallbackNameservers = 8.8.8.8,8.8.4.4|g" \ -e "s|^# FallbackTimeservers.*|FallbackTimeservers = 0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org,3.pool.ntp.org|g" \ -e "s|^# PreferredTechnologies.*|PreferredTechnologies = ethernet,wifi,cellular|g" \ diff --git a/packages/network/connman/patches/connman-00-upstream-main-Add-UseGatewaysAsTimeservers-option.patch b/packages/network/connman/patches/connman-00-upstream-main-Add-UseGatewaysAsTimeservers-option.patch new file mode 100644 index 0000000000..fc2e2ba1b7 --- /dev/null +++ b/packages/network/connman/patches/connman-00-upstream-main-Add-UseGatewaysAsTimeservers-option.patch @@ -0,0 +1,76 @@ +From b5e589fc385a2d4a62c6d91cefe6ad1b6bd9fa68 Mon Sep 17 00:00:00 2001 +From: Chris Novakovic +Date: Sun, 8 Jul 2018 00:59:05 +0100 +Subject: [PATCH] main: Add UseGatewaysAsTimeservers option + +Add support for a new boolean option UseGatewaysAsTimeservers to the +[General] section of main.conf. + +This is upstream commit 20f2041 backported for ConnMan 1.36. +--- + src/main.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/src/main.c b/src/main.c +index 318bf02..ad8595e 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -81,6 +81,7 @@ static struct { + char *vendor_class_id; + bool enable_online_check; + bool auto_connect_roaming_services; ++ bool use_gateways_as_timeservers; + } connman_settings = { + .bg_scan = true, + .pref_timeservers = NULL, +@@ -100,6 +101,7 @@ static struct { + .vendor_class_id = NULL, + .enable_online_check = true, + .auto_connect_roaming_services = false, ++ .use_gateways_as_timeservers = false, + }; + + #define CONF_BG_SCAN "BackgroundScanning" +@@ -120,6 +122,7 @@ static struct { + #define CONF_VENDOR_CLASS_ID "VendorClassID" + #define CONF_ENABLE_ONLINE_CHECK "EnableOnlineCheck" + #define CONF_AUTO_CONNECT_ROAMING_SERVICES "AutoConnectRoamingServices" ++#define CONF_USE_GATEWAYS_AS_TIMESERVERS "UseGatewayAsTimeservers" + + static const char *supported_options[] = { + CONF_BG_SCAN, +@@ -140,6 +143,7 @@ static const char *supported_options[] = { + CONF_VENDOR_CLASS_ID, + CONF_ENABLE_ONLINE_CHECK, + CONF_AUTO_CONNECT_ROAMING_SERVICES, ++ CONF_USE_GATEWAYS_AS_TIMESERVERS, + NULL + }; + +@@ -431,6 +435,13 @@ static void parse_config(GKeyFile *config) + connman_settings.auto_connect_roaming_services = boolean; + + g_clear_error(&error); ++ ++ boolean = __connman_config_get_bool(config, "General", ++ CONF_USE_GATEWAYS_AS_TIMESERVERS, &error); ++ if (!error) ++ connman_settings.use_gateways_as_timeservers = boolean; ++ ++ g_clear_error(&error); + } + + static int config_init(const char *file) +@@ -644,6 +655,9 @@ bool connman_setting_get_bool(const char *key) + if (g_str_equal(key, CONF_AUTO_CONNECT_ROAMING_SERVICES)) + return connman_settings.auto_connect_roaming_services; + ++ if (g_str_equal(key, CONF_USE_GATEWAYS_AS_TIMESERVERS)) ++ return connman_settings.use_gateways_as_timeservers; ++ + return false; + } + +-- +2.7.4 + diff --git a/packages/network/connman/patches/connman-00-upstream-timeserver-UseGatewaysAsTimeservers.patch b/packages/network/connman/patches/connman-00-upstream-timeserver-UseGatewaysAsTimeservers.patch new file mode 100644 index 0000000000..955833c55d --- /dev/null +++ b/packages/network/connman/patches/connman-00-upstream-timeserver-UseGatewaysAsTimeservers.patch @@ -0,0 +1,50 @@ +From 3ce40776cf1e9cbb02279117298e2514aba42ffe Mon Sep 17 00:00:00 2001 +From: Chris Novakovic +Date: Sun, 27 May 2018 17:02:53 +0100 +Subject: timeserver: Use gateways as timeservers if + UseGatewaysAsTimeservers=true + +Rather than always assuming that service gateways are capable of +functioning as timeservers, only do so if UseGatewaysAsTimeservers is +set to true in main.conf. +--- + src/timeserver.c | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) + +diff --git a/src/timeserver.c b/src/timeserver.c +index 393c64c..f9467a2 100644 +--- a/src/timeserver.c ++++ b/src/timeserver.c +@@ -268,15 +268,20 @@ GSList *__connman_timeserver_get_all(struct connman_service *service) + for (i = 0; service_ts && service_ts[i]; i++) + list = __connman_timeserver_add_list(list, service_ts[i]); + +- network = __connman_service_get_network(service); +- if (network) { +- index = connman_network_get_index(network); +- service_gw = __connman_ipconfig_get_gateway_from_index(index, +- CONNMAN_IPCONFIG_TYPE_ALL); +- +- /* Then add Service Gateway to the list */ +- if (service_gw) +- list = __connman_timeserver_add_list(list, service_gw); ++ /* ++ * Then add Service Gateway to the list, if UseGatewaysAsTimeservers ++ * configuration option is set to true. ++ */ ++ if (connman_setting_get_bool("UseGatewaysAsTimeservers")) { ++ network = __connman_service_get_network(service); ++ if (network) { ++ index = connman_network_get_index(network); ++ service_gw = __connman_ipconfig_get_gateway_from_index(index, ++ CONNMAN_IPCONFIG_TYPE_ALL); ++ ++ if (service_gw) ++ list = __connman_timeserver_add_list(list, service_gw); ++ } + } + + /* Then add Global Timeservers to the list */ +-- +cgit v1.1 + diff --git a/packages/network/connman/patches/connman-04-do-not-add-default-gw-as-timeserver.patch b/packages/network/connman/patches/connman-04-do-not-add-default-gw-as-timeserver.patch deleted file mode 100644 index 518e192c47..0000000000 --- a/packages/network/connman/patches/connman-04-do-not-add-default-gw-as-timeserver.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 0b595ee514797c75663a9ddc4ddc81c6c82dc64a Mon Sep 17 00:00:00 2001 -From: Stefan Saraev -Date: Sat, 7 Sep 2013 15:11:36 +0300 -Subject: [PATCH] do not add default gw as timeserver - -*always* adding default gw to timeserver list is a horrible idea - -this reverts http://git.kernel.org/cgit/network/connman/connman.git/commit/?id=bbd19813c457227a2861c05e9ebc676f8feb7f10 ---- - src/timeserver.c | 13 ------------- - 1 files changed, 0 insertions(+), 13 deletions(-) - -diff --git a/src/timeserver.c b/src/timeserver.c -index 6440611..6386521 100644 ---- a/src/timeserver.c -+++ b/src/timeserver.c -@@ -179,11 +179,9 @@ GSList *__connman_timeserver_add_list(GSList *server_list, - GSList *__connman_timeserver_get_all(struct connman_service *service) - { - GSList *list = NULL; -- struct connman_network *network; - char **timeservers; - char **service_ts; - char **service_ts_config; -- const char *service_gw; - char **fallback_ts; - int index, i; - -@@ -204,17 +202,6 @@ GSList *__connman_timeserver_get_all(struct connman_service *service) - for (i = 0; service_ts && service_ts[i]; i++) - list = __connman_timeserver_add_list(list, service_ts[i]); - -- network = __connman_service_get_network(service); -- if (network) { -- index = connman_network_get_index(network); -- service_gw = __connman_ipconfig_get_gateway_from_index(index, -- CONNMAN_IPCONFIG_TYPE_ALL); -- -- /* Then add Service Gateway to the list */ -- if (service_gw) -- list = __connman_timeserver_add_list(list, service_gw); -- } -- - /* Then add Global Timeservers to the list */ - timeservers = load_timeservers(); - --- -1.7.2.5 -