Updated detail of APIs of New APIs For TV Profile 25/81025/3
authorSumit Aggarwal <aggarwal.s@samsung.com>
Thu, 21 Jul 2016 10:55:17 +0000 (16:25 +0530)
committerSumit Aggarwal <aggarwal.s@samsung.com>
Mon, 8 Aug 2016 12:15:02 +0000 (17:45 +0530)
a./ wifi_ap_set_prefix_length()
b./ wifi_ap_get_prefix_length()
c./ wifi_ap_set_dns_config_type()
d./ wifi_ap_get_dns_config_type()

Change-Id: I10c3ccedbbb7c430b9f8d5d2aeb57674365908c0
Signed-off-by: Sumit Aggarwal <aggarwal.s@samsung.com>
src/net_wifi_ap.c

index d8b0cbd9572cc8033d5ed5059fbf92f23b997957..20d7f965f009a6c93bec54752014a76f2cffc2ed 100755 (executable)
@@ -1047,6 +1047,11 @@ EXPORT_API int wifi_ap_set_dns_address(wifi_ap_h ap, int order, wifi_address_fam
                else if (inet_pton(AF_INET6, dns_address,
                                        &profile_info->ProfileInfo.Wlan.net_info.DnsAddr6[order-1].Data.Ipv6) < 1)
                        return WIFI_ERROR_INVALID_PARAMETER;
+#if defined TIZEN_TV
+               else
+                       profile_info->ProfileInfo.Wlan.net_info.DnsConfigType6 =
+                               NET_DNS_CONFIG_TYPE_STATIC;
+#endif
 
                if (profile_info->ProfileInfo.Wlan.net_info.DnsCount6 < order)
                        profile_info->ProfileInfo.Wlan.net_info.DnsCount6 = order;
@@ -1059,6 +1064,11 @@ EXPORT_API int wifi_ap_set_dns_address(wifi_ap_h ap, int order, wifi_address_fam
                else if (inet_pton(AF_INET, dns_address,
                                        &(profile_info->ProfileInfo.Wlan.net_info.DnsAddr[order-1].Data.Ipv4)) < 1)
                        return WIFI_ERROR_INVALID_PARAMETER;
+#if defined TIZEN_TV
+               else
+                       profile_info->ProfileInfo.Wlan.net_info.DnsConfigType =
+                               NET_DNS_CONFIG_TYPE_STATIC;
+#endif
 
                if (profile_info->ProfileInfo.Wlan.net_info.DnsCount < order)
                        profile_info->ProfileInfo.Wlan.net_info.DnsCount = order;
@@ -1641,3 +1651,145 @@ EXPORT_API int wifi_ap_set_eap_auth_type(wifi_ap_h ap, wifi_eap_auth_type_e type
 
        return WIFI_ERROR_NONE;
 }
+
+#if defined TIZEN_TV
+EXPORT_API int wifi_ap_get_dns_config_type(wifi_ap_h ap,
+                                          wifi_address_family_e address_family,
+                                          wifi_dns_config_type_e* type)
+{
+       CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
+
+       net_dns_config_type_t profileType;
+
+       if (_wifi_libnet_check_ap_validity(ap) == false ||
+           (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
+            address_family != WIFI_ADDRESS_FAMILY_IPV6)) {
+               WIFI_LOG(WIFI_ERROR, "[App<--TizenMW]Wrong Parameter Passed\n");
+               return WIFI_ERROR_INVALID_PARAMETER;
+       }
+
+       net_profile_info_t *profile_info = ap;
+
+       if (address_family == WIFI_ADDRESS_FAMILY_IPV4)
+               profileType = profile_info->ProfileInfo.Wlan.net_info.
+                       DnsConfigType;
+       else
+               profileType = profile_info->ProfileInfo.Wlan.net_info.
+                       DnsConfigType6;
+
+       switch (profileType) {
+       case NET_DNS_CONFIG_TYPE_STATIC:
+               *type = WIFI_DNS_CONFIG_TYPE_STATIC;
+               break;
+       case NET_DNS_CONFIG_TYPE_DYNAMIC:
+               *type = WIFI_DNS_CONFIG_TYPE_DYNAMIC;
+               break;
+       default:
+               WIFI_LOG(WIFI_ERROR, "[App<--TizenMW] Operation Failed\n");
+               return WIFI_ERROR_OPERATION_FAILED;
+       }
+
+       WIFI_LOG(WIFI_INFO, "[App<--TizenMW] WiFi DNS Config Type[%d]\n",*type);
+       return WIFI_ERROR_NONE;
+}
+
+EXPORT_API int wifi_ap_set_dns_config_type(wifi_ap_h ap,
+                                          wifi_address_family_e address_family,
+                                          wifi_dns_config_type_e type)
+{
+       CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
+
+       net_dns_config_type_t *profileType = NULL;
+       net_dns_config_type_t *profileType6 = NULL;
+
+       if (_wifi_libnet_check_ap_validity(ap) == false ||
+           (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
+            address_family != WIFI_ADDRESS_FAMILY_IPV6)) {
+               WIFI_LOG(WIFI_ERROR, "[App<--TizenMW]Wrong Parameter Passed\n");
+               return WIFI_ERROR_INVALID_PARAMETER;
+       }
+
+       WIFI_LOG(WIFI_INFO, "[App-->TizenMW] address_family: %d, type: %d\n",
+                address_family, type);
+
+       net_profile_info_t *profile_info = ap;
+
+       /* Currently Connman doesn't support mix DNS Config Type. So both
+        * IPv4 and IPv6 Network should have same DNS Config Type */
+       profileType = &profile_info->ProfileInfo.Wlan.net_info.DnsConfigType;
+       profileType6 = &profile_info->ProfileInfo.Wlan.net_info.DnsConfigType6;
+
+       switch (type) {
+       case WIFI_DNS_CONFIG_TYPE_STATIC:
+               *profileType = NET_DNS_CONFIG_TYPE_STATIC;
+               *profileType6 = NET_DNS_CONFIG_TYPE_STATIC;
+               break;
+       case WIFI_DNS_CONFIG_TYPE_DYNAMIC:
+               *profileType = NET_DNS_CONFIG_TYPE_DYNAMIC;
+               *profileType6 = NET_DNS_CONFIG_TYPE_DYNAMIC;
+
+               if (address_family == WIFI_ADDRESS_FAMILY_IPV4) {
+                       profile_info->ProfileInfo.Wlan.net_info.DnsAddr[0].
+                               Data.Ipv4.s_addr = 0;
+                       profile_info->ProfileInfo.Wlan.net_info.DnsAddr[1].
+                               Data.Ipv4.s_addr = 0;
+               } else {
+                       inet_pton(AF_INET6, "::", &profile_info->ProfileInfo.
+                                 Wlan.net_info.DnsAddr6[0].Data.Ipv6);
+                       inet_pton(AF_INET6, "::", &profile_info->ProfileInfo.
+                                 Wlan.net_info.DnsAddr6[1].Data.Ipv6);
+               }
+               break;
+       default:
+               return WIFI_ERROR_INVALID_PARAMETER;
+       }
+
+       if (_wifi_libnet_check_profile_name_validity(profile_info->ProfileName)
+           == false)
+               return WIFI_ERROR_NONE;
+
+       return _wifi_update_ap_info(profile_info);
+}
+
+EXPORT_API int wifi_ap_get_prefix_length(wifi_ap_h ap, unsigned char* prefix_len
+                                        )
+{
+       CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
+
+       if (_wifi_libnet_check_ap_validity(ap) == false ||
+                       prefix_len == NULL) {
+               WIFI_LOG(WIFI_ERROR, "[App<--TizenMW]Wrong Parameter Passed\n");
+               return WIFI_ERROR_INVALID_PARAMETER;
+       }
+
+       WIFI_LOG(WIFI_ERROR, "prefix_len: %d\n", prefix_len);
+
+       net_profile_info_t *profile_info = ap;
+
+       *prefix_len =  profile_info->ProfileInfo.Wlan.net_info.PrefixLen6;
+
+       return WIFI_ERROR_NONE;
+}
+
+EXPORT_API int wifi_ap_set_prefix_length(wifi_ap_h ap, unsigned char prefix_len)
+{
+       CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
+
+       if (_wifi_libnet_check_ap_validity(ap) == false) {
+               WIFI_LOG(WIFI_ERROR, "[App<--TizenMW]Wrong Parameter Passed\n");
+               return WIFI_ERROR_INVALID_PARAMETER;
+       }
+
+       WIFI_LOG(WIFI_ERROR, "[App-->TizenMW] Prefix_len: %d\n", prefix_len);
+
+       net_profile_info_t *profile_info = ap;
+
+       profile_info->ProfileInfo.Wlan.net_info.PrefixLen6 = prefix_len;
+
+       if (_wifi_libnet_check_profile_name_validity(profile_info->ProfileName)
+                       == false)
+               return WIFI_ERROR_NONE;
+
+       return _wifi_update_ap_info(profile_info);
+}
+#endif /* #if defined TIZEN_TV */