diff options
Diffstat (limited to 'src/network.c')
-rwxr-xr-x | src/network.c | 60 |
1 files changed, 59 insertions, 1 deletions
diff --git a/src/network.c b/src/network.c index 334202c0..243b502d 100755 --- a/src/network.c +++ b/src/network.c @@ -140,6 +140,10 @@ struct connman_network { #if defined TIZEN_EXT unsigned char last_connected_bssid[WIFI_BSSID_LEN_MAX]; GHashTable *assoc_reject_table; + bool owe_transition_mode; + void *transition_mode_ssid; + int transition_mode_ssid_len; + unsigned char transition_mode_bssid[WIFI_BSSID_LEN_MAX]; #endif } wifi; @@ -2349,6 +2353,41 @@ unsigned char *connman_network_get_bssid(struct connman_network *network) return (unsigned char *)network->wifi.bssid; } +int connman_network_set_transition_mode_bssid(struct connman_network *network, + const unsigned char *transition_mode_bssid) +{ + int i = 0; + + if (transition_mode_bssid == NULL) + return -EINVAL; + + for (;i < WIFI_BSSID_LEN_MAX;i++) + network->wifi.transition_mode_bssid[i] = transition_mode_bssid[i]; + + return 0; +} + +unsigned char *connman_network_get_transition_mode_bssid(struct connman_network *network) +{ + return (unsigned char *)network->wifi.transition_mode_bssid; +} + +bool connman_network_check_transition_mode(struct connman_network *network1, struct connman_network *network2) +{ + + if (network1 == NULL || network2 == NULL) + return FALSE; + + if (network1->wifi.owe_transition_mode == FALSE || network2->wifi.owe_transition_mode == FALSE) + return FALSE; + + if ((memcmp(network1->wifi.bssid, network2->wifi.transition_mode_bssid, WIFI_BSSID_LEN_MAX) == 0) + && (memcmp(network1->wifi.transition_mode_bssid, network2->wifi.bssid, WIFI_BSSID_LEN_MAX) == 0)) + return TRUE; + else + return FALSE; +} + int connman_network_set_maxspeed(struct connman_network *network, int maxspeed) { @@ -2885,6 +2924,8 @@ int connman_network_set_bool(struct connman_network *network, network->default_internet = value; else if (g_strcmp0(key, "WiFi.HS20AP") == 0) network->wifi.isHS20AP = value; + else if (g_strcmp0(key, "WiFi.TRANSITION_MODE") == 0) + network->wifi.owe_transition_mode = value; #endif return -EINVAL; @@ -2913,6 +2954,8 @@ bool connman_network_get_bool(struct connman_network *network, return network->default_internet; else if (g_str_equal(key, "WiFi.HS20AP")) return network->wifi.isHS20AP; + else if (g_strcmp0(key, "WiFi.TRANSITION_MODE")) + return network->wifi.owe_transition_mode; #endif return false; @@ -2964,6 +3007,16 @@ int connman_network_set_blob(struct connman_network *network, network->wifi.ssid_len = size; } else network->wifi.ssid_len = 0; +#ifdef TIZEN_EXT + } else if (g_str_equal(key, "WiFi.TRANSITION_MODE_SSID")) { + g_free(network->wifi.transition_mode_ssid); + network->wifi.transition_mode_ssid = g_try_malloc(size); + if (network->wifi.transition_mode_ssid) { + memcpy(network->wifi.transition_mode_ssid, data, size); + network->wifi.transition_mode_ssid_len = size; + } else + network->wifi.transition_mode_ssid_len = 0; +#endif } else { return -EINVAL; } @@ -2986,8 +3039,13 @@ const void *connman_network_get_blob(struct connman_network *network, if (size) *size = network->wifi.ssid_len; return network->wifi.ssid; +#ifdef TIZEN_EXT + } else if (g_str_equal(key, "WiFi.TRANSITION_MODE_SSID")) { + if (size) + *size = network->wifi.transition_mode_ssid_len; + return network->wifi.transition_mode_ssid; +#endif } - return NULL; } |