gsupplicant: Add network mode support
authorSamuel Ortiz <sameo@linux.intel.com>
Fri, 14 Jan 2011 17:59:11 +0000 (18:59 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 2 Feb 2011 17:45:35 +0000 (18:45 +0100)
gsupplicant/gsupplicant.h
gsupplicant/supplicant.c
plugins/wifi.c

index 0df8640..c2462f4 100644 (file)
@@ -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 {
index 8c91a83..2e17868 100644 (file)
@@ -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",
index c606c66..aa661b5 100644 (file)
@@ -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");