return FALSE;
}
-static int __net_extract_common_info(const char *key, GVariant *variant, net_profile_info_t* ProfInfo)
+static void __net_extract_state_value(GVariant *variant, net_profile_info_t* ProfInfo)
{
- __NETWORK_FUNC_ENTER__;
+ const gchar* value = g_variant_get_string(variant, NULL);
+
+ if (g_strcmp0(value, "idle") == 0)
+ ProfInfo->ProfileState = NET_STATE_TYPE_IDLE;
+ else if (g_strcmp0(value, "failure") == 0)
+ ProfInfo->ProfileState = NET_STATE_TYPE_FAILURE;
+ else if (g_strcmp0(value, "association") == 0)
+ ProfInfo->ProfileState = NET_STATE_TYPE_ASSOCIATION;
+ else if (g_strcmp0(value, "configuration") == 0)
+ ProfInfo->ProfileState = NET_STATE_TYPE_CONFIGURATION;
+ else if (g_strcmp0(value, "ready") == 0)
+ ProfInfo->ProfileState = NET_STATE_TYPE_READY;
+ else if (g_strcmp0(value, "disconnect") == 0)
+ ProfInfo->ProfileState = NET_STATE_TYPE_DISCONNECT;
+ else if (g_strcmp0(value, "online") == 0)
+ ProfInfo->ProfileState = NET_STATE_TYPE_ONLINE;
+ else
+ ProfInfo->ProfileState = NET_STATE_TYPE_UNKNOWN;
+}
- net_err_t Error = NET_ERR_NONE;
+static void __net_extract_state6_value(GVariant *variant, net_profile_info_t* ProfInfo)
+{
+ const gchar* value = g_variant_get_string(variant, NULL);
+
+ if (g_strcmp0(value, "idle") == 0)
+ ProfInfo->ProfileState6 = NET_STATE_TYPE_IDLE;
+ else if (g_strcmp0(value, "failure") == 0)
+ ProfInfo->ProfileState6 = NET_STATE_TYPE_FAILURE;
+ else if (g_strcmp0(value, "association") == 0)
+ ProfInfo->ProfileState6 = NET_STATE_TYPE_ASSOCIATION;
+ else if (g_strcmp0(value, "configuration") == 0)
+ ProfInfo->ProfileState6 = NET_STATE_TYPE_CONFIGURATION;
+ else if (g_strcmp0(value, "disconnect") == 0)
+ ProfInfo->ProfileState6 = NET_STATE_TYPE_DISCONNECT;
+ else if (g_strcmp0(value, "ready") == 0)
+ ProfInfo->ProfileState6 = NET_STATE_TYPE_READY;
+ else if (g_strcmp0(value, "online") == 0)
+ ProfInfo->ProfileState6 = NET_STATE_TYPE_ONLINE;
+ else
+ ProfInfo->ProfileState6 = NET_STATE_TYPE_UNKNOWN;
+}
+
+static void __net_extract_error(GVariant *variant, net_profile_info_t* ProfInfo)
+{
+ const gchar *value = g_variant_get_string(variant, NULL);
+
+ if (g_strcmp0(value, "invalid-key") == 0)
+ ProfInfo->ProfileErrorState = NET_STATE_ERROR_INVALID_KEY;
+ else if (g_strcmp0(value, "connect-failed") == 0)
+ ProfInfo->ProfileErrorState = NET_STATE_ERROR_CONNECT_FAILED;
+ else if (g_strcmp0(value, "auth-failed") == 0)
+ ProfInfo->ProfileErrorState = NET_STATE_ERROR_AUTH_FAILED;
+ else if (g_strcmp0(value, "login-failed") == 0)
+ ProfInfo->ProfileErrorState = NET_STATE_ERROR_LOGIN_FAILED;
+ else if (g_strcmp0(value, "dhcp-failed") == 0)
+ ProfInfo->ProfileErrorState = NET_STATE_ERROR_DHCP_FAILED;
+ else if (g_strcmp0(value, "out-of-range") == 0)
+ ProfInfo->ProfileErrorState = NET_STATE_ERROR_OUT_OF_RANGE;
+ else if (g_strcmp0(value, "pin-missing") == 0)
+ ProfInfo->ProfileErrorState = NET_STATE_ERROR_PIN_MISSING;
+}
+
+static void __net_extract_ethernet_value(GVariant *variant, net_dev_info_t* net_info)
+{
const gchar *subKey = NULL;
const gchar *value = NULL;
- net_dev_info_t* net_info = NULL;
GVariant *var = NULL;
GVariantIter *iter = NULL;
+ g_variant_get(variant, "a{sv}", &iter);
+ while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
+ if (g_strcmp0(subKey, "Interface") == 0) {
+ value = g_variant_get_string(var, NULL);
- if (ProfInfo->profile_type == NET_DEVICE_CELLULAR) {
- net_info = &(ProfInfo->ProfileInfo.Pdp.net_info);
- } else if (ProfInfo->profile_type == NET_DEVICE_WIFI) {
- net_info = &(ProfInfo->ProfileInfo.Wlan.net_info);
- } else if (ProfInfo->profile_type == NET_DEVICE_ETHERNET) {
- net_info = &(ProfInfo->ProfileInfo.Ethernet.net_info);
- } else if (ProfInfo->profile_type == NET_DEVICE_BLUETOOTH) {
- net_info = &(ProfInfo->ProfileInfo.Bluetooth.net_info);
- } else if (ProfInfo->profile_type == NET_DEVICE_MESH) {
- net_info = &(ProfInfo->ProfileInfo.Mesh.net_info);
- } else {
- NETWORK_LOG(NETWORK_ERROR,
- "Invalid Profile type. [%d]", ProfInfo->profile_type);
- return NET_ERR_INVALID_PARAM;
+ if (value != NULL)
+ g_strlcpy(net_info->DevName, value, NET_MAX_DEVICE_NAME_LEN);
+ } else if (g_strcmp0(subKey, "Address") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ if (value != NULL)
+ g_strlcpy(net_info->MacAddr, value, NET_MAX_MAC_ADDR_LEN);
+ }
}
+ g_variant_iter_free(iter);
+}
- if (g_strcmp0(key, "State") == 0) {
- value = g_variant_get_string(variant, NULL);
-
- if (g_strcmp0(value, "idle") == 0)
- ProfInfo->ProfileState = NET_STATE_TYPE_IDLE;
- else if (g_strcmp0(value, "failure") == 0)
- ProfInfo->ProfileState = NET_STATE_TYPE_FAILURE;
- else if (g_strcmp0(value, "association") == 0)
- ProfInfo->ProfileState = NET_STATE_TYPE_ASSOCIATION;
- else if (g_strcmp0(value, "configuration") == 0)
- ProfInfo->ProfileState = NET_STATE_TYPE_CONFIGURATION;
- else if (g_strcmp0(value, "ready") == 0)
- ProfInfo->ProfileState = NET_STATE_TYPE_READY;
- else if (g_strcmp0(value, "disconnect") == 0)
- ProfInfo->ProfileState = NET_STATE_TYPE_DISCONNECT;
- else if (g_strcmp0(value, "online") == 0)
- ProfInfo->ProfileState = NET_STATE_TYPE_ONLINE;
- else
- ProfInfo->ProfileState = NET_STATE_TYPE_UNKNOWN;
- } else if (g_strcmp0(key, "StateIPv6") == 0) {
- value = g_variant_get_string(variant, NULL);
-
- if (g_strcmp0(value, "idle") == 0)
- ProfInfo->ProfileState6 = NET_STATE_TYPE_IDLE;
- else if (g_strcmp0(value, "failure") == 0)
- ProfInfo->ProfileState6 = NET_STATE_TYPE_FAILURE;
- else if (g_strcmp0(value, "association") == 0)
- ProfInfo->ProfileState6 = NET_STATE_TYPE_ASSOCIATION;
- else if (g_strcmp0(value, "configuration") == 0)
- ProfInfo->ProfileState6 = NET_STATE_TYPE_CONFIGURATION;
- else if (g_strcmp0(value, "disconnect") == 0)
- ProfInfo->ProfileState6 = NET_STATE_TYPE_DISCONNECT;
- else if (g_strcmp0(value, "ready") == 0)
- ProfInfo->ProfileState6 = NET_STATE_TYPE_READY;
- else if (g_strcmp0(value, "online") == 0)
- ProfInfo->ProfileState6 = NET_STATE_TYPE_ONLINE;
- else
- ProfInfo->ProfileState6 = NET_STATE_TYPE_UNKNOWN;
- } else if (g_strcmp0(key, "Error") == 0) {
- value = g_variant_get_string(variant, NULL);
-
- if (g_strcmp0(value, "invalid-key") == 0)
- ProfInfo->ProfileErrorState = NET_STATE_ERROR_INVALID_KEY;
- else if (g_strcmp0(value, "connect-failed") == 0)
- ProfInfo->ProfileErrorState = NET_STATE_ERROR_CONNECT_FAILED;
- else if (g_strcmp0(value, "auth-failed") == 0)
- ProfInfo->ProfileErrorState = NET_STATE_ERROR_AUTH_FAILED;
- else if (g_strcmp0(value, "login-failed") == 0)
- ProfInfo->ProfileErrorState = NET_STATE_ERROR_LOGIN_FAILED;
- else if (g_strcmp0(value, "dhcp-failed") == 0)
- ProfInfo->ProfileErrorState = NET_STATE_ERROR_DHCP_FAILED;
- else if (g_strcmp0(value, "out-of-range") == 0)
- ProfInfo->ProfileErrorState = NET_STATE_ERROR_OUT_OF_RANGE;
- else if (g_strcmp0(value, "pin-missing") == 0)
- ProfInfo->ProfileErrorState = NET_STATE_ERROR_PIN_MISSING;
- } else if (g_strcmp0(key, "Favorite") == 0) {
- gboolean val = g_variant_get_boolean(variant);
+static void __net_extract_ipv4_value(GVariant *variant, net_dev_info_t* net_info)
+{
+ const gchar *subKey = NULL;
+ const gchar *value = NULL;
+ GVariant *var = NULL;
+ GVariantIter *iter = NULL;
+ g_variant_get(variant, "a{sv}", &iter);
+ while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
+ if (g_strcmp0(subKey, "Method") == 0) {
+ value = g_variant_get_string(var, NULL);
- if (val)
- ProfInfo->Favourite = (char)TRUE;
- else
- ProfInfo->Favourite = (char)FALSE;
- } else if (g_strcmp0(key, "Ethernet") == 0) {
- g_variant_get(variant, "a{sv}", &iter);
- while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
- if (g_strcmp0(subKey, "Interface") == 0) {
- value = g_variant_get_string(var, NULL);
+ if (g_strcmp0(value, "dhcp") == 0)
+ net_info->IpConfigType = NET_IP_CONFIG_TYPE_DYNAMIC;
+ else if (g_strcmp0(value, "manual") == 0)
+ net_info->IpConfigType = NET_IP_CONFIG_TYPE_STATIC;
+ else if (g_strcmp0(value, "fixed") == 0)
+ net_info->IpConfigType = NET_IP_CONFIG_TYPE_FIXED;
+ else if (g_strcmp0(value, "off") == 0)
+ net_info->IpConfigType = NET_IP_CONFIG_TYPE_OFF;
+
+ if (net_info->IpConfigType != NET_IP_CONFIG_TYPE_DYNAMIC) {
+ net_info->BServerAddr = FALSE;
+ net_info->ServerAddr.Type = NET_ADDR_IPV4;
+ net_info->ServerAddr.Data.Ipv4.s_addr = 0;
+ }
- if (value != NULL)
- g_strlcpy(net_info->DevName, value, NET_MAX_DEVICE_NAME_LEN);
- } else if (g_strcmp0(subKey, "Address") == 0) {
- value = g_variant_get_string(var, NULL);
+ } else if (g_strcmp0(subKey, "Address") == 0) {
+ value = g_variant_get_string(var, NULL);
- if (value != NULL)
- g_strlcpy(net_info->MacAddr, value, NET_MAX_MAC_ADDR_LEN);
- }
+ __net_extract_ip(value, &net_info->IpAddr);
+ } else if (g_strcmp0(subKey, "Netmask") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ __net_extract_ip(value, &net_info->SubnetMask);
+ net_info->PrefixLen = __net_get_prefix_len(value);
+ net_info->BNetmask = TRUE;
+ } else if (g_strcmp0(subKey, "Gateway") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ __net_extract_ip(value, &net_info->GatewayAddr);
+ net_info->BDefGateway = TRUE;
+ } else if (g_strcmp0(subKey, "DHCPServerIP") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ __net_extract_ip(value, &net_info->ServerAddr);
+ net_info->BServerAddr = TRUE;
+ } else if (g_strcmp0(subKey, "DHCPLeaseDuration") == 0) {
+ net_info->DHCPLeaseDuration = g_variant_get_int32(var);
}
- g_variant_iter_free(iter);
- } else if (g_strcmp0(key, "IPv4") == 0) {
+ }
+ g_variant_iter_free(iter);
+}
+
+static void __net_extract_ipv4_configuration_value(GVariant *variant, net_dev_info_t* net_info)
+{
+ const gchar *subKey = NULL;
+ const gchar *value = NULL;
+ GVariant *var = NULL;
+ GVariantIter *iter = NULL;
+ if (net_info->IpConfigType != NET_IP_CONFIG_TYPE_DYNAMIC &&
+ net_info->IpConfigType != NET_IP_CONFIG_TYPE_STATIC &&
+ net_info->IpConfigType != NET_IP_CONFIG_TYPE_FIXED &&
+ net_info->IpConfigType != NET_IP_CONFIG_TYPE_OFF) {
+
g_variant_get(variant, "a{sv}", &iter);
while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
if (g_strcmp0(subKey, "Method") == 0) {
else if (g_strcmp0(value, "off") == 0)
net_info->IpConfigType = NET_IP_CONFIG_TYPE_OFF;
- if (net_info->IpConfigType != NET_IP_CONFIG_TYPE_DYNAMIC) {
- net_info->BServerAddr = FALSE;
- net_info->ServerAddr.Type = NET_ADDR_IPV4;
- net_info->ServerAddr.Data.Ipv4.s_addr = 0;
- }
-
- } else if (g_strcmp0(subKey, "Address") == 0) {
+ } else if (g_strcmp0(subKey, "Address") == 0 &&
+ net_info->IpAddr.Data.Ipv4.s_addr == 0) {
value = g_variant_get_string(var, NULL);
__net_extract_ip(value, &net_info->IpAddr);
- } else if (g_strcmp0(subKey, "Netmask") == 0) {
+ } else if (g_strcmp0(subKey, "Netmask") == 0 &&
+ net_info->SubnetMask.Data.Ipv4.s_addr == 0) {
value = g_variant_get_string(var, NULL);
__net_extract_ip(value, &net_info->SubnetMask);
- net_info->PrefixLen = __net_get_prefix_len(value);
net_info->BNetmask = TRUE;
- } else if (g_strcmp0(subKey, "Gateway") == 0) {
+ } else if (g_strcmp0(subKey, "Gateway") == 0 &&
+ net_info->GatewayAddr.Data.Ipv4.s_addr == 0) {
value = g_variant_get_string(var, NULL);
__net_extract_ip(value, &net_info->GatewayAddr);
net_info->BDefGateway = TRUE;
- } else if (g_strcmp0(subKey, "DHCPServerIP") == 0) {
- value = g_variant_get_string(var, NULL);
-
- __net_extract_ip(value, &net_info->ServerAddr);
- net_info->BServerAddr = TRUE;
- } else if (g_strcmp0(subKey, "DHCPLeaseDuration") == 0) {
- net_info->DHCPLeaseDuration = g_variant_get_int32(var);
}
}
g_variant_iter_free(iter);
- } else if (g_strcmp0(key, "IPv4.Configuration") == 0) {
- if (net_info->IpConfigType != NET_IP_CONFIG_TYPE_DYNAMIC &&
- net_info->IpConfigType != NET_IP_CONFIG_TYPE_STATIC &&
- net_info->IpConfigType != NET_IP_CONFIG_TYPE_FIXED &&
- net_info->IpConfigType != NET_IP_CONFIG_TYPE_OFF) {
+ }
+}
- g_variant_get(variant, "a{sv}", &iter);
- while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
- if (g_strcmp0(subKey, "Method") == 0) {
- value = g_variant_get_string(var, NULL);
-
- if (g_strcmp0(value, "dhcp") == 0)
- net_info->IpConfigType = NET_IP_CONFIG_TYPE_DYNAMIC;
- else if (g_strcmp0(value, "manual") == 0)
- net_info->IpConfigType = NET_IP_CONFIG_TYPE_STATIC;
- else if (g_strcmp0(value, "fixed") == 0)
- net_info->IpConfigType = NET_IP_CONFIG_TYPE_FIXED;
- else if (g_strcmp0(value, "off") == 0)
- net_info->IpConfigType = NET_IP_CONFIG_TYPE_OFF;
-
- } else if (g_strcmp0(subKey, "Address") == 0 &&
- net_info->IpAddr.Data.Ipv4.s_addr == 0) {
- value = g_variant_get_string(var, NULL);
-
- __net_extract_ip(value, &net_info->IpAddr);
- } else if (g_strcmp0(subKey, "Netmask") == 0 &&
- net_info->SubnetMask.Data.Ipv4.s_addr == 0) {
- value = g_variant_get_string(var, NULL);
-
- __net_extract_ip(value, &net_info->SubnetMask);
- net_info->BNetmask = TRUE;
- } else if (g_strcmp0(subKey, "Gateway") == 0 &&
- net_info->GatewayAddr.Data.Ipv4.s_addr == 0) {
- value = g_variant_get_string(var, NULL);
-
- __net_extract_ip(value, &net_info->GatewayAddr);
- net_info->BDefGateway = TRUE;
- }
- }
- g_variant_iter_free(iter);
- }
- } else if (g_strcmp0(key, "IPv6") == 0) {
- g_variant_get(variant, "a{sv}", &iter);
- while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
- if (g_strcmp0(subKey, "Method") == 0) {
- value = g_variant_get_string(var, NULL);
+static void __net_extract_ipv6_value(GVariant *variant, net_dev_info_t* net_info)
+{
+ const gchar *subKey = NULL;
+ const gchar *value = NULL;
+ GVariant *var = NULL;
+ GVariantIter *iter = NULL;
+ g_variant_get(variant, "a{sv}", &iter);
+ while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
+ if (g_strcmp0(subKey, "Method") == 0) {
+ value = g_variant_get_string(var, NULL);
- if (g_strcmp0(value, "manual") == 0)
- net_info->IpConfigType6 = NET_IP_CONFIG_TYPE_STATIC;
- else if (g_strcmp0(value, "off") == 0)
- net_info->IpConfigType6 = NET_IP_CONFIG_TYPE_OFF;
- else if (g_strcmp0(value, "auto") == 0)
- net_info->IpConfigType6 = NET_IP_CONFIG_TYPE_AUTO_IP;
+ if (g_strcmp0(value, "manual") == 0)
+ net_info->IpConfigType6 = NET_IP_CONFIG_TYPE_STATIC;
+ else if (g_strcmp0(value, "off") == 0)
+ net_info->IpConfigType6 = NET_IP_CONFIG_TYPE_OFF;
+ else if (g_strcmp0(value, "auto") == 0)
+ net_info->IpConfigType6 = NET_IP_CONFIG_TYPE_AUTO_IP;
- } else if (g_strcmp0(subKey, "Address") == 0) {
- value = g_variant_get_string(var, NULL);
+ } else if (g_strcmp0(subKey, "Address") == 0) {
+ value = g_variant_get_string(var, NULL);
- inet_pton(AF_INET6, value, &net_info->IpAddr6.Data.Ipv6);
- } else if (g_strcmp0(subKey, "PrefixLength") == 0) {
- net_info->PrefixLen6 = g_variant_get_byte(var);
- } else if (g_strcmp0(subKey, "Gateway") == 0) {
- value = g_variant_get_string(var, NULL);
+ inet_pton(AF_INET6, value, &net_info->IpAddr6.Data.Ipv6);
+ } else if (g_strcmp0(subKey, "PrefixLength") == 0) {
+ net_info->PrefixLen6 = g_variant_get_byte(var);
+ } else if (g_strcmp0(subKey, "Gateway") == 0) {
+ value = g_variant_get_string(var, NULL);
- inet_pton(AF_INET6, value, &net_info->GatewayAddr6.Data.Ipv6);
- net_info->BDefGateway6 = TRUE;
- } else if (g_strcmp0(subKey, "Privacy") == 0) {
- value = g_variant_get_string(var, NULL);
+ inet_pton(AF_INET6, value, &net_info->GatewayAddr6.Data.Ipv6);
+ net_info->BDefGateway6 = TRUE;
+ } else if (g_strcmp0(subKey, "Privacy") == 0) {
+ value = g_variant_get_string(var, NULL);
- if (value != NULL)
- g_strlcpy(net_info->Privacy6, value, NETPM_IPV6_MAX_PRIVACY_LEN);
- }
+ if (value != NULL)
+ g_strlcpy(net_info->Privacy6, value, NETPM_IPV6_MAX_PRIVACY_LEN);
}
- g_variant_iter_free(iter);
- } else if (g_strcmp0(key, "IPv6.Configuration") == 0) {
- g_variant_get(variant, "a{sv}", &iter);
- while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
- if (g_strcmp0(subKey, "Method") == 0) {
- value = g_variant_get_string(var, NULL);
+ }
+ g_variant_iter_free(iter);
+}
- if (g_strcmp0(value, "manual") == 0)
- net_info->IpConfigType6 = NET_IP_CONFIG_TYPE_STATIC;
- else if (g_strcmp0(value, "off") == 0)
- net_info->IpConfigType6 = NET_IP_CONFIG_TYPE_OFF;
- else if (g_strcmp0(value, "auto") == 0)
- net_info->IpConfigType6 = NET_IP_CONFIG_TYPE_AUTO_IP;
+static void __net_extract_ipv6_configuration_value(GVariant *variant, net_dev_info_t* net_info)
+{
+ const gchar *subKey = NULL;
+ const gchar *value = NULL;
+ GVariant *var = NULL;
+ GVariantIter *iter = NULL;
+ g_variant_get(variant, "a{sv}", &iter);
+ while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
+ if (g_strcmp0(subKey, "Method") == 0) {
+ value = g_variant_get_string(var, NULL);
- } else if (g_strcmp0(subKey, "Address") == 0) {
- value = g_variant_get_string(var, NULL);
+ if (g_strcmp0(value, "manual") == 0)
+ net_info->IpConfigType6 = NET_IP_CONFIG_TYPE_STATIC;
+ else if (g_strcmp0(value, "off") == 0)
+ net_info->IpConfigType6 = NET_IP_CONFIG_TYPE_OFF;
+ else if (g_strcmp0(value, "auto") == 0)
+ net_info->IpConfigType6 = NET_IP_CONFIG_TYPE_AUTO_IP;
- inet_pton(AF_INET6, value, &net_info->IpAddr6.Data.Ipv6);
- } else if (g_strcmp0(subKey, "PrefixLength") == 0) {
- net_info->PrefixLen6 = g_variant_get_byte(var);
- } else if (g_strcmp0(subKey, "Gateway") == 0) {
- value = g_variant_get_string(var, NULL);
+ } else if (g_strcmp0(subKey, "Address") == 0) {
+ value = g_variant_get_string(var, NULL);
- inet_pton(AF_INET6, value, &net_info->GatewayAddr6.Data.Ipv6);
- net_info->BDefGateway6 = TRUE;
- } else if (g_strcmp0(subKey, "Privacy") == 0) {
- value = g_variant_get_string(var, NULL);
+ inet_pton(AF_INET6, value, &net_info->IpAddr6.Data.Ipv6);
+ } else if (g_strcmp0(subKey, "PrefixLength") == 0) {
+ net_info->PrefixLen6 = g_variant_get_byte(var);
+ } else if (g_strcmp0(subKey, "Gateway") == 0) {
+ value = g_variant_get_string(var, NULL);
- if (value != NULL)
- g_strlcpy(net_info->Privacy6, value, NETPM_IPV6_MAX_PRIVACY_LEN);
- }
+ inet_pton(AF_INET6, value, &net_info->GatewayAddr6.Data.Ipv6);
+ net_info->BDefGateway6 = TRUE;
+ } else if (g_strcmp0(subKey, "Privacy") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ if (value != NULL)
+ g_strlcpy(net_info->Privacy6, value, NETPM_IPV6_MAX_PRIVACY_LEN);
}
- g_variant_iter_free(iter);
- } else if (g_strcmp0(key, "Nameservers") == 0) {
- int dnsCount = 0;
- int dnsCount6 = 0;
- gchar *dns_value = NULL;
- gchar *dns_type = NULL;
-
- g_variant_get(variant, "as", &iter);
-
- while (g_variant_iter_loop(iter, "s", &dns_value)) {
- /* Check Type of DNS Address */
- if (__net_check_address_type(AF_INET6, dns_value)) {
- /* IPv6 */
- if (dnsCount6 < NET_DNS_ADDR_MAX) {
- net_info->DnsAddr6[dnsCount6].Type =
- NET_ADDR_IPV6;
- inet_pton(AF_INET6, dns_value,
- &net_info->DnsAddr6[dnsCount6]\
- .Data.Ipv6);
- dnsCount6++;
- }
- } else if (__net_check_address_type(AF_INET, dns_value)) {
- /* IPv4 */
- if (dnsCount < NET_DNS_ADDR_MAX) {
- net_info->DnsAddr[dnsCount].Type =
- NET_ADDR_IPV4;
- __net_extract_ip(dns_value,
- &net_info->DnsAddr[dnsCount]);
- dnsCount++;
- }
- } else { /* DNS Type */
- dns_type = g_strdup(dns_value);
- if (g_strcmp0(dns_type, "ipv4.manual") == 0)
- net_info->DnsConfigType =
- NET_DNS_CONFIG_TYPE_STATIC;
- else if (g_strcmp0(dns_type, "ipv4.dhcp") == 0)
- net_info->DnsConfigType =
- NET_DNS_CONFIG_TYPE_DYNAMIC;
- if (g_strcmp0(dns_type, "ipv6.manual") == 0)
- net_info->DnsConfigType6 =
- NET_DNS_CONFIG_TYPE_STATIC;
- else if (g_strcmp0(dns_type, "ipv6.dhcp") == 0)
- net_info->DnsConfigType6 =
- NET_DNS_CONFIG_TYPE_DYNAMIC;
- g_free(dns_type);
+ }
+ g_variant_iter_free(iter);
+}
+
+static void __net_extract_nameserver_value(GVariant *variant, net_dev_info_t* net_info)
+{
+ GVariantIter *iter = NULL;
+ int dnsCount = 0;
+ int dnsCount6 = 0;
+ gchar *dns_value = NULL;
+ gchar *dns_type = NULL;
+
+ g_variant_get(variant, "as", &iter);
+
+ while (g_variant_iter_loop(iter, "s", &dns_value)) {
+ /* Check Type of DNS Address */
+ if (__net_check_address_type(AF_INET6, dns_value)) {
+ /* IPv6 */
+ if (dnsCount6 < NET_DNS_ADDR_MAX) {
+ net_info->DnsAddr6[dnsCount6].Type =
+ NET_ADDR_IPV6;
+ inet_pton(AF_INET6, dns_value,
+ &net_info->DnsAddr6[dnsCount6]\
+ .Data.Ipv6);
+ dnsCount6++;
+ }
+ } else if (__net_check_address_type(AF_INET, dns_value)) {
+ /* IPv4 */
+ if (dnsCount < NET_DNS_ADDR_MAX) {
+ net_info->DnsAddr[dnsCount].Type =
+ NET_ADDR_IPV4;
+ __net_extract_ip(dns_value,
+ &net_info->DnsAddr[dnsCount]);
+ dnsCount++;
}
+ } else { /* DNS Type */
+ dns_type = g_strdup(dns_value);
+ if (g_strcmp0(dns_type, "ipv4.manual") == 0)
+ net_info->DnsConfigType =
+ NET_DNS_CONFIG_TYPE_STATIC;
+ else if (g_strcmp0(dns_type, "ipv4.dhcp") == 0)
+ net_info->DnsConfigType =
+ NET_DNS_CONFIG_TYPE_DYNAMIC;
+ if (g_strcmp0(dns_type, "ipv6.manual") == 0)
+ net_info->DnsConfigType6 =
+ NET_DNS_CONFIG_TYPE_STATIC;
+ else if (g_strcmp0(dns_type, "ipv6.dhcp") == 0)
+ net_info->DnsConfigType6 =
+ NET_DNS_CONFIG_TYPE_DYNAMIC;
+ g_free(dns_type);
}
- g_variant_iter_free(iter);
+ }
+ g_variant_iter_free(iter);
- net_info->DnsCount = dnsCount;
- net_info->DnsCount6 = dnsCount6;
- } else if (g_strcmp0(key, "Nameservers.Configuration") == 0 && net_info->DnsCount == 0) {
- int dnsCount = 0;
- int dnsCount6 = 0;
- gchar *dns_value = NULL;
- gchar *dns_type = NULL;
-
- g_variant_get(variant, "as", &iter);
-
- while (g_variant_iter_loop(iter, "s", &dns_value)) {
- /* Check Type of DNS Address */
- if (__net_check_address_type(AF_INET6, dns_value)) {
- /* IPv6 */
- if (dnsCount6 < NET_DNS_ADDR_MAX) {
- net_info->DnsAddr6[dnsCount6].Type =
- NET_ADDR_IPV6;
- inet_pton(AF_INET6, dns_value,
- &net_info->DnsAddr6[dnsCount6]\
- .Data.Ipv6);
- dnsCount6++;
- }
- } else if (__net_check_address_type(AF_INET, dns_value)) {
- /* IPv4 */
- if (dnsCount < NET_DNS_ADDR_MAX) {
- net_info->DnsAddr[dnsCount].Type =
- NET_ADDR_IPV4;
- __net_extract_ip(dns_value,
- &net_info->DnsAddr[dnsCount]);
- dnsCount++;
- }
- } else { /* DNS Type */
- dns_type = g_strdup(dns_value);
- if (g_strcmp0(dns_type, "ipv4.manual") == 0)
- net_info->DnsConfigType =
- NET_DNS_CONFIG_TYPE_STATIC;
- else if (g_strcmp0(dns_type, "ipv4.dhcp") == 0)
- net_info->DnsConfigType =
- NET_DNS_CONFIG_TYPE_DYNAMIC;
- if (g_strcmp0(dns_type, "ipv6.manual") == 0)
- net_info->DnsConfigType6 =
- NET_DNS_CONFIG_TYPE_STATIC;
- else if (g_strcmp0(dns_type, "ipv6.dhcp") == 0)
- net_info->DnsConfigType6 =
- NET_DNS_CONFIG_TYPE_DYNAMIC;
- g_free(dns_type);
+ net_info->DnsCount = dnsCount;
+ net_info->DnsCount6 = dnsCount6;
+}
+
+static void __net_extract_nameserver_configuration_value(GVariant *variant, net_dev_info_t* net_info)
+{
+ GVariantIter *iter = NULL;
+ int dnsCount = 0;
+ int dnsCount6 = 0;
+ gchar *dns_value = NULL;
+ gchar *dns_type = NULL;
+
+ g_variant_get(variant, "as", &iter);
+
+ while (g_variant_iter_loop(iter, "s", &dns_value)) {
+ /* Check Type of DNS Address */
+ if (__net_check_address_type(AF_INET6, dns_value)) {
+ /* IPv6 */
+ if (dnsCount6 < NET_DNS_ADDR_MAX) {
+ net_info->DnsAddr6[dnsCount6].Type =
+ NET_ADDR_IPV6;
+ inet_pton(AF_INET6, dns_value,
+ &net_info->DnsAddr6[dnsCount6]\
+ .Data.Ipv6);
+ dnsCount6++;
+ }
+ } else if (__net_check_address_type(AF_INET, dns_value)) {
+ /* IPv4 */
+ if (dnsCount < NET_DNS_ADDR_MAX) {
+ net_info->DnsAddr[dnsCount].Type =
+ NET_ADDR_IPV4;
+ __net_extract_ip(dns_value,
+ &net_info->DnsAddr[dnsCount]);
+ dnsCount++;
+ }
+ } else { /* DNS Type */
+ dns_type = g_strdup(dns_value);
+ if (g_strcmp0(dns_type, "ipv4.manual") == 0)
+ net_info->DnsConfigType =
+ NET_DNS_CONFIG_TYPE_STATIC;
+ else if (g_strcmp0(dns_type, "ipv4.dhcp") == 0)
+ net_info->DnsConfigType =
+ NET_DNS_CONFIG_TYPE_DYNAMIC;
+ if (g_strcmp0(dns_type, "ipv6.manual") == 0)
+ net_info->DnsConfigType6 =
+ NET_DNS_CONFIG_TYPE_STATIC;
+ else if (g_strcmp0(dns_type, "ipv6.dhcp") == 0)
+ net_info->DnsConfigType6 =
+ NET_DNS_CONFIG_TYPE_DYNAMIC;
+ g_free(dns_type);
}
}
g_variant_iter_free(iter);
net_info->DnsCount = dnsCount;
net_info->DnsCount6 = dnsCount6;
- } else if (g_strcmp0(key, "Domains") == 0) {
- } else if (g_strcmp0(key, "Domains.Configuration") == 0) {
- } else if (g_strcmp0(key, "Proxy") == 0) {
- const gchar *url = NULL;
- gchar *servers = NULL;
+}
- g_variant_get(variant, "a{sv}", &iter);
- while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
- if (g_strcmp0(subKey, "Method") == 0) {
- value = g_variant_get_string(var, NULL);
+static void __net_extract_proxy_value(GVariant *variant, net_dev_info_t* net_info)
+{
+ const gchar *subKey = NULL;
+ const gchar *value = NULL;
+ GVariant *var = NULL;
+ GVariantIter *iter = NULL;
+ const gchar *url = NULL;
+ gchar *servers = NULL;
- if (g_strcmp0(value, "direct") == 0)
- net_info->ProxyMethod = NET_PROXY_TYPE_DIRECT;
- else if (g_strcmp0(value, "auto") == 0)
- net_info->ProxyMethod = NET_PROXY_TYPE_AUTO;
- else if (g_strcmp0(value, "manual") == 0)
- net_info->ProxyMethod = NET_PROXY_TYPE_MANUAL;
- else
- net_info->ProxyMethod = NET_PROXY_TYPE_UNKNOWN;
- } else if (g_strcmp0(subKey, "URL") == 0) {
- url = g_variant_get_string(var, NULL);
- } else if (g_strcmp0(subKey, "Servers") == 0) {
- GVariantIter *iter_sub = NULL;
-
- g_variant_get(var, "as", &iter_sub);
- if (!g_variant_iter_loop(iter_sub, "s", &servers))
- NETWORK_LOG(NETWORK_LOW, "There was no value");
- g_variant_iter_free(iter_sub);
- }
+ g_variant_get(variant, "a{sv}", &iter);
+ while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
+ if (g_strcmp0(subKey, "Method") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ if (g_strcmp0(value, "direct") == 0)
+ net_info->ProxyMethod = NET_PROXY_TYPE_DIRECT;
+ else if (g_strcmp0(value, "auto") == 0)
+ net_info->ProxyMethod = NET_PROXY_TYPE_AUTO;
+ else if (g_strcmp0(value, "manual") == 0)
+ net_info->ProxyMethod = NET_PROXY_TYPE_MANUAL;
+ else
+ net_info->ProxyMethod = NET_PROXY_TYPE_UNKNOWN;
+ } else if (g_strcmp0(subKey, "URL") == 0) {
+ url = g_variant_get_string(var, NULL);
+ } else if (g_strcmp0(subKey, "Servers") == 0) {
+ GVariantIter *iter_sub = NULL;
+
+ g_variant_get(var, "as", &iter_sub);
+ if (!g_variant_iter_loop(iter_sub, "s", &servers))
+ NETWORK_LOG(NETWORK_LOW, "There was no value");
+ g_variant_iter_free(iter_sub);
}
- g_variant_iter_free(iter);
+ }
+ g_variant_iter_free(iter);
- if (net_info->ProxyMethod == NET_PROXY_TYPE_AUTO && url != NULL)
- g_strlcpy(net_info->ProxyAddr, url, NET_PROXY_LEN_MAX);
- else if (net_info->ProxyMethod == NET_PROXY_TYPE_MANUAL && servers != NULL)
- g_strlcpy(net_info->ProxyAddr, servers, NET_PROXY_LEN_MAX);
+ if (net_info->ProxyMethod == NET_PROXY_TYPE_AUTO && url != NULL)
+ g_strlcpy(net_info->ProxyAddr, url, NET_PROXY_LEN_MAX);
+ else if (net_info->ProxyMethod == NET_PROXY_TYPE_MANUAL && servers != NULL)
+ g_strlcpy(net_info->ProxyAddr, servers, NET_PROXY_LEN_MAX);
- if (servers)
- g_free(servers);
- } else if (g_strcmp0(key, "Proxy.Configuration") == 0 &&
- net_info->ProxyMethod != NET_PROXY_TYPE_AUTO &&
- net_info->ProxyMethod != NET_PROXY_TYPE_MANUAL) {
+ if (servers)
+ g_free(servers);
+}
- const gchar *url = NULL;
- gchar *servers = NULL;
+static void __net_extract_proxy_configuration_value(GVariant *variant, net_dev_info_t* net_info)
+{
+ const gchar *subKey = NULL;
+ const gchar *value = NULL;
+ GVariant *var = NULL;
+ GVariantIter *iter = NULL;
+ const gchar *url = NULL;
+ gchar *servers = NULL;
- g_variant_get(variant, "a{sv}", &iter);
- while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
- if (g_strcmp0(subKey, "Method") == 0) {
- value = g_variant_get_string(var, NULL);
+ g_variant_get(variant, "a{sv}", &iter);
+ while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
+ if (g_strcmp0(subKey, "Method") == 0) {
+ value = g_variant_get_string(var, NULL);
- if (g_strcmp0(value, "direct") == 0)
- net_info->ProxyMethod = NET_PROXY_TYPE_DIRECT;
- else if (g_strcmp0(value, "auto") == 0)
- net_info->ProxyMethod = NET_PROXY_TYPE_AUTO;
- else if (g_strcmp0(value, "manual") == 0)
- net_info->ProxyMethod = NET_PROXY_TYPE_MANUAL;
- else
- net_info->ProxyMethod = NET_PROXY_TYPE_UNKNOWN;
- } else if (g_strcmp0(subKey, "URL") == 0) {
- url = g_variant_get_string(var, NULL);
- } else if (g_strcmp0(subKey, "Servers") == 0) {
- GVariantIter *iter_sub = NULL;
-
- g_variant_get(var, "as", &iter_sub);
- if (!g_variant_iter_loop(iter_sub, "s", &servers))
- NETWORK_LOG(NETWORK_LOW, "There was no value");
- g_variant_iter_free(iter_sub);
- }
+ if (g_strcmp0(value, "direct") == 0)
+ net_info->ProxyMethod = NET_PROXY_TYPE_DIRECT;
+ else if (g_strcmp0(value, "auto") == 0)
+ net_info->ProxyMethod = NET_PROXY_TYPE_AUTO;
+ else if (g_strcmp0(value, "manual") == 0)
+ net_info->ProxyMethod = NET_PROXY_TYPE_MANUAL;
+ else
+ net_info->ProxyMethod = NET_PROXY_TYPE_UNKNOWN;
+ } else if (g_strcmp0(subKey, "URL") == 0) {
+ url = g_variant_get_string(var, NULL);
+ } else if (g_strcmp0(subKey, "Servers") == 0) {
+ GVariantIter *iter_sub = NULL;
+
+ g_variant_get(var, "as", &iter_sub);
+ if (!g_variant_iter_loop(iter_sub, "s", &servers))
+ NETWORK_LOG(NETWORK_LOW, "There was no value");
+ g_variant_iter_free(iter_sub);
}
- g_variant_iter_free(iter);
+ }
+ g_variant_iter_free(iter);
- if (net_info->ProxyMethod == NET_PROXY_TYPE_AUTO && url != NULL)
- g_strlcpy(net_info->ProxyAddr, url, NET_PROXY_LEN_MAX);
- else if (net_info->ProxyMethod == NET_PROXY_TYPE_MANUAL && servers != NULL)
- g_strlcpy(net_info->ProxyAddr, servers, NET_PROXY_LEN_MAX);
+ if (net_info->ProxyMethod == NET_PROXY_TYPE_AUTO && url != NULL)
+ g_strlcpy(net_info->ProxyAddr, url, NET_PROXY_LEN_MAX);
+ else if (net_info->ProxyMethod == NET_PROXY_TYPE_MANUAL && servers != NULL)
+ g_strlcpy(net_info->ProxyAddr, servers, NET_PROXY_LEN_MAX);
+
+ if (servers)
+ g_free(servers);
+}
+
+static int __net_extract_common_info(const char *key, GVariant *variant, net_profile_info_t* ProfInfo)
+{
+ __NETWORK_FUNC_ENTER__;
+
+ net_err_t Error = NET_ERR_NONE;
+ net_dev_info_t* net_info = NULL;
+
+ if (ProfInfo->profile_type == NET_DEVICE_CELLULAR) {
+ net_info = &(ProfInfo->ProfileInfo.Pdp.net_info);
+ } else if (ProfInfo->profile_type == NET_DEVICE_WIFI) {
+ net_info = &(ProfInfo->ProfileInfo.Wlan.net_info);
+ } else if (ProfInfo->profile_type == NET_DEVICE_ETHERNET) {
+ net_info = &(ProfInfo->ProfileInfo.Ethernet.net_info);
+ } else if (ProfInfo->profile_type == NET_DEVICE_BLUETOOTH) {
+ net_info = &(ProfInfo->ProfileInfo.Bluetooth.net_info);
+ } else if (ProfInfo->profile_type == NET_DEVICE_MESH) {
+ net_info = &(ProfInfo->ProfileInfo.Mesh.net_info);
+ } else {
+ NETWORK_LOG(NETWORK_ERROR,
+ "Invalid Profile type. [%d]", ProfInfo->profile_type);
+ return NET_ERR_INVALID_PARAM;
+ }
- if (servers)
- g_free(servers);
+ if (g_strcmp0(key, "State") == 0) {
+ __net_extract_state_value(variant, ProfInfo);
+ } else if (g_strcmp0(key, "StateIPv6") == 0) {
+ __net_extract_state6_value(variant, ProfInfo);
+ } else if (g_strcmp0(key, "Error") == 0) {
+ __net_extract_error(variant, ProfInfo);
+ } else if (g_strcmp0(key, "Favorite") == 0) {
+ ProfInfo->Favourite = (char)g_variant_get_boolean(variant);
+ } else if (g_strcmp0(key, "Ethernet") == 0) {
+ __net_extract_ethernet_value(variant, net_info);
+ } else if (g_strcmp0(key, "IPv4") == 0) {
+ __net_extract_ipv4_value(variant, net_info);
+ } else if (g_strcmp0(key, "IPv4.Configuration") == 0) {
+ __net_extract_ipv4_configuration_value(variant, net_info);
+ } else if (g_strcmp0(key, "IPv6") == 0) {
+ __net_extract_ipv6_value(variant, net_info);
+ } else if (g_strcmp0(key, "IPv6.Configuration") == 0) {
+ __net_extract_ipv6_configuration_value(variant, net_info);
+ } else if (g_strcmp0(key, "Nameservers") == 0) {
+ __net_extract_nameserver_value(variant, net_info);
+ } else if (g_strcmp0(key, "Nameservers.Configuration") == 0 && net_info->DnsCount == 0) {
+ __net_extract_nameserver_configuration_value(variant, net_info);
+ } else if (g_strcmp0(key, "Domains") == 0) {
+ } else if (g_strcmp0(key, "Domains.Configuration") == 0) {
+ } else if (g_strcmp0(key, "Proxy") == 0) {
+ __net_extract_proxy_value(variant, net_info);
+ } else if (g_strcmp0(key, "Proxy.Configuration") == 0 &&
+ net_info->ProxyMethod != NET_PROXY_TYPE_AUTO &&
+ net_info->ProxyMethod != NET_PROXY_TYPE_MANUAL) {
+ __net_extract_proxy_configuration_value(variant, net_info);
} else if (g_strcmp0(key, "Provider") == 0) {
- /* Do noting */
+ /* Do nothing */
}
__NETWORK_FUNC_EXIT__;