projects
/
platform
/
upstream
/
connman.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Maintain connection status when wifi roaming
[platform/upstream/connman.git]
/
src
/
network.c
diff --git
a/src/network.c
b/src/network.c
index
3bf6299
..
8eb8c1e
100755
(executable)
--- a/
src/network.c
+++ b/
src/network.c
@@
-147,9
+147,11
@@
struct connman_network {
int transition_mode_ssid_len;
unsigned char transition_mode_bssid[WIFI_BSSID_LEN_MAX];
bool roaming_progress;
int transition_mode_ssid_len;
unsigned char transition_mode_bssid[WIFI_BSSID_LEN_MAX];
bool roaming_progress;
+ bool roaming_dhcp;
char *roaming_cur_bssid;
char *roaming_dst_bssid;
__time_t roam_scan_time;
char *roaming_cur_bssid;
char *roaming_dst_bssid;
__time_t roam_scan_time;
+ unsigned int max_bssid_count;
int snr;
#endif
} wifi;
int snr;
#endif
} wifi;
@@
-600,7
+602,11
@@
static void remove_dhcp_timeout(struct connman_network *network)
}
}
}
}
+#if defined TIZEN_EXT
+int set_connected_dhcp(struct connman_network *network)
+#else
static int set_connected_dhcp(struct connman_network *network)
static int set_connected_dhcp(struct connman_network *network)
+#endif
{
struct connman_service *service;
struct connman_ipconfig *ipconfig_ipv4;
{
struct connman_service *service;
struct connman_ipconfig *ipconfig_ipv4;
@@
-1415,6
+1421,9
@@
struct connman_network *
connman_network_ref_debug(struct connman_network *network,
const char *file, int line, const char *caller)
{
connman_network_ref_debug(struct connman_network *network,
const char *file, int line, const char *caller)
{
+#if defined TIZEN_EXT
+ if (!simplified_log)
+#endif
DBG("%p name %s ref %d by %s:%d:%s()", network, network->name,
network->refcount + 1, file, line, caller);
DBG("%p name %s ref %d by %s:%d:%s()", network, network->name,
network->refcount + 1, file, line, caller);
@@
-1432,6
+1441,9
@@
connman_network_ref_debug(struct connman_network *network,
void connman_network_unref_debug(struct connman_network *network,
const char *file, int line, const char *caller)
{
void connman_network_unref_debug(struct connman_network *network,
const char *file, int line, const char *caller)
{
+#if defined TIZEN_EXT
+ if (!simplified_log)
+#endif
DBG("%p name %s ref %d by %s:%d:%s()", network, network->name,
network->refcount - 1, file, line, caller);
DBG("%p name %s ref %d by %s:%d:%s()", network, network->name,
network->refcount - 1, file, line, caller);
@@
-2380,9
+2392,6
@@
int connman_network_set_bssid(struct connman_network *network,
if (bssid == NULL)
return -EINVAL;
if (bssid == NULL)
return -EINVAL;
- if (network->connected)
- return -EPERM;
-
if (!simplified_log)
DBG("network %p bssid %02x:%02x:%02x:%02x:%02x:%02x", network,
bssid[0], bssid[1], bssid[2],
if (!simplified_log)
DBG("network %p bssid %02x:%02x:%02x:%02x:%02x:%02x", network,
bssid[0], bssid[1], bssid[2],
@@
-2601,9
+2610,15
@@
unsigned char *connman_network_get_countrycode(struct connman_network *network)
int connman_network_set_bssid_list(struct connman_network *network,
GSList *bssids)
{
int connman_network_set_bssid_list(struct connman_network *network,
GSList *bssids)
{
+ unsigned int max_bssid_count;
+
g_slist_free_full(network->wifi.bssid_list, g_free);
network->wifi.bssid_list = bssids;
g_slist_free_full(network->wifi.bssid_list, g_free);
network->wifi.bssid_list = bssids;
+ max_bssid_count = g_slist_length(bssids);
+ if (network->wifi.max_bssid_count < max_bssid_count)
+ network->wifi.max_bssid_count = max_bssid_count;
+
return 0;
}
return 0;
}
@@
-2641,6
+2656,11
@@
void *connman_network_get_bssid_list(struct connman_network *network)
return network->wifi.bssid_list;
}
return network->wifi.bssid_list;
}
+unsigned int connman_network_get_max_bssid_count(struct connman_network *network)
+{
+ return network->wifi.max_bssid_count;
+}
+
int connman_network_set_last_connected_bssid(struct connman_network *network,
const unsigned char *bssid)
{
int connman_network_set_last_connected_bssid(struct connman_network *network,
const unsigned char *bssid)
{
@@
-3034,6
+3054,8
@@
int connman_network_set_bool(struct connman_network *network,
network->wifi.owe_transition_mode = value;
else if (g_strcmp0(key, "WiFi.Roaming") == 0)
network->wifi.roaming_progress = value;
network->wifi.owe_transition_mode = value;
else if (g_strcmp0(key, "WiFi.Roaming") == 0)
network->wifi.roaming_progress = value;
+ else if (g_strcmp0(key, "WiFi.RoamingDHCP") == 0)
+ network->wifi.roaming_dhcp = value;
else if (g_strcmp0(key, "WiFi.PMFRequired") == 0)
network->wifi.pmf_required = value;
#endif
else if (g_strcmp0(key, "WiFi.PMFRequired") == 0)
network->wifi.pmf_required = value;
#endif
@@
-3068,6
+3090,8
@@
bool connman_network_get_bool(struct connman_network *network,
return network->wifi.owe_transition_mode;
else if (g_str_equal(key, "WiFi.Roaming"))
return network->wifi.roaming_progress;
return network->wifi.owe_transition_mode;
else if (g_str_equal(key, "WiFi.Roaming"))
return network->wifi.roaming_progress;
+ else if (g_str_equal(key, "WiFi.RoamingDHCP"))
+ return network->wifi.roaming_dhcp;
else if (g_str_equal(key, "WiFi.PMFRequired"))
return network->wifi.pmf_required;
#endif
else if (g_str_equal(key, "WiFi.PMFRequired"))
return network->wifi.pmf_required;
#endif