Ejemplo n.º 1
0
/**
 * connman_resolver_append_lifetime:
 * @interface: network interface
 * @domain: domain limitation
 * @server: server address
 * @timeout: server lifetime in seconds
 *
 * Append resolver server address to current list
 */
int connman_resolver_append_lifetime(const char *interface, const char *domain,
				const char *server, unsigned int lifetime)
{
	GSList *list;

	DBG("interface %s domain %s server %s lifetime %d",
				interface, domain, server, lifetime);

	if (server == NULL)
		return -EINVAL;

	for (list = entry_list; list; list = list->next) {
		struct entry_data *entry = list->data;

		if (!entry->timeout ||
				g_strcmp0(entry->interface, interface) ||
				g_strcmp0(entry->domain, domain) ||
				g_strcmp0(entry->server, server))
			continue;

		g_source_remove(entry->timeout);

		if (lifetime == 0) {
			resolver_expire_cb(entry);
			return 0;
		}

		entry->timeout = g_timeout_add_seconds(lifetime,
						resolver_expire_cb, entry);
		return 0;
	}

	return append_resolver(interface, domain, server, lifetime, 0);
}
Ejemplo n.º 2
0
/**
 * connman_resolver_append_lifetime:
 * @interface: network interface
 * @domain: domain limitation
 * @server: server address
 * @timeout: server lifetime in seconds
 *
 * Append resolver server address to current list
 */
int connman_resolver_append_lifetime(const char *interface, const char *domain,
				const char *server, unsigned int lifetime)
{
	GSList *list;
	unsigned int interval;

	DBG("interface %s domain %s server %s lifetime %d",
				interface, domain, server, lifetime);

	if (server == NULL && domain == NULL)
		return -EINVAL;

	for (list = entry_list; list; list = list->next) {
		struct entry_data *entry = list->data;

		if (entry->timeout == 0 ||
				g_strcmp0(entry->interface, interface) != 0 ||
				g_strcmp0(entry->domain, domain) != 0 ||
				g_strcmp0(entry->server, server) != 0)
			continue;

		g_source_remove(entry->timeout);

		if (lifetime == 0) {
			resolver_expire_cb(entry);
			return 0;
		}

		interval = lifetime * RESOLVER_LIFETIME_REFRESH_THRESHOLD;

		DBG("RDNSS start interface %s domain %s "
				"server %s lifetime threshold %d",
				interface, domain, server, interval);

		entry->timeout = g_timeout_add_seconds(interval,
				resolver_refresh_cb, entry);
		return 0;
	}

	return append_resolver(interface, domain, server, lifetime, 0);
}