diff options
author | Jaehyun Kim <jeik01.kim@samsung.com> | 2020-09-01 12:11:34 +0900 |
---|---|---|
committer | Jaehyun Kim <jeik01.kim@samsung.com> | 2020-09-01 12:11:34 +0900 |
commit | d580f4026c54cb070f6e2dabf03ed557c14e10e0 (patch) | |
tree | 746286c2d4fcb98bf8013b49f7ed5295a91b8932 /src | |
parent | c45eee86f5a3fb041df570f23b2b477c38af0cce (diff) | |
download | connman-d580f4026c54cb070f6e2dabf03ed557c14e10e0.tar.gz connman-d580f4026c54cb070f6e2dabf03ed557c14e10e0.tar.bz2 connman-d580f4026c54cb070f6e2dabf03ed557c14e10e0.zip |
Move GetInterfaces method to Manager interface
Change-Id: I4e9cd93717a04457f97bf13fc389075a3e5c0e54
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/connman.conf | 2 | ||||
-rwxr-xr-x | src/manager.c | 29 | ||||
-rw-r--r-- | src/technology.c | 72 |
3 files changed, 61 insertions, 42 deletions
diff --git a/src/connman.conf b/src/connman.conf index 60e7e828..adff8fa4 100644 --- a/src/connman.conf +++ b/src/connman.conf @@ -37,7 +37,7 @@ <check send_destination="net.connman" send_interface="net.connman.Technology" send_member="ScanDevice" privilege="http://tizen.org/privilege/network.set" /> <check send_destination="net.connman" send_interface="net.connman.Technology" send_member="SetDevicePower" privilege="http://tizen.org/privilege/network.set" /> <check send_destination="net.connman" send_interface="net.connman.Technology" send_member="SetBSSID" privilege="http://tizen.org/privilege/network.set" /> - <check send_destination="net.connman" send_interface="net.connman.Technology" send_member="GetInterfaces" privilege="http://tizen.org/privilege/network.get" /> + <check send_destination="net.connman" send_interface="net.connman.Manager" send_member="GetInterfaces" privilege="http://tizen.org/privilege/network.get" /> <check send_destination="net.connman" send_interface="net.connman.Technology" send_member="MeshCommands" privilege="http://tizen.org/privilege/network.set" /> </policy> </busconfig> diff --git a/src/manager.c b/src/manager.c index 4b351e11..19f62c65 100755 --- a/src/manager.c +++ b/src/manager.c @@ -217,6 +217,32 @@ static DBusMessage *get_services(DBusConnection *conn, } #if defined TIZEN_EXT +static DBusMessage *get_interfaces(DBusConnection *conn, DBusMessage *msg, void *data) +{ + DBusMessage *reply; + DBusMessageIter iter, array; + const char *default_interface = connman_option_get_string("DefaultWifiInterface"); + + DBG("DefaultWifiInterface %s", default_interface); + + reply = dbus_message_new_method_return(msg); + if (!reply) + return NULL; + + dbus_message_iter_init_append(reply, &iter); + dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, + DBUS_TYPE_STRING_AS_STRING, &array); + + dbus_message_iter_append_basic(&array, + DBUS_TYPE_STRING, &default_interface); + + __connman_technology_append_interfaces(&array, + CONNMAN_SERVICE_TYPE_WIFI, default_interface); + + dbus_message_iter_close_container(&iter, &array); + return reply; +} + static DBusMessage *get_default_service(DBusConnection *conn, DBusMessage *msg, void *data) { @@ -700,6 +726,9 @@ static const GDBusMethodTable manager_methods[] = { NULL, GDBUS_ARGS({ "services", "a(oa{sv})" }), get_services) }, #if defined TIZEN_EXT + { GDBUS_METHOD("GetInterfaces", + NULL, GDBUS_ARGS({ "interface_list", "as" }), + get_interfaces) }, { GDBUS_METHOD("GetDefaultService", NULL, GDBUS_ARGS({ "service", "oa{sv}" }), get_default_service) }, diff --git a/src/technology.c b/src/technology.c index b3586001..e9e4cd61 100644 --- a/src/technology.c +++ b/src/technology.c @@ -589,6 +589,37 @@ static void append_devices(DBusMessageIter *iter, void *user_data) DBUS_TYPE_STRING, &str); } } + +void __connman_technology_append_interfaces(DBusMessageIter *array, + enum connman_service_type type, const char *ifname) +{ + GSList *list; + struct connman_technology *technology = NULL; + + for (list = technology_list; list; list = list->next) { + struct connman_technology *local_tech = list->data; + + if (local_tech->type != type) + continue; + + technology = local_tech; + break; + } + + if (!technology) + return; + + for (list = technology->device_list; list; list = list->next) { + struct connman_device *device = list->data; + const char *str = connman_device_get_string(device, "Interface"); + + if (g_strcmp0(ifname, str) == 0) + continue; + + dbus_message_iter_append_basic(array, + DBUS_TYPE_STRING, &str); + } +} #endif static void append_properties(DBusMessageIter *iter, @@ -1755,45 +1786,6 @@ static DBusMessage *get_max_scan_ssid(DBusConnection *conn, DBusMessage *msg, vo return reply; } -static DBusMessage *get_interfaces(DBusConnection *conn, DBusMessage *msg, void *data) -{ - DBusMessage *reply; - DBusMessageIter iter, array; - GSList *list; - struct connman_technology *technology = data; - const char *default_interface = connman_option_get_string("DefaultWifiInterface"); - - DBG("technology %p", technology); - - reply = dbus_message_new_method_return(msg); - if (!reply) - return NULL; - - if (technology->type != CONNMAN_SERVICE_TYPE_WIFI) - return NULL; - - dbus_message_iter_init_append(reply, &iter); - dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, - DBUS_TYPE_STRING_AS_STRING, &array); - - dbus_message_iter_append_basic(&array, - DBUS_TYPE_STRING, &default_interface); - - for (list = technology->device_list; list; list = list->next) { - struct connman_device *device = list->data; - const char *str = connman_device_get_string(device, "Interface"); - - if (g_strcmp0(default_interface, str) == 0) - continue; - - dbus_message_iter_append_basic(&array, - DBUS_TYPE_STRING, &str); - } - - dbus_message_iter_close_container(&iter, &array); - return reply; -} - static int technology_enable_device(struct connman_technology *technology, bool enable_device, const char *ifname, struct connman_device **device_out) { @@ -2497,8 +2489,6 @@ static const GDBusMethodTable technology_methods[] = { get_5ghz_supported) }, { GDBUS_METHOD("GetMaxScanSsid", NULL, GDBUS_ARGS({ "maxscanssid", "a{sv}" }), get_max_scan_ssid) }, - { GDBUS_METHOD("GetInterfaces", NULL, GDBUS_ARGS({ "interface_list", "as" }), - get_interfaces) }, { GDBUS_ASYNC_METHOD("SetDevicePower", GDBUS_ARGS({ "ifname", "s" }, { "value", "b" }), NULL, set_device_power) }, |