#include "network-dpm.h"
#include "network-monitor.h"
#include "netsupplicant.h"
+#if defined TIZEN_DEBUG_ENABLE
+#include "network-dump.h"
+#endif
#include "generated-code.h"
/* Define TCP buffer sizes for various networks */
} net_profile_name_t;
static Network *netconfigstate = NULL;
+#if defined TIZEN_DEBUG_ENABLE
+static Tcpdump *tcpdump_object = NULL;
+#endif
struct netconfig_default_connection {
char *profile;
while (g_variant_iter_loop(sub_iter, "{sv}", &sub_key, &variant)) {
if (g_strcmp0(sub_key, "Address") == 0) {
value = g_variant_get_string(variant, NULL);
- preferred_address6 = g_strdup(value);
+ if (!preferred_address6)
+ preferred_address6 = g_strdup(value);
}
}
g_variant_iter_free(sub_iter);
const char *ip_addr6 = netconfig_get_default_ipaddress6();
const char *proxy_addr = netconfig_get_default_proxy();
unsigned int freq = netconfig_get_default_frequency();
+ GVariantBuilder *builder;
+ GVariant *params;
if (emulator_is_emulated() == TRUE) {
- if (ip_addr != NULL)
+ builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
+
+ if (ip_addr != NULL) {
netconfig_set_vconf_str(VCONFKEY_NETWORK_IP, ip_addr);
- else
+ g_variant_builder_add(builder, "{sv}", "IPv4Address",
+ g_variant_new_string(ip_addr));
+ } else {
netconfig_set_vconf_str(VCONFKEY_NETWORK_IP, "");
+ g_variant_builder_add(builder, "{sv}", "IPv4Address",
+ g_variant_new_string(""));
+ }
- if (ip_addr6 != NULL)
+ if (ip_addr6 != NULL) {
netconfig_set_vconf_str(VCONFKEY_NETWORK_IP6, ip_addr6);
- else
+ g_variant_builder_add(builder, "{sv}", "IPv6Address",
+ g_variant_new_string(ip_addr6));
+ } else {
netconfig_set_vconf_str(VCONFKEY_NETWORK_IP6, "");
+ g_variant_builder_add(builder, "{sv}", "IPv6Address",
+ g_variant_new_string(""));
+ }
+
+ params = g_variant_new("(@a{sv})", g_variant_builder_end(builder));
+
+ netconfig_dbus_emit_signal(NULL, NETCONFIG_NETWORK_PATH,
+ NETCONFIG_NETWORK_INTERFACE, "NetworkConfigChanged",
+ params);
return;
}
if (profile == NULL)
DBG("Reset network state configuration");
else
- DBG("profile[%s] ipv4(%s) ipv6(%s) proxy(%s)", profile, ip_addr, ip_addr6, proxy_addr);
+ DBG("profile[%s] ipv4(%s) ipv6(%s) proxy(%s)", profile, ip_addr,
+ ip_addr6, proxy_addr);
netconfig_vconf_get_int(VCONFKEY_NETWORK_STATUS, &old_network_status);
if (profile == NULL && old_network_status != VCONFKEY_NETWORK_OFF) {
+ builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
+
netconfig_set_vconf_int(VCONFKEY_NETWORK_STATUS, VCONFKEY_NETWORK_OFF);
+ g_variant_builder_add(builder, "{sv}", "NetworkStatus",
+ g_variant_new_int32(VCONFKEY_NETWORK_OFF));
netconfig_set_vconf_str(VCONFKEY_NETWORK_IP, "");
+ g_variant_builder_add(builder, "{sv}", "IPv4Address",
+ g_variant_new_string(""));
+
netconfig_set_vconf_str(VCONFKEY_NETWORK_IP6, "");
+ g_variant_builder_add(builder, "{sv}", "IPv6Address",
+ g_variant_new_string(""));
+
netconfig_set_vconf_str(VCONFKEY_NETWORK_PROXY, "");
+ g_variant_builder_add(builder, "{sv}", "ProxyAddress",
+ g_variant_new_string(""));
+
+ params = g_variant_new("(@a{sv})", g_variant_builder_end(builder));
netconfig_set_vconf_int(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND, 0);
+ netconfig_dbus_emit_signal(NULL, NETCONFIG_NETWORK_PATH,
+ NETCONFIG_NETWORK_INTERFACE, "NetworkConfigChanged",
+ params);
netconfig_set_vconf_int("memory/private/wifi/frequency", 0);
DBG("Successfully clear IP and PROXY up");
char *old_ip6 = vconf_get_str(VCONFKEY_NETWORK_IP6);
char *old_proxy = vconf_get_str(VCONFKEY_NETWORK_PROXY);
+ builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
+
if (netconfig_is_wifi_profile(profile) == TRUE) {
- netconfig_set_vconf_int(VCONFKEY_NETWORK_STATUS, VCONFKEY_NETWORK_WIFI);
+ netconfig_set_vconf_int(VCONFKEY_NETWORK_STATUS,
+ VCONFKEY_NETWORK_WIFI);
+ g_variant_builder_add(builder, "{sv}", "NetworkStatus",
+ g_variant_new_int32(VCONFKEY_NETWORK_WIFI));
netconfig_set_vconf_int("memory/private/wifi/frequency", freq);
netconfig_set_system_event(SYS_EVT_NETWORK_STATUS,
return;
}
- netconfig_set_vconf_int(VCONFKEY_NETWORK_STATUS, VCONFKEY_NETWORK_CELLULAR);
+ netconfig_set_vconf_int(VCONFKEY_NETWORK_STATUS,
+ VCONFKEY_NETWORK_CELLULAR);
+ g_variant_builder_add(builder, "{sv}", "NetworkStatus",
+ g_variant_new_int32(VCONFKEY_NETWORK_CELLULAR));
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_vconf_int(VCONFKEY_NETWORK_STATUS,
+ VCONFKEY_NETWORK_ETHERNET);
+ g_variant_builder_add(builder, "{sv}", "NetworkStatus",
+ g_variant_new_int32(VCONFKEY_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_vconf_int(VCONFKEY_NETWORK_STATUS,
+ VCONFKEY_NETWORK_BLUETOOTH);
+ g_variant_builder_add(builder, "{sv}", "NetworkStatus",
+ g_variant_new_int32(VCONFKEY_NETWORK_BLUETOOTH));
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_vconf_int(VCONFKEY_NETWORK_STATUS,
+ VCONFKEY_NETWORK_OFF);
+ g_variant_builder_add(builder, "{sv}", "NetworkStatus",
+ g_variant_new_int32(VCONFKEY_NETWORK_OFF));
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)
+ if (ip_addr != NULL) {
netconfig_set_vconf_str(VCONFKEY_NETWORK_IP, ip_addr);
- else if (old_ip != NULL && strlen(old_ip) > 0)
+ g_variant_builder_add(builder, "{sv}", "IPv4Address",
+ g_variant_new_string(ip_addr));
+ } else if (old_ip != NULL && strlen(old_ip) > 0) {
netconfig_set_vconf_str(VCONFKEY_NETWORK_IP, "");
+ g_variant_builder_add(builder, "{sv}", "IPv4Address",
+ g_variant_new_string(""));
+ }
}
if (old_ip)
free(old_ip);
if (g_strcmp0(old_ip6, ip_addr6) != 0 || old_ip6 == NULL) {
- if (ip_addr6 != NULL)
+ if (ip_addr6 != NULL) {
netconfig_set_vconf_str(VCONFKEY_NETWORK_IP6, ip_addr6);
- else if (old_ip6 != NULL && strlen(old_ip6) > 0)
+ g_variant_builder_add(builder, "{sv}", "IPv6Address",
+ g_variant_new_string(ip_addr6));
+ } else if (old_ip6 != NULL && strlen(old_ip6) > 0) {
netconfig_set_vconf_str(VCONFKEY_NETWORK_IP6, "");
+ g_variant_builder_add(builder, "{sv}", "IPv6Address",
+ g_variant_new_string(""));
+ }
}
if (old_ip6)
free(old_ip6);
if (g_strcmp0(old_proxy, proxy_addr) != 0) {
- if (proxy_addr == NULL)
+ if (proxy_addr == NULL) {
netconfig_set_vconf_str(VCONFKEY_NETWORK_PROXY, "");
- else
+ g_variant_builder_add(builder, "{sv}", "ProxyAddress",
+ g_variant_new_string(""));
+ } else {
netconfig_set_vconf_str(VCONFKEY_NETWORK_PROXY, proxy_addr);
+ g_variant_builder_add(builder, "{sv}", "ProxyAddress",
+ g_variant_new_string(proxy_addr));
+ }
}
if (old_proxy)
free(old_proxy);
+ params = g_variant_new("(@a{sv})", g_variant_builder_end(builder));
+
netconfig_set_vconf_int(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND, 1);
+ netconfig_dbus_emit_signal(NULL, NETCONFIG_NETWORK_PATH,
+ NETCONFIG_NETWORK_INTERFACE, "NetworkConfigChanged",
+ params);
DBG("Successfully update default network configuration");
}
while (g_variant_iter_loop(next, "{sv}", &key1, &variant)) {
if (g_strcmp0(key1, "Interface") == 0) {
value = g_variant_get_string(variant, NULL);
- ifname = g_strdup(value);
+ if (!ifname)
+ ifname = g_strdup(value);
g_free(key1);
g_variant_unref(variant);
break;
gchar *interface, gchar *gateway, gint address_family)
{
const gchar *path = ROUTE_EXEC_PATH;
- gchar *const args[] = { "/sbin/route", "add", "-net", ip_addr,
+ gchar gw_str[64] = {0,};
+ if (gateway != NULL && strlen(gateway) > 1)
+ g_snprintf(gw_str, 64, "gw %s", gateway);
+ gchar *const args[] = { "/sbin/route", "add", "-net", ip_addr, gw_str,
"netmask", netmask, "dev", interface, NULL };
gchar *const envs[] = { NULL };
const gchar* buf = NULL;
if (ip_addr == NULL || netmask == NULL || interface == NULL) {
ERR("Invalid parameter");
netconfig_error_invalid_parameter(context);
- return FALSE;
+ return TRUE;
}
if (netconfig_execute_file(path, args, envs) < 0) {
DBG("Failed to add a new route");
netconfig_error_permission_denied(context);
- return FALSE;
+ return TRUE;
}
break;
if (ip_addr == NULL || interface == NULL || gateway == NULL) {
ERR("Invalid parameter");
netconfig_error_invalid_parameter(context);
- return FALSE;
+ return TRUE;
}
buf = ip_addr;
if (netconfig_add_route_ipv6(ip_addr, interface, gateway, prefix_len) < 0) {
DBG("Failed to add a new route");
netconfig_error_permission_denied(context);
- return FALSE;
+ return TRUE;
}
break;
default:
DBG("Unknown Address Family");
netconfig_error_invalid_parameter(context);
- return FALSE;
+ return TRUE;
}
DBG("Successfully added a new route");
gchar *interface, gchar *gateway, gint address_family)
{
const char *path = ROUTE_EXEC_PATH;
- gchar *const args[] = { "/sbin/route", "del", "-net", ip_addr,
+ gchar gw_str[64] = {0,};
+ if (gateway != NULL && strlen(gateway) > 1)
+ g_snprintf(gw_str, 64, "gw %s", gateway);
+ gchar *const args[] = { "/sbin/route", "del", "-net", ip_addr, gw_str,
"netmask", netmask, "dev", interface, NULL };
char *const envs[] = { NULL };
const char* buf = NULL;
if (ip_addr == NULL || netmask == NULL || interface == NULL) {
DBG("Invalid parameter!");
netconfig_error_invalid_parameter(context);
- return FALSE;
+ return TRUE;
}
if (netconfig_execute_file(path, args, envs) < 0) {
DBG("Failed to remove the route");
netconfig_error_permission_denied(context);
- return FALSE;
+ return TRUE;
}
break;
case AF_INET6:
if (ip_addr == NULL || interface == NULL || gateway == NULL) {
DBG("Invalid parameter!");
netconfig_error_invalid_parameter(context);
- return FALSE;
+ return TRUE;
}
buf = ip_addr;
if (netconfig_del_route_ipv6(ip_addr, interface, gateway, prefix_len) < 0) {
DBG("Failed to remove the route");
netconfig_error_permission_denied(context);
- return FALSE;
+ return TRUE;
}
break;
default:
DBG("Unknown Address Family");
netconfig_error_invalid_parameter(context);
- return FALSE;
+ return TRUE;
}
DBG("Successfully removed the route");
if (ret != 0) {
DBG("Failed to get ethernet cable state");
netconfig_error_fail_ethernet_cable_state(context);
- return FALSE;
+ return TRUE;
}
DBG("Successfully get ethernet cable state[%d]", state);
if (address == NULL) {
DBG("Failed to get preferred IPv6 address");
netconfig_error_fail_preferred_ipv6_address(context);
- return FALSE;
+ return TRUE;
}
DBG("Successfully get preferred IPv6 address[%s]", address);
{
DBG("Creating network state object");
GDBusInterfaceSkeleton *interface_network = NULL;
+#if defined TIZEN_DEBUG_ENABLE
+ GDBusInterfaceSkeleton *interface_tcpdump = NULL;
+#endif
GDBusConnection *connection = NULL;
GDBusObjectManagerServer *server = netdbus_get_state_manager();
if (server == NULL)
NETCONFIG_NETWORK_STATE_PATH, NULL)) {
ERR("Export with path failed");
}
+
+#if defined TIZEN_DEBUG_ENABLE
+ /*Interface netconfig.tcpdump*/
+ tcpdump_object = tcpdump_skeleton_new();
+
+ interface_tcpdump = G_DBUS_INTERFACE_SKELETON(tcpdump_object);
+ g_signal_connect(tcpdump_object, "handle-start-tcpdump",
+ G_CALLBACK(handle_start_tcpdump), NULL);
+ g_signal_connect(tcpdump_object, "handle-stop-tcpdump",
+ G_CALLBACK(handle_stop_tcpdump), NULL);
+ g_signal_connect(tcpdump_object, "handle-get-tcpdump-state",
+ G_CALLBACK(handle_get_tcpdump_state), NULL);
+
+ if (!g_dbus_interface_skeleton_export(interface_tcpdump, connection,
+ NETCONFIG_NETWORK_STATE_PATH, NULL)) {
+ ERR("Export with path failed");
+ }
+#endif
}
void state_object_deinit(void)
{
g_object_unref(netconfigstate);
+#if defined TIZEN_DEBUG_ENABLE
+ g_object_unref(tcpdump_object);
+#endif
}