gsupplicant: Add interface mode capability getter
[platform/upstream/connman.git] / gsupplicant / supplicant.c
index 8c91a83..48a176a 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;
@@ -686,6 +688,14 @@ GSupplicantWpsState g_supplicant_interface_get_wps_state(
        return interface->wps_state;
 }
 
+unsigned int g_supplicant_interface_get_mode(GSupplicantInterface *interface)
+{
+       if (interface == NULL)
+               return 0;
+
+       return interface->mode_capa;
+}
+
 GSupplicantInterface *g_supplicant_network_get_interface(
                                        GSupplicantNetwork *network)
 {
@@ -2651,6 +2661,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 +2694,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",