summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/service.h1
-rw-r--r--src/service.c11
-rw-r--r--src/timeserver.c11
3 files changed, 23 insertions, 0 deletions
diff --git a/include/service.h b/include/service.h
index afa51a2c..d7aaca5c 100644
--- a/include/service.h
+++ b/include/service.h
@@ -107,6 +107,7 @@ char *connman_service_get_interface(struct connman_service *service);
const char *connman_service_get_domainname(struct connman_service *service);
char **connman_service_get_nameservers(struct connman_service *service);
+char **connman_service_get_timeservers(struct connman_service *service);
void connman_service_set_proxy_method(struct connman_service *service, enum connman_service_proxy_method method);
enum connman_service_proxy_method connman_service_get_proxy_method(struct connman_service *service);
char **connman_service_get_proxy_servers(struct connman_service *service);
diff --git a/src/service.c b/src/service.c
index 2fe93fce..a61824f1 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2154,6 +2154,17 @@ char **connman_service_get_nameservers(struct connman_service *service)
return NULL;
}
+char **connman_service_get_timeservers(struct connman_service *service)
+{
+ if (service == NULL)
+ return NULL;
+
+ if (service->timeservers != NULL)
+ return service->timeservers;
+
+ return NULL;
+}
+
void connman_service_set_proxy_method(struct connman_service *service,
enum connman_service_proxy_method method)
{
diff --git a/src/timeserver.c b/src/timeserver.c
index a3614337..b00f1091 100644
--- a/src/timeserver.c
+++ b/src/timeserver.c
@@ -35,6 +35,7 @@ static GSList *driver_list = NULL;
static GHashTable *server_hash = NULL;
static char **system_timeservers = NULL;
+static char **timeservers = NULL;
static GResolv *resolv = NULL;
static int resolv_id = 0;
@@ -289,6 +290,14 @@ int __connman_timeserver_sync(struct connman_service *service)
system_timeservers = load_timeservers();
+ timeservers = connman_service_get_timeservers(service);
+
+ if (timeservers != NULL && timeservers[0] != NULL) {
+ DBG("Using service tiemservers");
+ __connman_ntp_start(timeservers[0]);
+ return 0;
+ }
+
if (system_timeservers == NULL || system_timeservers[count] == NULL) {
DBG("No timeservers set.");
return 0;
@@ -315,6 +324,8 @@ void __connman_timeserver_stop()
system_timeservers = NULL;
}
+ timeservers = NULL;
+
count = 0;
__connman_ntp_stop();