static void service_free(gpointer data)
{
	struct connman_service *service = data;
	int i;

	if (service_if != NULL && service_if->selected_service == service)
		return;

	if (service->property_changed_wid != 0)
		g_dbus_remove_watch(service_if->dbus_cnx,
					service->property_changed_wid);

	for (i = 0; i < SERVICE_MAX; i++) {
		if (service->to_update[i] != 0)
			g_source_remove(service->to_update[i]);

		if (service->call_modify[i] != 0) {
			dbus_pending_call_cancel(service->call_modify[i]);
			dbus_pending_call_unref(service->call_modify[i]);
		}

		if (service->to_error[i] != 0)
			g_source_remove(service->to_error[i]);
	}

	g_free(service->path);
	g_free(service->error);
	g_free(service->name);
	g_free(service->type);
	g_free(service->security);
	g_free(service->nameservers);
	g_free(service->nameservers_conf);
	g_free(service->timeservers);
	g_free(service->timeservers_conf);
	g_free(service->domains);
	g_free(service->domains_conf);

	ipv4_free(service->ipv4);
	ipv4_free(service->ipv4_conf);

	ipv6_free(service->ipv6);
	ipv6_free(service->ipv6_conf);

	proxy_free(service->proxy);
	proxy_free(service->proxy_conf);

	provider_free(service->provider);

	ethernet_free(service->ethernet);

	g_free(service);
}
Exemple #2
0
void
free_interface(struct interface *ifp)
{

	if (ifp == NULL)
		return;
	ipv4_free(ifp);
	dhcp_free(ifp);
	ipv6_free(ifp);
	dhcp6_free(ifp);
	ipv6nd_free(ifp);
	free_options(ifp->options);
	free(ifp);
}