*((char **) value) = element->ipv4.nameserver;
__connman_element_unlock(element);
break;
+ case CONNMAN_PROPERTY_ID_IPV4_TIMESERVER:
+ if (element->ipv4.timeserver == NULL)
+ return connman_element_get_value(element->parent,
+ id, value);
+ __connman_element_lock(element);
+ *((char **) value) = element->ipv4.timeserver;
+ __connman_element_unlock(element);
+ break;
default:
return -EINVAL;
}
const char *method = NULL;
const char *address = NULL, *netmask = NULL, *gateway = NULL;
const char *broadcast = NULL, *nameserver = NULL;
+ const char *timeserver = NULL;
connman_element_get_value(element,
CONNMAN_PROPERTY_ID_IPV4_METHOD, &method);
CONNMAN_PROPERTY_ID_IPV4_BROADCAST, &broadcast);
connman_element_get_value(element,
CONNMAN_PROPERTY_ID_IPV4_NAMESERVER, &nameserver);
+ connman_element_get_value(element,
+ CONNMAN_PROPERTY_ID_IPV4_TIMESERVER, ×erver);
if (method != NULL)
connman_dbus_dict_append_variant(dict, "IPv4.Method",
connman_dbus_dict_append_variant(dict, "IPv4.Nameserver",
DBUS_TYPE_STRING, &nameserver);
+ if (timeserver != NULL)
+ connman_dbus_dict_append_variant(dict, "IPv4.Timeserver",
+ DBUS_TYPE_STRING, ×erver);
+
return 0;
}
element->ipv4.nameserver = g_strdup(nameserver);
connman_element_update(element);
+ } else if (g_str_equal(name, "IPv4.Timeserver") == TRUE) {
+ const char *timeserver;
+
+ if (type != DBUS_TYPE_STRING)
+ return -EINVAL;
+
+ dbus_message_iter_get_basic(value, ×erver);
+
+ g_free(element->ipv4.timeserver);
+ element->ipv4.nameserver = g_strdup(timeserver);
+
+ connman_element_update(element);
}
return 0;
struct connman_element *connection;
struct connman_ipv4 ipv4;
const char *address = NULL, *netmask = NULL, *broadcast = NULL;
- const char *nameserver = NULL;
+ const char *nameserver = NULL, *timeserver = NULL;
DBG("element %p name %s", element, element->name);
connman_element_get_value(element,
CONNMAN_PROPERTY_ID_IPV4_NAMESERVER, &nameserver);
+ connman_element_get_value(element,
+ CONNMAN_PROPERTY_ID_IPV4_TIMESERVER, ×erver);
DBG("address %s", address);
DBG("netmask %s", netmask);
if (broadcast)
ipv4.broadcast.s_addr = inet_addr(broadcast);
else
- ipv4.broadcast.s_addr = ipv4.address.s_addr | ~ipv4.netmask.s_addr;
+ ipv4.broadcast.s_addr = ipv4.address.s_addr |
+ ~ipv4.netmask.s_addr;
set_ipv4(element, &ipv4, nameserver);
+ connman_timeserver_append(timeserver);
+
connection = connman_element_create(NULL);
connection->type = CONNMAN_ELEMENT_TYPE_CONNECTION;
static void ipv4_remove(struct connman_element *element)
{
+ const char *timeserver = NULL;
+
DBG("element %p name %s", element, element->name);
+ connman_element_get_value(element,
+ CONNMAN_PROPERTY_ID_IPV4_TIMESERVER, ×erver);
+
+ connman_timeserver_remove(timeserver);
+
clear_ipv4(element);
}