connman: Get HS20 property of service correctly
[platform/upstream/connman.git] / src / network.c
index 23ba727..5aac8d6 100755 (executable)
 #define WIFI_BSSID_LEN_MAX 6
 #endif
 
+/*
+ * As per RFC 4861, a host should transmit up to MAX_RTR_SOLICITATIONS(3)
+ * Router Solicitation messages, each separated by at least
+ * RTR_SOLICITATION_INTERVAL(4) seconds to obtain RA for IPv6 auto-configuration.
+ */
+#define RTR_SOLICITATION_INTERVAL      4
+
 static GSList *network_list = NULL;
 static GSList *driver_list = NULL;
 
@@ -96,7 +103,7 @@ struct connman_network {
                char encryption_mode[WIFI_ENCYPTION_MODE_LEN_MAX];
                unsigned char bssid[WIFI_BSSID_LEN_MAX];
                unsigned int maxrate;
-               unsigned int isHS20AP;
+               bool isHS20AP;
                unsigned int keymgmt;
                char *keymgmt_type;
                bool rsn_mode;
@@ -461,7 +468,7 @@ static void check_dhcpv6(struct nd_router_advert *reply,
                        DBG("re-send router solicitation %d",
                                                network->router_solicit_count);
                        network->router_solicit_count--;
-                       __connman_inet_ipv6_send_rs(network->index, 1,
+                       __connman_inet_ipv6_send_rs(network->index, RTR_SOLICITATION_INTERVAL,
                                                check_dhcpv6, network);
                        return;
                }
@@ -632,7 +639,8 @@ static void autoconf_ipv6_set(struct connman_network *network)
 
        /* Try to get stateless DHCPv6 information, RFC 3736 */
        network->router_solicit_count = 3;
-       __connman_inet_ipv6_send_rs(index, 1, check_dhcpv6, network);
+       __connman_inet_ipv6_send_rs(index, RTR_SOLICITATION_INTERVAL,
+                       check_dhcpv6, network);
 }
 
 static void set_connected(struct connman_network *network)
@@ -2014,25 +2022,6 @@ int connman_network_set_proxy(struct connman_network *network,
        return 0;
 }
 
-int connman_network_set_is_hs20AP(struct connman_network *network,
-                               unsigned int isHS20AP)
-{
-       if (!network)
-               return 0;
-
-       network->wifi.isHS20AP = isHS20AP;
-
-       return 0;
-}
-
-unsigned int connman_network_get_is_hs20AP(struct connman_network *network)
-{
-       if (!network)
-               return 0;
-
-       return network->wifi.isHS20AP;
-}
-
 int connman_network_set_keymgmt(struct connman_network *network,
                                unsigned int keymgmt)
 {
@@ -2369,6 +2358,8 @@ int connman_network_set_bool(struct connman_network *network,
 #if defined TIZEN_EXT
        else if (g_strcmp0(key, "DefaultInternet") == 0)
                network->default_internet = value;
+       else if (g_strcmp0(key, "WiFi.HS20AP") == 0)
+               network->wifi.isHS20AP = value;
 #endif
 
        return -EINVAL;
@@ -2397,6 +2388,8 @@ bool connman_network_get_bool(struct connman_network *network,
 #if defined TIZEN_EXT
        else if (g_str_equal(key, "DefaultInternet"))
                return network->default_internet;
+       else if (g_str_equal(key, "WiFi.HS20AP"))
+               return network->wifi.isHS20AP;
 #endif
 
        return false;