Name: libnet-client
Summary: Network Client library (Shared library)
-Version: 1.2.8
+Version: 1.2.9
Release: 0
Group: System/Network
License: Flora-1.1
}
/* LCOV_EXCL_STOP */
-static int __net_add_route(network_info_t *network_info, const char *ip_addr,
- const char *interface, int address_family)
+static int __net_request_dbus_route(network_info_t *network_info, const char *ip_addr,
+ const char *interface, int address_family, const char *gateway, gboolean add, gboolean entry)
{
__NETWORK_FUNC_ENTER__;
if (address_family == AF_INET) {
g_snprintf(netmask, INET_ADDRSTRLEN, "255.255.255.255");
- params = g_variant_new("(ssssi)", dest_ip, netmask, if_name, "", address_family);
- }
- message = _net_invoke_dbus_method(network_info,
- NETCONFIG_SERVICE, NETCONFIG_NETWORK_PATH,
- NETCONFIG_NETWORK_INTERFACE, "AddRoute", params, &Error);
+ if (!entry)
+ params = g_variant_new("(ssssi)", dest_ip, netmask, if_name, "", address_family);
+ else
+ params = g_variant_new("(ssssi)", dest_ip, netmask, if_name, gateway, address_family);
- if (message == NULL) {
- NETWORK_LOG(NETWORK_ERROR, "Failed to add route"); //LCOV_EXCL_LINE
+ } else if (address_family == AF_INET6) {
+ params = g_variant_new("(ssssi)", dest_ip, netmask, if_name, gateway, address_family);
+ } else {
+ Error = NET_ERR_INVALID_PARAM; //LCOV_EXCL_LINE
goto done;
}
- /** Check Reply */
- gboolean add_result = FALSE;
-
- g_variant_get(message, "(b)", &add_result);
- NETWORK_LOG(NETWORK_HIGH, "Add route, result : %d", add_result);
-
- if (add_result)
- Error = NET_ERR_NONE; //LCOV_EXCL_LINE
+ if (add)
+ message = _net_invoke_dbus_method(network_info,
+ NETCONFIG_SERVICE, NETCONFIG_NETWORK_PATH,
+ NETCONFIG_NETWORK_INTERFACE, "AddRoute", params, &Error);
else
- Error = NET_ERR_UNKNOWN; //LCOV_EXCL_LINE
-
- g_variant_unref(message);
-
-done:
- __NETWORK_FUNC_EXIT__;
- return Error;
-}
-
-static int __net_remove_route(network_info_t *network_info, const char *ip_addr,
- const char *interface, int address_family)
-{
- __NETWORK_FUNC_ENTER__;
-
- net_err_t Error = NET_ERR_NONE;
- GVariant *message = NULL;
- char dest_ip[INET6_ADDRSTRLEN] = { '\0' };
- char netmask[INET_ADDRSTRLEN] = { '\0' };
- char if_name[40] = { '\0' };
- GVariant *params = NULL;
-
- g_snprintf(dest_ip, INET6_ADDRSTRLEN, "%s", ip_addr);
- g_snprintf(if_name, strlen(interface) + 1, "%s", interface);
-
- if (address_family == AF_INET) {
- g_snprintf(netmask, INET_ADDRSTRLEN, "255.255.255.255");
- params = g_variant_new("(ssssi)", dest_ip, netmask, if_name, "", address_family);
- }
-
- message = _net_invoke_dbus_method(network_info,
- NETCONFIG_SERVICE, NETCONFIG_NETWORK_PATH,
- NETCONFIG_NETWORK_INTERFACE, "RemoveRoute", params, &Error);
+ message = _net_invoke_dbus_method(network_info,
+ NETCONFIG_SERVICE, NETCONFIG_NETWORK_PATH,
+ NETCONFIG_NETWORK_INTERFACE, "RemoveRoute", params, &Error);
/* LCOV_EXCL_START */
if (message == NULL) {
- NETWORK_LOG(NETWORK_ERROR, "Failed to remove route");
+ if (add)
+ NETWORK_LOG(NETWORK_ERROR, "Failed to add route");
+ else
+ NETWORK_LOG(NETWORK_ERROR, "Failed to remove route");
+
goto done;
}
/* LCOV_EXCL_STOP */
/** Check Reply */
- gboolean remove_result = FALSE;
+ gboolean result = FALSE;
- g_variant_get(message, "(b)", &remove_result);
- NETWORK_LOG(NETWORK_HIGH, "Remove route, result : %d", remove_result);
+ g_variant_get(message, "(b)", &result);
- if (remove_result)
+ if (add)
+ NETWORK_LOG(NETWORK_HIGH, "Add route, result : %d", result);
+ else
+ NETWORK_LOG(NETWORK_HIGH, "Remove route, result : %d", result);
+
+ if (result)
Error = NET_ERR_NONE; //LCOV_EXCL_LINE
else
Error = NET_ERR_UNKNOWN; //LCOV_EXCL_LINE
return Error;
}
-static int __net_add_route_entry(network_info_t *network_info, const char *ip_addr,
- const char *interface, int address_family, const char *gateway)
+static int __net_add_route(network_info_t *network_info, const char *ip_addr,
+ const char *interface, int address_family)
{
- __NETWORK_FUNC_ENTER__;
-
- net_err_t Error = NET_ERR_NONE;
- GVariant *message = NULL;
- char dest_ip[INET6_ADDRSTRLEN] = { '\0' };
- char netmask[INET_ADDRSTRLEN] = { '\0' };
- char if_name[40] = { '\0' };
- GVariant *params = NULL;
-
- g_snprintf(dest_ip, INET6_ADDRSTRLEN, "%s", ip_addr);
- g_snprintf(if_name, strlen(interface) + 1, "%s", interface);
-
- if (address_family == AF_INET) {
- g_snprintf(netmask, INET_ADDRSTRLEN, "255.255.255.255");
- params = g_variant_new("(ssssi)", dest_ip, netmask, if_name, gateway, address_family);
- } else {
- params = g_variant_new("(ssssi)", dest_ip, netmask, if_name, gateway, address_family); //LCOV_EXCL_LINE
- }
-
- message = _net_invoke_dbus_method(network_info,
- NETCONFIG_SERVICE, NETCONFIG_NETWORK_PATH,
- NETCONFIG_NETWORK_INTERFACE, "AddRoute", params, &Error);
-
- /* LCOV_EXCL_START */
- if (message == NULL) {
- NETWORK_LOG(NETWORK_ERROR, "Failed to add route");
- goto done;
- }
- /* LCOV_EXCL_STOP */
-
- /** Check Reply */
- gboolean add_result = FALSE;
-
- g_variant_get(message, "(b)", &add_result);
- NETWORK_LOG(NETWORK_HIGH, "Add route, result : %d", add_result);
-
- if (add_result)
- Error = NET_ERR_NONE; //LCOV_EXCL_LINE
- else
- Error = NET_ERR_UNKNOWN; //LCOV_EXCL_LINE
+ return __net_request_dbus_route(network_info,
+ ip_addr, interface, address_family, "", TRUE, FALSE);
+}
- g_variant_unref(message);
+static int __net_remove_route(network_info_t *network_info, const char *ip_addr,
+ const char *interface, int address_family)
+{
+ return __net_request_dbus_route(network_info,
+ ip_addr, interface, address_family, "", FALSE, FALSE);
+}
-done:
- __NETWORK_FUNC_EXIT__;
- return Error;
+static int __net_add_route_entry(network_info_t *network_info, const char *ip_addr,
+ const char *interface, int address_family, const char *gateway)
+{
+ return __net_request_dbus_route(network_info,
+ ip_addr, interface, address_family, gateway, TRUE, TRUE);
}
static int __net_remove_route_entry(network_info_t *network_info, const char *ip_addr,
const char *interface, int address_family, const char *gateway)
{
- __NETWORK_FUNC_ENTER__;
-
- net_err_t Error = NET_ERR_NONE;
- GVariant *message = NULL;
- char dest_ip[INET6_ADDRSTRLEN] = { '\0' };
- char netmask[INET_ADDRSTRLEN] = { '\0' };
- char if_name[40] = { '\0' };
- GVariant *params = NULL;
-
- g_snprintf(dest_ip, INET6_ADDRSTRLEN, "%s", ip_addr);
- g_snprintf(if_name, strlen(interface) + 1, "%s", interface);
-
- if (address_family == AF_INET) {
- g_snprintf(netmask, INET_ADDRSTRLEN, "255.255.255.255");
- params = g_variant_new("(ssssi)", dest_ip, netmask, if_name, gateway, address_family);
- } else {
- params = g_variant_new("(ssssi)", dest_ip, netmask, if_name, gateway, address_family); //LCOV_EXCL_LINE
- }
-
- message = _net_invoke_dbus_method(network_info,
- NETCONFIG_SERVICE, NETCONFIG_NETWORK_PATH,
- NETCONFIG_NETWORK_INTERFACE, "RemoveRoute", params, &Error);
-
- /* LCOV_EXCL_START */
- if (message == NULL) {
- NETWORK_LOG(NETWORK_ERROR, "Failed to remove route");
- goto done;
- }
- /* LCOV_EXCL_STOP */
-
- /** Check Reply */
- gboolean remove_result = FALSE;
-
- g_variant_get(message, "(b)", &remove_result);
- NETWORK_LOG(NETWORK_HIGH, "Remove route, result : %d", remove_result);
-
- if (remove_result)
- Error = NET_ERR_NONE; //LCOV_EXCL_LINE
- else
- Error = NET_ERR_UNKNOWN; //LCOV_EXCL_LINE
-
- g_variant_unref(message);
-
-done:
- __NETWORK_FUNC_EXIT__;
- return Error;
+ return __net_request_dbus_route(network_info,
+ ip_addr, interface, address_family, gateway, FALSE, TRUE);
}
static int __net_add_route_ipv6(network_info_t *network_info, const char *ip_addr,
const char *interface, int address_family, const char *gateway)
{
- __NETWORK_FUNC_ENTER__;
-
- net_err_t Error = NET_ERR_NONE;
- GVariant *message = NULL;
- char dest_ip[INET6_ADDRSTRLEN] = { '\0' };
- char netmask[INET_ADDRSTRLEN] = { '\0' };
- char if_name[40] = { '\0' };
- GVariant *params = NULL;
-
- g_snprintf(dest_ip, INET6_ADDRSTRLEN, "%s", ip_addr);
- g_snprintf(if_name, strlen(interface) + 1, "%s", interface);
-
- if (address_family == AF_INET6)
- params = g_variant_new("(ssssi)", dest_ip, netmask, if_name, gateway, address_family);
-
- message = _net_invoke_dbus_method(network_info,
- NETCONFIG_SERVICE, NETCONFIG_NETWORK_PATH,
- NETCONFIG_NETWORK_INTERFACE, "AddRoute", params, &Error);
-
- /* LCOV_EXCL_START */
- if (message == NULL) {
- NETWORK_LOG(NETWORK_ERROR, "Failed to add route");
- goto done;
- }
- /* LCOV_EXCL_STOP */
-
- /** Check Reply */
- gboolean add_result = FALSE;
-
- g_variant_get(message, "(b)", &add_result);
- NETWORK_LOG(NETWORK_HIGH, "Add route, result : %d", add_result);
-
- if (add_result)
- Error = NET_ERR_NONE;
- else
- Error = NET_ERR_UNKNOWN; //LCOV_EXCL_LINE
-
- g_variant_unref(message);
-
-done:
- __NETWORK_FUNC_EXIT__;
- return Error;
+ return __net_request_dbus_route(network_info,
+ ip_addr, interface, address_family, gateway, TRUE, TRUE);
}
static int __net_remove_route_ipv6(network_info_t *network_info, const char *ip_addr,
const char *interface, int address_family, const char *gateway)
{
- __NETWORK_FUNC_ENTER__;
-
- net_err_t Error = NET_ERR_NONE;
- GVariant *message = NULL;
- char dest_ip[INET6_ADDRSTRLEN] = { '\0' };
- char netmask[INET_ADDRSTRLEN] = { '\0' };
- char if_name[40] = { '\0' };
- GVariant *params = NULL;
-
- g_snprintf(dest_ip, INET6_ADDRSTRLEN, "%s", ip_addr);
- g_snprintf(if_name, strlen(interface) + 1, "%s", interface);
-
- if (address_family == AF_INET6)
- params = g_variant_new("(ssssi)", dest_ip, netmask, if_name, gateway, address_family);
-
- message = _net_invoke_dbus_method(network_info,
- NETCONFIG_SERVICE, NETCONFIG_NETWORK_PATH,
- NETCONFIG_NETWORK_INTERFACE, "RemoveRoute", params, &Error);
-
- if (message == NULL) {
- NETWORK_LOG(NETWORK_ERROR, "Failed to remove route"); //LCOV_EXCL_LINE
- goto done;
- }
-
- /** Check Reply */
- gboolean remove_result = FALSE;
-
- g_variant_get(message, "(b)", &remove_result);
- NETWORK_LOG(NETWORK_HIGH, "Remove route, result : %d", remove_result);
-
- if (remove_result)
- Error = NET_ERR_NONE; //LCOV_EXCL_LINE
- else
- Error = NET_ERR_UNKNOWN; //LCOV_EXCL_LINE
-
- g_variant_unref(message);
-
-done:
- __NETWORK_FUNC_EXIT__;
- return Error;
+ return __net_request_dbus_route(network_info,
+ ip_addr, interface, address_family, gateway, FALSE, TRUE);
}
static gboolean __net_is_connecting(network_info_t *network_info, const char *profile_name)
__NETWORK_FUNC_EXIT__;
}
+static int _net_open_connection_wifi_profile(void *handle, const char *profile_name, gboolean mesh)
+{
+ __NETWORK_FUNC_ENTER__;
+
+ net_err_t Error = NET_ERR_NONE;
+ network_info_t *network_info = (network_info_t *)handle;
+
+ NETWORK_LOG(NETWORK_LOW, "Open: %s, mesh %d", profile_name, mesh);
+
+ /* LCOV_EXCL_START */
+ if (_net_check_profile_name(profile_name) != NET_ERR_NONE) {
+ NETWORK_LOG(NETWORK_ERROR, "Invalid profile name");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_INVALID_PARAM;
+ }
+
+ if (network_info->request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag == TRUE) {
+ NETWORK_LOG(NETWORK_ERROR, "Request in progress");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_IN_PROGRESS;
+ }
+ /* LCOV_EXCL_STOP */
+
+ network_info->request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag = TRUE;
+ g_strlcpy(network_info->request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].profile_name,
+ profile_name, NET_PROFILE_NAME_LEN_MAX+1);
+
+ if (mesh)
+ Error = _net_dbus_open_mesh_connection(network_info, profile_name);
+ else
+ Error = _net_dbus_open_connection(network_info, profile_name);
+
+ if (Error != NET_ERR_NONE) {
+ /* LCOV_EXCL_START */
+ NETWORK_LOG(NETWORK_ERROR,
+ "Failed to request open connection, Error [%s]",
+ _net_print_error(Error));
+
+ memset(&(network_info->request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION]),
+ 0, sizeof(network_request_table_t));
+
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+ /* LCOV_EXCL_STOP */
+ }
+
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_NONE;
+}
+
/*****************************************************************************
* ConnMan Client Common Interface API Definition
*****************************************************************************/
/* LCOV_EXCL_START */
EXPORT_API int net_open_mesh_connection_with_profile(void *handle, const char *profile_name)
{
- __NETWORK_FUNC_ENTER__;
-
- net_err_t Error = NET_ERR_NONE;
- network_info_t *network_info = (network_info_t *)handle;
-
- NETWORK_LOG(NETWORK_LOW, "Open: %s", profile_name);
-
- if (_net_check_profile_name(profile_name) != NET_ERR_NONE) {
- NETWORK_LOG(NETWORK_ERROR, "Invalid profile name");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_PARAM;
- }
-
- if (network_info->request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag == TRUE) {
- NETWORK_LOG(NETWORK_ERROR, "Request in progress");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_IN_PROGRESS;
- }
-
- network_info->request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag = TRUE;
- g_strlcpy(network_info->request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].profile_name,
- profile_name, NET_PROFILE_NAME_LEN_MAX+1);
-
- Error = _net_dbus_open_mesh_connection(network_info, profile_name);
- if (Error != NET_ERR_NONE) {
- NETWORK_LOG(NETWORK_ERROR,
- "Failed to request open connection, Error [%s]",
- _net_print_error(Error));
-
- memset(&(network_info->request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION]),
- 0, sizeof(network_request_table_t));
-
- __NETWORK_FUNC_EXIT__;
- return Error;
- }
-
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_NONE;
+ return _net_open_connection_wifi_profile(handle, profile_name, TRUE);
}
/* LCOV_EXCL_STOP */
*/
EXPORT_API int net_open_connection_with_profile(void *handle, const char *profile_name)
{
- __NETWORK_FUNC_ENTER__;
-
- net_err_t Error = NET_ERR_NONE;
- network_info_t *network_info = (network_info_t *)handle;
-
- NETWORK_LOG(NETWORK_LOW, "Open: %s", profile_name);
-
- /* LCOV_EXCL_START */
- if (_net_check_profile_name(profile_name) != NET_ERR_NONE) {
- NETWORK_LOG(NETWORK_ERROR, "Invalid profile name");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_PARAM;
- }
-
- if (network_info->request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag == TRUE) {
- NETWORK_LOG(NETWORK_ERROR, "Request in progress");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_IN_PROGRESS;
- }
- /* LCOV_EXCL_STOP */
-
- network_info->request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag = TRUE;
- g_strlcpy(network_info->request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].profile_name,
- profile_name, NET_PROFILE_NAME_LEN_MAX+1);
-
- Error = _net_dbus_open_connection(network_info, profile_name);
-
- if (Error != NET_ERR_NONE) {
- /* LCOV_EXCL_START */
- NETWORK_LOG(NETWORK_ERROR,
- "Failed to request open connection, Error [%s]",
- _net_print_error(Error));
-
- memset(&(network_info->request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION]),
- 0, sizeof(network_request_table_t));
-
- __NETWORK_FUNC_EXIT__;
- return Error;
- /* LCOV_EXCL_STOP */
- }
-
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_NONE;
+ return _net_open_connection_wifi_profile(handle, profile_name, FALSE);
}
/* LCOV_EXCL_STOP */
return Error;
}
+static int __net_dbus_get_net_info(net_profile_info_t *prof_info,
+ char *profile_name, net_dev_info_t **profile_net_info)
+{
+ if ((prof_info == NULL) || (profile_name == NULL) || (strlen(profile_name) == 0)) {
+ NETWORK_LOG(NETWORK_ERROR, "Invalid argument");
+ return NET_ERR_INVALID_PARAM;
+ }
+
+ if (prof_info->profile_type == NET_DEVICE_WIFI)
+ *profile_net_info = &(prof_info->profile_info.wlan.net_info);
+ else if (prof_info->profile_type == NET_DEVICE_ETHERNET)
+ *profile_net_info = &(prof_info->profile_info.ethernet.net_info);
+ else {
+ NETWORK_LOG(NETWORK_ERROR, "Invalid Profile Type");
+ return NET_ERR_INVALID_PARAM;
+ }
+
+ return NET_ERR_NONE;
+}
+
int _net_dbus_set_profile_ipv4(network_info_t *network_info,
- net_profile_info_t* prof_info, char* profile_name)
+ net_profile_info_t *prof_info, char *profile_name)
{
__NETWORK_FUNC_ENTER__;
NETWORK_LOG(NETWORK_HIGH, "profile_name: [%s]", profile_name);
- if ((prof_info == NULL) || (profile_name == NULL) || (strlen(profile_name) == 0)) {
- NETWORK_LOG(NETWORK_ERROR, "Invalid argument");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_PARAM;
- }
-
- if (prof_info->profile_type == NET_DEVICE_WIFI)
- profile_net_info = &(prof_info->profile_info.wlan.net_info);
- else if (prof_info->profile_type == NET_DEVICE_ETHERNET)
- profile_net_info = &(prof_info->profile_info.ethernet.net_info);
- else {
- NETWORK_LOG(NETWORK_ERROR, "Invalid Profile Type");
+ Error = __net_dbus_get_net_info(prof_info, profile_name, &profile_net_info);
+ if (Error != NET_ERR_NONE) {
__NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_PARAM;
+ return Error;
}
g_strlcpy(ip_buffer,
GVariant *message = NULL;
net_dev_info_t *profile_net_info = NULL;
- if ((prof_info == NULL) || (profile_name == NULL) || (strlen(profile_name) == 0)) {
- NETWORK_LOG(NETWORK_ERROR, "Error!!! Invalid argument");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_PARAM;
- }
-
- if (prof_info->profile_type == NET_DEVICE_WIFI)
- profile_net_info = &(prof_info->profile_info.wlan.net_info);
- else if (prof_info->profile_type == NET_DEVICE_ETHERNET)
- profile_net_info = &(prof_info->profile_info.ethernet.net_info);
- else {
- NETWORK_LOG(NETWORK_ERROR, "Invalid Profile Type");
+ Error = __net_dbus_get_net_info(prof_info, profile_name, &profile_net_info);
+ if (Error != NET_ERR_NONE) {
__NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_PARAM;
+ return Error;
}
inet_ntop(AF_INET6, &profile_net_info->ip_addr6.data.Ipv6, ipaddr6,
net_dev_info_t *profile_net_info = NULL;
GVariant *message = NULL;
- if ((prof_info == NULL) || (profile_name == NULL) || (strlen(profile_name) == 0)) {
- NETWORK_LOG(NETWORK_ERROR, "Invalid parameter");
+ Error = __net_dbus_get_net_info(prof_info, profile_name, &profile_net_info);
+ if (Error != NET_ERR_NONE) {
__NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_PARAM;
+ return Error;
}
- if (prof_info->profile_type == NET_DEVICE_WIFI)
- profile_net_info = &(prof_info->profile_info.wlan.net_info);
- else if (prof_info->profile_type == NET_DEVICE_ETHERNET)
- profile_net_info = &(prof_info->profile_info.ethernet.net_info);
- else {
- NETWORK_LOG(NETWORK_ERROR, "Invalid Profile Type");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_PARAM;
- }
if (profile_net_info->dns_count > NET_DNS_ADDR_MAX) {
NETWORK_LOG(NETWORK_ERROR, "Invalid parameter");
__NETWORK_FUNC_EXIT__;
GVariant *message = NULL;
- if ((prof_info == NULL) || (profile_name == NULL) || (strlen(profile_name) == 0)) {
- NETWORK_LOG(NETWORK_ERROR, "Invalid argument");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_PARAM;
- }
-
- if (prof_info->profile_type == NET_DEVICE_WIFI)
- profile_net_info = &(prof_info->profile_info.wlan.net_info);
- else if (prof_info->profile_type == NET_DEVICE_ETHERNET)
- profile_net_info = &(prof_info->profile_info.ethernet.net_info);
- else {
- NETWORK_LOG(NETWORK_ERROR, "Invalid Profile Type");
+ Error = __net_dbus_get_net_info(prof_info, profile_name, &profile_net_info);
+ if (Error != NET_ERR_NONE) {
__NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_PARAM;
+ return Error;
}
g_strlcpy(proxy_buffer,
return Error;
}
-
-int _net_dbus_add_pdp_profile(network_info_t *network_info, net_profile_info_t *prof_info)
+static int __net_dbus_build_pdp_profile(GVariantBuilder *builder, network_info_t *network_info,
+ net_profile_info_t *prof_info, const char *profile_name, gboolean modify)
{
- __NETWORK_FUNC_ENTER__;
-
- net_err_t Error = NET_ERR_NONE;
const char *service_type = "svc_ctg_id";
const char *home_url = "home_url";
const char *proxy_addr = "proxy_addr";
const char *auth_type = "auth_type";
const char *auth_id = "auth_id";
const char *apn = "apn";
- const char *keyword = "profile_name";
+ const char *keyword_add = "profile_name";
+ const char *keyword_mod = "keyword";
const char *pdp_protocol = "pdp_protocol";
const char *roam_pdp_protocol = "roam_pdp_protocol";
char buff_auth_type[10] = "";
char *temp_ptr = NULL;
- GVariant *params = NULL;
- GVariantBuilder *builder;
- GVariant *message = NULL;
-
- if (prof_info == NULL) {
+ if (prof_info == NULL || (modify && profile_name == NULL)) {
NETWORK_LOG(NETWORK_ERROR, "Invalid argument");
- __NETWORK_FUNC_EXIT__;
return NET_ERR_INVALID_PARAM;
}
#if defined TIZEN_DUALSIM_ENABLE
- if (prof_info->profile_info.pdp.ps_modem_path[0] != '/' ||
- (g_str_has_suffix(prof_info->profile_info.pdp.ps_modem_path, "0") != TRUE &&
- g_str_has_suffix(prof_info->profile_info.pdp.ps_modem_path, "1") != TRUE)) {
+ if (!modify && (prof_info->profile_info.pdp.ps_modem_path[0] != '/' ||
+ (g_str_has_suffix(prof_info->profile_info.pdp.ps_modem_path, "0") != TRUE &&
+ g_str_has_suffix(prof_info->profile_info.pdp.ps_modem_path, "1") != TRUE))) {
NETWORK_LOG(NETWORK_ERROR, "Invalid modem path: %s",
- prof_info->profile_info.pdp.ps_modem_path);
+ prof_info->profile_info.pdp.ps_modem_path);
- __NETWORK_FUNC_EXIT__;
return NET_ERR_INVALID_PARAM;
}
#endif
- builder = g_variant_builder_new(G_VARIANT_TYPE("a{ss}"));
-
g_snprintf(buff_svc_type, 10, "%d", prof_info->profile_info.pdp.service_type);
temp_ptr = buff_svc_type;
temp_ptr = prof_info->profile_info.pdp.net_info.proxy_addr;
g_variant_builder_add(builder, "{ss}", proxy_addr, temp_ptr);
+ } else if (modify) {
+ g_variant_builder_add(builder, "{ss}", proxy_addr, "");
}
if (strlen(prof_info->profile_info.pdp.auth_info.password) > 0) {
if (strlen(prof_info->profile_info.pdp.keyword) > 0) {
temp_ptr = prof_info->profile_info.pdp.keyword;
- g_variant_builder_add(builder, "{ss}", keyword, temp_ptr);
+ if (modify)
+ g_variant_builder_add(builder, "{ss}", keyword_mod, temp_ptr);
+ else
+ g_variant_builder_add(builder, "{ss}", keyword_add, temp_ptr);
+ }
+
+ return NET_ERR_NONE;
+}
+
+int _net_dbus_add_pdp_profile(network_info_t *network_info, net_profile_info_t *prof_info)
+{
+ __NETWORK_FUNC_ENTER__;
+
+ net_err_t Error = NET_ERR_NONE;
+
+ GVariant *params = NULL;
+ GVariantBuilder *builder;
+ GVariant *message = NULL;
+
+ builder = g_variant_builder_new(G_VARIANT_TYPE("a{ss}"));
+
+ if (__net_dbus_build_pdp_profile(builder,
+ network_info, prof_info, NULL, TRUE) != NET_ERR_NONE) {
+ g_variant_builder_unref(builder);
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_INVALID_PARAM;
}
params = g_variant_new("(@a{ss})", g_variant_builder_end(builder));
net_err_t Error = NET_ERR_NONE;
- const char *service_type = "svc_ctg_id";
- const char *home_url = "home_url";
- const char *proxy_addr = "proxy_addr";
- const char *auth_pwd = "auth_pwd";
- const char *auth_type = "auth_type";
- const char *auth_id = "auth_id";
- const char *apn = "apn";
- const char *keyword = "keyword";
const char *default_conn = "default_internet_conn";
const char *hidden = "hidden";
const char *editable = "editable";
- const char *pdp_protocol = "pdp_protocol";
- const char *roam_pdp_protocol = "roam_pdp_protocol";
-
- char buff_pdn_type[10] = "";
- char buff_roam_pdn_type[10] = "";
- char buff_svc_type[10] = "";
- char buff_auth_type[10] = "";
char *temp_ptr = NULL;
GVariant *params = NULL;
GVariantBuilder *builder;
GVariant *message = NULL;
- if ((prof_info == NULL) || (profile_name == NULL)) {
- NETWORK_LOG(NETWORK_ERROR, "Invalid argument");
- __NETWORK_FUNC_EXIT__;
- return NET_ERR_INVALID_PARAM;
- }
-
builder = g_variant_builder_new(G_VARIANT_TYPE("a{ss}"));
-
- g_snprintf(buff_svc_type, 10, "%d", prof_info->profile_info.pdp.service_type);
- temp_ptr = buff_svc_type;
-
- g_variant_builder_add(builder, "{ss}", service_type, temp_ptr);
-
- if (strlen(prof_info->profile_info.pdp.home_url) > 0) {
- temp_ptr = prof_info->profile_info.pdp.home_url;
-
- g_variant_builder_add(builder, "{ss}", home_url, temp_ptr);
- }
-
- if (strlen(prof_info->profile_info.pdp.net_info.proxy_addr) > 0) {
- temp_ptr = prof_info->profile_info.pdp.net_info.proxy_addr;
-
- g_variant_builder_add(builder, "{ss}", proxy_addr, temp_ptr);
- } else
- g_variant_builder_add(builder, "{ss}", proxy_addr, "");
-
- if (strlen(prof_info->profile_info.pdp.auth_info.password) > 0) {
- temp_ptr = prof_info->profile_info.pdp.auth_info.password;
-
- g_variant_builder_add(builder, "{ss}", auth_pwd, temp_ptr);
- }
-
- if (strlen(prof_info->profile_info.pdp.auth_info.user_name) > 0) {
- temp_ptr = prof_info->profile_info.pdp.auth_info.user_name;
-
- g_variant_builder_add(builder, "{ss}", auth_id, temp_ptr);
- }
-
- if (prof_info->profile_info.pdp.auth_info.auth_type <= NET_PDP_AUTH_CHAP) {
- g_snprintf(buff_auth_type, 10, "%d",
- prof_info->profile_info.pdp.auth_info.auth_type);
- temp_ptr = buff_auth_type;
-
- g_variant_builder_add(builder, "{ss}", auth_type, temp_ptr);
- }
-
- if (strlen(prof_info->profile_info.pdp.apn) > 0) {
- temp_ptr = prof_info->profile_info.pdp.apn;
-
- g_variant_builder_add(builder, "{ss}", apn, temp_ptr);
- }
-
- if (prof_info->profile_info.pdp.pdn_type == NET_PDN_TYPE_IPV4 ||
- prof_info->profile_info.pdp.pdn_type == NET_PDN_TYPE_IPV6 ||
- prof_info->profile_info.pdp.pdn_type == NET_PDN_TYPE_IPV4_IPV6) {
- g_snprintf(buff_pdn_type, 10, "%d",
- prof_info->profile_info.pdp.pdn_type);
- temp_ptr = buff_pdn_type;
-
- g_variant_builder_add(builder, "{ss}", pdp_protocol, temp_ptr);
- }
-
- if (prof_info->profile_info.pdp.roam_pdn_type == NET_PDN_TYPE_IPV4 ||
- prof_info->profile_info.pdp.roam_pdn_type == NET_PDN_TYPE_IPV6 ||
- prof_info->profile_info.pdp.roam_pdn_type == NET_PDN_TYPE_IPV4_IPV6) {
- g_snprintf(buff_roam_pdn_type, 10, "%d",
- prof_info->profile_info.pdp.roam_pdn_type);
- temp_ptr = buff_roam_pdn_type;
-
- g_variant_builder_add(builder, "{ss}", roam_pdp_protocol, temp_ptr);
- }
-
- if (strlen(prof_info->profile_info.pdp.keyword) > 0) {
- temp_ptr = prof_info->profile_info.pdp.keyword;
-
- g_variant_builder_add(builder, "{ss}", keyword, temp_ptr);
+ if (__net_dbus_build_pdp_profile(builder,
+ network_info, prof_info, profile_name, TRUE) != NET_ERR_NONE) {
+ g_variant_builder_unref(builder);
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_INVALID_PARAM;
}
if (prof_info->profile_info.pdp.hidden)
g_variant_iter_free(iter);
}
+static void __net_get_ipv4_method(const gchar *value, net_dev_info_t *net_info)
+{
+ if (g_strcmp0(value, "dhcp") == 0)
+ net_info->ip_config_type = NET_IP_CONFIG_TYPE_DYNAMIC;
+ else if (g_strcmp0(value, "auto") == 0)
+ net_info->ip_config_type = NET_IP_CONFIG_TYPE_AUTO_IP;
+ else if (g_strcmp0(value, "manual") == 0)
+ net_info->ip_config_type = NET_IP_CONFIG_TYPE_STATIC;
+ else if (g_strcmp0(value, "fixed") == 0)
+ net_info->ip_config_type = NET_IP_CONFIG_TYPE_FIXED;
+ else if (g_strcmp0(value, "off") == 0)
+ net_info->ip_config_type = NET_IP_CONFIG_TYPE_OFF;
+}
+
static void __net_extract_ipv4_value(GVariant *variant, net_dev_info_t *net_info)
{
const gchar *subKey = NULL;
if (g_strcmp0(subKey, "Method") == 0) {
value = g_variant_get_string(var, NULL);
- if (g_strcmp0(value, "dhcp") == 0)
- net_info->ip_config_type = NET_IP_CONFIG_TYPE_DYNAMIC;
- else if (g_strcmp0(value, "auto") == 0)
- net_info->ip_config_type = NET_IP_CONFIG_TYPE_AUTO_IP;
- else if (g_strcmp0(value, "manual") == 0)
- net_info->ip_config_type = NET_IP_CONFIG_TYPE_STATIC;
- else if (g_strcmp0(value, "fixed") == 0)
- net_info->ip_config_type = NET_IP_CONFIG_TYPE_FIXED;
- else if (g_strcmp0(value, "off") == 0)
- net_info->ip_config_type = NET_IP_CONFIG_TYPE_OFF;
+ __net_get_ipv4_method(value, net_info);
if (net_info->ip_config_type != NET_IP_CONFIG_TYPE_DYNAMIC) {
net_info->b_server_addr = FALSE;
if (g_strcmp0(subKey, "Method") == 0) {
value = g_variant_get_string(var, NULL);
- if (g_strcmp0(value, "dhcp") == 0)
- net_info->ip_config_type = NET_IP_CONFIG_TYPE_DYNAMIC;
- else if (g_strcmp0(value, "auto") == 0)
- net_info->ip_config_type = NET_IP_CONFIG_TYPE_AUTO_IP;
- else if (g_strcmp0(value, "manual") == 0)
- net_info->ip_config_type = NET_IP_CONFIG_TYPE_STATIC;
- else if (g_strcmp0(value, "fixed") == 0)
- net_info->ip_config_type = NET_IP_CONFIG_TYPE_FIXED;
- else if (g_strcmp0(value, "off") == 0)
- net_info->ip_config_type = NET_IP_CONFIG_TYPE_OFF;
+ __net_get_ipv4_method(value, net_info);
} else if (g_strcmp0(subKey, "Address") == 0 &&
net_info->ip_addr.data.Ipv4.s_addr == 0) {
g_variant_iter_free(iter);
}
-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);
-
- if (g_strcmp0(value, "manual") == 0)
- net_info->ip_config_type6 = NET_IP_CONFIG_TYPE_STATIC;
- else if (g_strcmp0(value, "off") == 0)
- net_info->ip_config_type6 = NET_IP_CONFIG_TYPE_OFF;
- else if (g_strcmp0(value, "auto") == 0 ||
- g_strcmp0(value, "6to4") == 0)
- net_info->ip_config_type6 = NET_IP_CONFIG_TYPE_DYNAMIC;
-
- } else if (g_strcmp0(subKey, "Address") == 0) {
- value = g_variant_get_string(var, NULL);
-
- inet_pton(AF_INET6, value, &net_info->ip_addr6.data.Ipv6);
- } else if (g_strcmp0(subKey, "PrefixLength") == 0) {
- net_info->prefix_len6 = 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->gateway_addr6.data.Ipv6);
- net_info->b_def_gateway6 = 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);
-}
-
static void __net_extract_nameserver_value(GVariant *variant, net_dev_info_t *net_info)
{
GVariantIter *iter = NULL;
net_info->dns_count6 = 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->dns_addr6[dnsCount6].Type =
- NET_ADDR_IPV6;
- inet_pton(AF_INET6, dns_value,
- &net_info->dns_addr6[dnsCount6]\
- .data.Ipv6);
- dnsCount6++;
- }
- } else if (__net_check_address_type(AF_INET, dns_value)) {
- /* IPv4 */
- if (dnsCount < NET_DNS_ADDR_MAX) {
- net_info->dns_addr[dnsCount].Type =
- NET_ADDR_IPV4;
- __net_extract_ip(dns_value,
- &net_info->dns_addr[dnsCount]);
- dnsCount++;
- }
- } else { /* DNS Type */
- dns_type = g_strdup(dns_value);
- if (g_strcmp0(dns_type, "ipv4.manual") == 0)
- net_info->dns_config_type =
- NET_DNS_CONFIG_TYPE_STATIC;
- else if (g_strcmp0(dns_type, "ipv4.dhcp") == 0)
- net_info->dns_config_type =
- NET_DNS_CONFIG_TYPE_DYNAMIC;
- if (g_strcmp0(dns_type, "ipv6.manual") == 0)
- net_info->dns_config_type6 =
- NET_DNS_CONFIG_TYPE_STATIC;
- else if (g_strcmp0(dns_type, "ipv6.dhcp") == 0)
- net_info->dns_config_type6 =
- NET_DNS_CONFIG_TYPE_DYNAMIC;
- g_free(dns_type);
- }
- }
- g_variant_iter_free(iter);
-
- net_info->dns_count = dnsCount;
- net_info->dns_count6 = dnsCount6;
-}
-
static void __net_extract_proxy_value(GVariant *variant, net_dev_info_t *net_info)
{
const gchar *subKey = NULL;
g_free(servers);
}
-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);
-
- if (g_strcmp0(value, "direct") == 0)
- net_info->proxy_method = NET_PROXY_TYPE_DIRECT;
- else if (g_strcmp0(value, "auto") == 0)
- net_info->proxy_method = NET_PROXY_TYPE_AUTO;
- else if (g_strcmp0(value, "manual") == 0)
- net_info->proxy_method = NET_PROXY_TYPE_MANUAL;
- else
- net_info->proxy_method = 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);
-
- if (net_info->proxy_method == NET_PROXY_TYPE_AUTO && url != NULL)
- g_strlcpy(net_info->proxy_addr, url, NET_PROXY_LEN_MAX);
- else if (net_info->proxy_method == NET_PROXY_TYPE_MANUAL && servers != NULL)
- g_strlcpy(net_info->proxy_addr, servers, NET_PROXY_LEN_MAX);
-
- if (servers)
- g_free(servers);
-}
-
static net_ethernet_eap_type_t __net_convert_eap_type_from_string(const char *eap_type)
{
if (g_strcmp0(eap_type, "MD5") == 0)
} 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);
+ __net_extract_ipv6_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->dns_count == 0) {
- __net_extract_nameserver_configuration_value(variant, net_info);
+ __net_extract_nameserver_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) {
} else if (g_strcmp0(key, "Proxy.Configuration") == 0 &&
net_info->proxy_method != NET_PROXY_TYPE_AUTO &&
net_info->proxy_method != NET_PROXY_TYPE_MANUAL) {
- __net_extract_proxy_configuration_value(variant, net_info);
+ __net_extract_proxy_value(variant, net_info);
} else if (g_strcmp0(key, "Provider") == 0) {
/* Do nothing */
} else if (g_strcmp0(key, "EapOverEthernet") == 0) {