ConnMan: use UseGatewaysAsTimeservers option

Upstream commits 20f20417 ("main: Add UseGatewaysAsTimeservers option")
and 3ce40776 ("timeserver: Use gateways as timeservers if
UseGatewaysAsTimeservers=true") change ConnMan's behaviour regarding the
use of default gateways as timeservers: this is now a configurable
option at run-time, with the default setting being to disable this
behaviour. These commits obsolete one of LibreELEC's custom patches,
connman-04-do-not-add-default-gw-as-timeserver.patch.

Prepare for the next stable release of ConnMan by cherry-picking these
commits from upstream (with minor modifications to commit 20f20417 so it
applies cleanly to 1.36) and using the new UseGatewaysAsTimeservers
option in /etc/connman/main.conf to forcefully disable the feature,
which matches the behaviour of the LibreELEC patch. The cherry-picked
upstream commits can be dropped when a new stable version of ConnMan is
released and LibreELEC upgrades to it.
This commit is contained in:
Chris Novakovic 2018-07-06 23:59:41 +01:00
parent 60ee116c4f
commit 3d9033fc43
4 changed files with 127 additions and 49 deletions

View File

@ -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" \

View File

@ -0,0 +1,76 @@
From b5e589fc385a2d4a62c6d91cefe6ad1b6bd9fa68 Mon Sep 17 00:00:00 2001
From: Chris Novakovic <chris@chrisn.me.uk>
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

View File

@ -0,0 +1,50 @@
From 3ce40776cf1e9cbb02279117298e2514aba42ffe Mon Sep 17 00:00:00 2001
From: Chris Novakovic <chris@chrisn.me.uk>
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

View File

@ -1,49 +0,0 @@
From 0b595ee514797c75663a9ddc4ddc81c6c82dc64a Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
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