diff options
Diffstat (limited to 'src/service.c')
-rwxr-xr-x | src/service.c | 310 |
1 files changed, 154 insertions, 156 deletions
diff --git a/src/service.c b/src/service.c index bbb639a5..bf5c11be 100755 --- a/src/service.c +++ b/src/service.c @@ -82,14 +82,11 @@ struct saved_profiles { GTimeVal modified; gchar *profile_name; }; -#endif -#if defined TIZEN_EXT_INS + static unsigned char invalid_bssid[WIFI_BSSID_LEN_MAX] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -#endif -#if defined TIZEN_EXT && defined TIZEN_EXT_INS enum connman_ins_preferred_freq { CONNMAN_INS_PREFERRED_FREQ_UNKNOWN, CONNMAN_INS_PREFERRED_FREQ_24GHZ, @@ -115,7 +112,7 @@ struct connman_ins_settings { }; static struct connman_ins_settings ins_settings; -#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ +#endif /* defined TIZEN_EXT */ struct connman_stats { bool valid; @@ -237,12 +234,10 @@ struct connman_service { enum connman_dnsconfig_method dns_config_method_ipv4; enum connman_dnsconfig_method dns_config_method_ipv6; -#endif -#if defined TIZEN_EXT + char *connector; char *c_sign_key; char *net_access_key; -#if defined TIZEN_EXT_INS unsigned char last_connected_bssid[WIFI_BSSID_LEN_MAX]; bool is_internet_connection; int assoc_reject_count; @@ -252,7 +247,6 @@ struct connman_service { int score_security_priority; int score_internet_connection; int score_strength; -#endif int ins_score; #endif #if defined TIZEN_EXT && defined TIZEN_EXT_EAP_ON_ETHERNET @@ -830,7 +824,7 @@ static int connman_service_set_eapol_property(struct connman_service *service, } #endif -#if defined TIZEN_EXT_INS +#if defined TIZEN_EXT static void save_assoc_reject(gpointer key, gpointer value, gpointer user_data) { struct assoc_reject_data *assoc_rd = value; @@ -1063,7 +1057,7 @@ done: g_key_file_free(keyfile); return err; } -#endif /* defined TIZEN_EXT_INS */ +#endif /* defined TIZEN_EXT */ static int service_load(struct connman_service *service) { @@ -1074,7 +1068,7 @@ static int service_load(struct connman_service *service) bool autoconnect; unsigned int ssid_len; int err = 0; -#if defined TIZEN_EXT_INS +#if defined TIZEN_EXT bool internet_connection; #endif #if defined TIZEN_EXT && defined TIZEN_EXT_EAP_ON_ETHERNET @@ -1164,45 +1158,47 @@ static int service_load(struct connman_service *service) g_free(hex_ssid); } -#if defined TIZEN_EXT_INS - /* Last connected BSSID */ - if (service->network) { - gchar *bssid_str; - unsigned char last_connected_bssid[WIFI_BSSID_LEN_MAX]; - char **str_list; - unsigned int i; +#if defined TIZEN_EXT + if (TIZEN_INS_ENABLED) { + /* Last connected BSSID */ + if (service->network) { + gchar *bssid_str; + unsigned char last_connected_bssid[WIFI_BSSID_LEN_MAX]; + char **str_list; + unsigned int i; - bssid_str = g_key_file_get_string(keyfile, - service->identifier, "LastConnectedBSSID", NULL); + bssid_str = g_key_file_get_string(keyfile, + service->identifier, "LastConnectedBSSID", NULL); - if (bssid_str) { - str_list = g_strsplit(bssid_str, ":", 0); + if (bssid_str) { + str_list = g_strsplit(bssid_str, ":", 0); - if (str_list) { - for (i = 0; i < WIFI_BSSID_LEN_MAX; i++) - last_connected_bssid[i] = strtol(str_list[i], NULL, 16); + if (str_list) { + for (i = 0; i < WIFI_BSSID_LEN_MAX; i++) + last_connected_bssid[i] = strtol(str_list[i], NULL, 16); - memcpy(service->last_connected_bssid, - last_connected_bssid, WIFI_BSSID_LEN_MAX); + memcpy(service->last_connected_bssid, + last_connected_bssid, WIFI_BSSID_LEN_MAX); - connman_network_set_last_connected_bssid(service->network, - last_connected_bssid); + connman_network_set_last_connected_bssid(service->network, + last_connected_bssid); - g_strfreev(str_list); - } + g_strfreev(str_list); + } - g_free(bssid_str); + g_free(bssid_str); + } } - } - /* Internet connection */ - internet_connection = g_key_file_get_boolean(keyfile, - service->identifier, "InternetConnection", &error); - if (!error) - service->is_internet_connection = internet_connection; + /* Internet connection */ + internet_connection = g_key_file_get_boolean(keyfile, + service->identifier, "InternetConnection", &error); + if (!error) + service->is_internet_connection = internet_connection; - g_clear_error(&error); -#endif /* defined TIZEN_EXT_INS */ + g_clear_error(&error); + } +#endif /* defined TIZEN_EXT */ /* fall through */ case CONNMAN_SERVICE_TYPE_GADGET: @@ -1479,7 +1475,7 @@ static int service_save(struct connman_service *service) if (service->network) { const unsigned char *ssid; unsigned int ssid_len = 0; -#if defined TIZEN_EXT_INS +#if defined TIZEN_EXT GHashTable *assoc_reject_table; #endif @@ -1511,69 +1507,70 @@ static int service_save(struct connman_service *service) g_key_file_set_integer(keyfile, service->identifier, "Frequency", freq); -#if defined TIZEN_EXT_INS - /* Last connected BSSID */ - if (memcmp(service->last_connected_bssid, invalid_bssid, WIFI_BSSID_LEN_MAX)) { - char *identifier = service->identifier; - GString *bssid_str; - unsigned int i; +#if defined TIZEN_EXT + if (TIZEN_INS_ENABLED) { + /* Last connected BSSID */ + if (memcmp(service->last_connected_bssid, invalid_bssid, WIFI_BSSID_LEN_MAX)) { + char *identifier = service->identifier; + GString *bssid_str; + unsigned int i; - bssid_str = g_string_sized_new(18); - if (!bssid_str) { - err = -ENOMEM; - goto done; - } + bssid_str = g_string_sized_new(18); + if (!bssid_str) { + err = -ENOMEM; + goto done; + } - for (i = 0; i < WIFI_BSSID_LEN_MAX; i++) { - g_string_append_printf(bssid_str, - "%02x", service->last_connected_bssid[i]); - if (i < WIFI_BSSID_LEN_MAX - 1) - g_string_append(bssid_str, ":"); - } + for (i = 0; i < WIFI_BSSID_LEN_MAX; i++) { + g_string_append_printf(bssid_str, + "%02x", service->last_connected_bssid[i]); + if (i < WIFI_BSSID_LEN_MAX - 1) + g_string_append(bssid_str, ":"); + } - g_key_file_set_string(keyfile, identifier, + g_key_file_set_string(keyfile, identifier, "LastConnectedBSSID", bssid_str->str); - DBG("last connected bssid[%s]", bssid_str->str); + DBG("last connected bssid[%s]", bssid_str->str); - g_string_free(bssid_str, TRUE); - } - - /* Assoc reject */ - assoc_reject_table = connman_network_get_assoc_reject_table(service->network); - if (assoc_reject_table && g_hash_table_size(assoc_reject_table) > 0) { - GString *assoc_reject_str; - char **assoc_reject_list; - guint assoc_reject_len; - - assoc_reject_str = g_string_new(NULL); - if (!assoc_reject_str) { - err = -ENOMEM; - goto done; + g_string_free(bssid_str, TRUE); } - g_hash_table_foreach(assoc_reject_table, save_assoc_reject, assoc_reject_str); + /* Assoc reject */ + assoc_reject_table = connman_network_get_assoc_reject_table(service->network); + if (assoc_reject_table && g_hash_table_size(assoc_reject_table) > 0) { + GString *assoc_reject_str; + char **assoc_reject_list; + guint assoc_reject_len; - assoc_reject_list = g_strsplit_set(assoc_reject_str->str, " ", 0); - assoc_reject_len = g_strv_length(assoc_reject_list); + assoc_reject_str = g_string_new(NULL); + if (!assoc_reject_str) { + err = -ENOMEM; + goto done; + } - g_key_file_set_string_list(keyfile, service->identifier, - "AssocReject", (const gchar **)assoc_reject_list, assoc_reject_len); + g_hash_table_foreach(assoc_reject_table, save_assoc_reject, assoc_reject_str); - DBG("assoc reject table [%d]", assoc_reject_len); + assoc_reject_list = g_strsplit_set(assoc_reject_str->str, " ", 0); + assoc_reject_len = g_strv_length(assoc_reject_list); - g_strfreev(assoc_reject_list); - g_string_free(assoc_reject_str, TRUE); - } else - g_key_file_remove_key(keyfile, service->identifier, "AssocReject", NULL); + g_key_file_set_string_list(keyfile, service->identifier, + "AssocReject", (const gchar **)assoc_reject_list, assoc_reject_len); - /* Internet connection */ - g_key_file_set_boolean(keyfile, service->identifier, - "InternetConnection", service->is_internet_connection); + DBG("assoc reject table [%d]", assoc_reject_len); - DBG("internet connection [%s]", service->is_internet_connection ? "true" : "false"); + g_strfreev(assoc_reject_list); + g_string_free(assoc_reject_str, TRUE); + } else + g_key_file_remove_key(keyfile, service->identifier, "AssocReject", NULL); -#endif /* defined TIZEN_EXT_INS */ + /* Internet connection */ + g_key_file_set_boolean(keyfile, service->identifier, + "InternetConnection", service->is_internet_connection); + + DBG("internet connection [%s]", service->is_internet_connection ? "true" : "false"); + } +#endif /* defined TIZEN_EXT */ } /* fall through */ @@ -3155,33 +3152,32 @@ static void state_changed(struct connman_service *service) #if defined TIZEN_EXT static void connect_reason_changed(struct connman_service *service) { -#if defined TIZEN_EXT_INS struct connman_device *device; -#endif + if (!service->path) return; if (!allow_property_changed(service)) return; -#if defined TIZEN_EXT_INS - if (service->connect_reason == CONNMAN_SERVICE_CONNECT_REASON_USER) { - device = connman_network_get_device(service->network); - if (device) { - bool need_save = false; + if (TIZEN_INS_ENABLED) { + if (service->connect_reason == CONNMAN_SERVICE_CONNECT_REASON_USER) { + device = connman_network_get_device(service->network); + if (device) { + bool need_save = false; - need_save |= connman_device_set_last_user_selection_ident(device, service->identifier); - need_save |= connman_device_set_last_user_selection_time(device, time(NULL)); + need_save |= connman_device_set_last_user_selection_ident(device, service->identifier); + need_save |= connman_device_set_last_user_selection_time(device, time(NULL)); - DBG("last user selection ident[%s] time[%ld]", - connman_device_get_last_user_selection_ident(device), - connman_device_get_last_user_selection_time(device)); + DBG("last user selection ident[%s] time[%ld]", + connman_device_get_last_user_selection_ident(device), + connman_device_get_last_user_selection_time(device)); - if (need_save) - connman_device_save_last_user_selection(device); + if (need_save) + connman_device_save_last_user_selection(device); + } } } -#endif connman_dbus_property_changed_basic(service->path, CONNMAN_SERVICE_INTERFACE, @@ -3189,9 +3185,7 @@ static void connect_reason_changed(struct connman_service *service) DBUS_TYPE_INT32, &service->connect_reason); } -#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ -#if defined TIZEN_EXT static void disconnection_requested_changed(struct connman_service *service) { dbus_bool_t disconnection_requested; @@ -3275,7 +3269,7 @@ static void strength_changed(struct connman_service *service) DBUS_TYPE_BYTE, &service->strength); } -#if defined TIZEN_EXT_INS +#if defined TIZEN_EXT static bool update_last_connected_bssid(struct connman_service *service) { const unsigned char *last_connected_bssid; @@ -4711,7 +4705,7 @@ static void append_properties(DBusMessageIter *dict, dbus_bool_t limited, connman_network_append_acddbus(dict, service->network); } -#if defined TIZEN_EXT && defined TIZEN_EXT_INS +#if defined TIZEN_EXT static void append_ins_bssid_info(DBusMessageIter *iter, void *user_data) { GSList *bssid_list = NULL; @@ -4802,7 +4796,7 @@ static void append_ins_properties(DBusMessageIter *dict, append_ins_bssid_info, service->network); } } -#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ +#endif /* defined TIZEN_EXT */ static void append_struct_service(DBusMessageIter *iter, connman_dbus_append_cb_t function, @@ -4841,7 +4835,7 @@ static void append_struct(gpointer value, gpointer user_data) append_struct_service(iter, append_dict_properties, service); } -#if defined TIZEN_EXT && defined TIZEN_EXT_INS +#if defined TIZEN_EXT static void append_dict_ins_properties(DBusMessageIter *dict, void *user_data) { struct connman_service *service = user_data; @@ -4867,7 +4861,7 @@ void __connman_ins_list_struct(DBusMessageIter *iter) { g_list_foreach(service_list, append_ins_struct, iter); } -#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ +#endif /* defined TIZEN_EXT */ void __connman_service_list_struct(DBusMessageIter *iter) { @@ -5122,7 +5116,7 @@ const char *connman_service_get_proxy_url(struct connman_service *service) return service->pac; } -#if defined TIZEN_EXT_INS +#if defined TIZEN_EXT void connman_service_set_internet_connection(struct connman_service *service, bool internet_connection) { @@ -5144,9 +5138,7 @@ bool connman_service_get_internet_connection(struct connman_service *service) return service->is_internet_connection; } -#endif -#if defined TIZEN_EXT DBusMessage *connman_service_create_dbus_service_reply(DBusMessage *msg, struct connman_service *service) { @@ -7951,12 +7943,10 @@ static void service_initialize(struct connman_service *service) service->wps = false; service->wps_advertizing = false; -#if defined TIZEN_EXT_INS +#if defined TIZEN_EXT memset(service->last_connected_bssid, 0, WIFI_BSSID_LEN_MAX); service->is_internet_connection = false; service->assoc_reject_count = 0; -#endif -#if defined TIZEN_EXT service->disconnection_requested = false; service->storage_reload = false; /* @@ -8056,7 +8046,7 @@ void connman_service_unref_debug(struct connman_service *service, g_hash_table_remove(service_hash, service->identifier); } -#if defined TIZEN_EXT && defined TIZEN_EXT_INS +#if defined TIZEN_EXT static int calculate_score_last_user_selection(struct connman_service *service) { int score = 0; @@ -8234,7 +8224,7 @@ static int calculate_score(struct connman_service *service) service->ins_score = score; return score; } -#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ +#endif /* defined TIZEN_EXT */ static gint service_compare(gconstpointer a, gconstpointer b); @@ -8295,13 +8285,13 @@ static gint service_compare(gconstpointer a, gconstpointer b) struct connman_service *service_b = (void *) b; enum connman_service_state state_a, state_b; bool a_connected, b_connected; -#if defined TIZEN_EXT && defined TIZEN_EXT_INS +#if defined TIZEN_EXT int score_a; int score_b; gint strength = 0; -#else /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ +#else /* defined TIZEN_EXT */ gint strength; -#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ +#endif /* defined TIZEN_EXT */ state_a = service_a->state; state_b = service_b->state; @@ -8415,21 +8405,24 @@ static gint service_compare(gconstpointer a, gconstpointer b) return 1; } -#if defined TIZEN_EXT && defined TIZEN_EXT_INS - score_a = calculate_score(service_a); - score_b = calculate_score(service_b); - if (score_b != score_a) - return score_b - score_a; - else if (score_b == score_a) { - strength = (gint) service_b->strength - (gint) service_a->strength; - if (strength) - return strength; +#if defined TIZEN_EXT + if (TIZEN_INS_ENABLED) { + score_a = calculate_score(service_a); + score_b = calculate_score(service_b); + + if (score_b != score_a) + return score_b - score_a; + else if (score_b == score_a) { + strength = (gint) service_b->strength - (gint) service_a->strength; + if (strength) + return strength; + } } -#else /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ +#else /* defined TIZEN_EXT */ strength = (gint) service_b->strength - (gint) service_a->strength; if (strength) return strength; -#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ +#endif /* defined TIZEN_EXT */ return g_strcmp0(service_a->name, service_b->name); } @@ -9431,8 +9424,8 @@ static int service_indicate_state(struct connman_service *service) single_connected_tech(service); #endif -#if defined TIZEN_EXT_INS - if (service->type == CONNMAN_SERVICE_TYPE_WIFI) +#if defined TIZEN_EXT + if (TIZEN_INS_ENABLED && service->type == CONNMAN_SERVICE_TYPE_WIFI) connman_service_set_internet_connection(service, true); #endif break; @@ -10587,11 +10580,13 @@ static int service_register(struct connman_service *service) #if defined TIZEN_EXT int ret; service_load(service); -#if defined TIZEN_EXT_INS - ret = service_ext_load(service); - if (ret == -ERANGE) - service_ext_save(service); -#endif /* defined TIZEN_EXT_INS */ + + if (TIZEN_INS_ENABLED) { + ret = service_ext_load(service); + if (ret == -ERANGE) + service_ext_save(service); + } + ret = __connman_config_provision_service(service); if (ret < 0 && !simplified_log) DBG("Failed to provision service"); @@ -11254,9 +11249,6 @@ void __connman_service_update_from_network(struct connman_network *network) bool roaming; const char *name; bool stats_enable; -#if defined TIZEN_EXT_INS - bool need_save = false; -#endif service = connman_service_lookup_from_network(network); if (!service) @@ -11313,13 +11305,18 @@ roaming: roaming_changed(service); sorting: -#if defined TIZEN_EXT_INS - need_save |= update_last_connected_bssid(service); - need_save |= update_assoc_reject(service); - if (need_save) { - g_get_current_time((GTimeVal *)&service->modified); - service_ext_save(service); - need_sort = true; +#if defined TIZEN_EXT + if (TIZEN_INS_ENABLED) { + bool need_save = false; + + need_save |= update_last_connected_bssid(service); + need_save |= update_assoc_reject(service); + + if (need_save) { + g_get_current_time((GTimeVal *)&service->modified); + service_ext_save(service); + need_sort = true; + } } #endif @@ -11505,7 +11502,7 @@ static struct connman_agent_driver agent_driver = { .context_unref = agent_context_unref, }; -#if defined TIZEN_EXT && defined TIZEN_EXT_INS +#if defined TIZEN_EXT static void ins_setting_init(void) { int i; @@ -11596,7 +11593,7 @@ static void ins_setting_init(void) DBG("signal_level3_5ghz [%d]", ins_settings.signal_level3_5ghz); DBG("signal_level3_24ghz [%d]", ins_settings.signal_level3_24ghz); } -#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ +#endif /* defined TIZEN_EXT */ int __connman_service_init(void) { @@ -11627,9 +11624,10 @@ int __connman_service_init(void) remove_unprovisioned_services(); -#if defined TIZEN_EXT && defined TIZEN_EXT_INS - ins_setting_init(); -#endif /* defined TIZEN_EXT && defined TIZEN_EXT_INS */ +#if defined TIZEN_EXT + if (TIZEN_INS_ENABLED) + ins_setting_init(); +#endif /* defined TIZEN_EXT */ return 0; } |