Send connman mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
https://lists.01.org/mailman/listinfo/connman
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of connman digest..."
Today's Topics:
1. Re: [PATCH 2/2] technology: Expose technology type to plugins
(Daniel Wagner)
2. Re: [PATCH] p2p: when disabling p2p technology we should
disconnect from peers (Daniel Wagner)
3. Re: [PATCHv3 1/6] wps: add new WPS API (Daniel Wagner)
4. Re: Crash when running connmand along iwd (Doron Behar)
5. Re: [PATCHv3 3/6] wps: add new WPS API implementation
(Daniel Wagner)
6. Re: [PATCHv3 4/6] wps: add new WPS API implementation
(Daniel Wagner)
----------------------------------------------------------------------
Message: 1
Date: Sun, 28 Oct 2018 20:02:52 +0100
From: Daniel Wagner <[email protected]>
To: Slava Monich <[email protected]>
Cc: [email protected]
Subject: Re: [PATCH 2/2] technology: Expose technology type to plugins
Message-ID: <[email protected]>
Content-Type: text/plain; charset=utf-8; format=flowed
Hi Slava,
I squashed both patches together (we don't have the per directly rule in
this project :)) and applied the result.
Thanks,
Daniel
------------------------------
Message: 2
Date: Sun, 28 Oct 2018 20:05:51 +0100
From: Daniel Wagner <[email protected]>
To: Vasyl Vavrychuk <[email protected]>
Cc: [email protected]
Subject: Re: [PATCH] p2p: when disabling p2p technology we should
disconnect from peers
Message-ID: <[email protected]>
Content-Type: text/plain; charset=utf-8; format=flowed
Hi Vasyl,
On 10/16/2018 01:21 AM, Vasyl Vavrychuk wrote:
> Having disabled but connected technology does not make sense.
I agree :) Patch applied.
Thanks,
Daniel
------------------------------
Message: 3
Date: Sun, 28 Oct 2018 21:42:19 +0100
From: Daniel Wagner <[email protected]>
To: [email protected]
Cc: [email protected], Slava Monich <[email protected]>
Subject: Re: [PATCHv3 1/6] wps: add new WPS API
Message-ID: <[email protected]>
Content-Type: text/plain; charset=utf-8
Hi Natsuki-san,
Sorry for the long delay, I was traveling and didn't find enough
time to really go through your patch set.
On 10/11/2018 06:06 PM, [email protected] wrote:
> ---
> doc/agent-api.txt | 6 ++++++
> doc/technology-api.txt | 43 ++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 49 insertions(+)
Maybe you missed the discussion concerning adding technology
specific global API:
https://lists.01.org/pipermail/connman/2018-September/022980.html
My conclusion is not correct, after re-reading the comment from Slava.
So the proposal is to add something like this to the technology API
"""
array{string} Interfaces [readonly]
Set of interfaces currently supported by the
technology object. The set depends on the state of
the devices of this technology object.
Each string in the array is an interface from the
set supported by ConnMan by technology objects.
The set includes:
net.connman.WiFiProtectedSetup
"""
and a new interface which could be:
"""
WiFiProtectedSetup
==================
Service net.connman
Interface net.connman.WiFiProtectedSetup
Object path [variable prefix]/{service0,service1,...}
Methods [...]
void StartApWps(string authentication)
Start a WPS Session when the system is playing AP
role (Tethering) in order to allow potential Ex-STAs
to get connected by using WPS.
The argument indicates the WPS authentication method
which can be an empty string, if user wants to use
push-button method, or a pin code if user wants to
use the pin method.
This method is supported only by WiFi technology.
Possible Errors: [service].Error.InvalidArguments
[service].Error.PermissionDenied
[service].Error.NotSupported
void StartStaWps(string authentication)
Start a WPS Session in STA role in order to be able
to get connected with an Ex-AP with WPS capabilities.
The argument indicates the WPS authentication method
which can be an empty string, if user wants to use
push-button method, or a pin code if user wants to
use the pin method.
This method is supported only by WiFi technology.
Possible Errors: [service].Error.InvalidArguments
[service].Error.OperationAborted
[service].Error.OperationTimeout
[service].Error.NotConnected
[service].Error.NotSupported
void CancelWps()
Cancel ongoing WPS session.
This method is supported only by WiFi technology.
Possible Errors: [service].Error.NotSupported
Returns properties for the service object. See
the properties section for available properties.
Usage of this method is highly discouraged. Use
the Manager.GetServices() method instead.
Possible Errors: [service].Error.InvalidArguments
void SetProperty(string name, variant value)
Changes the value of the specified property. Only
properties that are listed as read-write are
changeable. On success a PropertyChanged signal
will be emitted.
Properties cannot be set for hidden WiFi service
entries or provisioned services.
Possible Errors: [service].Error.InvalidArguments
[service].Error.InvalidProperty
"""
I would also prefer to go this direction, because for iwd we wont need
this at all. This is only needed for wpa_supplicant. If iwd is used,
it is way better to interact with the the iwd daemon directly
instead passing all the stuff through ConnMan. So we could compile
disable the WiFiProtectedSetup interface for iwd only setups.
Could you please update your series this way? I know it is a lot of work
but it in the long run it is far better to take the time to get the API
right(*).
Thanks,
Daniel
(*) well, let't say better, because it is never 100% perfect :)
------------------------------
Message: 4
Date: Sun, 28 Oct 2018 22:45:25 +0200
From: Doron Behar <[email protected]>
To: [email protected]
Subject: Re: Crash when running connmand along iwd
Message-ID: <[email protected]>
Content-Type: text/plain; charset=utf-8
Confirmed, thanks.
You have no idea how much I am thrilled connman is being developed and
that it takes Linux networking to such a wonderful and comfortable
place.
Can't wait for the next release.
Thanks again for creating this beautifully designed software.
On Sun, Oct 28, 2018 at 07:42:41PM +0100, Daniel Wagner wrote:
> Hi,
>
> On 10/26/2018 02:08 PM, Doron Behar wrote:
> > I have connman version 1.36 and iwd version 0.10 installed and every
> > time I run iwd along with connman it crashes.
>
> [...]
>
> > Oct 26 15:04:03 NUC connmand[2988]: ++++++++ backtrace ++++++++
> > Oct 26 15:04:03 NUC connmand[2988]: #0 0x7fc7a3e01e00 in /usr/lib/libc.so.6
> > Oct 26 15:04:03 NUC connmand[2988]: #1 0x561d85e16ea7 in /usr/bin/connmand
> > Oct 26 15:04:03 NUC connmand[2988]: #2 0x561d85e1746b in /usr/bin/connmand
> > Oct 26 15:04:03 NUC connmand[2988]: #3 0x561d85e810d4 in /usr/bin/connmand
> > Oct 26 15:04:03 NUC connmand[2988]: #4 0x561d85e8235e in /usr/bin/connmand
> > Oct 26 15:04:03 NUC connmand[2988]: #5 0x561d85e7cd04 in /usr/bin/connmand
> > Oct 26 15:04:03 NUC connmand[2988]: #6 0x561d85e7cf08 in /usr/bin/connmand
> > Oct 26 15:04:03 NUC connmand[2988]: #7 0x7fc7a414cd75 in
> > /usr/lib/libdbus-1.so.3
> > Oct 26 15:04:03 NUC connmand[2988]: #8 0x561d85e7bed1 in /usr/bin/connmand
> > Oct 26 15:04:03 NUC connmand[2988]: #9 0x7fc7a41f4271 in
> > /usr/lib/libglib-2.0.so.0
> > Oct 26 15:04:03 NUC connmand[2988]: #10 0x7fc7a41f5f89 in
> > /usr/lib/libglib-2.0.so.0
> > Oct 26 15:04:03 NUC connmand[2988]: #11 0x7fc7a41f6f62 in
> > /usr/lib/libglib-2.0.so.0
> > Oct 26 15:04:03 NUC connmand[2988]: #12 0x561d85df6c8b in /usr/bin/connmand
> > Oct 26 15:04:03 NUC connmand[2988]: #13 0x7fc7a3dee223 in /usr/lib/libc.so.6
> > Oct 26 15:04:03 NUC connmand[2988]: +++++++++++++++++++++++++++
>
> I think I have fixed this with bc97d6602f79 ("iwd: Remove device state
> property"). Can you try the current master or cherry pick the patch to
> verify?
>
> Thanks,
> Daniel
------------------------------
Message: 5
Date: Sun, 28 Oct 2018 21:57:49 +0100
From: Daniel Wagner <[email protected]>
To: [email protected]
Cc: [email protected]
Subject: Re: [PATCHv3 3/6] wps: add new WPS API implementation
Message-ID: <[email protected]>
Content-Type: text/plain; charset=utf-8
Hi Natsuki-san,
On 10/11/2018 06:06 PM, [email protected] wrote:
> Add new WPS start API which does not specify any service.
>
> Signed-off-by: n-itaya <[email protected]>
No 'Signed-off-by' needed. We don't have any definition what
it means for this project.
> ---
> plugins/wifi.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 94 insertions(+)
>
> diff --git a/plugins/wifi.c b/plugins/wifi.c
> index dc08c6af..0d096aa2 100644
> --- a/plugins/wifi.c
> +++ b/plugins/wifi.c
> @@ -42,6 +42,7 @@
> #include <glib.h>
>
> #define CONNMAN_API_SUBJECT_TO_CHANGE
> +#include <connman.h>
> #include <connman/plugin.h>
> #include <connman/inet.h>
> #include <connman/device.h>
> @@ -123,6 +124,12 @@ struct wifi_tethering_info {
> GSupplicantSSID *ssid;
> };
>
> +struct wifi_wps_offered_data {
> + struct connman_service *service;
> + char *expect_ident;
> + char *passphrase;
> +};
> +
> struct wifi_data {
> char *identifier;
> struct connman_device *device;
> @@ -156,11 +163,19 @@ struct wifi_data {
> unsigned int p2p_connection_timeout;
> struct connman_peer *pending_peer;
> GSList *peers;
> + bool p2p_connected;
> bool p2p_connecting;
> bool p2p_device;
> int servicing;
> int disconnect_code;
> int assoc_code;
> +
> + bool wps_running;
> + bool wps_success;
> + unsigned int wps_timeout;
> + GSList *wps_offered_list;
> + bool wps_after_scan;
> + GSupplicantWPSParams wps_params;
> };
>
> static GList *iface_list = NULL;
> @@ -174,6 +189,26 @@ static int tech_set_tethering(struct connman_technology
> *technology,
> const char *identifier, const char *passphrase,
> const char *bridge, bool enabled);
>
> +/* WPS Functions */
> +#define WPS_TIMEOUT_INTERVAL_MSECS (125 * 1000)
> +
> +static void wps_event_success(GSupplicantInterface *interface);
> +static void wps_event_fail(GSupplicantInterface *interface, int error);
> +static struct wifi_wps_offered_data *wps_alloc_offered_data(
> + struct wifi_data *wifi, const char *group,
> + const char *passphrase);
> +static void wps_free_offered_data(struct wifi_wps_offered_data *wps_data);
> +static unsigned int wps_get_accepted_count(struct wifi_data *wifi);
> +static unsigned int wps_get_offered_count(struct wifi_data *wifi);
> +static bool wps_try_update_services(struct wifi_data *wifi);
> +static void wps_finish(struct wifi_data *wifi, int error);
> +static void wps_cleanup(struct wifi_data *wifi);
> +static void wps_scan_callback(int result, GSupplicantInterface *interface,
> + void *user_data);
> +static gboolean wps_timeout(gpointer data);
> +static void wps_retry_callback(int result, GSupplicantInterface *interface,
> + void *user_data);
> +
I've applied the whole series and did a compile test, unfortunately,
there is some stuff you need to address. Not sure if all the warnings
and errors are from this patch. The first few of the warnings
seem to originate from the above snippet.
We usually avoid static function declaration. Instead sort the
functions we don't need to forward declaration at all.
Looking at the list above, you don't even use them in this
patch.
plugins/wifi.c: In function ?interface_state?:
plugins/wifi.c:2553:5: warning: implicit declaration of function
?connman_technology_wps_state_change_notify?; did you mean
?connman_technology_tethering_notify?? [-Wimplicit-function-declaration]
connman_technology_wps_state_change_notify
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
connman_technology_tethering_notify
plugins/wifi.c: At top level:
plugins/wifi.c:194:13: warning: ?wps_event_success? declared ?static? but never
defined [-Wunused-function]
static void wps_event_success(GSupplicantInterface *interface);
^~~~~~~~~~~~~~~~~
plugins/wifi.c:195:13: warning: ?wps_event_fail? declared ?static? but never
defined [-Wunused-function]
static void wps_event_fail(GSupplicantInterface *interface, int error);
^~~~~~~~~~~~~~
plugins/wifi.c:196:38: warning: ?wps_alloc_offered_data? declared ?static? but
never defined [-Wunused-function]
static struct wifi_wps_offered_data *wps_alloc_offered_data(
^~~~~~~~~~~~~~~~~~~~~~
plugins/wifi.c:199:13: warning: ?wps_free_offered_data? declared ?static? but
never defined [-Wunused-function]
static void wps_free_offered_data(struct wifi_wps_offered_data *wps_data);
^~~~~~~~~~~~~~~~~~~~~
plugins/wifi.c:200:21: warning: ?wps_get_accepted_count? declared ?static? but
never defined [-Wunused-function]
static unsigned int wps_get_accepted_count(struct wifi_data *wifi);
^~~~~~~~~~~~~~~~~~~~~~
plugins/wifi.c:201:21: warning: ?wps_get_offered_count? declared ?static? but
never defined [-Wunused-function]
static unsigned int wps_get_offered_count(struct wifi_data *wifi);
^~~~~~~~~~~~~~~~~~~~~
plugins/wifi.c:202:13: warning: ?wps_try_update_services? used but never defined
static bool wps_try_update_services(struct wifi_data *wifi);
^~~~~~~~~~~~~~~~~~~~~~~
plugins/wifi.c:203:13: warning: ?wps_finish? used but never defined
static void wps_finish(struct wifi_data *wifi, int error);
^~~~~~~~~~
plugins/wifi.c:204:13: warning: ?wps_cleanup? declared ?static? but never
defined [-Wunused-function]
static void wps_cleanup(struct wifi_data *wifi);
^~~~~~~~~~~
plugins/wifi.c:205:13: warning: ?wps_scan_callback? used but never defined
static void wps_scan_callback(int result, GSupplicantInterface *interface,
^~~~~~~~~~~~~~~~~
plugins/wifi.c:207:17: warning: ?wps_timeout? declared ?static? but never
defined [-Wunused-function]
static gboolean wps_timeout(gpointer data);
^~~~~~~~~~~
plugins/wifi.c:208:13: warning: ?wps_retry_callback? declared ?static? but
never defined [-Wunused-function]
static void wps_retry_callback(int result, GSupplicantInterface *interface,
^~~~~~~~~~~~~~~~~~
plugins/wifi.c:454:12: warning: ?peer_disconnect_all? defined but not used
[-Wunused-function]
static int peer_disconnect_all(struct wifi_data *wifi)
^~~~~~~~~~~~~~~~~~~
src/technology.c: In function ?append_wps_service_structs?:
src/technology.c:619:13: warning: implicit declaration of function
?__connman_service_lookup_from_ident?; did you mean
?__connman_service_lookup_from_index?? [-Wimplicit-function-declaration]
service = __connman_service_lookup_from_ident(ident);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
__connman_service_lookup_from_index
src/technology.c:619:11: warning: assignment makes pointer from integer without
a cast [-Wint-conversion]
service = __connman_service_lookup_from_ident(ident);
^
src/technology.c: In function ?start_wps?:
src/technology.c:712:11: error: ?struct connman_technology_driver? has no
member named ?start_wps?
!driver->start_wps ||
^~
src/technology.c:716:15: error: ?struct connman_technology_driver? has no
member named ?start_wps?
err = driver->start_wps(technology, mode, auth);
^~
src/technology.c: In function ?cancel_wps?:
src/technology.c:787:25: error: ?struct connman_technology_driver? has no
member named ?cancel_wps?
if (!driver || !driver->cancel_wps ||
^~
src/technology.c:791:15: error: ?struct connman_technology_driver? has no
member named ?cancel_wps?
err = driver->cancel_wps(technology);
^~
> static int p2p_tech_probe(struct connman_technology *technology)
> {
> p2p_technology = technology;
> @@ -417,6 +452,29 @@ static int peer_disconnect(struct connman_peer *peer)
> return ret;
> }
>
> +static int peer_disconnect_all(struct wifi_data *wifi)
> +{
> + GSList *list;
> + int result = 0, err = -EALREADY;
> +
> + DBG("");
> +
> + for (list = wifi->peers; list; list = list->next) {
> + struct connman_peer *peer = list->data;
> + GSupplicantPeer *gs_peer =
> + g_supplicant_interface_peer_lookup
> + (wifi->interface,
> connman_peer_get_identifier(peer));
Try to keep the function name and the brace together:
GSupplicantPeer *gs_peer =
g_supplicant_interface_peer_lookup(wifi->interface,
connman_peer_get_identifier(peer));
> +
> + if (g_supplicant_peer_is_in_a_group(gs_peer)) {
> + err = peer_disconnect(peer);
> + if (err != -EINPROGRESS)
> + result = err;
> + }
> + }
> +
> + return result;
> +}
> +
> struct peer_service_registration {
> peer_service_registration_cb_t callback;
> void *user_data;
> @@ -1583,6 +1641,7 @@ static int wifi_disable(struct connman_device *device)
> return -ENODEV;
>
> wifi->connected = false;
> + wifi->p2p_connected = false;
> wifi->disconnecting = false;
>
> if (wifi->pending_network)
> @@ -2199,6 +2258,9 @@ static int network_connect(struct connman_network
> *network)
> if (!wifi)
> return -ENODEV;
>
> + if (wifi->wps_running)
> + return -EBUSY;
> +
> ssid = g_try_malloc0(sizeof(GSupplicantSSID));
> if (!ssid)
> return -ENOMEM;
> @@ -2375,6 +2437,8 @@ static bool handle_wps_completion(GSupplicantInterface
> *interface,
> {
> bool wps;
>
> + DBG("");
> +
> wps = connman_network_get_bool(network, "WiFi.UseWPS");
> if (wps) {
> const unsigned char *ssid, *wps_ssid;
> @@ -2486,6 +2550,36 @@ static void interface_state(GSupplicantInterface
> *interface)
> finalize_interface_creation(wifi);
> }
>
> + if (wifi->wps_running) {
> + DBG("WPS running");
> + switch (state) {
> + case G_SUPPLICANT_STATE_SCANNING:
> + if (!wifi->wps_success)
> + connman_technology_wps_state_change_notify
> + (wifi_technology, "scan");
> + return;
> + case G_SUPPLICANT_STATE_ASSOCIATED:
> + connman_technology_wps_state_change_notify
> + (wifi_technology, "processing");
> + return;
> + case G_SUPPLICANT_STATE_DISCONNECTED:
> + if (wifi->wps_success) {
> + if (wps_try_update_services(wifi)) {
> + wps_finish(wifi, 0);
> + } else {
> + wifi->wps_after_scan = true;
> + DBG("Need scan");
> + reset_autoscan(wifi->device);
> + throw_wifi_scan(device,
> + wps_scan_callback);
> + }
> + }
> + return;
> + default:
> + return;
> + }
> + }
> +
Ah you are fighting with the 80 character rule. New breaking of the lines
looks a bit strange. What about moving this part into a function which
handles the wps_running case. This makes interface_state() function not
to grow further (already a bit large) and you just need to add
if (wifi->wps_running) {
process_wps_state(); // or a better name
return;
}
> network = wifi->network;
> if (!network)
> return;
>
Thanks,
Daniel
------------------------------
Message: 6
Date: Sun, 28 Oct 2018 22:04:45 +0100
From: Daniel Wagner <[email protected]>
To: [email protected]
Cc: [email protected]
Subject: Re: [PATCHv3 4/6] wps: add new WPS API implementation
Message-ID: <[email protected]>
Content-Type: text/plain; charset=utf-8; format=flowed
Hi Natsuki-san,
On 10/11/2018 06:06 PM, [email protected] wrote:
> Add the handler which receive WPS credential and force save information
> into applicable service.
> Add new status property for display WPS status.
>
> Signed-off-by: n-itaya <[email protected]>
> ---
> src/connman.h | 6 ++++++
> src/error.c | 16 ++++++++++++++++
> src/peer.c | 5 ++---
> src/service.c | 21 +++++++++++++++++++++
> 4 files changed, 45 insertions(+), 3 deletions(-)
>
> diff --git a/src/connman.h b/src/connman.h
> index 82e77d37..16ecbb5a 100644
> --- a/src/connman.h
> +++ b/src/connman.h
> @@ -54,6 +54,8 @@ DBusMessage *__connman_error_operation_aborted(DBusMessage
> *msg);
> DBusMessage *__connman_error_operation_timeout(DBusMessage *msg);
> DBusMessage *__connman_error_invalid_service(DBusMessage *msg);
> DBusMessage *__connman_error_invalid_property(DBusMessage *msg);
> +DBusMessage *__connman_error_pin_rejected(DBusMessage *msg);
> +DBusMessage *__connman_error_pbc_overlap(DBusMessage *msg);
Create a new patch which just adds the new error message handling
functions.
>
> int __connman_manager_init(void);
> void __connman_manager_cleanup(void);
> @@ -665,6 +667,8 @@ int __connman_service_init(void);
> void __connman_service_cleanup(void);
> int __connman_service_load_modifiable(struct connman_service *service);
>
> +void __connman_service_append_struct(struct connman_service *service,
> + DBusMessageIter *iter);
Also this should go into a patch of its own.
> void __connman_service_list_struct(DBusMessageIter *iter);
>
> int __connman_service_compare(const struct connman_service *a,
> @@ -843,6 +847,7 @@ int __connman_peer_service_unregister(const char *owner,
> int specification_length,
> const unsigned char *query,
> int query_length, int version);
> +enum connman_peer_wps_method __connman_check_wps_method(const char *wpspin);
>
> #include <connman/session.h>
>
> @@ -853,6 +858,7 @@ int __connman_service_iterate_services(service_iterate_cb
> cb, void *user_data);
>
> void __connman_service_mark_dirty();
> void __connman_service_save(struct connman_service *service);
> +void __connman_service_force_save(struct connman_service *service);
and this also. Please also explain why you need this one. It sticks a
bit out.
>
> #include <connman/notifier.h>
>
> diff --git a/src/error.c b/src/error.c
> index 4f24ae25..f0b35bdc 100644
> --- a/src/error.c
> +++ b/src/error.c
> @@ -67,6 +67,10 @@ DBusMessage *__connman_error_failed(DBusMessage *msg, int
> errnum)
> return __connman_error_in_progress(msg);
> case ENOKEY:
> return __connman_error_passphrase_required(msg);
> + case EKEYREJECTED:
> + return __connman_error_pin_rejected(msg);
> + case EAGAIN:
> + return __connman_error_pbc_overlap(msg);
> }
>
> return g_dbus_create_error(msg, CONNMAN_ERROR_INTERFACE
> @@ -185,3 +189,15 @@ DBusMessage
> *__connman_error_invalid_property(DBusMessage *msg)
> return g_dbus_create_error(msg, CONNMAN_ERROR_INTERFACE
> ".InvalidProperty", "Invalid property");
> }
> +
> +DBusMessage *__connman_error_pin_rejected(DBusMessage *msg)
> +{
> + return g_dbus_create_error(msg, CONNMAN_ERROR_INTERFACE
> + ".PinRejected", "PIN Rejected");
> +}
> +
> +DBusMessage *__connman_error_pbc_overlap(DBusMessage *msg)
> +{
> + return g_dbus_create_error(msg, CONNMAN_ERROR_INTERFACE
> + ".PbcOverlap", "PBC Overlap");
> +}
> diff --git a/src/peer.c b/src/peer.c
> index 1b9b80e3..70ffeab4 100644
> --- a/src/peer.c
> +++ b/src/peer.c
> @@ -545,8 +545,7 @@ static const char *get_dbus_sender(struct connman_peer
> *peer)
> return dbus_message_get_sender(peer->pending);
> }
>
> -static enum connman_peer_wps_method check_wpspin(struct connman_peer *peer,
> - const char *wpspin)
> +enum connman_peer_wps_method __connman_check_wps_method(const char *wpspin)
> {
> int len, i;
>
> @@ -591,7 +590,7 @@ static void request_authorization_cb(struct connman_peer
> *peer,
> goto out;
> }
>
> - wps_method = check_wpspin(peer, wpspin);
> + wps_method = __connman_check_wps_method(wpspin);
>
> err = peer_driver->connect(peer, wps_method, wpspin);
> if (err == -EINPROGRESS)
> diff --git a/src/service.c b/src/service.c
> index 733c0728..da323d0d 100644
> --- a/src/service.c
> +++ b/src/service.c
> @@ -817,6 +817,15 @@ void __connman_service_save(struct connman_service
> *service)
> service_save(service);
> }
>
> +void __connman_service_force_save(struct connman_service *service)
> +{
> + if (!service)
> + return;
> +
> + service->new_service = false;
> + service_save(service);
> +}
> +
> static enum connman_service_state combine_state(
> enum connman_service_state state_a,
> enum connman_service_state state_b)
> @@ -2577,6 +2586,18 @@ static void append_struct(gpointer value, gpointer
> user_data)
> append_struct_service(iter, append_dict_properties, service);
> }
>
> +void __connman_service_append_struct(struct connman_service *service,
> + DBusMessageIter *iter)
> +{
> + if (!service)
> + return;
> +
> + if (!iter)
> + return;
> +
> + append_struct(service, iter);
> +}
> +
> void __connman_service_list_struct(DBusMessageIter *iter)
> {
> g_list_foreach(service_list, append_struct, iter);
>
Thanks,
Daniel
------------------------------
Subject: Digest Footer
_______________________________________________
connman mailing list
[email protected]
https://lists.01.org/mailman/listinfo/connman
------------------------------
End of connman Digest, Vol 36, Issue 24
***************************************