/** * 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); }
/** * 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); }