From fe35ac1aaf5897104963012fef42573f391ff2b4 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Fri, 14 Jan 2011 18:59:11 +0100 Subject: [PATCH] gsupplicant: Add network mode support --- gsupplicant/gsupplicant.h | 1 + gsupplicant/supplicant.c | 25 +++++++++++++++++++++++++ plugins/wifi.c | 1 + 3 files changed, 27 insertions(+) diff --git a/gsupplicant/gsupplicant.h b/gsupplicant/gsupplicant.h index 0df8640..c2462f4 100644 --- a/gsupplicant/gsupplicant.h +++ b/gsupplicant/gsupplicant.h @@ -74,6 +74,7 @@ typedef enum { G_SUPPLICANT_MODE_UNKNOWN, G_SUPPLICANT_MODE_INFRA, G_SUPPLICANT_MODE_IBSS, + G_SUPPLICANT_MODE_MASTER, } GSupplicantMode; typedef enum { diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c index 8c91a83..2e17868 100644 --- a/gsupplicant/supplicant.c +++ b/gsupplicant/supplicant.c @@ -244,6 +244,8 @@ static const char *mode2string(GSupplicantMode mode) return "managed"; case G_SUPPLICANT_MODE_IBSS: return "adhoc"; + case G_SUPPLICANT_MODE_MASTER: + return "ap"; } return NULL; @@ -2651,6 +2653,27 @@ static void add_network_security(DBusMessageIter *dict, GSupplicantSSID *ssid) DBUS_TYPE_STRING, &key_mgmt); } +static void add_network_mode(DBusMessageIter *dict, GSupplicantSSID *ssid) +{ + dbus_uint32_t mode; + + switch (ssid->mode) { + case G_SUPPLICANT_MODE_UNKNOWN: + case G_SUPPLICANT_MODE_INFRA: + mode = 0; + break; + case G_SUPPLICANT_MODE_IBSS: + mode = 1; + break; + case G_SUPPLICANT_MODE_MASTER: + mode = 2; + break; + } + + supplicant_dbus_dict_append_basic(dict, "mode", + DBUS_TYPE_UINT32, &mode); +} + static void interface_add_network_params(DBusMessageIter *iter, void *user_data) { DBusMessageIter dict; @@ -2663,6 +2686,8 @@ static void interface_add_network_params(DBusMessageIter *iter, void *user_data) supplicant_dbus_dict_append_basic(&dict, "scan_ssid", DBUS_TYPE_UINT32, &scan_ssid); + add_network_mode(&dict, ssid); + add_network_security(&dict, ssid); supplicant_dbus_dict_append_fixed_array(&dict, "ssid", diff --git a/plugins/wifi.c b/plugins/wifi.c index c606c66..aa661b5 100644 --- a/plugins/wifi.c +++ b/plugins/wifi.c @@ -341,6 +341,7 @@ static void ssid_init(GSupplicantSSID *ssid, struct connman_network *network) const char *security, *passphrase; memset(ssid, 0, sizeof(*ssid)); + ssid->mode = G_SUPPLICANT_MODE_INFRA; ssid->ssid = connman_network_get_blob(network, "WiFi.SSID", &ssid->ssid_len); security = connman_network_get_string(network, "WiFi.Security"); -- 2.7.4