diff options
author | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-04-20 16:07:31 +0300 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2012-04-20 15:11:40 +0200 |
commit | 43ef1744df09023ccc1ea850283ac0316b0797b3 (patch) | |
tree | 04f72b07d0e05a197041b7588565b0dff3236109 | |
parent | 87aec23ff8b680fde1a26a5883aa6576f0a15a1a (diff) | |
download | connman-43ef1744df09023ccc1ea850283ac0316b0797b3.tar.gz connman-43ef1744df09023ccc1ea850283ac0316b0797b3.tar.bz2 connman-43ef1744df09023ccc1ea850283ac0316b0797b3.zip |
service: Implement service Timeservers property
Fixes BMC#25054.
-rw-r--r-- | src/connman.h | 2 | ||||
-rw-r--r-- | src/service.c | 38 |
2 files changed, 40 insertions, 0 deletions
diff --git a/src/connman.h b/src/connman.h index 62467916..317af708 100644 --- a/src/connman.h +++ b/src/connman.h @@ -632,6 +632,8 @@ int __connman_service_timeserver_append(struct connman_service *service, const char *timeserver); int __connman_service_timeserver_remove(struct connman_service *service, const char *timeserver); +void __connman_service_timeserver_changed(struct connman_service *service, + GSList *ts_list); void __connman_service_set_pac(struct connman_service *service, const char *pac); connman_bool_t __connman_service_is_hidden(struct connman_service *service); diff --git a/src/service.c b/src/service.c index c9ec6b3c..5ff92b60 100644 --- a/src/service.c +++ b/src/service.c @@ -1475,6 +1475,21 @@ static void append_dnsconfig(DBusMessageIter *iter, void *user_data) } } +static void append_ts(DBusMessageIter *iter, void *user_data) +{ + GSList *list = user_data; + + while (list != NULL) { + char *timeserver = list->data; + + if (timeserver != NULL) + dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, + ×erver); + + list = g_slist_next(list); + } +} + static void append_tsconfig(DBusMessageIter *iter, void *user_data) { struct connman_service *service = user_data; @@ -2040,6 +2055,7 @@ static void append_properties(DBusMessageIter *dict, dbus_bool_t limited, struct connman_service *service) { const char *str; + GSList *list; str = __connman_service_type2string(service->type); if (str != NULL) @@ -2119,6 +2135,17 @@ static void append_properties(DBusMessageIter *dict, dbus_bool_t limited, connman_dbus_dict_append_array(dict, "Nameservers.Configuration", DBUS_TYPE_STRING, append_dnsconfig, service); + if (service->state == CONNMAN_SERVICE_STATE_READY || + service->state == CONNMAN_SERVICE_STATE_ONLINE) + list = __connman_timeserver_get_all(service); + else + list = NULL; + + connman_dbus_dict_append_array(dict, "Timeservers", + DBUS_TYPE_STRING, append_ts, list); + + g_slist_free_full(list, g_free); + connman_dbus_dict_append_array(dict, "Timeservers.Configuration", DBUS_TYPE_STRING, append_tsconfig, service); @@ -2453,6 +2480,17 @@ int __connman_service_timeserver_remove(struct connman_service *service, return 0; } +void __connman_service_timeserver_changed(struct connman_service *service, + GSList *ts_list) +{ + if (service == NULL) + return; + + connman_dbus_property_changed_array(service->path, + CONNMAN_SERVICE_INTERFACE, "Timeservers", + DBUS_TYPE_STRING, append_ts, ts_list); +} + void __connman_service_set_pac(struct connman_service *service, const char *pac) { |