DetectEngineCtx *de_ctx;
TAILQ_HEAD(, PcapFiles_) files;
int running;
+ char *currentfile;
} PcapCommand;
const char *RunModeUnixSocketGetDefaultMode(void)
return TM_ECODE_OK;
}
+static TmEcode UnixSocketPcapCurrent(json_t *cmd, json_t* answer, void *data)
+{
+ PcapCommand *this = (PcapCommand *) data;
+
+ if (this->currentfile) {
+ json_object_set_new(answer, "message", json_string(this->currentfile));
+ } else {
+ json_object_set_new(answer, "message", json_string("None"));
+ }
+ return TM_ECODE_OK;
+}
+
+
+
static void PcapFilesFree(PcapFiles *cfile)
{
if (cfile == NULL)
}
unix_manager_file_task_failed = 0;
this->running = 0;
+ if (this->currentfile) {
+ SCFree(this->currentfile);
+ }
+ this->currentfile = NULL;
TmThreadKillThreadsFamily(TVT_MGMT);
TmThreadClearThreadsFamily(TVT_MGMT);
TmThreadDisableThreadsWithTMS(TM_FLAG_RECEIVE_TM | TM_FLAG_DECODE_TM);
return TM_ECODE_FAILED;
}
}
+ this->currentfile = SCStrdup(cfile->filename);
PcapFilesFree(cfile);
SCPerfInitCounterApi();
DefragInit();
}
pcapcmd->de_ctx = de_ctx;
TAILQ_INIT(&pcapcmd->files);
+ pcapcmd->currentfile = NULL;
UnixManagerThreadSpawn(de_ctx, 1);
UnixManagerRegisterCommand("pcap-file", UnixSocketAddPcapFile, pcapcmd, UNIX_CMD_TAKE_ARGS);
UnixManagerRegisterCommand("pcap-file-number", UnixSocketPcapFilesNumber, pcapcmd, 0);
UnixManagerRegisterCommand("pcap-file-list", UnixSocketPcapFilesList, pcapcmd, 0);
+ UnixManagerRegisterCommand("pcap-current", UnixSocketPcapCurrent, pcapcmd, 0);
UnixManagerRegisterBackgroundTask(UnixSocketPcapFilesCheck, pcapcmd);
#endif