summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNiraj Kumar Goit <niraj.g@samsung.com>2018-01-04 14:48:49 +0530
committerSeonah Moon <seonah1.moon@samsung.com>2018-01-23 16:59:24 +0900
commit0e3dff67b594543b0488007bc913b3939ffe0fe6 (patch)
tree861e7b40e81acacf63951cc79cc7191893aec420 /src
parent1e0637575d1d1250baa8551dde46bb7bab02bc38 (diff)
downloadconnman-0e3dff67b594543b0488007bc913b3939ffe0fe6.tar.gz
connman-0e3dff67b594543b0488007bc913b3939ffe0fe6.tar.bz2
connman-0e3dff67b594543b0488007bc913b3939ffe0fe6.zip
Modified logic to process each VSIE of all vendors.
Modified logic to process each VSIE of all vendors instead of only samsung vendor(OUI: 001632). Received VSIE will be appended in the list and shared with application. Change-Id: Ifbb0159f40a8949a6f117416e5d436d5c2299b49
Diffstat (limited to 'src')
-rwxr-xr-xsrc/network.c49
-rwxr-xr-xsrc/service.c23
2 files changed, 44 insertions, 28 deletions
diff --git a/src/network.c b/src/network.c
index d38fc0af..cf74b6d5 100755
--- a/src/network.c
+++ b/src/network.c
@@ -114,8 +114,7 @@ struct connman_network {
bool rsn_mode;
int disconnect_reason;
int assoc_status_code;
- void *wifi_vsie;
- unsigned int wifi_vsie_len;
+ GSList *vsie_list;
#endif
} wifi;
@@ -980,7 +979,7 @@ static void network_destruct(struct connman_network *network)
g_free(network->wifi.phase2_auth);
g_free(network->wifi.pin_wps);
#if defined TIZEN_EXT
- g_free(network->wifi.wifi_vsie);
+ g_slist_free_full(network->wifi.vsie_list, g_free);
#endif
g_free(network->path);
g_free(network->group);
@@ -2388,6 +2387,31 @@ bool connman_network_get_bool(struct connman_network *network,
return false;
}
+#if defined TIZEN_EXT
+/**
+ * connman_network_set_vsie_list:
+ * @network: network structure
+ * @vsie_list: GSList pointer
+ *
+ * Set vendor specific list pointer
+ */
+void connman_network_set_vsie_list(struct connman_network *network, GSList *vsie_list)
+{
+ network->wifi.vsie_list = vsie_list;
+}
+
+/**
+ * connman_network_get_vsie_list:
+ * @network: network structure
+ *
+ * Get vendor specific list pointer
+ */
+void *connman_network_get_vsie_list(struct connman_network *network)
+{
+ return network->wifi.vsie_list;
+}
+#endif
+
/**
* connman_network_set_blob:
* @network: network structure
@@ -2408,16 +2432,6 @@ int connman_network_set_blob(struct connman_network *network,
network->wifi.ssid_len = size;
} else
network->wifi.ssid_len = 0;
-#if defined TIZEN_EXT
- } else if (g_str_equal(key, "WiFi.Vsie")){
- g_free(network->wifi.wifi_vsie);
- network->wifi.wifi_vsie = g_try_malloc(size);
- if (network->wifi.wifi_vsie) {
- memcpy(network->wifi.wifi_vsie, data, size);
- network->wifi.wifi_vsie_len = size;
- } else
- network->wifi.wifi_vsie_len = 0;
-#endif
} else {
return -EINVAL;
}
@@ -2442,15 +2456,6 @@ const void *connman_network_get_blob(struct connman_network *network,
return network->wifi.ssid;
}
-#if defined TIZEN_EXT
- if (g_str_equal(key, "WiFi.Vsie")) {
- if (size)
- *size = network->wifi.wifi_vsie_len;
-
- return network->wifi.wifi_vsie;
- }
-#endif
-
return NULL;
}
diff --git a/src/service.c b/src/service.c
index d0543ae5..ba4acc19 100755
--- a/src/service.c
+++ b/src/service.c
@@ -3305,14 +3305,25 @@ static void append_properties(DBusMessageIter *dict, dbus_bool_t limited,
connman_dbus_dict_append_basic(dict, "Frequency",
DBUS_TYPE_UINT16, &frequency);
}
- const void *wifi_vsie;
+
+ unsigned char *wifi_vsie;
unsigned int wifi_vsie_len;
- wifi_vsie = connman_network_get_blob(service->network, "WiFi.Vsie", &wifi_vsie_len);
- if(wifi_vsie_len > 0) {
- DBG("ConnMan, service->path=%s vsie length=%d", service->path, wifi_vsie_len);
+ GSList *vsie_list = NULL;
+
+ if (service->network)
+ vsie_list = (GSList *)connman_network_get_vsie_list(service->network);
+
+ if (vsie_list) {
+ DBG("ConnMan, service->path=%s No.of elements in list: %d", service->path, g_slist_length(vsie_list));
+ GSList *list;
+ for (list = vsie_list; list; list = list->next) {
+ wifi_vsie = (unsigned char *)list->data;
+ wifi_vsie_len = wifi_vsie[1] + 2;
+
+ connman_dbus_dict_append_fixed_array(dict, "Vsie", DBUS_TYPE_BYTE,
+ &wifi_vsie, wifi_vsie_len);
+ }
}
- connman_dbus_dict_append_fixed_array(dict, "Vsie", DBUS_TYPE_BYTE,
- &wifi_vsie, wifi_vsie_len);
#endif
str = __connman_service_type2string(service->type);