summaryrefslogtreecommitdiff
path: root/gsupplicant/supplicant.c
diff options
context:
space:
mode:
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>2012-04-20 15:18:35 +0300
committerPatrik Flykt <patrik.flykt@linux.intel.com>2012-04-23 10:49:42 +0300
commit86c198cbb20d75d774c694ebd735133a962be601 (patch)
treee706b2f6d684ecfa5b4547e130ab0c711818c048 /gsupplicant/supplicant.c
parent26694acdacf8fc5e402bea044bd166677531c423 (diff)
downloadconnman-86c198cbb20d75d774c694ebd735133a962be601.tar.gz
connman-86c198cbb20d75d774c694ebd735133a962be601.tar.bz2
connman-86c198cbb20d75d774c694ebd735133a962be601.zip
gsupplicant: Add WPS specific capabilities handling for network
Diffstat (limited to 'gsupplicant/supplicant.c')
-rw-r--r--gsupplicant/supplicant.c39
1 files changed, 38 insertions, 1 deletions
diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
index b44ea69a..25a88af0 100644
--- a/gsupplicant/supplicant.c
+++ b/gsupplicant/supplicant.c
@@ -204,6 +204,7 @@ struct _GSupplicantNetwork {
GSupplicantMode mode;
GSupplicantSecurity security;
dbus_bool_t wps;
+ unsigned int wps_capabilities;
GHashTable *bss_table;
GHashTable *config_table;
};
@@ -860,6 +861,39 @@ dbus_bool_t g_supplicant_network_get_wps(GSupplicantNetwork *network)
return network->wps;
}
+dbus_bool_t g_supplicant_network_is_wps_active(GSupplicantNetwork *network)
+{
+ if (network == NULL)
+ return FALSE;
+
+ if (network->wps_capabilities & G_SUPPLICANT_WPS_CONFIGURED)
+ return TRUE;
+
+ return FALSE;
+}
+
+dbus_bool_t g_supplicant_network_is_wps_pbc(GSupplicantNetwork *network)
+{
+ if (network == NULL)
+ return FALSE;
+
+ if (network->wps_capabilities & G_SUPPLICANT_WPS_PBC)
+ return TRUE;
+
+ return FALSE;
+}
+
+dbus_bool_t g_supplicant_network_is_wps_advertizing(GSupplicantNetwork *network)
+{
+ if (network == NULL)
+ return FALSE;
+
+ if (network->wps_capabilities & G_SUPPLICANT_WPS_REGISTRAR)
+ return TRUE;
+
+ return FALSE;
+}
+
static void merge_network(GSupplicantNetwork *network)
{
GString *str;
@@ -1098,9 +1132,12 @@ static void add_bss_to_network(struct g_supplicant_bss *bss)
network->best_bss = bss;
network->wps = FALSE;
- if ((bss->keymgmt & G_SUPPLICANT_KEYMGMT_WPS) != 0)
+ if ((bss->keymgmt & G_SUPPLICANT_KEYMGMT_WPS) != 0) {
network->wps = TRUE;
+ network->wps_capabilities |= bss->wps_capabilities;
+ }
+
network->bss_table = g_hash_table_new_full(g_str_hash, g_str_equal,
NULL, remove_bss);