Merge "Do not listen all of 53 ports for DNS proxy" into tizen accepted/tizen/common/20170210.170532 accepted/tizen/ivi/20170214.011041 accepted/tizen/mobile/20170214.010834 accepted/tizen/tv/20170214.010924 accepted/tizen/wearable/20170214.011008 submit/tizen/20170210.072732 submit/tizen/20170210.083740
authortaesub kim <taesub.kim@samsung.com>
Tue, 7 Feb 2017 12:02:11 +0000 (04:02 -0800)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Tue, 7 Feb 2017 12:02:11 +0000 (04:02 -0800)
gsupplicant/supplicant.c
include/network.h
include/service.h
plugins/wifi.c
src/network.c
src/service.c

index e9d6b9d..c596619 100755 (executable)
@@ -4385,7 +4385,11 @@ static void interface_select_network_result(const char *error,
 
        err = 0;
        if (error) {
+#if defined TIZEN_EXT
+               SUPPLICANT_DBG("SelectNetwork errorFreq %s", error);
+#else
                SUPPLICANT_DBG("SelectNetwork error %s", error);
+#endif
                err = parse_supplicant_error(iter);
        }
 
@@ -4403,9 +4407,15 @@ static void interface_select_network_params(DBusMessageIter *iter,
 {
        struct interface_connect_data *data = user_data;
        GSupplicantInterface *interface = data->interface;
+#if defined TIZEN_EXT
+       GSupplicantSSID *ssid = data->ssid;
+#endif
 
        dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH,
                                        &interface->network_path);
+#if defined TIZEN_EXT
+       dbus_message_iter_append_basic(iter, DBUS_TYPE_INT32, &ssid->freq);
+#endif
 }
 
 static void interface_add_network_result(const char *error,
@@ -4428,11 +4438,23 @@ static void interface_add_network_result(const char *error,
        g_free(interface->network_path);
        interface->network_path = g_strdup(path);
 
+#if defined TIZEN_EXT
+       SUPPLICANT_DBG(".Interface.SelectNetworkFreq");
+#endif
+
+#if defined TIZEN_EXT
+       supplicant_dbus_method_call(data->interface->path,
+                       SUPPLICANT_INTERFACE ".Interface", "SelectNetworkFreq",
+                       interface_select_network_params,
+                       interface_select_network_result, data,
+                       interface);
+#else
        supplicant_dbus_method_call(data->interface->path,
                        SUPPLICANT_INTERFACE ".Interface", "SelectNetwork",
                        interface_select_network_params,
                        interface_select_network_result, data,
                        interface);
+#endif
 
        return;
 
index a609522..68dc410 100755 (executable)
@@ -58,6 +58,8 @@ enum connman_network_error {
 #if defined TIZEN_EXT
        CONNMAN_NETWORK_ERROR_DHCP_FAIL       = 5,
 #endif
+       CONNMAN_NETWORK_ERROR_BLOCKED         = 6,
+
 };
 
 #define CONNMAN_NETWORK_PRIORITY_LOW      -100
index fe55d4b..ff29613 100755 (executable)
@@ -83,6 +83,7 @@ enum connman_service_error {
        CONNMAN_SERVICE_ERROR_LOGIN_FAILED  = 5,
        CONNMAN_SERVICE_ERROR_AUTH_FAILED    = 6,
        CONNMAN_SERVICE_ERROR_INVALID_KEY    = 7,
+       CONNMAN_SERVICE_ERROR_BLOCKED        = 8,
 };
 
 enum connman_service_proxy_method {
index 76a1d7a..84d0708 100755 (executable)
@@ -133,6 +133,8 @@ struct wifi_data {
        struct connman_network *scan_pending_network;
        bool allow_full_scan;
 #endif
+       int disconnect_code;
+
 };
 
 #if defined TIZEN_EXT
@@ -2168,6 +2170,9 @@ static void ssid_init(GSupplicantSSID *ssid, struct connman_network *network)
 #if defined TIZEN_EXT
        ssid->bssid = connman_network_get_bssid(network);
 #endif
+#if defined TIZEN_EXT
+       ssid->freq = connman_network_get_frequency(network);
+#endif
 
        if (connman_setting_get_bool("BackgroundScanning"))
                ssid->bgscan = BGSCAN_DEFAULT;
@@ -2658,6 +2663,25 @@ static void interface_state(GSupplicantInterface *interface)
                                                network, wifi))
                        break;
 
+#if defined TIZEN_EXT
+               wifi->disconnect_code = g_supplicant_interface_get_disconnect_reason(wifi->interface);
+               DBG("Disconnect Reason code %d", wifi->disconnect_code);
+#endif
+               /* See table 8-36 Reason codes in IEEE Std 802.11 */
+               switch (wifi->disconnect_code) {
+               case 1: /* Unspecified reason */
+                       /* Let's assume it's because we got blocked */
+
+               case 6: /* Class 2 frame received from nonauthenticated STA */
+                       connman_network_set_error(network,
+                                               CONNMAN_NETWORK_ERROR_BLOCKED);
+                       break;
+
+               default:
+                       break;
+               }
+
+
                /* We disable the selected network, if not then
                 * wpa_supplicant will loop retrying */
                if (g_supplicant_interface_enable_selected_network(interface,
@@ -2666,13 +2690,11 @@ static void interface_state(GSupplicantInterface *interface)
 
 #if defined TIZEN_EXT
                int err;
-               int reason_code = 0;
 
                err = g_supplicant_interface_remove_network(wifi->interface);
                if (err < 0)
                        DBG("Failed to remove network(%d)", err);
 
-               reason_code = g_supplicant_interface_get_disconnect_reason(wifi->interface);
 
                /* Some of Wi-Fi networks are not comply Wi-Fi specification.
                 * Retry association until its retry count is expired */
@@ -2682,9 +2704,9 @@ static void interface_state(GSupplicantInterface *interface)
                        break;
                }
 
-               if(reason_code > 0){
-                       DBG("Set disconnect reason code(%d)", reason_code);
-                       connman_network_set_disconnect_reason(network, reason_code);
+               if(wifi->disconnect_code > 0){
+                       DBG("Set disconnect reason code(%d)", wifi->disconnect_code);
+                       connman_network_set_disconnect_reason(network, wifi->disconnect_code);
                }
 
                /* To avoid unnecessary repeated association in wpa_supplicant,
index 715c8ea..8687619 100755 (executable)
@@ -1403,6 +1403,17 @@ static void set_connect_error(struct connman_network *network)
                                        CONNMAN_SERVICE_ERROR_CONNECT_FAILED);
 }
 
+static void set_blocked_error(struct connman_network *network)
+{
+       struct connman_service *service;
+
+       service = connman_service_lookup_from_network(network);
+
+       __connman_service_indicate_error(service,
+                                       CONNMAN_SERVICE_ERROR_BLOCKED);
+}
+
+
 #if defined TIZEN_EXT
 static void set_dhcp_error(struct connman_network *network)
 {
@@ -1477,6 +1488,11 @@ void connman_network_set_error(struct connman_network *network,
                set_dhcp_error(network);
                break;
 #endif
+
+       case CONNMAN_NETWORK_ERROR_BLOCKED:
+               set_blocked_error(network);
+               break;
+
        }
 
        __connman_network_disconnect(network);
index f24f491..f561170 100755 (executable)
@@ -412,6 +412,8 @@ static const char *error2string(enum connman_service_error error)
                return "auth-failed";
        case CONNMAN_SERVICE_ERROR_INVALID_KEY:
                return "invalid-key";
+       case CONNMAN_SERVICE_ERROR_BLOCKED:
+               return "blocked";
        }
 
        return NULL;