#include <sys/ioctl.h>
#include <ITapiSim.h>
#include <TapiUtility.h>
-#include <bundle.h>
-#include <bundle_internal.h>
-#include <eventsystem.h>
#include "log.h"
#include "util.h"
#include "network-monitor.h"
#include "netsupplicant.h"
#include "wifi-tel-intf.h"
-#include "clatd-handler.h"
#include "generated-code.h"
/* Define TCP buffer sizes for various networks */
static void __netconfig_get_default_connection_info(const char *profile)
{
GVariant *message = NULL, *variant = NULL, *variant2 = NULL;
- GVariantIter *iter = NULL, *iter1 = NULL;
+ GVariantIter *iter = NULL, *iter1 = NULL, *service = NULL;
GVariant *next = NULL;
+ gchar *obj_path;
gchar *key = NULL;
gchar *key1 = NULL;
gchar *key2 = NULL;
+ gboolean found_profile = 0;
- message = netconfig_invoke_dbus_method(CONNMAN_SERVICE, profile,
- CONNMAN_SERVICE_INTERFACE, "GetProperties", NULL);
+ message = netconfig_invoke_dbus_method(CONNMAN_SERVICE,
+ CONNMAN_MANAGER_PATH, CONNMAN_MANAGER_INTERFACE,
+ "GetServices", NULL);
if (message == NULL) {
- ERR("Failed to get service properties");
+ ERR("Failed to get services informations");
+ goto done;
+ }
+
+ g_variant_get(message, "(a(oa{sv}))", &service);
+ if (service == NULL) {
+ ERR("Failed to get services iter");
+ goto done;
+ }
+
+ while (g_variant_iter_loop(service, "(oa{sv})", &obj_path, &iter)) {
+ if (g_strcmp0(obj_path, profile) == 0) {
+ g_free(obj_path);
+ found_profile = 1;
+ break;
+ }
+ }
+
+ if (iter == NULL || found_profile == 0) {
+ ERR("Profile %s doesn't exist", profile);
goto done;
}
- g_variant_get(message, "(a{sv})", &iter);
while (g_variant_iter_loop(iter, "{sv}", &key, &next)) {
const gchar *value = NULL;
guint16 freq = 0;
}
} else if (g_strcmp0(key, "Ethernet") == 0) {
g_variant_get(next, "a{sv}", &iter1);
+ if (iter1 == NULL)
+ continue;
while (g_variant_iter_loop(iter1, "{sv}", &key1, &variant)) {
if (g_strcmp0(key1, "Interface") == 0) {
value = g_variant_get_string(variant, NULL);
netconfig_default_connection_info.ifname = g_strdup(value);
}
}
- if (iter1)
- g_variant_iter_free(iter1);
+ g_variant_iter_free(iter1);
} else if (g_strcmp0(key, "IPv4") == 0) {
g_variant_get(next, "a{sv}", &iter1);
+ if (iter1 == NULL)
+ continue;
while (g_variant_iter_loop(iter1, "{sv}", &key1, &variant)) {
if (g_strcmp0(key1, "Address") == 0) {
value = g_variant_get_string(variant, NULL);
netconfig_default_connection_info.ipaddress = g_strdup(value);
}
}
- if (iter1)
- g_variant_iter_free(iter1);
+ g_variant_iter_free(iter1);
} else if (g_strcmp0(key, "IPv6") == 0) {
g_variant_get(next, "a{sv}", &iter1);
+ if (iter1 == NULL)
+ continue;
while (g_variant_iter_loop(iter1, "{sv}", &key1, &variant)) {
if (g_strcmp0(key1, "Address") == 0) {
value = g_variant_get_string(variant, NULL);
netconfig_default_connection_info.ipaddress6 = g_strdup(value);
}
}
- if (iter1)
- g_variant_iter_free(iter1);
+ g_variant_iter_free(iter1);
+
} else if (g_strcmp0(key, "Proxy") == 0) {
g_variant_get(next, "a{sv}", &iter1);
+ if (iter1 == NULL)
+ continue;
while (g_variant_iter_loop(iter1, "{sv}", &key2, &variant2)) {
GVariantIter *iter_sub = NULL;
}
}
}
- if (iter1)
- g_variant_iter_free(iter1);
+ g_variant_iter_free(iter1);
} else if (g_strcmp0(key, "Frequency") == 0) {
if (g_variant_is_of_type(next, G_VARIANT_TYPE_UINT16)) {
freq = g_variant_get_uint16(next);
if (iter)
g_variant_iter_free(iter);
- if (iter1)
- g_variant_iter_free(iter1);
+ if (service)
+ g_variant_iter_free(service);
return;
}
const char *proxy_addr = netconfig_get_default_proxy();
unsigned int freq = netconfig_get_default_frequency();
- if (emulator_is_emulated() == TRUE)
+ if (emulator_is_emulated() == TRUE) {
+ if (ip_addr != NULL)
+ netconfig_set_vconf_str(VCONFKEY_NETWORK_IP, ip_addr);
+ else
+ netconfig_set_vconf_str(VCONFKEY_NETWORK_IP, "");
return;
+ }
if (profile == NULL)
DBG("Reset network state configuration");
else
- DBG("%s: ip(%s) proxy(%s)", profile, ip_addr, proxy_addr);
+ DBG("%s: ip(%s) ip6(%s) proxy(%s)", profile, ip_addr, ip_addr6, proxy_addr);
- vconf_get_int(VCONFKEY_NETWORK_STATUS, &old_network_status);
+ netconfig_vconf_get_int(VCONFKEY_NETWORK_STATUS, &old_network_status);
if (profile == NULL && old_network_status != VCONFKEY_NETWORK_OFF) {
netconfig_set_vconf_int(VCONFKEY_NETWORK_STATUS, VCONFKEY_NETWORK_OFF);
DBG("Successfully clear IP and PROXY up");
- /* Disable clatd if it is in running state */
- netconfig_clatd_disable();
} else if (profile != NULL) {
char *old_ip = vconf_get_str(VCONFKEY_NETWORK_IP);
+ char *old_ip6 = vconf_get_str(VCONFKEY_NETWORK_IP6);
char *old_proxy = vconf_get_str(VCONFKEY_NETWORK_PROXY);
if (netconfig_is_wifi_profile(profile) == TRUE) {
netconfig_set_vconf_int(VCONFKEY_NETWORK_STATUS, VCONFKEY_NETWORK_WIFI);
netconfig_set_vconf_int("memory/private/wifi/frequency", freq);
- netconfig_set_system_event(SYS_EVENT_NETWORK_STATUS,
- EVT_KEY_NETWORK_STATUS, EVT_VAL_NETWORK_WIFI);
+ netconfig_set_system_event(SYS_EVT_NETWORK_STATUS,
+ EKEY_NETWORK_STATUS, EVAL_NETWORK_WIFI);
} else if (netconfig_is_cellular_profile(profile)) {
if (!netconfig_is_cellular_internet_profile(profile)) {
netconfig_set_vconf_int(VCONFKEY_NETWORK_STATUS, VCONFKEY_NETWORK_CELLULAR);
- netconfig_set_system_event(SYS_EVENT_NETWORK_STATUS,
- EVT_KEY_NETWORK_STATUS, EVT_VAL_NETWORK_CELLULAR);
-
- /* Enable clatd if IPv6 is set and no IPv4 address */
- if (!ip_addr && ip_addr6)
- netconfig_clatd_enable();
+ netconfig_set_system_event(SYS_EVT_NETWORK_STATUS,
+ EKEY_NETWORK_STATUS, EVAL_NETWORK_CELLULAR);
} else if (netconfig_is_ethernet_profile(profile) == TRUE) {
netconfig_set_vconf_int(VCONFKEY_NETWORK_STATUS, VCONFKEY_NETWORK_ETHERNET);
- netconfig_set_system_event(SYS_EVENT_NETWORK_STATUS,
- EVT_KEY_NETWORK_STATUS, EVT_VAL_NETWORK_ETHERNET);
+ netconfig_set_system_event(SYS_EVT_NETWORK_STATUS,
+ EKEY_NETWORK_STATUS, EVAL_NETWORK_ETHERNET);
} else if (netconfig_is_bluetooth_profile(profile) == TRUE) {
netconfig_set_vconf_int(VCONFKEY_NETWORK_STATUS, VCONFKEY_NETWORK_BLUETOOTH);
- netconfig_set_system_event(SYS_EVENT_NETWORK_STATUS,
- EVT_KEY_NETWORK_STATUS, EVT_VAL_NETWORK_BT);
+ netconfig_set_system_event(SYS_EVT_NETWORK_STATUS,
+ EKEY_NETWORK_STATUS, EVAL_NETWORK_BT);
} else{
netconfig_set_vconf_int(VCONFKEY_NETWORK_STATUS, VCONFKEY_NETWORK_OFF);
- netconfig_set_system_event(SYS_EVENT_NETWORK_STATUS,
- EVT_KEY_NETWORK_STATUS, EVT_VAL_NETWORK_DISCONNECTED);
+ netconfig_set_system_event(SYS_EVT_NETWORK_STATUS,
+ EKEY_NETWORK_STATUS, EVAL_NETWORK_DISCONNECTED);
}
if (g_strcmp0(old_ip, ip_addr) != 0 || old_ip == NULL) {
if (ip_addr != NULL)
netconfig_set_vconf_str(VCONFKEY_NETWORK_IP, ip_addr);
- else if (ip_addr6 != NULL)
- netconfig_set_vconf_str(VCONFKEY_NETWORK_IP, ip_addr6);
else
netconfig_set_vconf_str(VCONFKEY_NETWORK_IP, "");
}
g_free(old_ip);
+ if (g_strcmp0(old_ip6, ip_addr6) != 0 || old_ip6 == NULL) {
+ if (ip_addr6 != NULL)
+ netconfig_set_vconf_str(VCONFKEY_NETWORK_IP6, ip_addr6);
+ else
+ netconfig_set_vconf_str(VCONFKEY_NETWORK_IP6, "");
+ }
+ g_free(old_ip6);
+
if (g_strcmp0(old_proxy, proxy_addr) != 0) {
if (proxy_addr == NULL)
netconfig_set_vconf_str(VCONFKEY_NETWORK_PROXY, "");
netconfig_set_vconf_int(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND, 1);
DBG("Successfully update default network configuration");
-
- /* Disable clatd if it is in running state */
- if (netconfig_is_cellular_profile(profile) != TRUE)
- netconfig_clatd_disable();
}
__netconfig_adjust_tcp_buffer_size();
static void __netconfig_network_notify_result(const char *sig_name, const char *key)
{
- gboolean reply;
+ GVariantBuilder *builder;
GVariant *params;
- GVariantBuilder *builder = NULL;
- GDBusConnection *connection = NULL;
- GError *error = NULL;
- const char *prop_key = "key";
INFO("[Signal] %s %s", sig_name, key);
- connection = netdbus_get_connection();
- if (connection == NULL) {
- ERR("Failed to get GDBus Connection");
- return;
- }
-
builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
- g_variant_builder_add(builder, "{sv}", prop_key, g_variant_new_string(key));
- params = g_variant_new("(@a{sv})", g_variant_builder_end(builder));
+ g_variant_builder_add(builder, "{sv}", "key", g_variant_new_string(key));
+ params = g_variant_new("(@a{sv})", g_variant_builder_end(builder));
g_variant_builder_unref(builder);
- reply = g_dbus_connection_emit_signal(connection,
- NULL,
- NETCONFIG_NETWORK_PATH,
- NETCONFIG_NETWORK_INTERFACE,
- sig_name,
- params,
- &error);
-
- if (reply != TRUE) {
- if (error != NULL) {
- ERR("Failed to send signal [%s]", error->message);
- g_error_free(error);
- }
- return;
- }
+ netconfig_dbus_emit_signal(NULL,
+ NETCONFIG_NETWORK_PATH,
+ NETCONFIG_NETWORK_INTERFACE,
+ sig_name,
+ params);
- INFO("Sent signal (%s), key (%s)", sig_name, key);
return;
}
char *netconfig_get_ifname(const char *profile)
{
GVariant *message = NULL, *variant;
- GVariantIter *iter, *next;
+ GVariantIter *iter, *next, *service;
+ gchar *obj_path;
gchar *key;
gchar *key1;
const gchar *value = NULL;
gchar *ifname = NULL;
+ gboolean found_profile = 0;
if (profile == NULL)
return NULL;
- message = netconfig_invoke_dbus_method(CONNMAN_SERVICE, profile,
- CONNMAN_SERVICE_INTERFACE, "GetProperties", NULL);
+ message = netconfig_invoke_dbus_method(CONNMAN_SERVICE,
+ CONNMAN_MANAGER_PATH, CONNMAN_MANAGER_INTERFACE,
+ "GetServices", NULL);
if (message == NULL) {
- ERR("Failed to get service properties");
+ ERR("Failed to get services informations");
+ return NULL;
+ }
+
+ g_variant_get(message, "(a(oa{sv}))", &service);
+ while (g_variant_iter_loop(service, "(oa{sv})", &obj_path, &iter)) {
+ if (g_strcmp0(obj_path, profile) == 0) {
+ g_free(obj_path);
+ found_profile = 1;
+ break;
+ }
+ }
+
+ if (found_profile == 0) {
+ ERR("Profile %s doesn't exist", profile);
+ g_variant_iter_free(service);
+ g_variant_unref(message);
return NULL;
}
- g_variant_get(message, "(a{sv})", &iter);
while (g_variant_iter_loop(iter, "{sv}", &key, &next)) {
if (g_strcmp0(key, "Ethernet") == 0) {
while (g_variant_iter_loop(next, "{sv}", &key1, &variant)) {
if (g_strcmp0(key1, "Interface") == 0) {
value = g_variant_get_string(variant, NULL);
+ if (ifname)
+ g_free(ifname);
ifname = g_strdup(value);
}
}
g_variant_unref(message);
+ g_variant_iter_free(service);
g_variant_iter_free(iter);
return ifname;
return TRUE;
}
+static gboolean handle_check_internet_privilege(Network *object,
+ GDBusMethodInvocation *context)
+{
+ network_complete_check_internet_privilege(object, context);
+ return TRUE;
+}
+
gboolean handle_ethernet_cable_state(Network *object,
GDBusMethodInvocation *context)
{
G_CALLBACK(handle_check_get_privilege), NULL);
g_signal_connect(netconfigstate, "handle-check-profile-privilege",
G_CALLBACK(handle_check_profile_privilege), NULL);
+ g_signal_connect(netconfigstate, "handle-check-internet-privilege",
+ G_CALLBACK(handle_check_internet_privilege), NULL);
g_signal_connect(netconfigstate, "handle-ethernet-cable-state",
G_CALLBACK(handle_ethernet_cable_state), NULL);
g_signal_connect(netconfigstate, "handle-remove-route",
G_CALLBACK(handle_remove_route), NULL);
g_signal_connect(netconfigstate, "handle-launch-mdns",
G_CALLBACK(handle_launch_mdns), NULL);
- g_signal_connect(netconfigstate, "handle-ref-mdns",
- G_CALLBACK(handle_ref_mdns), NULL);
- g_signal_connect(netconfigstate, "handle-unref-mdns",
- G_CALLBACK(handle_unref_mdns), NULL);
g_signal_connect(netconfigstate, "handle-device-policy-set-wifi",
G_CALLBACK(handle_device_policy_set_wifi), NULL);
g_signal_connect(netconfigstate, "handle-device-policy-get-wifi",