Add support for WPS2-PSK security type in Security property of service interface
[platform/upstream/connman.git] / src / service.c
index 1ee4c4c..ca32698 100755 (executable)
@@ -327,6 +327,10 @@ enum connman_service_security __connman_service_string2security(const char *str)
                return CONNMAN_SERVICE_SECURITY_NONE;
        if (!strcmp(str, "wep"))
                return CONNMAN_SERVICE_SECURITY_WEP;
+#if defined TIZEN_EXT
+       if (!strcmp(str, "rsn"))
+               return CONNMAN_SERVICE_SECURITY_RSN;
+#endif
 
        return CONNMAN_SERVICE_SECURITY_UNKNOWN;
 }
@@ -342,8 +346,14 @@ static const char *security2string(enum connman_service_security security)
                return "wep";
        case CONNMAN_SERVICE_SECURITY_PSK:
        case CONNMAN_SERVICE_SECURITY_WPA:
+#if defined TIZEN_EXT
+               return "psk";
+       case CONNMAN_SERVICE_SECURITY_RSN:
+               return "rsn";
+#else
        case CONNMAN_SERVICE_SECURITY_RSN:
                return "psk";
+#endif
        case CONNMAN_SERVICE_SECURITY_8021X:
                return "ieee8021x";
        }
@@ -472,6 +482,7 @@ connman_service_is_user_allowed(struct connman_service *service, uid_t uid)
        return true;
 }
 
+#if !defined TIZEN_EXT
 static GList *connman_service_get_login_users()
 {
        struct utmpx *utmp;
@@ -497,9 +508,13 @@ static GList *connman_service_get_login_users()
 
        return user_list;
 }
+#endif
 
 static bool is_service_owner_user_login(struct connman_service *service)
 {
+#if defined TIZEN_EXT
+       return true;
+#else
        GList *list, *user_list;
        bool ret = false;
 
@@ -529,6 +544,7 @@ static bool is_service_owner_user_login(struct connman_service *service)
        g_list_free(user_list);
 
        return ret;
+#endif
 }
 
 int __connman_service_load_modifiable(struct connman_service *service)
@@ -674,6 +690,8 @@ static int service_load(struct connman_service *service)
 
                                connman_network_set_blob(service->network,
                                        "WiFi.SSID", ssid, hex_ssid_len / 2);
+
+                               g_free(ssid);
                        }
 
                        g_free(hex_ssid);
@@ -3363,7 +3381,9 @@ static int check_passphrase(enum connman_service_security security,
        case CONNMAN_SERVICE_SECURITY_UNKNOWN:
        case CONNMAN_SERVICE_SECURITY_NONE:
        case CONNMAN_SERVICE_SECURITY_WPA:
+#if !defined TIZEN_EXT
        case CONNMAN_SERVICE_SECURITY_RSN:
+#endif
 
                DBG("service security '%s' (%d) not handled",
                                security2string(security), security);
@@ -3371,6 +3391,9 @@ static int check_passphrase(enum connman_service_security security,
                return -EOPNOTSUPP;
 
        case CONNMAN_SERVICE_SECURITY_PSK:
+#if defined TIZEN_EXT
+       case CONNMAN_SERVICE_SECURITY_RSN:
+#endif
                /* A raw key is always 64 bytes length,
                 * its content is in hex representation.
                 * A PSK key must be between [8..63].
@@ -6224,6 +6247,11 @@ static void single_connected_tech(struct connman_service *allowed)
 
        DBG("keeping %p %s", allowed, allowed->path);
 
+#if defined TIZEN_EXT
+       if (!allowed || allowed->type == CONNMAN_SERVICE_TYPE_CELLULAR)
+               return;
+#endif
+
        for (iter = service_list; iter; iter = iter->next) {
                service = iter->data;
 
@@ -6833,6 +6861,19 @@ int __connman_service_ipconfig_indicate_state(struct connman_service *service,
                        is_connected_state(service, new_state))
                nameserver_add_all(service);
 
+#if defined TIZEN_EXT
+       int ret = service_indicate_state(service);
+       /*Sent the Ready changed signal again in case IPv4 IP set
+         after IPv6 IP set*/
+
+       if(ret == -EALREADY && type == CONNMAN_IPCONFIG_TYPE_IPV4
+                       && new_state == CONNMAN_SERVICE_STATE_READY) {
+               DBG("Notify IPv4 state new/old %d/%d", new_state,old_state);
+               state_changed(service);
+       }
+
+       return ret;
+#endif
        return service_indicate_state(service);
 }