Add function for internal running mode

pull/479/head
Eric Leblond 12 years ago
parent d3cb043001
commit 4f789dbe84

@ -1500,6 +1500,68 @@ static int SuriWindowsInitService(int argc, char **argv)
}
#endif /* OS_WIN32 */
int SuriStartInternalRunMode(struct SuriInstance *suri, int argc, char **argv)
{
/* Treat internal running mode */
switch(suri->run_mode) {
case RUNMODE_LIST_KEYWORDS:
ListKeywords(suri->keyword_info);
return TM_ECODE_DONE;
case RUNMODE_LIST_APP_LAYERS:
ListAppLayerProtocols();
return TM_ECODE_DONE;
case RUNMODE_PRINT_VERSION:
SuriPrintVersion();
return TM_ECODE_DONE;
case RUNMODE_PRINT_BUILDINFO:
SCPrintBuildInfo();
return TM_ECODE_DONE;
case RUNMODE_PRINT_USAGE:
usage(argv[0]);
return TM_ECODE_DONE;
#ifdef __SC_CUDA_SUPPORT__
case RUNMODE_LIST_CUDA_CARDS:
return ListCudaCards();
#endif
case RUNMODE_LIST_RUNMODES:
RunModeListRunmodes();
return TM_ECODE_DONE;
case RUNMODE_LIST_UNITTEST:
{
int ret = RunUnittests(1, suri->regex_arg);
if (ret == TM_ECODE_OK)
return TM_ECODE_DONE;
else
return ret;
}
#ifdef OS_WIN32
case RUNMODE_INSTALL_SERVICE:
if (SCServiceInstall(argc, argv)) {
return TM_ECODE_FAILED;
}
SCLogInfo("Suricata service has been successfuly installed.");
return TM_ECODE_DONE;
case RUNMODE_REMOVE_SERVICE:
if (SCServiceRemove(argc, argv)) {
return TM_ECODE_FAILED;
}
SCLogInfo("Suricata service has been successfuly removed.");
return TM_ECODE_DONE;
case RUNMODE_CHANGE_SERVICE_PARAMS:
if (SCServiceChangeParams(argc, argv)) {
return TM_ECODE_FAILED;
}
SCLogInfo("Suricata service startup parameters has been successfuly changed.");
return TM_ECODE_DONE;
#endif /* OS_WIN32 */
default:
/* simply continue for other running mode */
break;
}
return TM_ECODE_OK;
}
int main(int argc, char **argv)
{
struct SuriInstance suri;
@ -1538,55 +1600,11 @@ int main(int argc, char **argv)
exit(EXIT_FAILURE);
}
/* Treat internal running mode */
switch(suri.running_mode) {
case SC_RUN_LIST_KEYWORDS:
return ListKeywords(suri.keyword_info);
case SC_RUN_LIST_APP_LAYERS:
return ListAppLayerProtocols();
case SC_RUN_PRINT_VERSION:
return SuriPrintVersion();
case RUNMODE_PRINT_BUILDINFO:
SCPrintBuildInfo();
return TM_ECODE_OK;
case RUNMODE_PRINT_USAGE:
usage(argv[0]);
return TM_ECODE_OK;
#ifdef __SC_CUDA_SUPPORT__
case SC_RUN_LIST_CUDA_CARDS:
return ListCudaCards();
#endif
case RUNMODE_LIST_RUNMODES:
RunModeListRunmodes();
return TM_ECODE_OK;
/* FIXME not sexy here */
case SC_RUN_LIST_UNITTEST:
return RunUnittests(1, suri.regex_arg);
case SC_RUN_UNITTEST:
return RunUnittests(0, suri.regex_arg);
#ifdef OS_WIN32
case RUNMODE_INSTALL_SERVICE:
if (SCServiceInstall(argc, argv)) {
return TM_ECODE_FAILED;
}
SCLogInfo("Suricata service has been successfuly installed.");
exit(EXIT_SUCCESS);
case RUNMODE_REMOVE_SERVICE:
if (SCServiceRemove(argc, argv)) {
return TM_ECODE_FAILED;
}
SCLogInfo("Suricata service has been successfuly removed.");
exit(EXIT_SUCCESS);
case RUNMODE_CHANGE_SERVICE_PARAMS:
if (SCServiceChangeParams(argc, argv)) {
return TM_ECODE_FAILED;
}
SCLogInfo("Suricata service startup parameters has been successfuly changed.");
switch (SuriStartInternalRunMode(&suri, argc, argv)) {
case TM_ECODE_DONE:
exit(EXIT_SUCCESS);
#endif /* OS_WIN32 */
default:
/* simply continue for other running mode */
break;
case TM_ECODE_FAILED:
exit(EXIT_FAILURE);
}
/* Set the global run mode */
@ -1598,7 +1616,7 @@ int main(int argc, char **argv)
}
if (suri.run_mode == RUNMODE_UNITTEST)
return SuriRunUnittests(0, suri.regex_arg);
return RunUnittests(0, suri.regex_arg);
#ifdef REVISION
SCLogInfo("This is %s version %s (rev %s)", PROG_NAME, PROG_VER, xstr(REVISION));

Loading…
Cancel
Save