X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fwifi-config.c;h=943a6cf1085e16a8843f11a2250d65a15d0914ac;hb=3cbe1607ce779477648bf8dd173a099fa96699af;hp=3b011430453b822224be1c42ccbb3a8de94c35b1;hpb=29c5b1746df3ae3d1e73802e6f87f7cea0e05559;p=platform%2Fcore%2Fconnectivity%2Fnet-config.git diff --git a/src/wifi-config.c b/src/wifi-config.c index 3b01143..943a6cf 100755 --- a/src/wifi-config.c +++ b/src/wifi-config.c @@ -123,6 +123,7 @@ static void __free_wifi_configuration(struct wifi_config *conf) g_free(conf->ip_info->subnet_mask); g_free(conf->ip_info->gateway_address); g_free(conf->ip_info->dns_type); + conf->ip_info->prefix_length = 0; int i = 0, count = conf->ip_info->dns_count; while (i < count) { @@ -368,10 +369,12 @@ static gboolean _load_configuration(const gchar *config_id, struct wifi_config * DBG("g_key_file_get_integer failed error[%d: %s]", error->code, error->message); g_error_free(error); } else { - addr = 0xffffffff << (32 - prefix_len); - netmask.s_addr = htonl(addr); - mask = inet_ntoa(netmask); - config->ip_info->subnet_mask = g_strdup(mask); + if (prefix_len > 0 && prefix_len < 32) { + addr = 0xffffffff << (32 - prefix_len); + netmask.s_addr = htonl(addr); + mask = inet_ntoa(netmask); + config->ip_info->subnet_mask = g_strdup(mask); + } if (config->ip_info->subnet_mask) DBG("IPv4.SubnetMask:%s", config->ip_info->subnet_mask); } @@ -1085,6 +1088,9 @@ gboolean handle_load_configuration(Wifi *wifi, GDBusMethodInvocation *context, if (conf->ip_info->subnet_mask != NULL) g_variant_builder_add(b, "{sv}", WIFI_CONFIG_IPV4_SUBNET_MASK, g_variant_new_string(conf->ip_info->subnet_mask)); + if (conf->ip_info->prefix_length > 0) + g_variant_builder_add(b, "{sv}", WIFI_CONFIG_IPV6_PREFIX_LEN, g_variant_new_int32(conf->ip_info->prefix_length)); + if (conf->ip_info->gateway_address != NULL) g_variant_builder_add(b, "{sv}", WIFI_CONFIG_IPV4_GATEWAY_ADDRESS, g_variant_new_string(conf->ip_info->gateway_address)); @@ -1207,6 +1213,13 @@ gboolean handle_save_configuration(Wifi *wifi, GDBusMethodInvocation *context, } else { conf->ip_info->subnet_mask = NULL; } + } else if (g_strcmp0(field, WIFI_CONFIG_IPV6_PREFIX_LEN) == 0) { + if (g_variant_is_of_type(value, G_VARIANT_TYPE_INT32)) { + conf->ip_info->prefix_length = g_variant_get_int32(value); + DBG("IPv6 Prefix Length [%d]", conf->ip_info->prefix_length); + } else { + conf->ip_info->prefix_length = 0; + } } else if (g_strcmp0(field, WIFI_CONFIG_IPV4_GATEWAY_ADDRESS) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->ip_info->gateway_address = g_strdup(g_variant_get_string(value, NULL)); @@ -1295,11 +1308,16 @@ gboolean handle_save_configuration(Wifi *wifi, GDBusMethodInvocation *context, if (conf->ip_info->subnet_mask != NULL) { unsigned char prefix_len; prefix_len = __netconfig_convert_netmask_to_prefixlen( - conf->ip_info->subnet_mask); - g_key_file_set_integer(keyfile, group_name, - WIFI_CONFIG_IPV4_SUBNET_MASK, prefix_len); + conf->ip_info->subnet_mask); + if (prefix_len > 0 && prefix_len < 32) + g_key_file_set_integer(keyfile, group_name, + WIFI_CONFIG_IPV4_SUBNET_MASK, prefix_len); } + if (conf->ip_info->prefix_length > 0) + g_key_file_set_integer(keyfile, group_name, + WIFI_CONFIG_IPV6_PREFIX_LEN, conf->ip_info->prefix_length); + if (conf->ip_info->gateway_address != NULL) g_key_file_set_string(keyfile, group_name, WIFI_CONFIG_IPV4_GATEWAY_ADDRESS, conf->ip_info->gateway_address); @@ -1697,7 +1715,7 @@ gboolean handle_set_config_field(Wifi *wifi, GDBusMethodInvocation *context, g_return_val_if_fail(config_id != NULL, TRUE); g_return_val_if_fail(key != NULL, TRUE); - DBG("Key[%s] Value[%d]", key, value); + DBG("Key[%s] Value[%s]", key, value); if (g_strcmp0(key, WIFI_CONFIG_PROXYADDRESS) == 0) { ret = _set_field(config_id, WIFI_CONFIG_PROXY_METHOD, "manual");