>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

Reply via email to