#log dump
mkdir -p %{buildroot}/opt/etc/dump.d/module.d/
cp resources/opt/etc/dump.d/module.d/network_dump.sh %{buildroot}/opt/etc/dump.d/module.d/network_dump.sh
+cp resources/opt/etc/dump.d/module.d/network_log_dump.sh %{buildroot}/opt/etc/dump.d/module.d/network_log_dump.sh
mkdir -p %{buildroot}/opt/var/lib/net-config/
cp resources/opt/etc/dump.d/module.d/network_dump.sh %{buildroot}/opt/var/lib/net-config/network_dump.sh
+cp resources/opt/etc/dump.d/module.d/network_log_dump.sh %{buildroot}/opt/var/lib/net-config/network_log_dump.sh
#softreset scripts
mkdir -p %{buildroot}/usr/system/RestoreDir/softreset
%attr(644,root,root) %{_unitdir}/multi-user.target.wants/net-config.service
%endif
%license LICENSE
-%attr(500,root,root) /opt/etc/dump.d/module.d/network_dump.sh
-%attr(500,network_fw,network_fw) /opt/var/lib/net-config/network_dump.sh
+%attr(750,network_fw,network_fw) /opt/etc/dump.d/module.d/network_dump.sh
+%attr(750,network_fw,network_fw) /opt/var/lib/net-config/network_dump.sh
+%attr(750,network_fw,network_fw) /opt/etc/dump.d/module.d/network_log_dump.sh
+%attr(750,network_fw,network_fw) /opt/var/lib/net-config/network_log_dump.sh
#### tv profile ####
%post profile_tv
#include <string.h>
#include <vconf.h>
#include <vconf-keys.h>
+#include <sys/wait.h>
#include "log.h"
#include "util.h"
#include "ip-conflict-detect.h"
#if defined TIZEN_DEBUG_ENABLE
#include "network-dump.h"
+#define NETWORK_LOG_DUMP_SCRIPT "/opt/var/lib/net-config/network_log_dump.sh"
+#define MAX_SIZE_ERROR_BUFFER 256
#endif
#define DBUS_SERVICE_DBUS "org.freedesktop.DBus"
}
}
+#if defined TIZEN_DEBUG_ENABLE
+static int __netconfig_handle_execute_file(const char *file_path,
+ char *const args[], char *const envs[])
+{
+ pid_t pid = 0;
+ int status = 0;
+ int rv = 0;
+ errno = 0;
+ register unsigned int index = 0;
+ char error_buf[MAX_SIZE_ERROR_BUFFER] = {0, };
+
+ while (args[index] != NULL) {
+ DBG("%s", args[index]);
+ index++;
+ }
+
+ if (!(pid = fork())) {
+ DBG("pid(%d), ppid (%d)", getpid(), getppid());
+ DBG("Inside child, exec (%s) command", file_path);
+
+ errno = 0;
+ if (execve(file_path, args, envs) == -1) {
+ strerror_r(errno, error_buf, MAX_SIZE_ERROR_BUFFER);
+ DBG("Fail to execute command (%s)", error_buf);
+ exit(1);
+ }
+ } else if (pid > 0) {
+ if (waitpid(pid, &status, 0) == -1)
+ DBG("wait pid (%u) status (%d)", pid, status);
+
+ if (WIFEXITED(status)) {
+ rv = WEXITSTATUS(status);
+ DBG("exited, status=%d", rv);
+ } else if (WIFSIGNALED(status)) {
+ DBG("killed by signal %d", WTERMSIG(status));
+ } else if (WIFSTOPPED(status)) {
+ DBG("stopped by signal %d", WSTOPSIG(status));
+ } else if (WIFCONTINUED(status)) {
+ DBG("continued");
+ }
+
+ return rv;
+ }
+
+ strerror_r(errno, error_buf, MAX_SIZE_ERROR_BUFFER);
+ DBG("failed to fork(%s)", error_buf);
+ return -EIO;
+}
+
+static int _start_dump()
+{
+ int rv = 0;
+ gchar *path = NETWORK_LOG_DUMP_SCRIPT;
+ char *const args[] = { NETWORK_LOG_DUMP_SCRIPT, NULL };
+ char *const envs[] = { NULL };
+
+ rv = __netconfig_handle_execute_file(path, args, envs);
+ if (rv < 0) {
+ ERR("Fail to execute network log dump shell");
+ return -EIO;
+ }
+ return 0;
+}
+#endif
+
static void _technology_signal_cb(GDBusConnection *conn,
const gchar *name, const gchar *path, const gchar *interface,
const gchar *sig, GVariant *param, gpointer user_data)
if (g_strcmp0(sigvalue, "State") == 0) {
g_variant_get(variant, "s", &property);
- DBG("[%s] %s", property, path);
- if (netconfig_is_wifi_profile(path) || netconfig_is_ethernet_profile(path)) {
- if (g_strcmp0(property, "ready") == 0) {
- for (idx = 0; idx < MAX_SOCKET_OPEN_RETRY; idx++) {
- sd = start_ip_conflict_mon();
- if (sd != NULL)
- break;
+ DBG("[%s] %s", property, path);
+ if (netconfig_is_wifi_profile(path) || netconfig_is_ethernet_profile(path)) {
+ if (g_strcmp0(property, "ready") == 0) {
+ for (idx = 0; idx < MAX_SOCKET_OPEN_RETRY; idx++) {
+ sd = start_ip_conflict_mon();
+ if (sd != NULL)
+ break;
+ }
+ } else if (g_strcmp0(property, "online") == 0) {
+ // do nothing
+ } else {
+ stop_ip_conflict_mon();
}
- } else if (g_strcmp0(property, "online") == 0) {
- // do nothing
- } else {
- stop_ip_conflict_mon();
}
- }
if (netconfig_is_wifi_profile(path) == TRUE) {
int wifi_state = 0;
} else if (g_strcmp0(sigvalue, "Error") == 0) {
g_variant_get(variant, "s", &property);
INFO("[%s] Property : %s", sigvalue, property);
+#if defined TIZEN_DEBUG_ENABLE
+ if (g_strcmp0(property, "connect-failed") == 0 || g_strcmp0(property, "invalid-key") == 0 || g_strcmp0(property, "auth-failed") == 0)
+ _start_dump();
+#endif
g_free(property);
}
done: