wpa_supplicant: Support 'relog' command to re-open log files
This allows rolling log files: mv log.txt log.txt.1 wpa_cli relog Signed-off-by: Ben Greear <greearb@candelatech.com>
This commit is contained in:
parent
3103f34576
commit
ac6912b5d1
4 changed files with 47 additions and 0 deletions
|
@ -273,11 +273,43 @@ void wpa_hexdump_ascii_key(int level, const char *title, const u8 *buf,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef CONFIG_DEBUG_FILE
|
||||||
|
static char *last_path = NULL;
|
||||||
|
#endif /* CONFIG_DEBUG_FILE */
|
||||||
|
|
||||||
|
int wpa_debug_reopen_file(void)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_DEBUG_FILE
|
||||||
|
int rv;
|
||||||
|
if (last_path) {
|
||||||
|
char *tmp = os_strdup(last_path);
|
||||||
|
wpa_debug_close_file();
|
||||||
|
rv = wpa_debug_open_file(tmp);
|
||||||
|
os_free(tmp);
|
||||||
|
} else {
|
||||||
|
wpa_printf(MSG_ERROR, "Last-path was not set, cannot "
|
||||||
|
"re-open log file.");
|
||||||
|
rv = -1;
|
||||||
|
}
|
||||||
|
return rv;
|
||||||
|
#else /* CONFIG_DEBUG_FILE */
|
||||||
|
return 0;
|
||||||
|
#endif /* CONFIG_DEBUG_FILE */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int wpa_debug_open_file(const char *path)
|
int wpa_debug_open_file(const char *path)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_DEBUG_FILE
|
#ifdef CONFIG_DEBUG_FILE
|
||||||
if (!path)
|
if (!path)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (last_path == NULL || os_strcmp(last_path, path) != 0) {
|
||||||
|
/* Save our path to enable re-open */
|
||||||
|
os_free(last_path);
|
||||||
|
last_path = os_strdup(path);
|
||||||
|
}
|
||||||
|
|
||||||
out_file = fopen(path, "a");
|
out_file = fopen(path, "a");
|
||||||
if (out_file == NULL) {
|
if (out_file == NULL) {
|
||||||
wpa_printf(MSG_ERROR, "wpa_debug_open_file: Failed to open "
|
wpa_printf(MSG_ERROR, "wpa_debug_open_file: Failed to open "
|
||||||
|
@ -299,6 +331,8 @@ void wpa_debug_close_file(void)
|
||||||
return;
|
return;
|
||||||
fclose(out_file);
|
fclose(out_file);
|
||||||
out_file = NULL;
|
out_file = NULL;
|
||||||
|
os_free(last_path);
|
||||||
|
last_path = NULL;
|
||||||
#endif /* CONFIG_DEBUG_FILE */
|
#endif /* CONFIG_DEBUG_FILE */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,7 @@ enum {
|
||||||
#else /* CONFIG_NO_STDOUT_DEBUG */
|
#else /* CONFIG_NO_STDOUT_DEBUG */
|
||||||
|
|
||||||
int wpa_debug_open_file(const char *path);
|
int wpa_debug_open_file(const char *path);
|
||||||
|
int wpa_debug_reopen_file(void);
|
||||||
void wpa_debug_close_file(void);
|
void wpa_debug_close_file(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2785,6 +2785,9 @@ char * wpa_supplicant_ctrl_iface_process(struct wpa_supplicant *wpa_s,
|
||||||
if (os_strcmp(buf, "PING") == 0) {
|
if (os_strcmp(buf, "PING") == 0) {
|
||||||
os_memcpy(reply, "PONG\n", 5);
|
os_memcpy(reply, "PONG\n", 5);
|
||||||
reply_len = 5;
|
reply_len = 5;
|
||||||
|
} else if (os_strncmp(buf, "RELOG", 5) == 0) {
|
||||||
|
if (wpa_debug_reopen_file() < 0)
|
||||||
|
reply_len = -1;
|
||||||
} else if (os_strncmp(buf, "NOTE ", 5) == 0) {
|
} else if (os_strncmp(buf, "NOTE ", 5) == 0) {
|
||||||
wpa_printf(MSG_INFO, "NOTE: %s", buf + 5);
|
wpa_printf(MSG_INFO, "NOTE: %s", buf + 5);
|
||||||
} else if (os_strcmp(buf, "MIB") == 0) {
|
} else if (os_strcmp(buf, "MIB") == 0) {
|
||||||
|
|
|
@ -278,6 +278,12 @@ static int wpa_cli_cmd_ping(struct wpa_ctrl *ctrl, int argc, char *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int wpa_cli_cmd_relog(struct wpa_ctrl *ctrl, int argc, char *argv[])
|
||||||
|
{
|
||||||
|
return wpa_ctrl_command(ctrl, "RELOG");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int wpa_cli_cmd_note(struct wpa_ctrl *ctrl, int argc, char *argv[])
|
static int wpa_cli_cmd_note(struct wpa_ctrl *ctrl, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
char cmd[256];
|
char cmd[256];
|
||||||
|
@ -2164,6 +2170,9 @@ static struct wpa_cli_cmd wpa_cli_commands[] = {
|
||||||
{ "ping", wpa_cli_cmd_ping,
|
{ "ping", wpa_cli_cmd_ping,
|
||||||
cli_cmd_flag_none,
|
cli_cmd_flag_none,
|
||||||
"= pings wpa_supplicant" },
|
"= pings wpa_supplicant" },
|
||||||
|
{ "relog", wpa_cli_cmd_relog,
|
||||||
|
cli_cmd_flag_none,
|
||||||
|
"= re-open log-file (allow rolling logs)" },
|
||||||
{ "note", wpa_cli_cmd_note,
|
{ "note", wpa_cli_cmd_note,
|
||||||
cli_cmd_flag_none,
|
cli_cmd_flag_none,
|
||||||
"<text> = add a note to wpa_supplicant debug log" },
|
"<text> = add a note to wpa_supplicant debug log" },
|
||||||
|
|
Loading…
Reference in a new issue