/* * __connman_timeserver_get_all function creates the timeserver * list which will be used to determine NTP server for time corrections. * The service settings take priority over the global timeservers. */ GSList *__connman_timeserver_get_all(struct connman_service *service) { GSList *list = NULL; struct connman_network *network; char **timeservers; char **service_ts; char **service_ts_config; const char *service_gw; char **fallback_ts; int index, i; if (__connman_clock_timeupdates() == TIME_UPDATES_MANUAL) return NULL; service_ts_config = connman_service_get_timeservers_config(service); /* First add Service Timeservers.Configuration to the list */ for (i = 0; service_ts_config && service_ts_config[i]; i++) list = __connman_timeserver_add_list(list, service_ts_config[i]); service_ts = connman_service_get_timeservers(service); /* First add Service Timeservers via DHCP to the list */ for (i = 0; service_ts && service_ts[i]; i++) list = __connman_timeserver_add_list(list, service_ts[i]); network = __connman_service_get_network(service); if (network) { index = connman_network_get_index(network); service_gw = __connman_ipconfig_get_gateway_from_index(index, CONNMAN_IPCONFIG_TYPE_ALL); /* Then add Service Gateway to the list */ if (service_gw) list = __connman_timeserver_add_list(list, service_gw); } /* Then add Global Timeservers to the list */ timeservers = load_timeservers(); for (i = 0; timeservers && timeservers[i]; i++) list = __connman_timeserver_add_list(list, timeservers[i]); g_strfreev(timeservers); fallback_ts = connman_setting_get_string_list("FallbackTimeservers"); /* Lastly add the fallback servers */ for (i = 0; fallback_ts && fallback_ts[i]; i++) list = __connman_timeserver_add_list(list, fallback_ts[i]); return g_slist_reverse(list); }
static bool wispr_route_request(const char *address, int ai_family, int if_index, gpointer user_data) { int result = -1; struct connman_wispr_portal_context *wp_context = user_data; const char *gateway; struct wispr_route *route; gateway = __connman_ipconfig_get_gateway_from_index(if_index, wp_context->type); DBG("address %s if %d gw %s", address, if_index, gateway); if (!gateway) return false; route = g_try_new0(struct wispr_route, 1); if (route == 0) { DBG("could not create struct"); return false; } switch (wp_context->type) { case CONNMAN_IPCONFIG_TYPE_IPV4: result = connman_inet_add_host_route(if_index, address, gateway); break; case CONNMAN_IPCONFIG_TYPE_IPV6: result = connman_inet_add_ipv6_host_route(if_index, address, gateway); break; case CONNMAN_IPCONFIG_TYPE_UNKNOWN: case CONNMAN_IPCONFIG_TYPE_ALL: break; } if (result < 0) { g_free(route); return false; } route->address = g_strdup(address); route->if_index = if_index; wp_context->route_list = g_slist_prepend(wp_context->route_list, route); return true; }
static void trigger_rtnl(int index, void *user_data) { struct connman_rtnl *rtnl = user_data; if (rtnl->newlink) { unsigned short type = __connman_ipconfig_get_type_from_index(index); unsigned int flags = __connman_ipconfig_get_flags_from_index(index); rtnl->newlink(type, index, flags, 0); } if (rtnl->newgateway) { const char *gateway = __connman_ipconfig_get_gateway_from_index(index); if (gateway != NULL) rtnl->newgateway(index, gateway); } }