>From da5586690cf8104ee9f2ab9e3e7e60c312ab9802 Mon Sep 17 00:00:00 2001
From: root <[email protected]>
Date: Mon, 6 Jul 2009 02:14:03 -0400
Subject: [PATCH 3/4] add function __connman_service_disconnect()
---
src/connman.h | 2 ++
src/service.c | 31 +++++++++++++++++++++++++++++++
2 files changed, 33 insertions(+), 0 deletions(-)
diff --git a/src/connman.h b/src/connman.h
index 8cc9d4b..dfe0fa7 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -260,6 +260,8 @@ int __connman_service_indicate_default(struct
connman_service *service);
int __connman_service_connect(struct connman_service *service);
+int __connman_service_disconnect(struct connman_service *service);
+
#include <connman/notifier.h>
int __connman_notifier_init(void);
diff --git a/src/service.c b/src/service.c
index d2d57e7..4e445e0 100644
--- a/src/service.c
+++ b/src/service.c
@@ -514,6 +514,37 @@ int __connman_service_connect(struct connman_service
*service)
return 0;
}
+int __connman_service_disconnect(struct connman_service *service)
+{
+ DBG("service %p", service);
+
+ if (service->pending != NULL)
+ return -EAGAIN;
+
+ if (service->network != NULL) {
+ int err;
+
+ err = __connman_network_disconnect(service->network);
+ if (err < 0)
+ return err;
+
+ } else if (service->device != NULL) {
+ int err;
+
+ if (service->favorite == FALSE)
+ return 0;
+
+ err = __connman_device_disconnect(service->device);
+ if (err < 0)
+ return err;
+
+ } else
+ /*fix me, Not sure the errno is right*/
+ return -EPERM;
+
+ return 0;
+}
+
static DBusMessage *connect_service(DBusConnection *conn,
DBusMessage *msg, void *user_data)
{
--
1.6.1.3
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman