From d1a8e191e92f5d07e127b3607eea8d4f5e412c59 Mon Sep 17 00:00:00 2001 From: Tim Kourt Date: Tue, 10 Jul 2018 15:46:55 -0700 Subject: [PATCH] network: introduce connect API for the hidden nets --- src/network.c | 37 +++++++++++++++++++++++++++++++++++++ src/network.h | 3 +++ 2 files changed, 40 insertions(+) diff --git a/src/network.c b/src/network.c index fa0fe864..4b07b74b 100644 --- a/src/network.c +++ b/src/network.c @@ -987,6 +987,43 @@ static struct l_dbus_message *network_connect(struct l_dbus *dbus, } } +void network_connect_new_hidden_network(struct network *network, + struct l_dbus_message *message) +{ + struct device *device = network->device; + struct scan_bss *bss; + struct l_dbus_message *error; + + l_debug(""); + + bss = network_bss_select(network); + if (!bss) { + /* This should never happened for the hidden networks. */ + error = dbus_error_not_supported(message); + goto reply_error; + } + + switch (network_get_security(network)) { + case SECURITY_PSK: + error = network_connect_psk(network, bss, message); + break; + case SECURITY_NONE: + device_connect_network(device, network, bss, message); + return; + default: + error = dbus_error_not_supported(message); + break; + } + + if (error) + goto reply_error; + + return; + +reply_error: + dbus_pending_reply(&message, error); +} + static bool network_property_get_name(struct l_dbus *dbus, struct l_dbus_message *message, struct l_dbus_message_builder *builder, diff --git a/src/network.h b/src/network.h index ffdf333f..5a43c64d 100644 --- a/src/network.h +++ b/src/network.h @@ -63,6 +63,9 @@ void network_remove(struct network *network, int reason); int network_rank_compare(const void *a, const void *b, void *user); void network_rank_update(struct network *network); +void network_connect_new_hidden_network(struct network *network, + struct l_dbus_message *message); + struct network_info { char ssid[33]; enum security type;