Added dbus method 'GetConnectedService'
[platform/upstream/connman.git] / src / service.c
index c7088d2..e4dbc32 100755 (executable)
@@ -2921,6 +2921,31 @@ struct connman_service *connman_service_get_default_connection(void)
 
        return default_service;
 }
+
+struct connman_service *connman_service_get_connected_service(const char *ifname)
+{
+       GList *list;
+       const char *svc_ifname;
+       struct connman_service *service;
+
+       if (!ifname)
+               return NULL;
+
+       for (list = service_list; list; list = list->next) {
+               service = list->data;
+
+               if (!is_connected(service->state))
+                       continue;
+
+               svc_ifname = connman_device_get_string(
+                               connman_network_get_device(service->network), "Interface");
+
+               if (svc_ifname && g_strcmp0(svc_ifname, ifname) == 0)
+                       return service;
+       }
+
+       return NULL;
+}
 #endif
 
 struct connman_service *connman_service_get_default(void)
@@ -4968,7 +4993,7 @@ bool connman_service_get_internet_connection(struct connman_service *service)
        return service->is_internet_connection;
 }
 
-DBusMessage *connman_service_get_defaut_info(DBusMessage *msg,
+DBusMessage *connman_service_create_dbus_service_reply(DBusMessage *msg,
                                                        struct connman_service *service)
 {
        DBusMessage *reply;
@@ -5414,6 +5439,16 @@ int __connman_service_get_use_eapol(struct connman_service *service)
 
        return service->use_eapol;
 }
+
+int __connman_service_get_connect_reason(struct connman_service *service)
+{
+       if (!service) {
+               DBG("Service is NULL");
+               return -1;
+       }
+
+       return service->connect_reason;
+}
 #endif /* defined TIZEN_EXT && defined TIZEN_EXT_EAP_ON_ETHERNET */
 
 static DBusMessage *get_properties(DBusConnection *conn,
@@ -6164,6 +6199,7 @@ static DBusMessage *set_property(DBusConnection *conn,
                if (err < 0)
                        return __connman_error_failed(msg, -err);
 
+               service->connect_reason = CONNMAN_SERVICE_CONNECT_REASON_USER;
                service_save(service);
 #endif /* defined TIZEN_EXT && defined TIZEN_EXT_EAP_ON_ETHERNET */
        } else
@@ -7886,6 +7922,9 @@ static int calculate_score_last_connected(struct connman_service *service)
        unsigned int frequency;
 
        device = connman_network_get_device(service->network);
+       if (!device)
+               return 0;
+
        last_connected_ident = connman_device_get_last_connected_ident(device);
        frequency = connman_network_get_frequency(service->network);